dvander@1028: #ifndef _INCLUDE_SOURCEMOD_ADT_FACTORY_H_ dvander@1028: #define _INCLUDE_SOURCEMOD_ADT_FACTORY_H_ dvander@1028: dvander@1028: #include dvander@1028: dvander@1028: #define SMINTERFACE_ADTFACTORY_NAME "IADTFactory" dvander@1057: #define SMINTERFACE_ADTFACTORY_VERSION 2 dvander@1028: dvander@1028: /** dvander@1028: * @file IADTFactory.h dvander@1028: * @brief Creates abstract data types. dvander@1028: */ dvander@1028: dvander@1028: namespace SourceMod dvander@1028: { dvander@1028: /** dvander@1028: * @brief A "Trie" data type. dvander@1028: */ dvander@1028: class IBasicTrie dvander@1028: { dvander@1028: public: dvander@1028: /** dvander@1028: * @brief Inserts a key/value pair. dvander@1028: * dvander@1028: * @param key Key string (null terminated). dvander@1028: * @param value Value pointer (may be anything). dvander@1028: * @return True on success, false if key already exists. dvander@1028: */ dvander@1028: virtual bool Insert(const char *key, void *value) =0; dvander@1028: dvander@1028: /** dvander@1028: * @brief Retrieves the value of a key. dvander@1028: * dvander@1028: * @param key Key string (null terminated). dvander@1028: * @param value Optional pointer to store value pointer. dvander@1028: * @return True on success, false if key was not found. dvander@1028: */ dvander@1028: virtual bool Retrieve(const char *key, void **value) =0; dvander@1028: dvander@1028: /** dvander@1028: * @brief Deletes a key. dvander@1028: * dvander@1028: * @param key Key string (null terminated). dvander@1028: * @return True on success, false if key was not found. dvander@1028: */ dvander@1028: virtual bool Delete(const char *key) =0; dvander@1028: dvander@1028: /** dvander@1028: * @brief Flushes the entire trie of all keys. dvander@1028: */ dvander@1028: virtual void Clear() =0; dvander@1028: dvander@1028: /** dvander@1028: * @brief Destroys the IBasicTrie object and frees all associated dvander@1028: * memory. dvander@1028: */ dvander@1028: virtual void Destroy() =0; dvander@1057: dvander@1057: /** dvander@1057: * @brief Inserts a key/value pair, replacing an old inserted dvander@1057: * value if it already exists. dvander@1057: * dvander@1057: * @param key Key string (null terminated). dvander@1057: * @param value Value pointer (may be anything). dvander@1057: * @return True on success, false on failure. dvander@1057: */ dvander@1057: virtual bool Replace(const char *key, void *value) =0; dvander@1028: }; dvander@1028: dvander@1028: class IADTFactory : public SMInterface dvander@1028: { dvander@1028: public: dvander@1028: /** dvander@1028: * @brief Creates a basic Trie object. dvander@1028: * dvander@1028: * @return A new IBasicTrie object which must be destroyed dvander@1028: * via IBasicTrie::Destroy(). dvander@1028: */ dvander@1028: virtual IBasicTrie *CreateBasicTrie() =0; dvander@1028: }; dvander@1028: } dvander@1028: dvander@1028: #endif //_INCLUDE_SOURCEMOD_ADT_FACTORY_H_