ProjectManager, Project and ProjectFile in Code::Blocks
Code Blocks IDE的内部实现中,关于项目和文件之间的关系和数据保存主要维护在Project,ProjectManager和ProjectFile这几个类里面。在ProjectManager里面有几个部分:1)View:包括m_pNotebook, m_pTree, m_plugin等;2)Status:包括m_isLoadingProject, m_isclosingProject, m_isCheckingForExternallyModifiedProject等,从字面意义上就可以看出它们的用途;3)Project:包括m_pActiveProject和指针*m_pProjects。这个当前活动的项目m_pActiveProject就是Project类的实例。
Project类里面也包括几个部分:1)Attribute属性:wxDateTime m_lastmodified,m_commonToplevelPath和m_basePath;2)File文件:FilesList m_files和ProjectFiles m_projectFilesMap。
这个FilesList是通过wxWidgets定义的list结构:WX_DECLARE_LIST(projectFile, FilesList)其保存了ProjectFile类数据,也就是真实的物理上的项目文件数据。而第二个m_projectFilesMap是另一个通过wxWidgets定义的字符串哈希图结构,它的作用是通过文件名可以哈希查找相应文件。
ProjectFile是继承自BlockAllocated的项目文件类,它可以大体分为两类:1)View:保存了treeItemID,b_editorOpen, editorPos,editorTopLine, editorTabPos等信息;2)file: 有文件名和相对文件名等信息。
顺便说一句:BlockAllocated是Code Blocks中被用来实际分配内存块的类。
以上概要地描述了Code Blocks内部代码实现上关于项目、文件以及项目管理类之间的关系和它们的大体组成。
作者:Bryan in Cbforge.com,转载请保留。
Related posts:
- Code::Blocks IDE in openSUSE 11.1编译和安装指南
- Setting up Code::Blocks to work with SDL - 多媒体编程库
- QT4+MinGW+Code::Blocks IDE集成
- Debian Lenny编译wxWidgets与Code::Blocks SVN版
- 加法?减法:CodeLite or Code::Blocks just for another sourceinsight
- Debugging with Code::Blocks
- Code::Blocks IDE: 手动安装和配置编译器指南
- Code::Blocks Debug Shortcut and Example
- CB IDE内部结构之-工程文件篇
- How to Run a Successful Free Software Project














