← Back to Patent Explorer
US5603030A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and system for destruction of objects using multiple destructor functions in an object-oriented computer system

Assignee: Microsoft Technology Licensing LLC
•
Filing: 1993-01-07
•
Granted: 1997-02-11
•
Expires: 2013-01-07
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and system for generating code to destroy objects is provided. In a preferred embodiment, a compiler generates a plurality of destructor functions for the class. Each destructor function performs a subset of the destruction process. The compiler generates code to invoke one of the plurality of destructor functions to destroy an object of the class. In a preferred embodiment, destructor functions are generated to destroy an object that is not ultimately derived, to destroy an object that is ultimately derived, to destroy an object that is ultimately derived and to deallocate the object memory, to destroy an array of objects, and to destroy an array of objects and to deallocate the memory of the array.

Inventors

  • 👤 Jan Gray
  • 👤 Martin O'Riordan

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-03 05:00
CPC Classifications
G; G06; G06F; G06F9/00; G06F9/06; G06F9/44; G06F9/448; G06F9/4488; G06F9/4492

Claims Analysis

Total Claims: 93
Claim 1
Independent Claim 77 words
A method in a computer compiler for generating code to destroy an object, the object having a class, the class having a destructor to destroy objects of the class, the method comprising the steps of: generating a plurality of destructor functions for the class wherein each destructor function executes a subset of the destruction process; and generating code to invoke one of the plurality of destructor functions when an object of the class is to be destroyed.
Claim 2
Independent Claim 77 words
A method in a computer compiler for generating code to destroy an object, the object having a class, the class having a destructor to destroy objects of the class, the method comprising the steps of: generating a plurality of destructor functions for the class wherein each destructor function executes a subset of the destruction process; and generating code to invoke one of the plurality of destructor functions when an object of the class is to be destroyed.
Claim 3
Dependent Claim 34 words
The method of claim 1 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is not a most-derived class for the object.
Claim 4
Dependent Claim 53 words
The method of claim 2 wherein the destructor function to destroy the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; and invoking destructors for direct base classes of the class that have destructors.
Claim 5
Dependent Claim 33 words
The method of claim 1 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is a most-derived class for the object.
Claim 6
Dependent Claim 73 words
The method of claim 4 wherein the destructor function to destroy the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors.
Claim 7
Dependent Claim 50 words
The method of claim 1 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is a most-derived class for the object and to deallocate memory associated with the object using a memory deallocation function appropriate for the class.
Claim 8
Dependent Claim 87 words
The method of claim 6 wherein the destructor function to destroy the object and to deallocated memory associated with the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; invoking destructors for virtual base classes of the class, when the virtual base classes have destructors; and deallocating memory associated with the object.
Claim 9
Dependent Claim 25 words
The method of claim 1 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy an array of objects.
Claim 10
Dependent Claim 81 words
The method of claim 8 wherein the destructor function to destroy an array of objects performs for each object in the array the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors.
Claim 11
Dependent Claim 35 words
The method of claim 1 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy an array of objects and to deallocate memory associated with the array of objects.
Claim 12
Dependent Claim 101 words
The method of claim 10 wherein the destructor function to destroy an array of objects and to deallocate memory associated with the array of objects performs the steps of: for each object in the array, executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors; and deallocating the memory associated with the array of objects.
Claim 13
Independent Claim 65 words
A method in a computer system for destroying an occurrence of a base class within a derived class, the method comprising the computer-implemented steps of: invoking a destructor function of the base class without passing an indication that the occurrence of the base class is within the derived class; and under control of the destructor function, controlling destruction of the occurrence of the base class.
Claim 14
Independent Claim 65 words
A method in a computer system for destroying an occurrence of a base class within a derived class, the method comprising the computer-implemented steps of: invoking a destructor function of the base class without passing an indication that the occurrence of the base class is within the derived class; and under control of the destructor function, controlling destruction of the occurrence of the base class.
Claim 15
Dependent Claim 68 words
The method of claim 12 further including: under control of the destructor function, when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 16
Independent Claim 62 words
A method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the scalar destructor function, controlling destruction of the object of the class.
Claim 17
Independent Claim 62 words
A method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the scalar destructor function, controlling destruction of the object of the class.
Claim 18
Dependent Claim 53 words
The method of claim 14 further including: under control of the scalar destructor function, performing steps for destroying an occurrence of the class when the class is not a most-derived class; and when the class has a virtual base class with a destructor function, invoking the destructor function for the virtual base class.
Claim 19
Dependent Claim 66 words
The method of claim 15 wherein the step of performing includes: when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 20
Dependent Claim 75 words
The method of claim 15 wherein the step of performing includes: invoking a destructor function that performs the steps of when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 21
Independent Claim 67 words
A method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a delete scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the delete scalar destructor function, controlling destruction of the object and deallocating memory for the object.
Claim 22
Independent Claim 67 words
A method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a delete scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the delete scalar destructor function, controlling destruction of the object and deallocating memory for the object.
Claim 23
Dependent Claim 43 words
The method of claim 18 further including: under control of the delete scalar destructor function, invoking a scalar destructor function for destroying the object when the class is a most-derived class without deallocating memory for the object; and deallocating memory for the object.
Claim 24
Dependent Claim 53 words
The method of claim 19 further including: under control of the scalar destructor function, performing steps for destroying an occurrence of the class when the class is not a most-derived class; and when the class has a virtual base class with a destructor function, invoking the destructor function for the virtual base class.
Claim 25
Dependent Claim 66 words
The method of claim 20 wherein the step of performing includes: when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 26
Dependent Claim 75 words
The method of claim 20 wherein the step of performing includes: invoking a destructor function that performs the steps of when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 27
Independent Claim 82 words
A method in a computer system for generating a hierarchy of destructor functions for controlling the destruction of objects of a class, the method comprising the computer-implemented steps of: creating an occurrence destructor function for controlling destruction of an occurrence of the class when the class is not a most-derived class; creating a scalar destructor function for controlling destruction of an object of the class when the class is a most-derived class, wherein the scalar destructor function invokes the occurrence destructor function.
Claim 28
Independent Claim 82 words
A method in a computer system for generating a hierarchy of destructor functions for controlling the destruction of objects of a class, the method comprising the computer-implemented steps of: creating an occurrence destructor function for controlling destruction of an occurrence of the class when the class is not a most-derived class; creating a scalar destructor function for controlling destruction of an object of the class when the class is a most-derived class, wherein the scalar destructor function invokes the occurrence destructor function.
Claim 29
Dependent Claim 82 words
The method of claim 23 wherein the occurrence destructor function executes a programmer-defined destructor for the class, when the class has the programmer-defined destructor; invokes a data member destructor function for a data member of the class, when the data member has the data member destructor function; and invokes a non-virtual direct base class destructor function for a non-virtual direct base class of the class, when the class has a non-virtual direct base class with the non-virtual direct base class destructor function.
Claim 30
Independent Claim 48 words
The method of claims 23 or 24 wherein the scalar destructor function after invoking the occurrence destructor function, invokes a virtual base class destructor function for a virtual base class of the class, when the class has a virtual base class with the virtual base class destructor function.
Claim 31
Dependent Claim 65 words
The method of claim 25 including the step of: creating a delete scalar destructor function for controlling destruction of an object of the class when the class is a most-derived class and for deallocating memory for the object, wherein the delete scalar destructor function invokes the scalar destructor function and deallocates memory for the object when passed an indication to deallocate memory for the object.
Claim 32
Dependent Claim 48 words
The method of claim 23 including the step of: creating a vector destructor function for controlling destruction of an array of objects of the class when the class is a most-derived class, wherein the vector destructor function invokes the scalar destructor function for each object in the array.
Claim 33
Dependent Claim 57 words
The method of claim 27 including the step of: creating a delete vector destructor function for controlling destruction of an array of objects of the class when the class is a most-derived class and for deallocating memory for the array, wherein the delete vector destructor function invokes the vector destructor function and deallocates memory for the array.
Claim 34
Dependent Claim 68 words
The method of claim 27 including the step of: creating a delete vector destructor function for controlling destruction of an array of objects of the class when the class is a most-derived class and for deallocating memory for the array, wherein the delete vector destructor function invokes the vector destructor function and deallocates memory for the array when passed an indication to deal locate memory for the array.
Claim 35
Dependent Claim 106 words
The method of claim 27 including the step of: creating a delete vector destructor function for controlling destruction of objects of the class when a destructor for the class is specified to be virtual, wherein the delete vector destructor function when passed an indication that an array of objects of the class is to be destroyed, invokes the vector destructor function and deallocates memory for the array; and when passed an indication that a single object of the class is to be destroyed, invokes the scalar destructor function and deallocates memory for the single object when passed an indication to deallocate memory for the single object.
Claim 36
Independent Claim 67 words
A method in a computer system for generating multiple destructor functions for destroying objects of a class, the method comprising the steps of: creating an occurrence destructor function for controlling destruction of an object of the class when the class is not a most-derived class; and creating a scalar destructor function for controlling destruction of an object of the class when the class is a most-derived class.
Claim 37
Independent Claim 67 words
A method in a computer system for generating multiple destructor functions for destroying objects of a class, the method comprising the steps of: creating an occurrence destructor function for controlling destruction of an object of the class when the class is not a most-derived class; and creating a scalar destructor function for controlling destruction of an object of the class when the class is a most-derived class.
Claim 38
Dependent Claim 15 words
The method of claim 31 wherein the scalar destructor function invokes the occurrence destructor function.
Claim 39
Independent Claim 24 words
The method of claims 31 or 32 wherein the scalar destruction function is a delete scalar destructor function that deallocates memory for the object.
Claim 40
Dependent Claim 33 words
The method of claim 31 including creating a delete scalar function for controlling destruction of an object of the class when the class is a most-derived and for deallocating memory for the object.
Claim 41
Dependent Claim 14 words
The method of claim 34 wherein the delete scalar function invokes the scalar function.
Claim 42
Independent Claim 65 words
A method in a computer system for generating code for destroying an object of a class, the method comprising the computer-implemented steps of: determining a characteristic of instantiation of the class of the object; generating a destructor function for controlling destruction of the object based on the determined characteristic; and when the object is to be destroyed, generating an invocation of the generated destructor function.
Claim 43
Independent Claim 65 words
A method in a computer system for generating code for destroying an object of a class, the method comprising the computer-implemented steps of: determining a characteristic of instantiation of the class of the object; generating a destructor function for controlling destruction of the object based on the determined characteristic; and when the object is to be destroyed, generating an invocation of the generated destructor function.
Claim 44
Dependent Claim 22 words
The method of claim 36 wherein the determined characteristic is whether the object is an automatic object or a dynamically allocated object.
Claim 45
Dependent Claim 79 words
The method of claim 37 wherein the object is an automatic object, and further including: generating the destructor function as a scalar destructor function for controlling destruction of the object and without having computer code for deallocating memory of the object; and when the object goes out of scope, generating the invocation as an invocation of the scalar destructor function wherein the invocation does not include passing an indication that memory for the object is not to be deallocated.
Claim 46
Dependent Claim 127 words
The method of claim 37 wherein the object is an automatic object, and further including: generating the destructor function as a scalar destructor function consisting essentially of the steps of: when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; and when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and when the object goes out of scope, generating the invocation as an invocation of the scalar destructor function.
Claim 47
Independent Claim 33 words
The method of claims 38 or 39 including generating the invocation of the scalar destructor function as a direct invocation, rather than an indirect invocation through a virtual function table of the class.
Claim 48
Dependent Claim 91 words
The method of claim 37 wherein the object is within an array of objects of the class and the array is an automatic array and further including: generating the destructor function as a vector destructor function for controlling destruction of the array and without having computer code for deallocating memory of the array; and when the array goes out of scope, generating the invocation as an invocation of the vector destructor function wherein the invocation does not include passing an indication that memory for the array is not to be deallocated.
Claim 49
Dependent Claim 145 words
The method of claim 37 wherein the object is within an array of objects of the class and the array is an automatic array and further including: generating the destructor function as a vector destructor function consisting essentially of the steps of, for each object in the array, when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; and when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and when the array goes out of scope, generating the invocation as an invocation of the vector destructor function.
Claim 50
Independent Claim 33 words
The method of claims 41 or 42 including generating the invocation of the vector destructor function as a direct invocation, rather than an indirect invocation through a virtual function table of the class.
Claim 51
Dependent Claim 98 words
The method of claim 37 wherein the object is a dynamically allocated object and further including: generating the destructor function as a scalar destructor function for controlling destruction of the object and without having computer code for deallocating memory of the object; and when a destructor for the class is explicitly invoked and the invocation explicitly indicates to resolve the destructor to the destructor for the class, generating the invocation as an invocation of the scalar destructor function object wherein the invocation does not include passing an indication that memory for the object is not to be deallocated.
Claim 52
Dependent Claim 145 words
The method of claim 37 wherein the object is a dynamically allocated object and further including: generating the destructor function as a scalar destructor function consisting essentially of the steps of when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; and when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and when a destructor for the class is explicitly invoked and the invocation explicitly indicates to resolve the destructor to the destructor for the class, generating the invocation as an invocation of the scalar destructor function.
Claim 53
Independent Claim 33 words
The method of claims 44 or 45 includes generating the invocation of the scalar destructor function as a direct invocation, rather than an indirect invocation through a virtual function table of the class.
Claim 54
Dependent Claim 105 words
The method of claim 37 wherein the object is a dynamically allocated object and further including: generating the destructor function as a delete scalar destructor function for controlling destruction of the object and having computer code for deallocating memory for the object; setting a virtual function table for the class to contain a reference to the delete scalar destructor function; and when the object is destroyed using a non-global operator delete, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table wherein the invocation includes passing an indication that memory for the object is to be deallocated.
Claim 55
Dependent Claim 162 words
The method of claim 37 wherein the object is a dynamically allocated object and further including: generating the destructor function as a delete scalar destructor function consisting essentially of the steps of: when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and deallocating memory for the object; setting a virtual function table for the class to contain a reference to the delete scalar destructor function; and when the object is destroyed using a non-global operator delete, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table.
Claim 56
Dependent Claim 86 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a delete vector destructor function for controlling destruction of the object, the delete vector destructor function having computer code for destroying and deallocating an array of objects of the class when the object is within an array of objects of the class and for destroying and deallocating the object when the object is not within an array of objects of the class.
Claim 57
Dependent Claim 271 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a delete vector destructor function that is passed an indication whether an array of objects is being destroyed and an indication whether to deallocate memory for an object that is not within an array, the delete vector destructor function consisting essentially of the steps of: when the object that is not within an array is being destroyed, when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and when memory for the object is to be deallocated, deallocating memory for the object; and when an array objects is being destroyed, for each object in the array, when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; and when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and deallocating memory for the array.
Claim 58
Independent Claim 79 words
The method of claims 49 or 50 further including: setting a virtual function table for the class to contain a reference to the delete vector destructor function; and when the object is destroyed using a non-global operator delete, generating the invocation as an indirect invocation of the delete vector destructor function through the virtual function table passing an indication that the object is not within an array and an indication that memory for the object is to be deallocated.
Claim 59
Independent Claim 71 words
The method of claims 49 or 50 further including: setting a virtual function table for the class to contain a reference to the delete vector destructor function; and when an array of dynamically allocated objects of the class is destroyed using an operator delete, generating the invocation as an indirect invocation of the delete vector destructor function through the virtual function table passing an indication that an array is being destroyed.
Claim 60
Dependent Claim 15 words
The method of claim 52 wherein the array is destroyed using a global operator delete.
Claim 61
Dependent Claim 15 words
The method of claim 52 wherein the array is destroyed using a non-global operator delete.
Claim 62
Independent Claim 75 words
The method of claims 49 or 50 further including: when the object is deleted using a global operator delete, generating the invocation as an indirect invocation of the delete vector destructor function through the virtual function table passing an indication that an array is not being destroyed and an indication that memory for the object is not to be deallocated; and generating an invocation to the global operator delete to deallocate memory for the object.
Claim 63
Independent Claim 95 words
The method of claims 49 or 50 further including: setting a virtual function table for the class to contain a reference to the delete vector destructor function; and when a destructor is explicitly invoked for the object and the invocation does not explicitly indicate to resolve the destructor to the destructor for the class, generating the invocation as an indirect invocation of the delete vector destructor function through the virtual function table passing an indication that an array is not being destroyed and an indication that memory for the object is not to be deallocated.
Claim 64
Dependent Claim 38 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a delete scalar destructor function for controlling the destruction and deallocation of the object.
Claim 65
Dependent Claim 148 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a delete scalar destructor function that is passed an indication whether to deallocate memory for the object, the delete scalar destruction function consisting essentially of the steps of: when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function; and when the indication indicates that memory for the object is to be deallocated, deallocating memory for the object.
Claim 66
Independent Claim 68 words
The method of claims 57 or 58 further including: setting a virtual function table for the class to contain a reference to the delete scalar destructor function; and when the object is destroyed using a non-global operator delete, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table passing an indication that memory for the object is to be deallocated.
Claim 67
Independent Claim 65 words
The method of claims 57 or 58 further including: when the object is destroyed using a global operator delete, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table passing an indication that memory for the object is not to be deallocated; and generating an invocation to the global operator delete to deallocate memory for the object.
Claim 68
Independent Claim 85 words
The method of claims 57 or 58 further including: setting a virtual function table for the class to contain a reference to the delete scalar destructor function; and when a destructor is explicitly invoked for the object and the invocation does not explicitly indicate to resolve the destructor to a destructor for the class, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table passing an indication that memory for the object is not to be deallocated.
Claim 69
Dependent Claim 124 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a delete scalar destructor function for controlling destruction of the object, the delete scalar destructor function having computer code for deallocating memory of the object; setting a virtual function table for the class to contain a reference to the delete scalar destructor function; and when the object is destroyed using a global operator delete, generating the invocation as an indirect invocation of the delete scalar destructor function through the virtual function table passing an indication that memory for the object is not to be deallocated; and generating an invocation of the global delete function to deallocate memory for the object.
Claim 70
Dependent Claim 45 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a scalar destructor function for controlling destruction of the object and without having computer code for deallocating memory for the object.
Claim 71
Dependent Claim 112 words
The method of claim 37 wherein the object is a dynamically allocated object of the class and further including: generating the destructor function as a scalar destructor function consisting essentially of the steps of: when the class has a programmer-defined destructor, executing the programmer-defined destructor; when a data member of the class has a data member destructor function, invoking the data member destructor function; when a non-virtual direct base class of the class has a non-virtual direct base class destructor function, invoking the non-virtual direct base class destructor function; and when a virtual base class of the class has a virtual base class destructor function, invoking the virtual base class destructor function.
Claim 72
Independent Claim 69 words
The method of claims 63 or 64 further including: setting a virtual function table for the class to contain a reference to the scalar destructor function; and when the object is deleted using a global operator delete, generating the invocation as an indirect invocation of the scalar destructor function through the virtual function table; and generating an invocation to the global operator delete to deallocate memory for the object.
Claim 73
Independent Claim 70 words
The method of claims 63 or 64 further including: setting a virtual function table for the class to contain a reference to the scalar destructor function; and when a destructor is explicitly invoked for the object and the invocation does not explicitly indicate to resolve the destructor to a destructor for the class, generating the invocation as an indirect invocation of the scalar destructor function through the virtual function table.
Claim 74
Dependent Claim 90 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer compiler for generating code to destroy an object, the object having a class, the class having a destructor to destroy objects of the class, the method comprising the steps of: generating a plurality of destructor functions for the class wherein each destructor function executes a subset of the destruction process; and generating code to invoke one of the plurality of destructor functions when an object of the class is to be destroyed.
Claim 75
Dependent Claim 90 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer compiler for generating code to destroy an object, the object having a class, the class having a destructor to destroy objects of the class, the method comprising the steps of: generating a plurality of destructor functions for the class wherein each destructor function executes a subset of the destruction process; and generating code to invoke one of the plurality of destructor functions when an object of the class is to be destroyed.
Claim 76
Dependent Claim 47 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 67 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is not a most-derived class for the object.
Claim 77
Dependent Claim 66 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 68 wherein the destructor function to destroy the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; and invoking destructors for direct base classes of the class that have destructors.
Claim 78
Dependent Claim 46 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 67 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is a most-derived class for the object.
Claim 79
Dependent Claim 86 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 70 wherein the destructor function to destroy the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors.
Claim 80
Dependent Claim 63 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 67 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy the object when the class is a most-derived class for the object and to deallocate memory associated with the object using a memory deallocation function appropriate for the class.
Claim 81
Dependent Claim 100 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 72 wherein the destructor function to destroy the object and to deallocated memory associated with the object performs the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; invoking destructors for virtual base classes of the class, when the virtual base classes have destructors; and deallocating memory associated with the object.
Claim 82
Dependent Claim 38 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 67 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy an array of objects.
Claim 83
Dependent Claim 94 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 74 wherein the destructor function to destroy an array of objects performs for each object in the array the steps of: executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors.
Claim 84
Dependent Claim 48 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 67 wherein the step of generating a plurality of destructor functions generates a destructor function to destroy an array of objects and to deallocate memory associated with the array of objects.
Claim 85
Dependent Claim 114 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 76 wherein the destructor function to destroy an array of objects and to deallocate memory associated with the array of objects performs the steps of: for each object in the array, executing programmer-specified destruction processing, when specified by a programmer; invoking destructors for data members of the class, when the data members have destructors; invoking destructors for direct base classes of the class, when the direct base classes have destructors; and invoking destructors for virtual base classes of the class, when the virtual base classes have destructors; and deallocating the memory associated with the array of objects.
Claim 86
Dependent Claim 78 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer system for destroying an occurrence of a base class within a derived class, the method comprising the computer-implemented steps of: invoking a destructor function of the base class without passing an indication that the occurrence of the base class is within the derived class; and under control of the destructor function, controlling destruction of the occurrence of the base class.
Claim 87
Dependent Claim 78 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer system for destroying an occurrence of a base class within a derived class, the method comprising the computer-implemented steps of: invoking a destructor function of the base class without passing an indication that the occurrence of the base class is within the derived class; and under control of the destructor function, controlling destruction of the occurrence of the base class.
Claim 88
Dependent Claim 81 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 78 further including: under control of the destructor function, when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a nonvirtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 89
Dependent Claim 75 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the scalar destructor function, controlling destruction of the object of the class.
Claim 90
Dependent Claim 75 words
A computer-readable storage device containing instructions for controlling a computer system to perform a method in a computer system for destroying an object of a class when the class is a most-derived class, the method comprising the computer-implemented steps of: invoking a scalar destructor function of the class without passing an indication that the class is a most-derived class; and under control of the scalar destructor function, controlling destruction of the object of the class.
Claim 91
Dependent Claim 66 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 80 further including: under control of the scalar destructor function, performing steps for destroying an occurrence of the class when the class is not a most-derived class; and when the class has a virtual base class with a destructor function, invoking the destructor function for the virtual base class.
Claim 92
Dependent Claim 79 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 81 wherein the step of performing includes: when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the dam member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.
Claim 93
Dependent Claim 88 words
A computer-readable storage device containing instructions for controlling a computer system to perform the method of claim 81 wherein the step of performing includes: invoking a destructor function that performs the steps of when a programmer-defined destructor is specified for the class, executing the programmer-defined destructor; when the class has a data member with a destructor function, invoking the destructor function of the data member; and when the class has a non-virtual direct base class with a destructor function, invoking the destructor function of the non-virtual base class.

References Cited (Backward Citations)

US5247669A Cited

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2000-02-11 2000-08-12 2001-02-11 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2004-02-11 2004-08-12 2005-02-11 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2008-02-11 2008-08-12 2009-02-11 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag