Patent ID: 8359568

Claim:
A data management method, comprising: accessing data objects in an application written in C/C++ for change-logging and multi-step redo/undo, wherein said data objects are organized in a binary format and are devoid of self-describing information, and wherein said accessing the data objects is structured in a plurality of layers, said plurality of layers comprising a semantic layer, a change log layer and a repository layer; dynamically analyzing the data objects to recognize all changes made by any of a plurality of users for all data types used by the application, said dynamically analyzing the data comprising using semantic analysis to track changes and identifying any changes in any of the data objects, said dynamically analyzing being performed by a programmed computer processor; and writing generic functions, which are not linked to existing object types, for reading and writing C/C++ data structures, said writing generic functions comprising: extracting information from annotations of C/C++ data structure declarations; annotating the data structure declarations with meta-information, said meta-information being lexically spatially proximate to the data structure declarations; parsing the annotations and the data structure declarations; combining the annotations and the data structure declarations into an intermediate data structure; and generating generic wrapper classes using the intermediate data structure, wherein the semantic layer: uses an application specific semantic analysis mechanism to identify when data objects have been changed; converts the objects from C/C++ data structures into a generic format using the wrapper classes; sends change notifications containing the objects in generic format to the change log layer; receives changes from the change log layer; and applies the changes received from the change log layer to the data objects, using the wrapper classes to convert the objects in generic format to C/C++ data structures, wherein the change log layer collects and maintains all changes of an application session and provides the changes to the repository layer, and wherein the repository layer saves information of change records in a central persistent repository, where the repository layer saves the data objects and change information.