public/IADTFactory.h
author Scott Ehlert <ds@alliedmods.net>
Wed Aug 15 06:19:30 2007 +0000 (2007-08-15)
changeset 1330 ab94316bb52b
parent 1226 478550a4d5ec
child 1947 e73a1e51833b
permissions -rw-r--r--
Updated license headers on virtually all files with extremely minor changes in the name of some sort of strange consistency.
All plugin and include file headers also have been changed to say about GPL3 instead of GPL2.

(This day shall henceforth be known as the Eighty Column Massacre of '07)
dvander@1226
     1
/**
dvander@1226
     2
 * vim: set ts=4 :
ds@1330
     3
 * =============================================================================
dvander@1226
     4
 * SourceMod
dvander@1226
     5
 * Copyright (C) 2004-2007 AlliedModders LLC.  All rights reserved.
ds@1330
     6
 * =============================================================================
dvander@1226
     7
 *
ds@1330
     8
 * This program is free software; you can redistribute it and/or modify it under
ds@1330
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1330
    10
 * Free Software Foundation.
dvander@1226
    11
 * 
ds@1330
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1330
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1330
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1330
    15
 * details.
dvander@1226
    16
 *
ds@1330
    17
 * You should have received a copy of the GNU General Public License along with
ds@1330
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
dvander@1226
    19
 *
ds@1330
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1330
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1330
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1330
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1330
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1330
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1330
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1330
    27
 * or <http://www.sourcemod.net/license.php>.
dvander@1226
    28
 *
dvander@1226
    29
 * Version: $Id$
dvander@1226
    30
 */
dvander@1226
    31
dvander@1028
    32
#ifndef _INCLUDE_SOURCEMOD_ADT_FACTORY_H_
dvander@1028
    33
#define _INCLUDE_SOURCEMOD_ADT_FACTORY_H_
dvander@1028
    34
dvander@1028
    35
#include <IShareSys.h>
dvander@1028
    36
dvander@1028
    37
#define SMINTERFACE_ADTFACTORY_NAME		"IADTFactory"
dvander@1057
    38
#define SMINTERFACE_ADTFACTORY_VERSION	2
dvander@1028
    39
dvander@1028
    40
/**
dvander@1028
    41
* @file IADTFactory.h
dvander@1028
    42
* @brief Creates abstract data types.
dvander@1028
    43
*/
dvander@1028
    44
dvander@1028
    45
namespace SourceMod
dvander@1028
    46
{
dvander@1028
    47
	/**
dvander@1028
    48
	 * @brief A "Trie" data type.
dvander@1028
    49
	 */
dvander@1028
    50
	class IBasicTrie
dvander@1028
    51
	{
dvander@1028
    52
	public:
dvander@1028
    53
		/**
dvander@1028
    54
		 * @brief Inserts a key/value pair.
dvander@1028
    55
		 *
dvander@1028
    56
		 * @param key		Key string (null terminated).
dvander@1028
    57
		 * @param value		Value pointer (may be anything).
dvander@1028
    58
		 * @return			True on success, false if key already exists.
dvander@1028
    59
		 */
dvander@1028
    60
		virtual bool Insert(const char *key, void *value) =0;
dvander@1028
    61
dvander@1028
    62
		/**
dvander@1028
    63
		 * @brief Retrieves the value of a key.
dvander@1028
    64
		 *
dvander@1028
    65
		 * @param key		Key string (null terminated).
dvander@1028
    66
		 * @param value		Optional pointer to store value pointer.
dvander@1028
    67
		 * @return			True on success, false if key was not found.
dvander@1028
    68
		 */
dvander@1028
    69
		virtual bool Retrieve(const char *key, void **value) =0;
dvander@1028
    70
dvander@1028
    71
		/**
dvander@1028
    72
		 * @brief Deletes a key.
dvander@1028
    73
		 *
dvander@1028
    74
		 * @param key		Key string (null terminated).
dvander@1028
    75
		 * @return			True on success, false if key was not found.
dvander@1028
    76
		 */
dvander@1028
    77
		virtual bool Delete(const char *key) =0;
dvander@1028
    78
dvander@1028
    79
		/**
dvander@1028
    80
		 * @brief Flushes the entire trie of all keys.
dvander@1028
    81
		 */
dvander@1028
    82
		virtual void Clear() =0;
dvander@1028
    83
dvander@1028
    84
		/**
dvander@1028
    85
		 * @brief Destroys the IBasicTrie object and frees all associated 
dvander@1028
    86
		 * memory.
dvander@1028
    87
		 */
dvander@1028
    88
		virtual void Destroy() =0;
dvander@1057
    89
dvander@1057
    90
		/**
dvander@1057
    91
		 * @brief Inserts a key/value pair, replacing an old inserted
dvander@1057
    92
		 * value if it already exists.
dvander@1057
    93
		 *
dvander@1057
    94
		 * @param key		Key string (null terminated).
dvander@1057
    95
		 * @param value		Value pointer (may be anything).
dvander@1057
    96
		 * @return			True on success, false on failure.
dvander@1057
    97
		 */
dvander@1057
    98
		virtual bool Replace(const char *key, void *value) =0;
dvander@1028
    99
	};
dvander@1028
   100
dvander@1028
   101
	class IADTFactory : public SMInterface
dvander@1028
   102
	{
dvander@1028
   103
	public:
dvander@1028
   104
		/**
dvander@1028
   105
		 * @brief Creates a basic Trie object.
dvander@1028
   106
		 *
dvander@1028
   107
		 * @return			A new IBasicTrie object which must be destroyed
dvander@1028
   108
		 *					via IBasicTrie::Destroy().
dvander@1028
   109
		 */
dvander@1028
   110
		virtual IBasicTrie *CreateBasicTrie() =0;
dvander@1028
   111
	};
dvander@1028
   112
}
dvander@1028
   113
dvander@1028
   114
#endif //_INCLUDE_SOURCEMOD_ADT_FACTORY_H_