CUtlBuffer::GetString
0x00b7f000 · 224 bytes · __thiscall
_ZN10CUtlBuffer9GetStringEPcj
Decompiled
undefined (3 params)
/* CUtlBuffer::GetString(char*, unsigned int) */
void __thiscall CUtlBuffer::GetString(CUtlBuffer *this,char *param_1,uint param_2)
{
char cVar1;
uint uVar2;
CUtlBuffer *in_stack_ffffffd4;
if (this[0x14] != (CUtlBuffer)0x0) {
*param_1 = '\0';
return;
}
if (param_2 != 0) {
uVar2 = PeekStringLength(in_stack_ffffffd4);
if (((byte)this[0x15] & 1) != 0) {
EatWhiteSpace(this);
}
if ((int)uVar2 < 1) {
*param_1 = '\0';
this[0x14] = (CUtlBuffer)((byte)this[0x14] | 2);
}
else {
if (uVar2 < param_2) {
Get(this,param_1,uVar2 - 1);
param_1[uVar2 - 1] = '\0';
}
else {
Get(this,param_1,param_2 - 1);
param_1[param_2 - 1] = '\0';
if (param_2 < uVar2) {
SeekGet(this,1,uVar2 - param_2);
}
}
if ((((byte)this[0x15] & 1) == 0) && (cVar1 = CheckGet(this,1), cVar1 != '\0')) {
*(int *)(this + 0xc) = *(int *)(this + 0xc) + 1;
}
}
}
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Gamedata KeyValues
DHooks plugin example
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.