skamonkey@3743: /** skamonkey@3743: * vim: set ts=4 : skamonkey@3743: * ============================================================================= skamonkey@3743: * SourceMod (C)2013 AlliedModders LLC. All rights reserved. skamonkey@3743: * ============================================================================= skamonkey@3743: * skamonkey@3743: * This file is part of the SourceMod/SourcePawn SDK. skamonkey@3743: * skamonkey@3743: * This program is free software; you can redistribute it and/or modify it under skamonkey@3743: * the terms of the GNU General Public License, version 3.0, as published by the skamonkey@3743: * Free Software Foundation. skamonkey@3743: * skamonkey@3743: * This program is distributed in the hope that it will be useful, but WITHOUT skamonkey@3743: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS skamonkey@3743: * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more skamonkey@3743: * details. skamonkey@3743: * skamonkey@3743: * You should have received a copy of the GNU General Public License along with skamonkey@3743: * this program. If not, see . skamonkey@3743: * skamonkey@3743: * As a special exception, AlliedModders LLC gives you permission to link the skamonkey@3743: * code of this program (as well as its derivative works) to "Half-Life 2," the skamonkey@3743: * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software skamonkey@3743: * by the Valve Corporation. You must obey the GNU General Public License in skamonkey@3743: * all respects for all other code used. Additionally, AlliedModders LLC grants skamonkey@3743: * this exception to all derivative works. AlliedModders LLC defines further skamonkey@3743: * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), skamonkey@3743: * or . skamonkey@3743: * skamonkey@3743: * Version: $Id$ skamonkey@3743: */ skamonkey@3743: skamonkey@3743: #if defined _protobuf_included skamonkey@3743: #endinput skamonkey@3743: #endif skamonkey@3743: #define _protobuf_included skamonkey@3743: skamonkey@3813: #define PB_FIELD_NOT_REPEATED -1 skamonkey@3813: skamonkey@3743: /** skamonkey@3896: * Reads an int32, uint32, sint32, fixed32, sfixed32, or enum value from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @return Integer value read. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadInt(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads a float or downcasted double from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @return Float value read. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native Float:PbReadFloat(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads a bool from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @return Boolean value read. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native bool:PbReadBool(Handle:pb, const String:field[], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads a string from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param buffer Destination string buffer. skamonkey@3743: * @param maxlength Maximum length of output string buffer. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadString(Handle:pb, const String:field[], String:buffer[], maxlength, index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads an RGBA color value from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param buffer Destination color buffer. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadColor(Handle:pb, const String:field[], buffer[4], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads an XYZ angle value from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param buffer Destination angle buffer. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadAngle(Handle:pb, const String:field[], Float:buffer[3], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads an XYZ vector value from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param buffer Destination vector buffer. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadVector(Handle:pb, const String:field[], Float:buffer[3], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Reads an XY vector value from a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param buffer Destination vector buffer. skamonkey@3813: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3813: native PbReadVector2D(Handle:pb, const String:field[], Float:buffer[2], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Gets the number of elements in a repeated field of a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @return Number of elements in the field. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbGetRepeatedFieldCount(Handle:pb, const String:field[]); skamonkey@3743: skamonkey@3743: /** skamonkey@3896: * Sets an int32, uint32, sint32, fixed32, sfixed32, or enum value on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Integer value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetInt(Handle:pb, const String:field[], value, index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets a float or double on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Float value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetFloat(Handle:pb, const String:field[], Float:value, index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets a bool on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Boolean value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetBool(Handle:pb, const String:field[], bool:value, index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets a string on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value String value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetString(Handle:pb, const String:field[], const String:value[], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets an RGBA color on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param color Color value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetColor(Handle:pb, const String:field[], const color[4], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets an XYZ angle on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param angle Angle value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetAngle(Handle:pb, const String:field[], const Float:angle[3], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets an XYZ vector on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param vec Vector value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetVector(Handle:pb, const String:field[], const Float:vec[3], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Sets an XY vector on a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param vec Vector value to set. skamonkey@3814: * @param index Index into repeated field. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3814: native PbSetVector2D(Handle:pb, const String:field[], const Float:vec[2], index=PB_FIELD_NOT_REPEATED); skamonkey@3743: skamonkey@3743: /** skamonkey@3896: * Add an int32, uint32, sint32, fixed32, sfixed32, or enum value to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Integer value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddInt(Handle:pb, const String:field[], value); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add a float or double to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Float value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddFloat(Handle:pb, const String:field[], Float:value); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add a bool to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value Boolean value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddBool(Handle:pb, const String:field[], bool:value); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add a string to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param value String value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddString(Handle:pb, const String:field[], const String:value[]); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add an RGBA color to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param color Color value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddColor(Handle:pb, const String:field[], const color[4]); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add an XYZ angle to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param angle Angle value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddAngle(Handle:pb, const String:field[], const Float:angle[3]); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add an XYZ vector to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param vec Vector value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddVector(Handle:pb, const String:field[], const Float:vec[3]); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Add an XY vector to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. erik@3967: * @param vec Vector value to add. skamonkey@3743: * @noreturn erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native PbAddVector2D(Handle:pb, const String:field[], const Float:vec[2]); skamonkey@3743: skamonkey@3743: /** skamonkey@4293: * Removes a value by index from a protobuf message repeated field. skamonkey@4293: * skamonkey@4293: * @param pb protobuf handle. skamonkey@4293: * @param field Field name. skamonkey@4293: * @param index Index into repeated field. skamonkey@4293: * @noreturn skamonkey@4293: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@4293: */ skamonkey@4293: native PbRemoveRepeatedFieldValue(Handle:pb, const String:field[], index); skamonkey@4293: skamonkey@4293: /** skamonkey@3743: * Retrieve a handle to an embedded protobuf message in a protobuf message. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @return protobuf handle to embedded message. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native Handle:PbReadMessage(Handle:pb, const String:field[]); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Retrieve a handle to an embedded protobuf message in a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @param index Index in the repeated field. skamonkey@3743: * @return protobuf handle to embedded message. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native Handle:PbReadRepeatedMessage(Handle:pb, const String:field[], index); skamonkey@3743: skamonkey@3743: /** skamonkey@3743: * Adds an embedded protobuf message to a protobuf message repeated field. skamonkey@3743: * skamonkey@3743: * @param pb protobuf handle. skamonkey@3743: * @param field Field name. skamonkey@3743: * @return protobuf handle to added, embedded message. erik@3967: * @error Invalid or incorrect Handle, non-existent field, or incorrect field type. skamonkey@3743: */ skamonkey@3743: native Handle:PbAddMessage(Handle:pb, const String:field[]);