Saved a whole four bytes of memory

This commit is contained in:
David Anderson 2005-07-19 16:14:52 +00:00
parent 3863bd3ccc
commit ffbf9fdca6
3 changed files with 35 additions and 31 deletions

View File

@ -18,8 +18,7 @@ argMsg::argMsg()
void argMsg::Reset() void argMsg::Reset()
{ {
iData = 0; memset(&v, 0, sizeof(v));
fData = 0.0;
cData.clear(); cData.clear();
type = 0; type = 0;
} }
@ -29,28 +28,28 @@ void argMsg::Send()
switch (type) switch (type)
{ {
case arg_byte: case arg_byte:
WRITE_BYTE(iData); WRITE_BYTE(v.iData);
break; break;
case arg_char: case arg_char:
WRITE_CHAR(iData); WRITE_CHAR(v.iData);
break; break;
case arg_short: case arg_short:
WRITE_SHORT(iData); WRITE_SHORT(v.iData);
break; break;
case arg_long: case arg_long:
WRITE_LONG(iData); WRITE_LONG(v.iData);
break; break;
case arg_angle: case arg_angle:
WRITE_ANGLE(fData); WRITE_ANGLE(v.fData);
break; break;
case arg_coord: case arg_coord:
WRITE_COORD(fData); WRITE_COORD(v.fData);
break; break;
case arg_string: case arg_string:
WRITE_STRING(cData.c_str()); WRITE_STRING(cData.c_str());
break; break;
case arg_entity: case arg_entity:
WRITE_ENTITY(iData); WRITE_ENTITY(v.iData);
break; break;
} }
Reset(); Reset();
@ -115,11 +114,11 @@ void WriteByte(int iValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.iData = iValue; p.v.iData = iValue;
p.type = arg_byte; p.type = arg_byte;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].iData = iValue; Msg[msgCount-1].v.iData = iValue;
Msg[msgCount-1].type = arg_byte; Msg[msgCount-1].type = arg_byte;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -135,11 +134,11 @@ void WriteChar(int iValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.iData = iValue; p.v.iData = iValue;
p.type = arg_char; p.type = arg_char;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].iData = iValue; Msg[msgCount-1].v.iData = iValue;
Msg[msgCount-1].type = arg_char; Msg[msgCount-1].type = arg_char;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -155,11 +154,11 @@ void WriteShort(int iValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.iData = iValue; p.v.iData = iValue;
p.type = arg_short; p.type = arg_short;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].iData = iValue; Msg[msgCount-1].v.iData = iValue;
Msg[msgCount-1].type = arg_short; Msg[msgCount-1].type = arg_short;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -175,11 +174,11 @@ void WriteLong(int iValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.iData = iValue; p.v.iData = iValue;
p.type = arg_long; p.type = arg_long;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].iData = iValue; Msg[msgCount-1].v.iData = iValue;
Msg[msgCount-1].type = arg_long; Msg[msgCount-1].type = arg_long;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -195,11 +194,11 @@ void WriteAngle(float flValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.fData = flValue; p.v.fData = flValue;
p.type = arg_angle; p.type = arg_angle;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].fData = flValue; Msg[msgCount-1].v.fData = flValue;
Msg[msgCount-1].type = arg_angle; Msg[msgCount-1].type = arg_angle;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -215,11 +214,11 @@ void WriteCoord(float flValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.fData = flValue; p.v.fData = flValue;
p.type = arg_coord; p.type = arg_coord;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].fData = flValue; Msg[msgCount-1].v.fData = flValue;
Msg[msgCount-1].type = arg_coord; Msg[msgCount-1].type = arg_coord;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -255,11 +254,11 @@ void WriteEntity(int iValue)
} else if (inhook) { } else if (inhook) {
if (++msgCount > Msg.size()) { if (++msgCount > Msg.size()) {
argMsg p; argMsg p;
p.iData = iValue; p.v.iData = iValue;
p.type = arg_entity; p.type = arg_entity;
Msg.push_back(p); Msg.push_back(p);
} else { } else {
Msg[msgCount-1].iData = iValue; Msg[msgCount-1].v.iData = iValue;
Msg[msgCount-1].type = arg_entity; Msg[msgCount-1].type = arg_entity;
} }
RETURN_META(MRES_SUPERCEDE); RETURN_META(MRES_SUPERCEDE);
@ -306,13 +305,15 @@ void MessageEnd(void)
static cell AMX_NATIVE_CALL register_message(AMX *amx, cell *params) static cell AMX_NATIVE_CALL register_message(AMX *amx, cell *params)
{ {
int len; int len;
char *name = MF_GetAmxString(amx, params[2], 0, &len);
if (params[1]>0 && params[1] < 256) { if (params[1]>0 && params[1] < 256) {
int id = MF_RegisterSPForwardByName(amx, MF_GetAmxString(amx, params[2], 0, &len), FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE); int id = MF_RegisterSPForwardByName(amx, name, FP_CELL, FP_CELL, FP_CELL, FP_CELL, FP_DONE);
if (id != -1) if (id != -1)
{ {
msgHooks[params[1]].push_back(id); msgHooks[params[1]].push_back(id);
return id; return id;
} else { } else {
MF_LogError(amx, AMX_ERR_NOTFOUND, "Could not find function \"%s\"", name);
return -1; return -1;
} }
} }
@ -373,7 +374,7 @@ static cell AMX_NATIVE_CALL get_msg_arg_int(AMX *amx, cell *params)
return 0; return 0;
} }
int iVal = Msg[argn].iData; int iVal = Msg[argn].v.iData;
return iVal; return iVal;
} }
@ -388,7 +389,7 @@ static cell AMX_NATIVE_CALL set_msg_arg_int(AMX *amx, cell *params)
} }
Msg[argn].type = params[2]; Msg[argn].type = params[2];
Msg[argn].iData = params[3]; Msg[argn].v.iData = params[3];
return 1; return 1;
} }
@ -402,7 +403,7 @@ static cell AMX_NATIVE_CALL get_msg_arg_float(AMX *amx, cell *params)
return 0; return 0;
} }
return amx_ftoc(Msg[argn].fData); return amx_ftoc(Msg[argn].v.fData);
} }
static cell AMX_NATIVE_CALL set_msg_arg_float(AMX *amx, cell *params) static cell AMX_NATIVE_CALL set_msg_arg_float(AMX *amx, cell *params)
@ -416,7 +417,7 @@ static cell AMX_NATIVE_CALL set_msg_arg_float(AMX *amx, cell *params)
REAL fVal = amx_ctof(params[2]); REAL fVal = amx_ctof(params[2]);
Msg[argn].fData = fVal; Msg[argn].v.fData = fVal;
return 1; return 1;
} }

View File

@ -35,9 +35,12 @@ public:
int Type(); int Type();
int type; int type;
union
{
REAL fData; REAL fData;
String cData;
int iData; int iData;
} v;
String cData;
}; };
extern AMX_NATIVE_INFO msg_Natives[]; extern AMX_NATIVE_INFO msg_Natives[];

View File

@ -5,7 +5,7 @@
// Module info // Module info
#define MODULE_NAME "Engine" #define MODULE_NAME "Engine"
#define MODULE_VERSION "1.01" #define MODULE_VERSION "1.10RC1"
#define MODULE_AUTHOR "AMX Mod X Dev Team" #define MODULE_AUTHOR "AMX Mod X Dev Team"
#define MODULE_URL "http://www.amxmodx.org" #define MODULE_URL "http://www.amxmodx.org"
#define MODULE_LOGTAG "ENGINE" #define MODULE_LOGTAG "ENGINE"