Self-describing object providing dynamic manipulation of heterogeneous data values and semantic identity between memory and transmission representations
First Claim
1. A computer readable memory having a plurality of contiguous storage locations and storing an object including:
- at least one data element each data element comprising;
a) in at least one first storage location a type code defining a type of a data for the data element, the type being one of a group comprising;
a first type of data element having a fixed length, the first type of data associated with first type code;
a second type of data element having a variable length but not including other data elements, the second type of data associated with a second type code; and
,a third type of data element having a variable length and capable of including other data elements, the third type of data associated with a third type code; and
,b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising;
at least one data value of the data element;
or,at least one reference to another data element.
5 Assignments
0 Petitions
Accused Products
Abstract
An object for use in a computer memory and for transmission between computers flexibly stores a large variety of different types of data, in such a manner as to allow easy and efficient transfer and copying of the data between computers. The object includes any number of data elements, each of which is self-describing using type coding. Certain data elements may include other data elements, thereby providing for arbitrarily complex hierarchical arrangements of data in memory. The type codes may be based on the frequency of the types or values of data operated upon, such that the data itself may be used as a type code for at least one type of data, thereby reducing the memory and bandwidth requirements for handling the object. The object is capable of creating a data stream output for copying and transmission that preserves the semantic structure of the object, particularly its hierarchical organization, and is further capable of reconstituting the hierarchical arrangements. Because of the self describing nature of the object and its data elements, marshalling is not needed for inter-computer transfers of the object.
-
Citations
13 Claims
-
1. A computer readable memory having a plurality of contiguous storage locations and storing an object including:
at least one data element each data element comprising; a) in at least one first storage location a type code defining a type of a data for the data element, the type being one of a group comprising; a first type of data element having a fixed length, the first type of data associated with first type code; a second type of data element having a variable length but not including other data elements, the second type of data associated with a second type code; and
,a third type of data element having a variable length and capable of including other data elements, the third type of data associated with a third type code; and
,b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising; at least one data value of the data element;
or,at least one reference to another data element. - View Dependent Claims (2, 3, 4, 5, 6)
-
7. A computer readable memory having a plurality of contiguous storage locations and storing an object including:
-
at least one data element, each data element comprising; a) in at least one first storage location a type code defining a type of a data for the data element, the type being one of a group comprising; a first type of data element having a fixed length, the first type of data associated with a first type code; a second type of data element having a variable length but not including other data elements, the second type of data associated with a second type code; and
,third type of data element having a variable length and capable of including other data elements, the third type of data associated with a third type code; and
,b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising; at least one data value of the data element;
or,at least one reference to another data element; and a plurality of instructions for controlling a computer to convert the object from a memory representation using memory dependent locations to a transmission representation using memory independent data bytes. - View Dependent Claims (8)
-
-
9. A computer readable memory having a plurality of contiguous storage locations and storing an object including:
-
at least one data element, each data element comprising; a) in at least one first storage location a type code defining a type of a data for the data element; and
,b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising; at least one data value of the data element;
orat least one reference to another data element; and a first procedure to retrieve any selected data element within the object; a second procedure to remove any selected data element within the object; a third procedure to add a new data element at a designated location within the object; at least one fourth procedure to determine whether a selected data element within the object is of a selected type; at least one fifth procedure to change the type code for any selected data element within the object to a selected type code; and at least one sixth procedure to replace the data member for any selected data element within the object with an input data member.
-
-
10. A computer readable arrangement of data in a transmission medium, the arrangement of data having a plurality of contiguous memory independent data bytes that form an object including:
at least one data element, each data element comprising; a) in at least one first data byte a type code defining a type of data for the data element, the type code selected from a group comprising; a first type code for a first type of data element having a fixed length; a second type code for a second type of data element having a variable length but not including other data elements; and
,a third type code for a third type of data element having a variable length and capable of including other data elements; b) in a plurality of second data bytes contiguous with the at least one first data byte, a data member determined according to the selected type code, and being one of a group comprising; a fixed number of data bytes where the type code is the first type code; a length value specifying a number of units in the data member, and the number of units, each unit having a fixed number of data bytes, where the type code is the second type code; and
,a length value specifying a number of units in the data member, and the number of units, each unit being a data element of any of the types of the data elements, where the type code is the third type code.
-
11. A computer readable memory coupled to a transmission medium to receive a computer readable arrangement of data, the computer readable memory including a plurality of instructions to read the data and create in memory an object by storing in contiguous storage locations:
-
data bytes of a first type code; data bytes of data members for data elements of a first type corresponding to the first type code; data bytes of a second type code and a reference to data members for data elements of a second type corresponding to the second type code; and data bytes of a third type code; and
a reference to data members for data elements of a third type corresponding to the third type code.
-
-
12. A computer implemented method of transferring data between a first and second computer, comprising:
-
storing in a memory of the first computer an object including; at least one data element, each data element comprising; a) in at least one first storage location a type code defining a type of a data for the data element; and
,b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising; at least one data value of the data element;
orat least one reference to another data element; flattening the object to produce a memory location independent byte stream representation of the object; transferring the byte stream representation from the first computer to a memory of the second computer; and
,reconstructing in the memory of the second computer the object from the byte stream representation.
-
-
13. A computer system, comprising:
-
a network providing a transmission medium; a first computer having a first computer memory having a plurality of contiguous storage locations and storing a first object having a first structure comprising; at least one data element, each data element comprising; a) in at least one first storage location a type code defining a type of a data for the data element, the type selected from a group comprising; a first type of data element having a fixed length, the first type of data associated with a first type code; a second type of data element having a variable length but not including other data elements, the second type of data associated with a second type code; and
,a third type of data element having a variable length and capable of including other data elements, the third type of data associated with a third type code; and b) in at least one second storage location contiguous with the at least one first storage location, a data member selected from a group comprising; at least one data value of the data element;
or,at least one reference to another data element; wherein the first computer is communicatively coupled to the network, and converts the object from the first structure to a computer readable arrangement of data comprising; at least one data element, each data element comprising; a) in at least one first data byte a type code defining a type of a data for the data element, the type code selected from a group comprising; a first type code for a first type of data element having a fixed length; a second type code for a second type of data element having a variable length but not including other data elements; and
,a third type code for a third type of data element having a variable length and capable of including other data elements; b) in a plurality of second data bytes contiguous with the at least one first data byte, a data member determined according to the selected type code, and being one of a group comprising; a fixed number of data bytes where the type code is the first type code; a length value specifying a number of units in the data member, and the number of units, each unit having a fixed number of data bytes, where the type code is the second type code; and
,a length value specifying a number of units in the data member, and the number of units, each unit being a data element of any of the types of the data elements, where the type code is the third type code; and a second computer having a second computer memory, and communicatively coupled to the network to receive the computer readable data arrangement, and to convert it to a second object semantically identical to the first object, and having the first structure.
-
Specification