public/IADTFactory.h
author David Anderson <dvander@alliedmods.net>
Wed Jul 25 01:18:11 2007 +0000 (2007-07-25)
changeset 1163 0bb03cb6277b
parent 1057 de136462a416
child 1226 478550a4d5ec
permissions -rw-r--r--
- added MenuAction_DisplayItem callback for plugins
- fixed various bugs in MenuAction_Display
- added an "access" parameter for IMenuManager. better to do this now than later, even though it's not used yet
- hard bumped menu api to change the OnMenuDisplayItem callback. sorry!
dvander@1028
     1
#ifndef _INCLUDE_SOURCEMOD_ADT_FACTORY_H_
dvander@1028
     2
#define _INCLUDE_SOURCEMOD_ADT_FACTORY_H_
dvander@1028
     3
dvander@1028
     4
#include <IShareSys.h>
dvander@1028
     5
dvander@1028
     6
#define SMINTERFACE_ADTFACTORY_NAME		"IADTFactory"
dvander@1057
     7
#define SMINTERFACE_ADTFACTORY_VERSION	2
dvander@1028
     8
dvander@1028
     9
/**
dvander@1028
    10
* @file IADTFactory.h
dvander@1028
    11
* @brief Creates abstract data types.
dvander@1028
    12
*/
dvander@1028
    13
dvander@1028
    14
namespace SourceMod
dvander@1028
    15
{
dvander@1028
    16
	/**
dvander@1028
    17
	 * @brief A "Trie" data type.
dvander@1028
    18
	 */
dvander@1028
    19
	class IBasicTrie
dvander@1028
    20
	{
dvander@1028
    21
	public:
dvander@1028
    22
		/**
dvander@1028
    23
		 * @brief Inserts a key/value pair.
dvander@1028
    24
		 *
dvander@1028
    25
		 * @param key		Key string (null terminated).
dvander@1028
    26
		 * @param value		Value pointer (may be anything).
dvander@1028
    27
		 * @return			True on success, false if key already exists.
dvander@1028
    28
		 */
dvander@1028
    29
		virtual bool Insert(const char *key, void *value) =0;
dvander@1028
    30
dvander@1028
    31
		/**
dvander@1028
    32
		 * @brief Retrieves the value of a key.
dvander@1028
    33
		 *
dvander@1028
    34
		 * @param key		Key string (null terminated).
dvander@1028
    35
		 * @param value		Optional pointer to store value pointer.
dvander@1028
    36
		 * @return			True on success, false if key was not found.
dvander@1028
    37
		 */
dvander@1028
    38
		virtual bool Retrieve(const char *key, void **value) =0;
dvander@1028
    39
dvander@1028
    40
		/**
dvander@1028
    41
		 * @brief Deletes a key.
dvander@1028
    42
		 *
dvander@1028
    43
		 * @param key		Key string (null terminated).
dvander@1028
    44
		 * @return			True on success, false if key was not found.
dvander@1028
    45
		 */
dvander@1028
    46
		virtual bool Delete(const char *key) =0;
dvander@1028
    47
dvander@1028
    48
		/**
dvander@1028
    49
		 * @brief Flushes the entire trie of all keys.
dvander@1028
    50
		 */
dvander@1028
    51
		virtual void Clear() =0;
dvander@1028
    52
dvander@1028
    53
		/**
dvander@1028
    54
		 * @brief Destroys the IBasicTrie object and frees all associated 
dvander@1028
    55
		 * memory.
dvander@1028
    56
		 */
dvander@1028
    57
		virtual void Destroy() =0;
dvander@1057
    58
dvander@1057
    59
		/**
dvander@1057
    60
		 * @brief Inserts a key/value pair, replacing an old inserted
dvander@1057
    61
		 * value if it already exists.
dvander@1057
    62
		 *
dvander@1057
    63
		 * @param key		Key string (null terminated).
dvander@1057
    64
		 * @param value		Value pointer (may be anything).
dvander@1057
    65
		 * @return			True on success, false on failure.
dvander@1057
    66
		 */
dvander@1057
    67
		virtual bool Replace(const char *key, void *value) =0;
dvander@1028
    68
	};
dvander@1028
    69
dvander@1028
    70
	class IADTFactory : public SMInterface
dvander@1028
    71
	{
dvander@1028
    72
	public:
dvander@1028
    73
		/**
dvander@1028
    74
		 * @brief Creates a basic Trie object.
dvander@1028
    75
		 *
dvander@1028
    76
		 * @return			A new IBasicTrie object which must be destroyed
dvander@1028
    77
		 *					via IBasicTrie::Destroy().
dvander@1028
    78
		 */
dvander@1028
    79
		virtual IBasicTrie *CreateBasicTrie() =0;
dvander@1028
    80
	};
dvander@1028
    81
}
dvander@1028
    82
dvander@1028
    83
#endif //_INCLUDE_SOURCEMOD_ADT_FACTORY_H_