Claims Analysis
Total Claims: 14
Claim 1
Independent Claim
494 words
A method in a computer compiler for a programming language for generating an object data structure layout and object address for a class, the class defined in terms of base classes, data members, and function members, each base class defined as either virtual on non-virtual, each function member defined as either virtual or non-virtual, wherein each class that introduces a virtual function member has an associated virtual function table and a virtual function table pointer, wherein each class with a virtual direct base class has an associated virtual base table and a virtual base table pointer, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, when the class has a non-virtual base class with a virtual function table pointer, selecting a non-virtual base class with a virtual function table pointer so that the class shares the virtual function table and the virtual function table pointer of an occurrence of the selected class within the class, and selecting the virtual function table pointer of the selected base class, and when the class does not have a non-virtual base class with a virtual function table pointer, allocating a virtual function table pointer in the object data structure layout and a virtual function table, and selecting the allocated virtual function table pointer; when the class has a virtual direct base class, when the class has a non-virtual base class with a virtual base table pointer, selecting a non-virtual base class with a virtual base table pointer so that the class shares the virtual base table and the virtual base table pointer of an occurrence of the selected class within the class, and selecting the virtual base table pointer of the selected base class, and when the class does not have a non-virtual base class with a virtual base table pointer, allocating a virtual base table pointer in the object data structure layout and a virtual base table, and selecting the allocated virtual base table pointer; allocating space in the object data structure layout for an occurence of each non-virtual base class of the class; allocating space in the object data structure layout for each data member of the class; allocating space in the object data structure layout for an occurence of each virtual base class of the class; when a virtual function table pointer is selected, setting the object address equal to the address of the selected virtual function table pointer; and when a virtual function table pointer is not selected, when a virtual base table pointer is selected, setting the object address equal to the address of the selected virtual base table pointer, and when a virtual base table pointer is not selected, when the class has a non-virtual base class, setting the object address equal to the address of a non-virtual base class, and when the class does not have a non-virtual base class, setting the object address equal to the address of a data member of the class.
Claim 2
Independent Claim
494 words
A method in a computer compiler for a programming language for generating an object data structure layout and object address for a class, the class defined in terms of base classes, data members, and function members, each base class defined as either virtual on non-virtual, each function member defined as either virtual or non-virtual, wherein each class that introduces a virtual function member has an associated virtual function table and a virtual function table pointer, wherein each class with a virtual direct base class has an associated virtual base table and a virtual base table pointer, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, when the class has a non-virtual base class with a virtual function table pointer, selecting a non-virtual base class with a virtual function table pointer so that the class shares the virtual function table and the virtual function table pointer of an occurrence of the selected class within the class, and selecting the virtual function table pointer of the selected base class, and when the class does not have a non-virtual base class with a virtual function table pointer, allocating a virtual function table pointer in the object data structure layout and a virtual function table, and selecting the allocated virtual function table pointer; when the class has a virtual direct base class, when the class has a non-virtual base class with a virtual base table pointer, selecting a non-virtual base class with a virtual base table pointer so that the class shares the virtual base table and the virtual base table pointer of an occurrence of the selected class within the class, and selecting the virtual base table pointer of the selected base class, and when the class does not have a non-virtual base class with a virtual base table pointer, allocating a virtual base table pointer in the object data structure layout and a virtual base table, and selecting the allocated virtual base table pointer; allocating space in the object data structure layout for an occurence of each non-virtual base class of the class; allocating space in the object data structure layout for each data member of the class; allocating space in the object data structure layout for an occurence of each virtual base class of the class; when a virtual function table pointer is selected, setting the object address equal to the address of the selected virtual function table pointer; and when a virtual function table pointer is not selected, when a virtual base table pointer is selected, setting the object address equal to the address of the selected virtual base table pointer, and when a virtual base table pointer is not selected, when the class has a non-virtual base class, setting the object address equal to the address of a non-virtual base class, and when the class does not have a non-virtual base class, setting the object address equal to the address of a data member of the class.
Claim 3
Dependent Claim
56 words
The method of claim 1 wherein an inheritance tree defines the ancestral relationship among the base classes and the class, and wherein the step of selecting a non-virtual base class with a virtual function table pointer includes selecting the first such base class visited in a depth-first, left-to-right traversal of the inheritance tree of the class.
Claim 4
Dependent Claim
56 words
The method of claim 1 wherein an inheritance tree defines the ancestral relationship among the base classes and the class, and wherein the step of selecting a non-virtual base class with a virtual base table pointer includes selecting the first such base class visited in a depth-first, left-to-right traversal of the inheritance tree of the class.
Claim 5
Independent Claim
246 words
A method in a computer system for generating an object data structure for a class, the class defined in terms of a base class, data member, and function member, each base class defined as either virtual or non-virtual, each function member defined as either virtual or non-virtual, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, when an object data structure of a non-virtual base class contains a virtual function table pointer, allocating space for the virtual function table pointer within the space allocated to the non-virtual base class, wherein the virtual function table pointer for the class is shared with the virtual function table pointer of the non-virtual base class; and when no object data structure of a non-virtual base class contains a virtual function table pointer, allocating space for the virtual function table pointer for the class, wherein the virtual function table pointer for the class is not shared with any base class; when the class inherits a virtual base class, allocating space for a virtual base table pointer for pointing to a virtual base table for the class, the virtual base table having a reference to a virtual base class of the class; for each non-virtual base class of the class, allocating space for the non-virtual base class; for each data member of the class, allocating space for the data member; and for each virtual base class of the class, allocating space for the virtual base class.
Claim 6
Independent Claim
246 words
A method in a computer system for generating an object data structure for a class, the class defined in terms of a base class, data member, and function member, each base class defined as either virtual or non-virtual, each function member defined as either virtual or non-virtual, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, when an object data structure of a non-virtual base class contains a virtual function table pointer, allocating space for the virtual function table pointer within the space allocated to the non-virtual base class, wherein the virtual function table pointer for the class is shared with the virtual function table pointer of the non-virtual base class; and when no object data structure of a non-virtual base class contains a virtual function table pointer, allocating space for the virtual function table pointer for the class, wherein the virtual function table pointer for the class is not shared with any base class; when the class inherits a virtual base class, allocating space for a virtual base table pointer for pointing to a virtual base table for the class, the virtual base table having a reference to a virtual base class of the class; for each non-virtual base class of the class, allocating space for the non-virtual base class; for each data member of the class, allocating space for the data member; and for each virtual base class of the class, allocating space for the virtual base class.
Claim 7
Dependent Claim
66 words
The method of claim 4 wherein the class has an inheritance tree, wherein when more than one non-virtual base class has an object data structure that contains a virtual function table pointer, sharing the virtual function table pointer of the first non-virtual base class visited in a depth-first, left-to-right traversal of the inheritance tree of the class as the virtual function table pointer for the class.
Claim 8
Dependent Claim
123 words
The method as recited in claim 4 wherein the step of allocating space for a virtual base table pointer further includes the steps of: when an object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer within the space allocated to the non-virtual base class, wherein the virtual base table pointer for the class is shared with the virtual base table pointer of the non-virtual base class; and when no object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer for the class, wherein the virtual base table pointer for the class is not shared with any base class.
Claim 9
Dependent Claim
67 words
The method of claim 6 wherein the class has an inheritance tree, wherein when more than one non-virtual base class has an object data structure that contains a virtual base table pointer, sharing the virtual base table pointer of the first non-virtual base class visited in a depth first, left-to-right traversal of the inheritance tree of the class as the virtual base table pointer for the class.
Claim 10
Independent Claim
245 words
A method in a computer system for generating an object data structure for a class, the class defined in terms of a base class, data member, and function member, each base class defined as either virtual or non-virtual, each function member defined as either virtual or non-virtual, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, allocating space for a virtual function table pointer for pointing to a virtual function table for the class, the virtual function table having a reference to a virtual function member of the class; when the class inherits a virtual base class, when an object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer within the space allocated to the non-virtual base class, wherein the virtual base table pointer for the class is shared with the virtual base table pointer of the non-virtual base; and when no object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer for the class, wherein the virtual base table pointer for the class is not shared with any base class; for each non-virtual base class of the class, allocating space for the non-virtual base class; for each data member of the class, allocating space for the data member; and for each virtual base class of the class, allocating space for the virtual base class.
Claim 11
Independent Claim
245 words
A method in a computer system for generating an object data structure for a class, the class defined in terms of a base class, data member, and function member, each base class defined as either virtual or non-virtual, each function member defined as either virtual or non-virtual, the method comprising the computer-implemented steps of: when the class introduces a virtual function member, allocating space for a virtual function table pointer for pointing to a virtual function table for the class, the virtual function table having a reference to a virtual function member of the class; when the class inherits a virtual base class, when an object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer within the space allocated to the non-virtual base class, wherein the virtual base table pointer for the class is shared with the virtual base table pointer of the non-virtual base; and when no object data structure of a non-virtual base class contains a virtual base table pointer, allocating space for the virtual base table pointer for the class, wherein the virtual base table pointer for the class is not shared with any base class; for each non-virtual base class of the class, allocating space for the non-virtual base class; for each data member of the class, allocating space for the data member; and for each virtual base class of the class, allocating space for the virtual base class.
Claim 12
Dependent Claim
122 words
The method as recited in claim 8 wherein the step of allocating space for a virtual function table pointer further includes the steps of: when an object data structure of a non-virtual function class contains a virtual function table pointer, allocating space for the virtual function table pointer within the space allocated to the non-virtual function class, wherein the virtual function table pointer for the class is shared with the virtual function table pointer of the non-virtual function; and when no object data structure of a non-virtual function class contains a virtual function table pointer, allocating space for the virtual function table pointer for the class, wherein the virtual function table pointer for the class is not shared with any function class.
Claim 13
Dependent Claim
66 words
The method of claim 9 wherein the class has an inheritance tree, wherein when more than one non-virtual base class has an object data structure that contains a virtual function table pointer, sharing the virtual function table pointer of the first non-virtual base class visited in a depth-first, left-to-right traversal of the inheritance tree of the class as the virtual function table pointer for the class.
Claim 14
Dependent Claim
67 words
The method of claim 8 wherein the class has an inheritance tree, wherein when more than one non-virtual base class has an object data structure that contains a virtual base table pointer, sharing the virtual base table pointer of the first non-virtual base class visited in a depth first, left-to-right traversal of the inheritance tree of the class as the virtual base table pointer for the class.