From 9f9f2baae2aaa6b3c399d4d0d7d8a3f1608282ab Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sun, 22 Jun 2014 22:40:57 -0700 Subject: [PATCH] Remove map snapshot API (was not yet ready). --- core/logic/smn_adt_trie.cpp | 123 ----------------------------------- plugins/include/adt_trie.inc | 44 ------------- plugins/testsuite/tries.sp | 30 --------- 3 files changed, 197 deletions(-) diff --git a/core/logic/smn_adt_trie.cpp b/core/logic/smn_adt_trie.cpp index ab70f8cc..5bcae39a 100644 --- a/core/logic/smn_adt_trie.cpp +++ b/core/logic/smn_adt_trie.cpp @@ -37,7 +37,6 @@ #include "sm_memtable.h" HandleType_t htCellTrie; -HandleType_t htSnapshot; enum EntryType { @@ -168,22 +167,6 @@ struct CellTrie : public ke::Refcounted StringHashMap map; }; -struct TrieSnapshot -{ - TrieSnapshot() - : strings(128) - { } - - size_t mem_usage() - { - return length * sizeof(int) + strings.GetMemTable()->GetMemUsage(); - } - - size_t length; - ke::AutoArray keys; - BaseStringTable strings; -}; - class TrieHelpers : public SMGlobalClass, public IHandleTypeDispatch @@ -192,11 +175,9 @@ public: //SMGlobalClass void OnSourceModAllInitialized() { htCellTrie = handlesys->CreateType("Trie", this, 0, NULL, NULL, g_pCoreIdent, NULL); - htSnapshot = handlesys->CreateType("TrieSnapshot", this, 0, NULL, NULL, g_pCoreIdent, NULL); } void OnSourceModShutdown() { - handlesys->RemoveType(htSnapshot, g_pCoreIdent); handlesys->RemoveType(htCellTrie, g_pCoreIdent); } public: //IHandleTypeDispatch @@ -206,9 +187,6 @@ public: //IHandleTypeDispatch { CellTrie *pTrie = (CellTrie *)object; pTrie->Release(); - } else { - TrieSnapshot *snapshot = (TrieSnapshot *)object; - delete snapshot; } } bool GetHandleApproxSize(HandleType_t type, void *object, unsigned int *pSize) @@ -217,9 +195,6 @@ public: //IHandleTypeDispatch { CellTrie *pArray = (CellTrie *)object; *pSize = sizeof(CellTrie) + pArray->map.mem_usage(); - } else { - TrieSnapshot *snapshot = (TrieSnapshot *)object; - *pSize = sizeof(TrieSnapshot) + snapshot->mem_usage(); } return true; } @@ -540,100 +515,6 @@ static cell_t GetTrieSize(IPluginContext *pContext, const cell_t *params) return pTrie->map.elements(); } -static cell_t CreateTrieSnapshot(IPluginContext *pContext, const cell_t *params) -{ - HandleError err; - HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent); - - Handle_t hndl = params[1]; - - CellTrie *pTrie; - if ((err = handlesys->ReadHandle(hndl, htCellTrie, &sec, (void **)&pTrie)) - != HandleError_None) - { - return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err); - } - - TrieSnapshot *snapshot = new TrieSnapshot; - snapshot->length = pTrie->map.elements(); - snapshot->keys = new int[snapshot->length]; - size_t i = 0; - for (StringHashMap::iterator iter = pTrie->map.iter(); !iter.empty(); iter.next(), i++) - snapshot->keys[i] = snapshot->strings.AddString(iter->key.chars(), iter->key.length()); - assert(i == snapshot->length); - - if ((hndl = handlesys->CreateHandle(htSnapshot, snapshot, pContext->GetIdentity(), g_pCoreIdent, NULL)) - == BAD_HANDLE) - { - delete snapshot; - return BAD_HANDLE; - } - - return hndl; -} - -static cell_t TrieSnapshotLength(IPluginContext *pContext, const cell_t *params) -{ - HandleError err; - HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent); - - Handle_t hndl = params[1]; - - TrieSnapshot *snapshot; - if ((err = handlesys->ReadHandle(hndl, htSnapshot, &sec, (void **)&snapshot)) - != HandleError_None) - { - return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err); - } - - return snapshot->length; -} - -static cell_t TrieSnapshotKeyBufferSize(IPluginContext *pContext, const cell_t *params) -{ - HandleError err; - HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent); - - Handle_t hndl = params[1]; - - TrieSnapshot *snapshot; - if ((err = handlesys->ReadHandle(hndl, htSnapshot, &sec, (void **)&snapshot)) - != HandleError_None) - { - return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err); - } - - unsigned index = params[2]; - if (index >= snapshot->length) - return pContext->ThrowNativeError("Invalid index %d", index); - - return strlen(snapshot->strings.GetString(snapshot->keys[index])) + 1; -} - -static cell_t GetTrieSnapshotKey(IPluginContext *pContext, const cell_t *params) -{ - HandleError err; - HandleSecurity sec = HandleSecurity(pContext->GetIdentity(), g_pCoreIdent); - - Handle_t hndl = params[1]; - - TrieSnapshot *snapshot; - if ((err = handlesys->ReadHandle(hndl, htSnapshot, &sec, (void **)&snapshot)) - != HandleError_None) - { - return pContext->ThrowNativeError("Invalid Handle %x (error %d)", hndl, err); - } - - unsigned index = params[2]; - if (index >= snapshot->length) - return pContext->ThrowNativeError("Invalid index %d", index); - - size_t written; - const char *str = snapshot->strings.GetString(snapshot->keys[index]); - pContext->StringToLocalUTF8(params[3], params[4], str, &written); - return written; -} - REGISTER_NATIVES(trieNatives) { {"ClearTrie", ClearTrie}, @@ -646,9 +527,5 @@ REGISTER_NATIVES(trieNatives) {"SetTrieString", SetTrieString}, {"SetTrieValue", SetTrieValue}, {"GetTrieSize", GetTrieSize}, - {"CreateTrieSnapshot", CreateTrieSnapshot}, - {"TrieSnapshotLength", TrieSnapshotLength}, - {"TrieSnapshotKeyBufferSize", TrieSnapshotKeyBufferSize}, - {"GetTrieSnapshotKey", GetTrieSnapshotKey}, {NULL, NULL}, }; diff --git a/plugins/include/adt_trie.inc b/plugins/include/adt_trie.inc index beced019..636a12f0 100644 --- a/plugins/include/adt_trie.inc +++ b/plugins/include/adt_trie.inc @@ -154,47 +154,3 @@ native ClearTrie(Handle:map); * @error Invalid Handle. */ native GetTrieSize(Handle:map); - -/** - * Creates a snapshot of all keys in the map. If the map is changed after this - * call, the changes are not reflected in the snapshot. Keys are not sorted. - * - * @param map Map Handle. - * @return New Map Snapshot Handle, which must be closed via CloseHandle(). - * @error Invalid Handle. - */ -native Handle:CreateTrieSnapshot(Handle:map); - -/** - * Returns the number of keys in a map snapshot. Note that this may be - * different from the size of the map, since the map can change after the - * snapshot of its keys was taken. - * - * @param snapshot Map snapshot. - * @return Number of keys. - * @error Invalid Handle. - */ -native TrieSnapshotLength(Handle:snapshot); - -/** - * Returns the buffer size required to store a given key. That is, it returns - * the length of the key plus one. - * - * @param snapshot Map snapshot. - * @param index Key index (starting from 0). - * @return Buffer size required to store the key string. - * @error Invalid Handle or index out of range. - */ -native TrieSnapshotKeyBufferSize(Handle:snapshot, index); - -/** - * Retrieves the key string of a given key in a map snapshot. - * - * @param snapshot Map snapshot. - * @param index Key index (starting from 0). - * @param buffer String buffer. - * @param maxlength Maximum buffer length. - * @return Number of bytes written to the buffer. - * @error Invalid Handle or index out of range. - */ -native GetTrieSnapshotKey(Handle:snapshot, index, String:buffer[], maxlength); diff --git a/plugins/testsuite/tries.sp b/plugins/testsuite/tries.sp index 12bf8ca9..40837584 100644 --- a/plugins/testsuite/tries.sp +++ b/plugins/testsuite/tries.sp @@ -125,36 +125,6 @@ public Action:RunTests(argc) if (GetTrieSize(trie)) ThrowError("size should be 0"); - SetTrieString(trie, "adventure", "time!"); - SetTrieString(trie, "butterflies", "bees"); - SetTrieString(trie, "egg", "egg"); - - new Handle:keys = CreateTrieSnapshot(trie); - { - if (TrieSnapshotLength(keys) != 3) - ThrowError("trie snapshot length should be 3"); - - new bool:found[3]; - for (new i = 0; i < TrieSnapshotLength(keys); i++) { - new size = TrieSnapshotKeyBufferSize(keys, i); - new String:buffer[size]; - GetTrieSnapshotKey(keys, i, buffer, size); - - if (strcmp(buffer, "adventure") == 0) - found[0] = true; - else if (strcmp(buffer, "butterflies") == 0) - found[1] = true; - else if (strcmp(buffer, "egg") == 0) - found[2] = true; - else - ThrowError("unexpected key: %s", buffer); - } - - if (!found[0] || !found[1] || !found[2]) - ThrowError("did not find all keys"); - } - CloseHandle(keys); - PrintToServer("All tests passed!"); CloseHandle(trie); return Plugin_Handled;