void AdminCache::AddGroupCommandOverride(GroupId id, const char *name, OverrideType type, OverrideRule rule) { AdminGroup *pGroup = (AdminGroup *)m_pMemory->GetAddress(id); if (!pGroup || pGroup->magic != GRP_MAGIC_SET) { return; } Trie *pTrie = NULL; if (type == Override_Command) { if (pGroup->pCmdTable == NULL) { pGroup->pCmdTable = sm_trie_create(); } pTrie = pGroup->pCmdTable; } else if (type == Override_CommandGroup) { if (pGroup->pCmdGrpTable == NULL) { pGroup->pCmdGrpTable = sm_trie_create(); } pTrie = pGroup->pCmdGrpTable; } else { return; } sm_trie_insert(pTrie, name, (void *)(int)rule); }
AdminCache::AdminCache() { m_pCmdOverrides = sm_trie_create(); m_pCmdGrpOverrides = sm_trie_create(); m_pStrings = new BaseStringTable(1024); m_pMemory = m_pStrings->GetMemTable(); m_FreeGroupList = m_FirstGroup = m_LastGroup = INVALID_GROUP_ID; m_FreeUserList = m_FirstUser = m_LastUser = INVALID_ADMIN_ID; m_pGroups = sm_trie_create(); m_pCacheFwd = NULL; m_FirstGroup = -1; m_pAuthTables = sm_trie_create(); m_InvalidatingAdmins = false; m_destroying = false; m_pLevelNames = sm_trie_create(); }
UserMessages::UserMessages() : m_InterceptBuffer(m_pBase, 2500) { m_Names = sm_trie_create(); m_HookCount = 0; m_InExec = false; m_InHook = false; m_CurFlags = 0; m_CurId = INVALID_MESSAGE_ID; }
HandleSystem::HandleSystem() { m_Handles = new QHandle[HANDLESYS_MAX_HANDLES + 1]; memset(m_Handles, 0, sizeof(QHandle) * (HANDLESYS_MAX_HANDLES + 1)); m_Types = new QHandleType[HANDLESYS_TYPEARRAY_SIZE]; memset(m_Types, 0, sizeof(QHandleType) * HANDLESYS_TYPEARRAY_SIZE); m_TypeLookup = sm_trie_create(); m_strtab = new BaseStringTable(512); m_TypeTail = 0; }
void Translator::RebuildLanguageDatabase(const char *lang_header_file) { /* Erase everything we have */ sm_trie_destroy(m_pLCodeLookup); m_pLCodeLookup = sm_trie_create(); m_pStringTab->Reset(); for (size_t i=0; i<m_Languages.size(); i++) { delete m_Languages[i]; } m_Languages.clear(); /* Start anew */ SMCError err; SMCStates states; if ((err=textparsers->ParseFile_SMC(lang_header_file, this, &states)) != SMCError_Okay) { const char *str_err = textparsers->GetSMCErrorString(err); if (!str_err) { str_err = m_CustomError.c_str(); } g_Logger.LogError("[SM] Failed to parse language header file: \"%s\"", lang_header_file); g_Logger.LogError("[SM] Parse error (line %d, column %d): %s", states.line, states.col, str_err); } void *serverLang; if (!sm_trie_retrieve(m_pLCodeLookup, m_InitialLang, &serverLang)) { g_Logger.LogError("Server language was set to bad language \"%s\" -- reverting to English", m_InitialLang); strncopy(m_InitialLang, "en", sizeof(m_InitialLang)); m_ServerLang = SOURCEMOD_LANGUAGE_ENGLISH; } m_ServerLang = reinterpret_cast<unsigned int>(serverLang); if (!m_Languages.size()) { g_Logger.LogError("[SM] Fatal error, no languages found! Translation will not work."); } for (size_t i=0; i<m_Files.size(); i++) { m_Files[i]->ReparseFile(); } }
void AdminCache::RegisterAuthIdentType(const char *name) { if (sm_trie_retrieve(m_pAuthTables, name, NULL)) { return; } Trie *pAuth = sm_trie_create(); AuthMethod method; method.name.assign(name); method.table = pAuth; m_AuthMethods.push_back(method); sm_trie_insert(m_pAuthTables, name, pAuth); }
typedescription_t *CHalfLife2::FindInDataMap(datamap_t *pMap, const char *offset) { typedescription_t *td = NULL; DataMapTrie &val = m_Maps[pMap]; if (!val.trie) { val.trie = sm_trie_create(); } if (!sm_trie_retrieve(val.trie, offset, (void **)&td)) { if ((td = UTIL_FindInDataMap(pMap, offset)) != NULL) { sm_trie_insert(val.trie, offset, td); } } return td; }
CHalfLife2::CHalfLife2() { m_pClasses = sm_trie_create(); }
RootConsoleMenu::RootConsoleMenu() { m_pCommands = sm_trie_create(); m_CfgExecDone = false; }
ConCmdManager::ConCmdManager() : m_Strings(1024) { m_pCmds = sm_trie_create(); m_pCmdGrps = sm_trie_create(); m_CmdClient = 0; }
EventManager::EventManager() : m_EventType(0) { /* Create an event lookup trie */ m_EventHooks = sm_trie_create(); }
Translator::Translator() : m_ServerLang(SOURCEMOD_LANGUAGE_ENGLISH) { m_pStringTab = new BaseStringTable(2048); m_pLCodeLookup = sm_trie_create(); strncopy(m_InitialLang, "en", sizeof(m_InitialLang)); }
void CPhraseFile::ReparseFile() { if (m_pPhraseLookup) { sm_trie_destroy(m_pPhraseLookup); } m_pPhraseLookup = sm_trie_create(); m_LangCount = m_pTranslator->GetLanguageCount(); if (!m_LangCount) { return; } SMCError err; char path[PLATFORM_MAX_PATH]; g_SourceMod.BuildPath(Path_SM, path, PLATFORM_MAX_PATH, "translations/%s", m_File.c_str()); //backwards compatibility shim /* :HACKHACK: Change .cfg/.txt and vice versa for compatibility */ if (!g_LibSys.PathExists(path)) { if (m_File.compare("common.cfg") == 0) { UTIL_ReplaceAll(path, sizeof(path), "common.cfg", "common.phrases.txt"); } else if (strstr(path, ".cfg")) { UTIL_ReplaceAll(path, sizeof(path), ".cfg", ".txt"); } else if (strstr(path, ".txt")) { UTIL_ReplaceAll(path, sizeof(path), ".txt", ".cfg"); } } SMCStates states; if ((err=textparsers->ParseFile_SMC(path, this, &states)) != SMCError_Okay) { const char *msg = textparsers->GetSMCErrorString(err); if (!msg) { msg = m_ParseError.c_str(); } g_Logger.LogError("[SM] Fatal error encountered parsing translation file \"%s\"", m_File.c_str()); g_Logger.LogError("[SM] Error (line %d, column %d): %s", states.line, states.col, msg); } const char *code; for (unsigned int i = 1; i < m_LangCount; i++) { if (!m_pTranslator->GetLanguageInfo(i, &code, NULL)) { continue; } g_SourceMod.BuildPath(Path_SM, path, PLATFORM_MAX_PATH, "translations/%s/%s", code, m_File.c_str()); /* Speculatively load these. */ if (!g_LibSys.PathExists(path)) { continue; } if ((err=textparsers->ParseFile_SMC(path, this, &states)) != SMCError_Okay) { const char *msg = textparsers->GetSMCErrorString(err); if (!msg) { msg = m_ParseError.c_str(); } g_Logger.LogError("[SM] Fatal error encountered parsing translation file \"%s/%s\"", code, m_File.c_str()); g_Logger.LogError("[SM] Error (line %d, column %d): %s", states.line, states.col, msg); } } }