This extended project will be similar to the LineHolder project except more complex. There will be several objects and data properties being saved, and each object can possibly contain several pointers, integers, doubles, booleans, single and double subscripted arrays, linked lists, or one or more encapsulated objects. We also need to be able to save xml formatted strings as variables in objects The purpose of this project is to demonstrate our method for the saving and opening of encapsulated objects which may be several levels deep. As with our last project, LineHolder, data items are currently saved or loaded using the fprintf() and fscanf() functions as we demonstrated in the initial LineHolder project. These need to be changed to implement xml as they were for LineHolder. For this ShapeHolder project, the user can input various polygons of different colors. In addition, each polygon that is input can also have zero or more parts associated with it. Furthermore, each part can have zero or more properties. For simplicity, this program treats a part property as an integer value. Thus, we have a case where we have linked lists embedded within linked lists embedded within linked lists. Also, having learned a little more about our requirements from the previous LineHolder project, we also need to be able to parse not only xml files but xml strings as well: We must be able to save an xml formatted string as a variable in an object and be able to pass that string around from function to function, object to object. This string may be written to a save file that is not exclusively xml data and so we need to be able to parse the string variable and not the rest of the file. For example, we need a function similar to the ReadFromFile(filename) function but with an input of an xml formatted string: ReadFromString(char XMLString[]) where the contents of XMLString[] may be something like: "". This program is meant to serve as a simple example to mimic our larger and more complex programs. So the results of this project need to be as flexible as possible to allow us to use the program on our other projects. All work is subject to our consulting agreement, which must be signed before work can begin.
## Deliverables
Full source code written in C++ using standard libraries able to be built on both Unix and Windows The Apache xerces-c++ xml parser is preffered, but another commercially or freely available parser may be considered provided that it meets our needs and may be implemented on both unix and windows.
## Platform
Windows: All Unix: Sun Solaris