semantic: Semanticdb Internals

 
 3.3 Semanticdb Internals
 ========================
 
 Semanticdb complexity is certainly an issue.  It is a rather hairy
 problem to try and solve.
 
 ‘semanticdb.el’
      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 ‘semanticdb-minor-mode’, 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 directory hierarchy.
 
 ‘semanticdb-file.el’
      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.
 
 ‘semanticdb-el.el’
      Implements a special kind of “system” database that uses Emacs
      internals to perform queries.
 
 ‘semanticdb-ebrowse.el’
      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.
 
 ‘semanticdb-find.el’
      Infrastructure for searching groups Semantic databases, and dealing
      with the search results format.
 
 ‘semanticdb-ref.el’
      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.