core/ADTFactory.cpp
author Scott Ehlert <ds@alliedmods.net>
Sun Mar 30 07:00:22 2008 +0000 (2008-03-30)
changeset 1952 b7aa2b626807
child 2289 44045ead61cd
permissions -rw-r--r--
Spring Cleaning, Part Ichi (1)
Various minor things done to project files
Updated sample extension project file and updated makefile to the new unified version (more changes likely on the way)
Updated regex project file and makefile
ds@1952
     1
/**
ds@1952
     2
 * vim: set ts=4 :
ds@1952
     3
 * =============================================================================
ds@1952
     4
 * SourceMod
ds@1952
     5
 * Copyright (C) 2004-2008 AlliedModders LLC.  All rights reserved.
ds@1952
     6
 * =============================================================================
ds@1952
     7
 *
ds@1952
     8
 * This program is free software; you can redistribute it and/or modify it under
ds@1952
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
ds@1952
    10
 * Free Software Foundation.
ds@1952
    11
 * 
ds@1952
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
ds@1952
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
ds@1952
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
ds@1952
    15
 * details.
ds@1952
    16
 *
ds@1952
    17
 * You should have received a copy of the GNU General Public License along with
ds@1952
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
ds@1952
    19
 *
ds@1952
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
ds@1952
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
ds@1952
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
ds@1952
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
ds@1952
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
ds@1952
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
ds@1952
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
ds@1952
    27
 * or <http://www.sourcemod.net/license.php>.
ds@1952
    28
 *
ds@1952
    29
 * Version: $Id$
ds@1952
    30
 */
ds@1952
    31
ds@1952
    32
#include "ADTFactory.h"
ds@1952
    33
#include "sm_globals.h"
ds@1952
    34
#include "ShareSys.h"
ds@1952
    35
ds@1952
    36
ADTFactory g_AdtFactory;
ds@1952
    37
ds@1952
    38
const char *ADTFactory::GetInterfaceName()
ds@1952
    39
{
ds@1952
    40
	return SMINTERFACE_ADTFACTORY_NAME;
ds@1952
    41
}
ds@1952
    42
ds@1952
    43
unsigned int ADTFactory::GetInterfaceVersion()
ds@1952
    44
{
ds@1952
    45
	return SMINTERFACE_ADTFACTORY_VERSION;
ds@1952
    46
}
ds@1952
    47
ds@1952
    48
void ADTFactory::OnSourceModAllInitialized()
ds@1952
    49
{
ds@1952
    50
	g_ShareSys.AddInterface(NULL, this);
ds@1952
    51
}
ds@1952
    52
ds@1952
    53
IBasicTrie *ADTFactory::CreateBasicTrie()
ds@1952
    54
{
ds@1952
    55
	return new BaseTrie();
ds@1952
    56
}
ds@1952
    57
ds@1952
    58
BaseTrie::BaseTrie()
ds@1952
    59
{
ds@1952
    60
	m_pTrie = sm_trie_create();
ds@1952
    61
}
ds@1952
    62
ds@1952
    63
BaseTrie::~BaseTrie()
ds@1952
    64
{
ds@1952
    65
	sm_trie_destroy(m_pTrie);
ds@1952
    66
}
ds@1952
    67
ds@1952
    68
bool BaseTrie::Insert(const char *key, void *value)
ds@1952
    69
{
ds@1952
    70
	return sm_trie_insert(m_pTrie, key, value);
ds@1952
    71
}
ds@1952
    72
ds@1952
    73
bool BaseTrie::Retrieve(const char *key, void **value)
ds@1952
    74
{
ds@1952
    75
	return sm_trie_retrieve(m_pTrie, key, value);
ds@1952
    76
}
ds@1952
    77
ds@1952
    78
bool BaseTrie::Delete(const char *key)
ds@1952
    79
{
ds@1952
    80
	return sm_trie_delete(m_pTrie, key);
ds@1952
    81
}
ds@1952
    82
ds@1952
    83
void BaseTrie::Clear()
ds@1952
    84
{
ds@1952
    85
	sm_trie_clear(m_pTrie);
ds@1952
    86
}
ds@1952
    87
ds@1952
    88
void BaseTrie::Destroy()
ds@1952
    89
{
ds@1952
    90
	delete this;
ds@1952
    91
}
ds@1952
    92
ds@1952
    93
bool BaseTrie::Replace(const char *key, void *value)
ds@1952
    94
{
ds@1952
    95
	return sm_trie_replace(m_pTrie, key, value);
ds@1952
    96
}