3.3 Semanticdb Internals
Semanticdb complexity is certainly an issue. It is a rather
hairy problem to try and solve.
- Defines a database and a table base class. You can
instantiate these classes, and use them, but they are not persistent.
This file also provides support for
which automatically associates files with tables in databases so that
tags are saved while a buffer is not in memory.
The database and tables both also provide applicable cache information,
and cache flushing system. The semanticdb search routines use caches
to save data structures that are complex to calculate.
Lastly, it provides the concept of project root. It is a system
by which a file can be associated with the root of a project, so if
you have a tree of directories and source files, it can find the root,
and allow a tag-search to span all available databases in that
- Provides a subclass of the basic table so that it can be saved to
disk. Implements all the code needed to unbind/rebind tags to a
buffer and writing them to a file.
- Implements a special kind of system database that uses Emacs
internals to perform queries.
- Implements a system database that uses Ebrowse to parse files into a
table that can be queried for tag names. Successful tag hits during a
find causes Semantic to pick up and parse the reference files to
get the full details.
- Infrastructure for searching groups Semantic databases, and dealing
with the search results format.
- Tracks crossreferences. Cross references are needed when buffer is
reparsed, and must alert other tables that any dependent caches may
need to be flushed. References are in the form of include files.