What I've got so far...
I've created a tree class called DTree. It uses an STL vector to manage an N-ary tree. It includes functions to move around the directory from the current folder (move_up_one_level and move_into_folder). You can also move to a folder path string ("\folder_a\folder_b\"). This function uses a private member to tokenize the folder path into a list of folder strings. This list is then used to navigate from root to the desired folder. The parser function will also accept paths with filenames (I'll need that later).
There are functions to add and delete files, and folders. The delete folder function uses a postorder traversal to flag folders which are to be deleted. Then the master directory list is traversed to find the flagged folders and delete them. STL makes the deletion easy however at every deletion the list must be traversed once again to shift indices that are greater than the deleted folder's index.
The traversal functions are state based and call an operation function, such as print, search, or flag-delete, according to the current operation state. I've also added a function to return the current path as a string.
What's in a file..?
As I mentioned earlier, every node (folder) contains a list of files. Each file structure contains the name, starting point (in bytes) of the file data, and the size of the file's data. This will allow me to find a file within the ResoPack once the directory is loaded from the ResoPack's header which may actually be at the bottom of the file. [smile]
I can't say I know of this ResoPack library, but it sounds fairly similar to other archives??
For a small number of files it probably isn't a problem, but a developer I know implemented a binary searchable index in the header so as to identify the requested file as quick as possible. Retrievable speed was important.
I forget exactly how it worked to be honest, but it allowed a request to be identified in binary sort time (O(Log|n|) ?) based on as few characters as possible.
Just an idea [smile]
Jack