User:Psycommando/Macros reference
Contents
Intro
Prototype for a complete list of macros links(in the wiki) and infos. All Macros are listed in different categories, and divided in groups.
Warning on macros
For those unfamiliar with macros, I must warn you that macros are EVIL. They are basically the equivalent of doing a search and replace at compile time, therefore never put an operation as a macro parameter, it will do the operations as many time as the parameter is used in the macro definition!!! This page C++ Faq Lite describe most of the problem. Be sure to check evil# 1-2-3-4.
Data map
Declaration :
Definition :
Network
IMPLEMENT_NETWORKCLASS_ALIASED
- Call : IMPLEMENT_NETWORKCLASS_ALIASED( className, dataTable )
- Declaration : From ..\game\shared\predictable_entity.h
#define IMPLEMENT_NETWORKCLASS_ALIASED(className, dataTable) \ IMPLEMENT_CLIENTCLASS( C_##className, dataTable, C##className )
- Description :
- Example :
Misc
STUB_WEAPON_CLASS
- Call : STUB_WEAPON_CLASS( entityName, className, baseClassName )
- Required Include : c_weapon__stubs.h
- Description : This macro is very simple, it writes a very basic client class for the specified weapon. Most of the weapon stub classes generated by this macro can be found in ..\src\game\client\hl2\c_weapon__stubs_hl2.cpp, but you should note that you can use this macro in any client-side .cpp file, of course you need to include "c_weapon__stubs.h".
- Macro Definition :
#define STUB_WEAPON_CLASS( entityName, className, baseClassName ) \
class C_##className## : public baseClassName \
{ \
DECLARE_CLASS( C_##className##, baseClassName ); \
public: \
DECLARE_PREDICTABLE(); \
DECLARE_CLIENTCLASS(); \
C_##className() {}; \
private: \
C_##className( const C_##className & ); \
}; \
STUB_WEAPON_CLASS_IMPLEMENT( entityName, C_##className ); \
IMPLEMENT_CLIENTCLASS_DT( C_##className, DT_##className, C##className ) \
END_RECV_TABLE()
- Example :
STUB_WEAPON_CLASS( weapon_crowbar, WeaponCrowbar, C_BaseHLBludgeonWeapon );
REGISTER_GAMERULES_CLASS
- Call : REGISTER_GAMERULES_CLASS( className )
- Required Include : ..\src\game\shared\gamerules_register.h
- Description : Add a new gamerule class to the register?(...Need research...)
- Definition :
#define REGISTER_GAMERULES_CLASS( className ) \
void __CreateGameRules_##className() { new className; } \
static CGameRulesRegister __g_GameRulesRegister_##className( #className, __CreateGameRules_##className );
- Example :