'"base_dir" (optional) specifies the base directory for
the codeintel database. If not given it will default to
\'~/.codeintel\'.
"catalog_dirs" (optional) is a list of catalog dirs in
addition to the std one to use for the CatalogsZone. All
*.cix files in a catalog dir are made available.
"event_reporter" (optional) is a callback that will be called
event_reporter(<event-desc-string>)
before "significant" long processing events in the DB. This
may be useful to forward to a status bar in a GUI.
"import_everything_langs" (optional) is a set of lang names
for which the `lib.hits_from_lpath()\' API should be
supported. This method is typically used to support
"import-everything" cpln eval semantics.  Supporting it
requires the \'toplevelname_index\' indeces which adds
significant space and perf burdens. If not specified,
only JavaScript and PHP are included in the set.'

def __init__(self, mgr, base_dir=None, catalog_dirs=None, event_reporter=None, import_everything_langs=None):

    self.mgr = mgr
    self._lock = threading.RLock()
    self._catalogs_zone = None
    self._stdlibs_zone = None
    self._lang_zone_from_lang = {}
    self._proj_zone_from_proj_path = weakref.WeakValueDictionary()
    if (base_dir is None):
        self.base_dir = expandvars(expanduser(join('~', '.codeintel')))
    elif (not isabs(base_dir)):
        self.base_dir = abspath(base_dir)
    else:
        self.base_dir = base_dir
    self.catalog_dirs = catalog_dirs
    self.event_reporter = event_reporter
    if (import_everything_langs is None):
        self.import_everything_langs = set()
    else:
        assert isinstance(import_everything_langs, set)
        self.import_everything_langs = import_everything_langs
    self.corruptions = []
