Alright, well, I've begun development. I figured I'd spin in circles in the beginning since I've never done any CodeBlocks plugin development before, so I just started off as I created a library which I can link to later.
I'm starting off from scratch using ANTLR to parse the grammar. I'm working with the C preprocessor now since I understand macros and defines are a huge shortfall. I'll be populating a tree structure that can be walked through the GUI side. I envision something like this:
CC has two components: A Parser and Data storage functions. The GUI calls the CC library with a pointer to a memory buffer and pointer to store resulting tree data. If the GUI exits, the tree data can be saved outright to a file and reopened later; if a file is changed, every file that references the changed file is reprocessed in the background. This way, large projects only need to be parsed once. If there is no data found on startup, n different threads will each parse the files (likely configurable). Any other ideas?
I can tokenize the C++, but I need to actually store everything and get it to interact with the preprocessor (i.e. #ifndefs).
In cases where I can sacrifice a bit of memory for speed, I have.
Just a warning: I work full-time, so it's unlikely everything'll be done next week :-).