MojErr MojDbKindEngine::open(MojDb* db, MojDbReq& req) { MojAssert(db); MojAssertWriteLocked(db->m_schemaLock); MojLogTrace(s_log); // open kind db and index seq m_db = db; MojDbStorageEngine* engine = db->storageEngine(); MojDbStorageTxn* txn = req.txn(); MojAssert(engine); MojErr err = engine->openDatabase(KindsDbName, txn, m_kindDb); MojErrCheck(err); err = engine->openDatabase(IndexIdsDbName, txn, m_indexIdDb); MojErrCheck(err); err = engine->openSequence(IndexIdsSeqName, txn, m_indexIdSeq); MojErrCheck(err); // built-in kinds err = addBuiltin(RootKindJson, req); MojErrCheck(err); err = addBuiltin(KindKindJson, req); MojErrCheck(err); err = addBuiltin(RevTimestampJson, req); MojErrCheck(err); err = addBuiltin(DbStateJson, req); MojErrCheck(err); err = addBuiltin(PermissionJson, req); MojErrCheck(err); err = addBuiltin(QuotaJson, req); MojErrCheck(err); // built-in indexes err = setupRootKind(); MojErrCheck(err); // locale err = db->getLocale(m_locale, req); MojErrCheck(err); // load kinds from obj db err = loadKinds(req); MojErrCheck(err); return MojErrNone; }
ASTScope(ASTScope *par = NULL, ScopeType st = Scope_Local, PackageDeclaration *pkg=0) : package(pkg), parent(par), type(st), owner(0) { if(!par) addBuiltin(); if(par) package = par->package; }