core/smn_protobuf.cpp
author David Anderson <dvander@alliedmods.net>
Sat Feb 16 15:52:11 2013 -0800 (2013-02-16)
changeset 3791 47e1ee9cea86
parent 3747 cb3f97a59d55
child 3813 bf1faf4a16c9
permissions -rw-r--r--
Move filesystem natives from Core to Logic (bug 5606, r=psychonic).
skamonkey@3743
     1
/**
skamonkey@3743
     2
 * vim: set ts=4 :
skamonkey@3743
     3
 * =============================================================================
skamonkey@3743
     4
 * SourceMod
skamonkey@3743
     5
 * Copyright (C) 2013 AlliedModders LLC.  All rights reserved.
skamonkey@3743
     6
 * =============================================================================
skamonkey@3743
     7
 *
skamonkey@3743
     8
 * This program is free software; you can redistribute it and/or modify it under
skamonkey@3743
     9
 * the terms of the GNU General Public License, version 3.0, as published by the
skamonkey@3743
    10
 * Free Software Foundation.
skamonkey@3743
    11
 * 
skamonkey@3743
    12
 * This program is distributed in the hope that it will be useful, but WITHOUT
skamonkey@3743
    13
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
skamonkey@3743
    14
 * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
skamonkey@3743
    15
 * details.
skamonkey@3743
    16
 *
skamonkey@3743
    17
 * You should have received a copy of the GNU General Public License along with
skamonkey@3743
    18
 * this program.  If not, see <http://www.gnu.org/licenses/>.
skamonkey@3743
    19
 *
skamonkey@3743
    20
 * As a special exception, AlliedModders LLC gives you permission to link the
skamonkey@3743
    21
 * code of this program (as well as its derivative works) to "Half-Life 2," the
skamonkey@3743
    22
 * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software
skamonkey@3743
    23
 * by the Valve Corporation.  You must obey the GNU General Public License in
skamonkey@3743
    24
 * all respects for all other code used.  Additionally, AlliedModders LLC grants
skamonkey@3743
    25
 * this exception to all derivative works.  AlliedModders LLC defines further
skamonkey@3743
    26
 * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007),
skamonkey@3743
    27
 * or <http://www.sourcemod.net/license.php>.
skamonkey@3743
    28
 *
skamonkey@3743
    29
 * Version: $Id$
skamonkey@3743
    30
 */
skamonkey@3743
    31
skamonkey@3743
    32
#include "UserMessages.h"
skamonkey@3743
    33
skamonkey@3743
    34
#ifdef USE_PROTOBUF_USERMESSAGES
skamonkey@3743
    35
skamonkey@3743
    36
#include "HandleSys.h"
skamonkey@3743
    37
#include "UserMessagePBHelpers.h"
skamonkey@3743
    38
#include "smn_usermsgs.h"
skamonkey@3743
    39
skamonkey@3743
    40
// Assumes pbuf message handle is param 1, gets message as msg
skamonkey@3743
    41
#define GET_MSG_FROM_HANDLE_OR_ERR()                  \
skamonkey@3743
    42
	Handle_t hndl = static_cast<Handle_t>(params[1]); \
skamonkey@3743
    43
	HandleError herr;                                 \
skamonkey@3743
    44
	HandleSecurity sec;                               \
skamonkey@3743
    45
	SMProtobufMessage *msg;                           \
skamonkey@3743
    46
	                                                  \
skamonkey@3743
    47
	sec.pOwner = NULL;                                \
skamonkey@3743
    48
	sec.pIdentity = g_pCoreIdent;                     \
skamonkey@3743
    49
	                                                  \
skamonkey@3743
    50
	if ((herr=g_HandleSys.ReadHandle(hndl, g_ProtobufType, &sec, (void **)&msg)) \
skamonkey@3743
    51
		!= HandleError_None)                          \
skamonkey@3743
    52
	{                                                 \
skamonkey@3743
    53
		return pCtx->ThrowNativeError("Invalid protobuf message handle %x (error %d)", hndl, herr); \
skamonkey@3743
    54
	}
skamonkey@3743
    55
skamonkey@3743
    56
// Assumes message field name is param 2, gets as strField
skamonkey@3743
    57
#define GET_FIELD_NAME_OR_ERR()                                           \
skamonkey@3743
    58
	int err;                                                              \
skamonkey@3743
    59
	char *strField;                                                       \
skamonkey@3743
    60
	if ((err=pCtx->LocalToString(params[2], &strField)) != SP_ERROR_NONE) \
skamonkey@3743
    61
	{                                                                     \
skamonkey@3743
    62
		pCtx->ThrowNativeErrorEx(err, NULL);                              \
skamonkey@3743
    63
		return 0;                                                         \
skamonkey@3743
    64
	}
skamonkey@3743
    65
skamonkey@3743
    66
static cell_t smn_PbReadInt(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
    67
{
skamonkey@3743
    68
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
    69
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
    70
skamonkey@3743
    71
	int ret;
skamonkey@3743
    72
	if (!msg->GetInt32OrUnsigned(strField, &ret))
skamonkey@3743
    73
	{
skamonkey@3747
    74
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
    75
	}
skamonkey@3743
    76
skamonkey@3743
    77
	return ret;
skamonkey@3743
    78
}
skamonkey@3743
    79
skamonkey@3743
    80
static cell_t smn_PbReadFloat(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
    81
{
skamonkey@3743
    82
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
    83
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
    84
skamonkey@3743
    85
	float ret;
skamonkey@3743
    86
	if (!msg->GetFloatOrDouble(strField, &ret))
skamonkey@3743
    87
	{
skamonkey@3747
    88
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
    89
	}
skamonkey@3743
    90
skamonkey@3743
    91
	return sp_ftoc(ret);
skamonkey@3743
    92
}
skamonkey@3743
    93
skamonkey@3743
    94
static cell_t smn_PbReadBool(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
    95
{
skamonkey@3743
    96
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
    97
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
    98
skamonkey@3743
    99
	bool ret;
skamonkey@3743
   100
	if (!msg->GetBool(strField, &ret))
skamonkey@3743
   101
	{
skamonkey@3747
   102
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   103
	}
skamonkey@3743
   104
skamonkey@3743
   105
	return ret ? 1 : 0;
skamonkey@3743
   106
}
skamonkey@3743
   107
skamonkey@3743
   108
static cell_t smn_PbReadString(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   109
{
skamonkey@3743
   110
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   111
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   112
skamonkey@3743
   113
	char *buf;
skamonkey@3743
   114
	pCtx->LocalToPhysAddr(params[3], (cell_t **)&buf);
skamonkey@3743
   115
skamonkey@3743
   116
	if (!msg->GetString(strField, buf, params[4]))
skamonkey@3743
   117
	{
skamonkey@3747
   118
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   119
	}
skamonkey@3743
   120
skamonkey@3743
   121
	return 1;
skamonkey@3743
   122
}
skamonkey@3743
   123
skamonkey@3743
   124
static cell_t smn_PbReadColor(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   125
{
skamonkey@3743
   126
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   127
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   128
skamonkey@3743
   129
	cell_t *out;
skamonkey@3743
   130
	pCtx->LocalToPhysAddr(params[3], &out);
skamonkey@3743
   131
skamonkey@3743
   132
	Color clr;
skamonkey@3743
   133
	if (!msg->GetColor(strField, &clr))
skamonkey@3743
   134
	{
skamonkey@3747
   135
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   136
	}
skamonkey@3743
   137
skamonkey@3743
   138
	out[0] = clr.r();
skamonkey@3743
   139
	out[1] = clr.g();
skamonkey@3743
   140
	out[2] = clr.b();
skamonkey@3743
   141
	out[3] = clr.a();
skamonkey@3743
   142
skamonkey@3743
   143
	return 1;
skamonkey@3743
   144
}
skamonkey@3743
   145
skamonkey@3743
   146
static cell_t smn_PbReadAngle(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   147
{
skamonkey@3743
   148
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   149
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   150
skamonkey@3743
   151
	cell_t *out;
skamonkey@3743
   152
	pCtx->LocalToPhysAddr(params[3], &out);
skamonkey@3743
   153
skamonkey@3743
   154
	QAngle ang;
skamonkey@3743
   155
	if (!msg->GetQAngle(strField, &ang))
skamonkey@3743
   156
	{
skamonkey@3747
   157
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   158
	}
skamonkey@3743
   159
skamonkey@3743
   160
	out[0] = sp_ftoc(ang.x);
skamonkey@3743
   161
	out[1] = sp_ftoc(ang.y);
skamonkey@3743
   162
	out[2] = sp_ftoc(ang.z);
skamonkey@3743
   163
skamonkey@3743
   164
	return 1;
skamonkey@3743
   165
}
skamonkey@3743
   166
skamonkey@3743
   167
static cell_t smn_PbReadVector(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   168
{
skamonkey@3743
   169
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   170
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   171
skamonkey@3743
   172
	cell_t *out;
skamonkey@3743
   173
	pCtx->LocalToPhysAddr(params[3], &out);
skamonkey@3743
   174
skamonkey@3743
   175
	Vector vec;
skamonkey@3743
   176
	if (!msg->GetVector(strField, &vec))
skamonkey@3743
   177
	{
skamonkey@3747
   178
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   179
	}
skamonkey@3743
   180
skamonkey@3743
   181
	out[0] = sp_ftoc(vec.x);
skamonkey@3743
   182
	out[1] = sp_ftoc(vec.y);
skamonkey@3743
   183
	out[2] = sp_ftoc(vec.z);
skamonkey@3743
   184
skamonkey@3743
   185
	return 1;
skamonkey@3743
   186
}
skamonkey@3743
   187
skamonkey@3743
   188
static cell_t smn_PbReadVector2D(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   189
{
skamonkey@3743
   190
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   191
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   192
skamonkey@3743
   193
	cell_t *out;
skamonkey@3743
   194
	pCtx->LocalToPhysAddr(params[3], &out);
skamonkey@3743
   195
skamonkey@3743
   196
	Vector2D vec;
skamonkey@3743
   197
	if (!msg->GetVector2D(strField, &vec))
skamonkey@3743
   198
	{
skamonkey@3747
   199
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   200
	}
skamonkey@3743
   201
skamonkey@3743
   202
	out[0] = sp_ftoc(vec.x);
skamonkey@3743
   203
	out[1] = sp_ftoc(vec.y);
skamonkey@3743
   204
skamonkey@3743
   205
	return 1;
skamonkey@3743
   206
}
skamonkey@3743
   207
skamonkey@3743
   208
static cell_t smn_PbGetRepeatedFieldCount(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   209
{
skamonkey@3743
   210
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   211
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   212
skamonkey@3743
   213
	int cnt = msg->GetRepeatedFieldCount(strField);
skamonkey@3743
   214
	if (cnt == -1)
skamonkey@3743
   215
	{
skamonkey@3747
   216
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   217
	}
skamonkey@3743
   218
skamonkey@3743
   219
	return cnt;
skamonkey@3743
   220
}
skamonkey@3743
   221
skamonkey@3743
   222
static cell_t smn_PbReadRepeatedInt(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   223
{
skamonkey@3743
   224
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   225
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   226
skamonkey@3743
   227
	int ret;
skamonkey@3743
   228
	if (!msg->GetRepeatedInt32OrUnsigned(strField, params[3], &ret))
skamonkey@3743
   229
	{
skamonkey@3747
   230
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   231
	}
skamonkey@3743
   232
skamonkey@3743
   233
	return ret;
skamonkey@3743
   234
}
skamonkey@3743
   235
skamonkey@3743
   236
static cell_t smn_PbReadRepeatedFloat(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   237
{
skamonkey@3743
   238
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   239
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   240
skamonkey@3743
   241
	float ret;
skamonkey@3743
   242
	if (!msg->GetRepeatedFloatOrDouble(strField, params[3], &ret))
skamonkey@3743
   243
	{
skamonkey@3747
   244
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   245
	}
skamonkey@3743
   246
skamonkey@3743
   247
	return sp_ftoc(ret);
skamonkey@3743
   248
}
skamonkey@3743
   249
skamonkey@3743
   250
static cell_t smn_PbReadRepeatedBool(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   251
{
skamonkey@3743
   252
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   253
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   254
skamonkey@3743
   255
	bool ret;
skamonkey@3743
   256
	if (!msg->GetRepeatedBool(strField, params[3], &ret))
skamonkey@3743
   257
	{
skamonkey@3747
   258
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   259
	}
skamonkey@3743
   260
skamonkey@3743
   261
	return ret ? 1 : 0;
skamonkey@3743
   262
}
skamonkey@3743
   263
skamonkey@3743
   264
static cell_t smn_PbReadRepeatedString(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   265
{
skamonkey@3743
   266
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   267
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   268
skamonkey@3743
   269
	char *buf;
skamonkey@3743
   270
	pCtx->LocalToPhysAddr(params[4], (cell_t **)&buf);
skamonkey@3743
   271
skamonkey@3743
   272
	if (!msg->GetRepeatedString(strField, params[3], buf, params[5]))
skamonkey@3743
   273
	{
skamonkey@3747
   274
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   275
	}
skamonkey@3743
   276
skamonkey@3743
   277
	return 1;
skamonkey@3743
   278
}
skamonkey@3743
   279
skamonkey@3743
   280
static cell_t smn_PbReadRepeatedColor(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   281
{
skamonkey@3743
   282
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   283
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   284
skamonkey@3743
   285
	cell_t *out;
skamonkey@3743
   286
	pCtx->LocalToPhysAddr(params[4], &out);
skamonkey@3743
   287
skamonkey@3743
   288
	Color clr;
skamonkey@3743
   289
	if (!msg->GetRepeatedColor(strField, params[3], &clr))
skamonkey@3743
   290
	{
skamonkey@3747
   291
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   292
	}
skamonkey@3743
   293
skamonkey@3743
   294
	out[0] = clr.r();
skamonkey@3743
   295
	out[1] = clr.g();
skamonkey@3743
   296
	out[2] = clr.b();
skamonkey@3743
   297
	out[3] = clr.a();
skamonkey@3743
   298
skamonkey@3743
   299
	return 1;
skamonkey@3743
   300
}
skamonkey@3743
   301
skamonkey@3743
   302
static cell_t smn_PbReadRepeatedAngle(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   303
{
skamonkey@3743
   304
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   305
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   306
skamonkey@3743
   307
	cell_t *out;
skamonkey@3743
   308
	pCtx->LocalToPhysAddr(params[4], &out);
skamonkey@3743
   309
skamonkey@3743
   310
	QAngle ang;
skamonkey@3743
   311
	if (!msg->GetRepeatedQAngle(strField, params[3], &ang))
skamonkey@3743
   312
	{
skamonkey@3747
   313
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   314
	}
skamonkey@3743
   315
skamonkey@3743
   316
	out[0] = sp_ftoc(ang.x);
skamonkey@3743
   317
	out[1] = sp_ftoc(ang.y);
skamonkey@3743
   318
	out[2] = sp_ftoc(ang.z);
skamonkey@3743
   319
skamonkey@3743
   320
	return 1;
skamonkey@3743
   321
}
skamonkey@3743
   322
skamonkey@3743
   323
static cell_t smn_PbReadRepeatedVector(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   324
{
skamonkey@3743
   325
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   326
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   327
skamonkey@3743
   328
	cell_t *out;
skamonkey@3743
   329
	pCtx->LocalToPhysAddr(params[4], &out);
skamonkey@3743
   330
skamonkey@3743
   331
	Vector vec;
skamonkey@3743
   332
	if (!msg->GetRepeatedVector(strField, params[3], &vec))
skamonkey@3743
   333
	{
skamonkey@3747
   334
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   335
	}
skamonkey@3743
   336
skamonkey@3743
   337
	out[0] = sp_ftoc(vec.x);
skamonkey@3743
   338
	out[1] = sp_ftoc(vec.y);
skamonkey@3743
   339
	out[2] = sp_ftoc(vec.z);
skamonkey@3743
   340
skamonkey@3743
   341
	return 1;
skamonkey@3743
   342
}
skamonkey@3743
   343
skamonkey@3743
   344
static cell_t smn_PbReadRepeatedVector2D(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   345
{
skamonkey@3743
   346
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   347
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   348
skamonkey@3743
   349
	cell_t *out;
skamonkey@3743
   350
	pCtx->LocalToPhysAddr(params[4], &out);
skamonkey@3743
   351
skamonkey@3743
   352
	Vector2D vec;
skamonkey@3743
   353
	if (!msg->GetRepeatedVector2D(strField, params[3], &vec))
skamonkey@3743
   354
	{
skamonkey@3747
   355
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   356
	}
skamonkey@3743
   357
skamonkey@3743
   358
	out[0] = sp_ftoc(vec.x);
skamonkey@3743
   359
	out[1] = sp_ftoc(vec.y);
skamonkey@3743
   360
skamonkey@3743
   361
	return 1;
skamonkey@3743
   362
}
skamonkey@3743
   363
skamonkey@3743
   364
static cell_t smn_PbSetInt(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   365
{
skamonkey@3743
   366
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   367
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   368
skamonkey@3743
   369
	if (!msg->SetInt32OrUnsigned(strField, params[3]))
skamonkey@3743
   370
	{
skamonkey@3747
   371
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   372
	}
skamonkey@3743
   373
skamonkey@3743
   374
	return 1;
skamonkey@3743
   375
}
skamonkey@3743
   376
skamonkey@3743
   377
static cell_t smn_PbSetFloat(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   378
{
skamonkey@3743
   379
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   380
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   381
skamonkey@3743
   382
	if (!msg->SetFloatOrDouble(strField, sp_ctof(params[3])))
skamonkey@3743
   383
	{
skamonkey@3747
   384
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   385
	}
skamonkey@3743
   386
skamonkey@3743
   387
	return 1;
skamonkey@3743
   388
}
skamonkey@3743
   389
skamonkey@3743
   390
static cell_t smn_PbSetBool(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   391
{
skamonkey@3743
   392
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   393
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   394
skamonkey@3743
   395
	bool value = (params[3] == 0 ? false : true);
skamonkey@3743
   396
	if (!msg->SetBool(strField, value))
skamonkey@3743
   397
	{
skamonkey@3747
   398
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   399
	}
skamonkey@3743
   400
skamonkey@3743
   401
	return 1;
skamonkey@3743
   402
}
skamonkey@3743
   403
skamonkey@3743
   404
static cell_t smn_PbSetString(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   405
{
skamonkey@3743
   406
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   407
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   408
skamonkey@3743
   409
	char *strValue;
skamonkey@3743
   410
	if ((err=pCtx->LocalToString(params[3], &strValue)) != SP_ERROR_NONE)
skamonkey@3743
   411
	{
skamonkey@3743
   412
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   413
		return 0;
skamonkey@3743
   414
	}
skamonkey@3743
   415
skamonkey@3743
   416
	if (!msg->SetString(strField, strValue))
skamonkey@3743
   417
	{
skamonkey@3747
   418
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   419
	}
skamonkey@3743
   420
skamonkey@3743
   421
	return 1;
skamonkey@3743
   422
}
skamonkey@3743
   423
skamonkey@3743
   424
static cell_t smn_PbSetColor(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   425
{
skamonkey@3743
   426
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   427
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   428
skamonkey@3743
   429
	cell_t *clrParams;
skamonkey@3743
   430
	if ((err=pCtx->LocalToPhysAddr(params[3], &clrParams)) != SP_ERROR_NONE)
skamonkey@3743
   431
	{
skamonkey@3743
   432
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   433
		return 0;
skamonkey@3743
   434
	}
skamonkey@3743
   435
skamonkey@3743
   436
	Color clr(
skamonkey@3743
   437
		clrParams[0],
skamonkey@3743
   438
		clrParams[1],
skamonkey@3743
   439
		clrParams[2],
skamonkey@3743
   440
		clrParams[3]);
skamonkey@3743
   441
skamonkey@3743
   442
	if (!msg->SetColor(strField, clr))
skamonkey@3743
   443
	{
skamonkey@3747
   444
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   445
	}
skamonkey@3743
   446
skamonkey@3743
   447
	return 1;
skamonkey@3743
   448
}
skamonkey@3743
   449
skamonkey@3743
   450
static cell_t smn_PbSetAngle(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   451
{
skamonkey@3743
   452
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   453
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   454
skamonkey@3743
   455
	cell_t *angParams;
skamonkey@3743
   456
	if ((err=pCtx->LocalToPhysAddr(params[3], &angParams)) != SP_ERROR_NONE)
skamonkey@3743
   457
	{
skamonkey@3743
   458
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   459
		return 0;
skamonkey@3743
   460
	}
skamonkey@3743
   461
skamonkey@3743
   462
	QAngle ang(
skamonkey@3743
   463
		sp_ctof(angParams[0]),
skamonkey@3743
   464
		sp_ctof(angParams[1]),
skamonkey@3743
   465
		sp_ctof(angParams[2]));
skamonkey@3743
   466
skamonkey@3743
   467
	if (!msg->SetQAngle(strField, ang))
skamonkey@3743
   468
	{
skamonkey@3747
   469
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   470
	}
skamonkey@3743
   471
skamonkey@3743
   472
	return 1;
skamonkey@3743
   473
}
skamonkey@3743
   474
skamonkey@3743
   475
static cell_t smn_PbSetVector(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   476
{
skamonkey@3743
   477
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   478
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   479
skamonkey@3743
   480
	cell_t *vecParams;
skamonkey@3743
   481
	if ((err=pCtx->LocalToPhysAddr(params[3], &vecParams)) != SP_ERROR_NONE)
skamonkey@3743
   482
	{
skamonkey@3743
   483
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   484
		return 0;
skamonkey@3743
   485
	}
skamonkey@3743
   486
skamonkey@3743
   487
	Vector vec(
skamonkey@3743
   488
		sp_ctof(vecParams[0]),
skamonkey@3743
   489
		sp_ctof(vecParams[1]),
skamonkey@3743
   490
		sp_ctof(vecParams[2]));
skamonkey@3743
   491
skamonkey@3743
   492
	if (!msg->SetVector(strField, vec))
skamonkey@3743
   493
	{
skamonkey@3747
   494
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   495
	}
skamonkey@3743
   496
skamonkey@3743
   497
	return 1;
skamonkey@3743
   498
}
skamonkey@3743
   499
skamonkey@3743
   500
static cell_t smn_PbSetVector2D(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   501
{
skamonkey@3743
   502
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   503
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   504
skamonkey@3743
   505
	cell_t *vecParams;
skamonkey@3743
   506
	if ((err=pCtx->LocalToPhysAddr(params[3], &vecParams)) != SP_ERROR_NONE)
skamonkey@3743
   507
	{
skamonkey@3743
   508
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   509
		return 0;
skamonkey@3743
   510
	}
skamonkey@3743
   511
skamonkey@3743
   512
	Vector2D vec(
skamonkey@3743
   513
		sp_ctof(vecParams[0]),
skamonkey@3743
   514
		sp_ctof(vecParams[1]));
skamonkey@3743
   515
skamonkey@3743
   516
	if (!msg->SetVector2D(strField, vec))
skamonkey@3743
   517
	{
skamonkey@3747
   518
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   519
	}
skamonkey@3743
   520
skamonkey@3743
   521
	return 1;
skamonkey@3743
   522
}
skamonkey@3743
   523
skamonkey@3743
   524
static cell_t smn_PbAddInt(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   525
{
skamonkey@3743
   526
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   527
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   528
skamonkey@3743
   529
	if (!msg->AddInt32OrUnsigned(strField, params[3]))
skamonkey@3743
   530
	{
skamonkey@3747
   531
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   532
	}
skamonkey@3743
   533
skamonkey@3743
   534
	return 1;
skamonkey@3743
   535
}
skamonkey@3743
   536
skamonkey@3743
   537
static cell_t smn_PbAddFloat(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   538
{
skamonkey@3743
   539
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   540
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   541
skamonkey@3743
   542
	if (!msg->AddFloatOrDouble(strField, sp_ctof(params[3])))
skamonkey@3743
   543
	{
skamonkey@3747
   544
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   545
	}
skamonkey@3743
   546
skamonkey@3743
   547
	return 1;
skamonkey@3743
   548
}
skamonkey@3743
   549
skamonkey@3743
   550
static cell_t smn_PbAddBool(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   551
{
skamonkey@3743
   552
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   553
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   554
skamonkey@3743
   555
	bool value = (params[3] == 0 ? false : true);
skamonkey@3743
   556
	if (!msg->AddBool(strField, value))
skamonkey@3743
   557
	{
skamonkey@3747
   558
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   559
	}
skamonkey@3743
   560
skamonkey@3743
   561
	return 1;
skamonkey@3743
   562
}
skamonkey@3743
   563
skamonkey@3743
   564
static cell_t smn_PbAddString(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   565
{
skamonkey@3743
   566
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   567
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   568
skamonkey@3743
   569
	char *strValue;
skamonkey@3743
   570
	if ((err=pCtx->LocalToString(params[3], &strValue)) != SP_ERROR_NONE)
skamonkey@3743
   571
	{
skamonkey@3743
   572
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   573
		return 0;
skamonkey@3743
   574
	}
skamonkey@3743
   575
skamonkey@3743
   576
	if (!msg->AddString(strField, strValue))
skamonkey@3743
   577
	{
skamonkey@3747
   578
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   579
	}
skamonkey@3743
   580
skamonkey@3743
   581
	return 1;
skamonkey@3743
   582
}
skamonkey@3743
   583
skamonkey@3743
   584
static cell_t smn_PbAddColor(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   585
{
skamonkey@3743
   586
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   587
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   588
skamonkey@3743
   589
	cell_t *clrParams;
skamonkey@3743
   590
	if ((err=pCtx->LocalToPhysAddr(params[3], &clrParams)) != SP_ERROR_NONE)
skamonkey@3743
   591
	{
skamonkey@3743
   592
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   593
		return 0;
skamonkey@3743
   594
	}
skamonkey@3743
   595
skamonkey@3743
   596
	Color clr(
skamonkey@3743
   597
		clrParams[0],
skamonkey@3743
   598
		clrParams[1],
skamonkey@3743
   599
		clrParams[2],
skamonkey@3743
   600
		clrParams[3]);
skamonkey@3743
   601
skamonkey@3743
   602
	if (!msg->AddColor(strField, clr))
skamonkey@3743
   603
	{
skamonkey@3747
   604
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   605
	}
skamonkey@3743
   606
skamonkey@3743
   607
	return 1;
skamonkey@3743
   608
}
skamonkey@3743
   609
skamonkey@3743
   610
static cell_t smn_PbAddAngle(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   611
{
skamonkey@3743
   612
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   613
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   614
skamonkey@3743
   615
	cell_t *angParams;
skamonkey@3743
   616
	if ((err=pCtx->LocalToPhysAddr(params[3], &angParams)) != SP_ERROR_NONE)
skamonkey@3743
   617
	{
skamonkey@3743
   618
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   619
		return 0;
skamonkey@3743
   620
	}
skamonkey@3743
   621
skamonkey@3743
   622
	QAngle ang(
skamonkey@3743
   623
		sp_ctof(angParams[0]),
skamonkey@3743
   624
		sp_ctof(angParams[1]),
skamonkey@3743
   625
		sp_ctof(angParams[2]));
skamonkey@3743
   626
skamonkey@3743
   627
	if (!msg->AddQAngle(strField, ang))
skamonkey@3743
   628
	{
skamonkey@3747
   629
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   630
	}
skamonkey@3743
   631
skamonkey@3743
   632
	return 1;
skamonkey@3743
   633
}
skamonkey@3743
   634
skamonkey@3743
   635
static cell_t smn_PbAddVector(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   636
{
skamonkey@3743
   637
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   638
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   639
skamonkey@3743
   640
	cell_t *vecParams;
skamonkey@3743
   641
	if ((err=pCtx->LocalToPhysAddr(params[3], &vecParams)) != SP_ERROR_NONE)
skamonkey@3743
   642
	{
skamonkey@3743
   643
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   644
		return 0;
skamonkey@3743
   645
	}
skamonkey@3743
   646
skamonkey@3743
   647
	Vector vec(
skamonkey@3743
   648
		sp_ctof(vecParams[0]),
skamonkey@3743
   649
		sp_ctof(vecParams[1]),
skamonkey@3743
   650
		sp_ctof(vecParams[2]));
skamonkey@3743
   651
skamonkey@3743
   652
	if (!msg->AddVector(strField, vec))
skamonkey@3743
   653
	{
skamonkey@3747
   654
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   655
	}
skamonkey@3743
   656
skamonkey@3743
   657
	return 1;
skamonkey@3743
   658
}
skamonkey@3743
   659
skamonkey@3743
   660
static cell_t smn_PbAddVector2D(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   661
{
skamonkey@3743
   662
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   663
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   664
skamonkey@3743
   665
	cell_t *vecParams;
skamonkey@3743
   666
	if ((err=pCtx->LocalToPhysAddr(params[3], &vecParams)) != SP_ERROR_NONE)
skamonkey@3743
   667
	{
skamonkey@3743
   668
		pCtx->ThrowNativeErrorEx(err, NULL);
skamonkey@3743
   669
		return 0;
skamonkey@3743
   670
	}
skamonkey@3743
   671
skamonkey@3743
   672
	Vector2D vec(
skamonkey@3743
   673
		sp_ctof(vecParams[0]),
skamonkey@3743
   674
		sp_ctof(vecParams[1]));
skamonkey@3743
   675
skamonkey@3743
   676
	if (!msg->AddVector2D(strField, vec))
skamonkey@3743
   677
	{
skamonkey@3747
   678
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   679
	}
skamonkey@3743
   680
skamonkey@3743
   681
	return 1;
skamonkey@3743
   682
}
skamonkey@3743
   683
skamonkey@3743
   684
static cell_t smn_PbReadMessage(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   685
{
skamonkey@3743
   686
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   687
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   688
skamonkey@3743
   689
	protobuf::Message *innerMsg;
skamonkey@3743
   690
	if (!msg->GetMessage(strField, &innerMsg))
skamonkey@3743
   691
	{
skamonkey@3747
   692
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   693
	}
skamonkey@3743
   694
skamonkey@3743
   695
	Handle_t outHndl = g_HandleSys.CreateHandle(g_ProtobufType, new SMProtobufMessage(innerMsg), NULL, g_pCoreIdent, NULL);
skamonkey@3743
   696
	msg->AddChildHandle(outHndl);
skamonkey@3743
   697
skamonkey@3743
   698
	return outHndl;
skamonkey@3743
   699
}
skamonkey@3743
   700
skamonkey@3743
   701
static cell_t smn_PbReadRepeatedMessage(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   702
{
skamonkey@3743
   703
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   704
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   705
skamonkey@3743
   706
	const protobuf::Message *innerMsg;
skamonkey@3743
   707
	if (!msg->GetRepeatedMessage(strField, params[3], &innerMsg))
skamonkey@3743
   708
	{
skamonkey@3747
   709
		return pCtx->ThrowNativeError("Invalid field \"%s\"[%d] for message \"%s\"", strField, params[3], msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   710
	}
skamonkey@3743
   711
skamonkey@3743
   712
	Handle_t outHndl = g_HandleSys.CreateHandle(g_ProtobufType, new SMProtobufMessage(const_cast<protobuf::Message *>(innerMsg)), NULL, g_pCoreIdent, NULL);
skamonkey@3743
   713
	msg->AddChildHandle(outHndl);
skamonkey@3743
   714
skamonkey@3743
   715
	return outHndl;
skamonkey@3743
   716
}
skamonkey@3743
   717
skamonkey@3743
   718
static cell_t smn_PbAddMessage(IPluginContext *pCtx, const cell_t *params)
skamonkey@3743
   719
{
skamonkey@3743
   720
	GET_MSG_FROM_HANDLE_OR_ERR();
skamonkey@3743
   721
	GET_FIELD_NAME_OR_ERR();
skamonkey@3743
   722
skamonkey@3743
   723
	protobuf::Message *innerMsg;
skamonkey@3743
   724
	if (!msg->AddMessage(strField, &innerMsg))
skamonkey@3743
   725
	{
skamonkey@3747
   726
		return pCtx->ThrowNativeError("Invalid field \"%s\" for message \"%s\"", strField, msg->GetProtobufMessage()->GetTypeName().c_str());
skamonkey@3743
   727
	}
skamonkey@3743
   728
skamonkey@3743
   729
	Handle_t outHndl = g_HandleSys.CreateHandle(g_ProtobufType, new SMProtobufMessage(innerMsg), NULL, g_pCoreIdent, NULL);
skamonkey@3743
   730
	msg->AddChildHandle(outHndl);
skamonkey@3743
   731
skamonkey@3743
   732
	return outHndl;
skamonkey@3743
   733
}
skamonkey@3743
   734
skamonkey@3743
   735
REGISTER_NATIVES(protobufnatives)
skamonkey@3743
   736
{
skamonkey@3743
   737
	{"PbReadInt",					smn_PbReadInt},
skamonkey@3743
   738
	{"PbReadFloat",					smn_PbReadFloat},
skamonkey@3743
   739
	{"PbReadBool",					smn_PbReadBool},
skamonkey@3743
   740
	{"PbReadString",				smn_PbReadString},
skamonkey@3743
   741
	{"PbReadColor",					smn_PbReadColor},
skamonkey@3743
   742
	{"PbReadAngle",					smn_PbReadAngle},
skamonkey@3743
   743
	{"PbReadVector",				smn_PbReadVector},
skamonkey@3743
   744
	{"PbReadVector2D",				smn_PbReadVector2D},
skamonkey@3743
   745
	{"PbGetRepeatedFieldCount",		smn_PbGetRepeatedFieldCount},
skamonkey@3743
   746
	{"PbReadRepeatedInt",			smn_PbReadRepeatedInt},
skamonkey@3743
   747
	{"PbReadRepeatedFloat",			smn_PbReadRepeatedFloat},
skamonkey@3743
   748
	{"PbReadRepeatedBool",			smn_PbReadRepeatedBool},
skamonkey@3743
   749
	{"PbReadRepeatedString",		smn_PbReadRepeatedString},
skamonkey@3743
   750
	{"PbReadRepeatedColor",			smn_PbReadRepeatedColor},
skamonkey@3743
   751
	{"PbReadRepeatedAngle",			smn_PbReadRepeatedAngle},
skamonkey@3743
   752
	{"PbReadRepeatedVector",		smn_PbReadRepeatedVector},
skamonkey@3743
   753
	{"PbReadRepeatedVector2D",		smn_PbReadRepeatedVector2D},
skamonkey@3743
   754
	{"PbSetInt",					smn_PbSetInt},
skamonkey@3743
   755
	{"PbSetFloat",					smn_PbSetFloat},
skamonkey@3743
   756
	{"PbSetBool",					smn_PbSetBool},
skamonkey@3743
   757
	{"PbSetString",					smn_PbSetString},
skamonkey@3743
   758
	{"PbSetColor",					smn_PbSetColor},
skamonkey@3743
   759
	{"PbSetAngle",					smn_PbSetAngle},
skamonkey@3743
   760
	{"PbSetVector",					smn_PbSetVector},
skamonkey@3743
   761
	{"PbSetVector2D",				smn_PbSetVector2D},
skamonkey@3743
   762
	{"PbAddInt",					smn_PbAddInt},
skamonkey@3743
   763
	{"PbAddFloat",					smn_PbAddFloat},
skamonkey@3743
   764
	{"PbAddBool",					smn_PbAddBool},
skamonkey@3743
   765
	{"PbAddString",					smn_PbAddString},
skamonkey@3743
   766
	{"PbAddColor",					smn_PbAddColor},
skamonkey@3743
   767
	{"PbAddAngle",					smn_PbAddAngle},
skamonkey@3743
   768
	{"PbAddVector",					smn_PbAddVector},
skamonkey@3743
   769
	{"PbAddVector2D",				smn_PbAddVector2D},
skamonkey@3743
   770
	{"PbReadMessage",				smn_PbReadMessage},
skamonkey@3743
   771
	{"PbReadRepeatedMessage",		smn_PbReadRepeatedMessage},
skamonkey@3743
   772
	{"PbAddMessage",				smn_PbAddMessage},
skamonkey@3743
   773
	{NULL,							NULL}
skamonkey@3743
   774
};
skamonkey@3743
   775
skamonkey@3743
   776
/*
skamonkey@3743
   777
                                       @@@@@@@@@@@@@ 
skamonkey@3743
   778
                                     @@@@@@@@@@@@@@@@@@
skamonkey@3743
   779
                                     @@@@@@@@@@@@@@@@@@@@@      
skamonkey@3743
   780
                                    @@@@@@@@@@@@@@@@@@@@@@@@               
skamonkey@3743
   781
                                   @@@@@@@@    @@@@@@@@@@@@@
skamonkey@3743
   782
                                   @@@@@@@@    @@@@@@@@@@@@@          
skamonkey@3743
   783
                                      @@@@@@  @@@@@@@@@@@@@@@             
skamonkey@3743
   784
                                 0000   @@@@@@@@@@@@@@@@@@@@@                
skamonkey@3743
   785
                              000000000   @@@@@@@@@@@@@@@@@@@           
skamonkey@3743
   786
                       0000000000000000000   @@@@@@@@@@@@@@@          
skamonkey@3743
   787
                       00000000000000000000  @@@@@@@@@@@@@@@            
skamonkey@3743
   788
                            000000000       @@@@@@@@@@@@@@@           
skamonkey@3743
   789
                                         @@@@@@@@@@@@@@@@@               
skamonkey@3743
   790
                                        @@@@@@@@@@@@@@@@@@      
skamonkey@3743
   791
                                       @@@@@@@@@@@@@@@@@@       
skamonkey@3743
   792
                                       @@@@@@@@@@@@@@@@@@                                                                @@@@
skamonkey@3743
   793
                                      @@@@@@@@@@@@@@@@@@@                                                             @@@@@@@  
skamonkey@3743
   794
                                     @@@   @@@@    @@@                                                             @@@@@@@@@@     
skamonkey@3743
   795
                                    @@@@@@@@@@@@@@@@@@@@@@@@@@                                                 @@@@@@@@@@  @@@@@    
skamonkey@3743
   796
                                   @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@   @@@@@@@@                                @@  @@@@@@@@@@@@@@@ 
skamonkey@3743
   797
                                  @@@@@@@@@@@@@@@@@@@@@@@@@@ @@   @@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@@@@@@  @@  @@@@@@@@@        
skamonkey@3743
   798
                                  @@@@@@@@@@@@@@@@@@@@@@@ @@@@   @@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@@@@@@@  @@  @@@@@@@@@@@@@
skamonkey@3743
   799
                                  @@@@@@@@@@@@@@@@@@@@@ @@@@    @@@@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@@@@@@@@  @@@  @@@@@@@@@@@@     
skamonkey@3743
   800
                                 @@@@@@@@@@@@@@@@@@@@ @@@@@@   @@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@@   @@@@  @@@@@@@@@@@     
skamonkey@3743
   801
                                 @@@@@@@@@@@@@@@@@  @@@@@@    @@@@@@@@@@@@@@@@@@@  @@@@@@@@@@@@@@@@@@@      @@@@@ @@@@@@      
skamonkey@3743
   802
                                 @@@@@@@@@       @@@@@@@@@   @@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@     @@  @@@@@ @@@@@@@@   
skamonkey@3743
   803
                                           @@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@@   @@@@@@  @@@@  @@@@@@  
skamonkey@3743
   804
                                  @@@@@@@@@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@@@@@@@  @@@@@@         @@@@@@  @@@@@@
skamonkey@3743
   805
                                 @@@@@@@@@@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@@@@@@@              @@@@@@@@   @@@@
skamonkey@3743
   806
                                  @@@@@@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@       @@@@@@@@@@@@@@  @  @@@@@  
skamonkey@3743
   807
                                   @@@@@@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@    @@@@@  @@@@    ////
skamonkey@3743
   808
                     ////////////   @@@@@@@@@@@ @@@@@@       @@@@@@@@@@@@@@@@@@@@  @@      @@@@@@@@@  @@@@    //// //////////// 
skamonkey@3743
   809
              ///////////////// ///    @@@@@          @@@@    @@@@@@@@@@@@@@@@@@@   @@@@@@@@@@@@@     @@@@   ///// ///////  /////////    
skamonkey@3743
   810
        /////////////////////  /////         @@@@@@@@@@@@@@   @@@@@@@@@@@@@@@@@@@   @@@@@@@      @  @@@@    ////// ///////  ///////////////
skamonkey@3743
   811
    ///////////////////////// ///////    @@@@@@@@@@@@@@@@@@@    @@@@@@@@@@@@@@@           @@@@@   @@@@    //////  ////////  //////////////////// 
skamonkey@3743
   812
 ////////////////////////////  //////////   @@@@@@@@@@@@@@@@@@    @@@@@@@@@@@@   @@@@@@@@@     @@@      //////  ////////// ////////////////////////
skamonkey@3743
   813
//////////////////// //////////  ///////////   @@@@@@@@@@@@@@@@@     @@@@@@@@   @@@      @@@@@@      ////// ////////////  //////////////////////////
skamonkey@3743
   814
//////////////////// ////////////   ///////////   @@@@@@@@@@@@@@@@               @@@@            /////////////////////  /////////////////////////////
skamonkey@3743
   815
/////////////////////  //////////////       //////              @@@@@@@@@                ///////////////////////////////////////////////////////////
skamonkey@3743
   816
   ////////////////////    /////////////////////////////////////          ///////////////////////////////////////////////////////////////////////
skamonkey@3743
   817
       /////////////////////     ////////////////////////////////////////////////////////////////////////////////////////////////////////////  
skamonkey@3743
   818
            ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
skamonkey@3743
   819
                   //////////////////////////////////////////////////////////////////////////////////////////////////////////////   
skamonkey@3743
   820
                             ///////////////////////////////////////////////////////////////////////////////////////// 
skamonkey@3743
   821
                                             //////////////////////////////////////////////////////////
skamonkey@3743
   822
*/
skamonkey@3743
   823
#endif // USE_PROTOBUF_USERMESSAGES