In my work, I use the API from a software package called "Understand 4 C ++" scitools . I use this to write all my static analysis tools. I even wrote a .NET API to wrap my C API. Which I put on codeplex .
Once you do, resetting all class types is easy:
ClassType[] allclasses = Database.GetAllClassTypes() foreach (ClassType c in allclasses) { Console.WriteLine("Class Name: {0}", c.NameLong); }
Now for a little background about the task, I had something that looked like yours. After a few years, we must maintain SDK compatibility with the previous SDK. In this case, it is useful to compare the SDK between releases to check for possible violations. However, with several hundred files and tens of thousands of lines of comments, which can be a big headache, using a tool for delimiting text, such as Beyond Compare or Araxis. So what I really need to see is the actual code changes, not reordering, not moving the code up and down in the file, not adding comments, etc.
So, the tool I wrote to download all the code.
In one text file, I delete all classes. For each class, I print its inheritance tree, its member functions, both virtual and non-virtual. For each virtual function, I print some virtual methods of the parent class that it overrides (if any). I also print out its member variables. The same thing happens with structures. In another file, I print all the macros. In another file, I print all typedefs.
Then, using this, I can share these files with the files from the previous version. Then it becomes apparent what has changed since release to release. For example, it is easy to see where the function parameter has been changed from TCHAR * to const TCHAR *, for example.