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