1.1 --- a/extensions/sdktools/vstringtable.cpp Fri Mar 28 06:21:34 2008 +0000
1.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000
1.3 @@ -1,266 +0,0 @@
1.4 -/**
1.5 - * vim: set ts=4 :
1.6 - * =============================================================================
1.7 - * SourceMod SDKTools Extension
1.8 - * Copyright (C) 2004-2007 AlliedModders LLC. All rights reserved.
1.9 - * =============================================================================
1.10 - *
1.11 - * This program is free software; you can redistribute it and/or modify it under
1.12 - * the terms of the GNU General Public License, version 3.0, as published by the
1.13 - * Free Software Foundation.
1.14 - *
1.15 - * This program is distributed in the hope that it will be useful, but WITHOUT
1.16 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
1.17 - * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
1.18 - * details.
1.19 - *
1.20 - * You should have received a copy of the GNU General Public License along with
1.21 - * this program. If not, see <http://www.gnu.org/licenses/>.
1.22 - *
1.23 - * As a special exception, AlliedModders LLC gives you permission to link the
1.24 - * code of this program (as well as its derivative works) to "Half-Life 2," the
1.25 - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
1.26 - * by the Valve Corporation. You must obey the GNU General Public License in
1.27 - * all respects for all other code used. Additionally, AlliedModders LLC grants
1.28 - * this exception to all derivative works. AlliedModders LLC defines further
1.29 - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
1.30 - * or <http://www.sourcemod.net/license.php>.
1.31 - *
1.32 - * Version: $Id$
1.33 - */
1.34 -
1.35 -#include "extension.h"
1.36 -
1.37 -static cell_t LockStringTables(IPluginContext *pContext, const cell_t *params)
1.38 -{
1.39 - bool lock = params[1] ? true : false;
1.40 -
1.41 - return engine->LockNetworkStringTables(lock) ? 1 : 0;
1.42 -}
1.43 -
1.44 -static cell_t FindStringTable(IPluginContext *pContext, const cell_t *params)
1.45 -{
1.46 - char *name;
1.47 - pContext->LocalToString(params[1], &name);
1.48 -
1.49 - INetworkStringTable *pTable = netstringtables->FindTable(name);
1.50 -
1.51 - if (!pTable)
1.52 - {
1.53 - return INVALID_STRING_TABLE;
1.54 - }
1.55 -
1.56 - return pTable->GetTableId();
1.57 -}
1.58 -
1.59 -static cell_t GetNumStringTables(IPluginContext *pContext, const cell_t *params)
1.60 -{
1.61 - return netstringtables->GetNumTables();
1.62 -}
1.63 -
1.64 -static cell_t GetStringTableNumStrings(IPluginContext *pContext, const cell_t *params)
1.65 -{
1.66 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.67 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.68 -
1.69 - if (!pTable)
1.70 - {
1.71 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.72 - }
1.73 -
1.74 - return pTable->GetNumStrings();
1.75 -}
1.76 -
1.77 -static cell_t GetStringTableMaxStrings(IPluginContext *pContext, const cell_t *params)
1.78 -{
1.79 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.80 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.81 -
1.82 - if (!pTable)
1.83 - {
1.84 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.85 - }
1.86 -
1.87 - return pTable->GetMaxStrings();
1.88 -}
1.89 -
1.90 -static cell_t GetStringTableName(IPluginContext *pContext, const cell_t *params)
1.91 -{
1.92 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.93 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.94 - size_t numBytes;
1.95 -
1.96 - if (!pTable)
1.97 - {
1.98 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.99 - }
1.100 -
1.101 - pContext->StringToLocalUTF8(params[2], params[3], pTable->GetTableName(), &numBytes);
1.102 -
1.103 - return numBytes;
1.104 -}
1.105 -
1.106 -static cell_t FindStringIndex(IPluginContext *pContext, const cell_t *params)
1.107 -{
1.108 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.109 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.110 - char *str;
1.111 -
1.112 - if (!pTable)
1.113 - {
1.114 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.115 - }
1.116 -
1.117 - pContext->LocalToString(params[2], &str);
1.118 -
1.119 - return pTable->FindStringIndex(str);
1.120 -}
1.121 -
1.122 -static cell_t ReadStringTable(IPluginContext *pContext, const cell_t *params)
1.123 -{
1.124 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.125 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.126 - int stringidx;
1.127 - const char *value;
1.128 - size_t numBytes;
1.129 -
1.130 - if (!pTable)
1.131 - {
1.132 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.133 - }
1.134 -
1.135 - stringidx = params[2];
1.136 - value = pTable->GetString(stringidx);
1.137 -
1.138 - if (!value)
1.139 - {
1.140 - return pContext->ThrowNativeError("Invalid string index specified for table (index %d) (table \"%s\")", stringidx, pTable->GetTableName());
1.141 - }
1.142 -
1.143 - pContext->StringToLocalUTF8(params[3], params[4], value, &numBytes);
1.144 -
1.145 - return numBytes;
1.146 -}
1.147 -
1.148 -static cell_t GetStringTableDataLength(IPluginContext *pContext, const cell_t *params)
1.149 -{
1.150 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.151 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.152 - int stringidx;
1.153 - const void *userdata;
1.154 - int datalen;
1.155 -
1.156 - if (!pTable)
1.157 - {
1.158 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.159 - }
1.160 -
1.161 - stringidx = params[2];
1.162 - if (stringidx < 0 || stringidx >= pTable->GetNumStrings())
1.163 - {
1.164 - return pContext->ThrowNativeError("Invalid string index specified for table (index %d) (table \"%s\")", stringidx, pTable->GetTableName());
1.165 - }
1.166 -
1.167 - userdata = pTable->GetStringUserData(stringidx, &datalen);
1.168 - if (!userdata)
1.169 - {
1.170 - datalen = 0;
1.171 - }
1.172 -
1.173 - return datalen;
1.174 -}
1.175 -
1.176 -static cell_t GetStringTableData(IPluginContext *pContext, const cell_t *params)
1.177 -{
1.178 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.179 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.180 - int stringidx;
1.181 - const char *userdata;
1.182 - int datalen;
1.183 - size_t numBytes;
1.184 -
1.185 - if (!pTable)
1.186 - {
1.187 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.188 - }
1.189 -
1.190 - stringidx = params[2];
1.191 - if (stringidx < 0 || stringidx >= pTable->GetNumStrings())
1.192 - {
1.193 - return pContext->ThrowNativeError("Invalid string index specified for table (index %d) (table \"%s\")", stringidx, pTable->GetTableName());
1.194 - }
1.195 -
1.196 - userdata = (const char *)pTable->GetStringUserData(stringidx, &datalen);
1.197 - if (!userdata)
1.198 - {
1.199 - userdata = "";
1.200 - }
1.201 -
1.202 - pContext->StringToLocalUTF8(params[3], params[4], userdata, &numBytes);
1.203 -
1.204 - return numBytes;
1.205 -}
1.206 -
1.207 -static cell_t SetStringTableData(IPluginContext *pContext, const cell_t *params)
1.208 -{
1.209 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.210 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.211 - int stringidx;
1.212 - char *userdata;
1.213 -
1.214 - if (!pTable)
1.215 - {
1.216 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.217 - }
1.218 -
1.219 - stringidx = params[2];
1.220 - if (stringidx < 0 || stringidx >= pTable->GetNumStrings())
1.221 - {
1.222 - return pContext->ThrowNativeError("Invalid string index specified for table (index %d) (table \"%s\")", stringidx, pTable->GetTableName());
1.223 - }
1.224 -
1.225 - pContext->LocalToString(params[3], &userdata);
1.226 - pTable->SetStringUserData(stringidx, params[4], userdata);
1.227 -
1.228 - return 1;
1.229 -}
1.230 -
1.231 -static cell_t AddToStringTable(IPluginContext *pContext, const cell_t *params)
1.232 -{
1.233 - TABLEID idx = static_cast<TABLEID>(params[1]);
1.234 - INetworkStringTable *pTable = netstringtables->GetTable(idx);
1.235 - char *str, *userdata;
1.236 -
1.237 - if (!pTable)
1.238 - {
1.239 - return pContext->ThrowNativeError("Invalid string table index %d", idx);
1.240 - }
1.241 -
1.242 - pContext->LocalToString(params[2], &str);
1.243 - pContext->LocalToString(params[3], &userdata);
1.244 -
1.245 -#if defined ORANGEBOX_BUILD
1.246 - pTable->AddString(true, str, params[4], userdata);
1.247 -#else
1.248 - pTable->AddString(str, params[4], userdata);
1.249 -#endif
1.250 -
1.251 - return 1;
1.252 -}
1.253 -
1.254 -sp_nativeinfo_t g_StringTableNatives[] =
1.255 -{
1.256 - {"LockStringTables", LockStringTables},
1.257 - {"FindStringTable", FindStringTable},
1.258 - {"GetNumStringTables", GetNumStringTables},
1.259 - {"GetStringTableNumStrings", GetStringTableNumStrings},
1.260 - {"GetStringTableMaxStrings", GetStringTableMaxStrings},
1.261 - {"GetStringTableName", GetStringTableName},
1.262 - {"FindStringIndex", FindStringIndex},
1.263 - {"ReadStringTable", ReadStringTable},
1.264 - {"GetStringTableDataLength", GetStringTableDataLength},
1.265 - {"GetStringTableData", GetStringTableData},
1.266 - {"SetStringTableData", SetStringTableData},
1.267 - {"AddToStringTable", AddToStringTable},
1.268 - {NULL, NULL},
1.269 -};