You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
196 lines
4.1 KiB
196 lines
4.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#if !defined( CLASS_H ) |
|
#define CLASS_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
|
|
class CTypeDescriptionField |
|
{ |
|
public: |
|
CTypeDescriptionField() |
|
{ |
|
m_szVariableName[ 0 ] = 0; |
|
m_szType[ 0 ] = 0; |
|
m_szDefineType[ 0 ] = 0; |
|
m_bCommentedOut = false; |
|
m_bRepresentedInRecvTable = false; |
|
} |
|
|
|
char m_szVariableName[ 128 ]; |
|
char m_szType[ 128 ]; |
|
char m_szDefineType[ 128 ]; |
|
bool m_bCommentedOut; |
|
bool m_bRepresentedInRecvTable; |
|
}; |
|
|
|
class CClassVariable |
|
{ |
|
public: |
|
CClassVariable() |
|
{ |
|
m_szName[ 0 ] = 0; |
|
m_szType[ 0 ] = 0; |
|
|
|
m_Type = TPUBLIC; |
|
|
|
m_bKnownType = false; |
|
m_nTypeSize = 0; |
|
|
|
m_bIsArray = false; |
|
m_szArraySize[ 0 ] = 0; |
|
|
|
m_bInRecvTable = false; |
|
|
|
m_TypeSize = 0; |
|
} |
|
|
|
typedef enum |
|
{ |
|
TPUBLIC = 0, |
|
TPROTECTED, |
|
TPRIVATE |
|
} VARTYPE; |
|
|
|
char m_szName[ 128 ]; |
|
char m_szType[ 128 ]; |
|
|
|
VARTYPE m_Type; |
|
|
|
bool m_bKnownType; |
|
int m_nTypeSize; |
|
|
|
bool m_bIsArray; |
|
char m_szArraySize[ 128 ]; |
|
|
|
bool m_bInRecvTable; |
|
|
|
int m_TypeSize; |
|
}; |
|
|
|
class CClassMemberFunction |
|
{ |
|
public: |
|
typedef enum |
|
{ |
|
TPUBLIC = 0, |
|
TPROTECTED, |
|
TPRIVATE |
|
} MEMBERTYPE; |
|
|
|
char m_szName[ 128 ]; |
|
// Return type |
|
char m_szType[ 128 ]; |
|
|
|
MEMBERTYPE m_Type; |
|
|
|
}; |
|
|
|
class CClassTypedef |
|
{ |
|
public: |
|
char m_szTypeName[ 128 ]; |
|
char m_szAlias[ 128 ]; |
|
|
|
// bool m_bIsTypedefForBaseClass; |
|
}; |
|
|
|
class CClass |
|
{ |
|
public: |
|
enum |
|
{ |
|
MAX_VARIABLES = 1024, |
|
MAX_MEMBERS = 1024, |
|
MAX_TDFIELDS = 1024, |
|
}; |
|
|
|
CClass( const char *name ); |
|
~CClass( void ); |
|
|
|
char *ParseClassDeclaration( char *input ); |
|
|
|
|
|
void SetBaseClass( const char *name ); |
|
void CheckChildOfBaseEntity( const char *baseentityclass ); |
|
bool CheckForMissingTypeDescriptionFields( int& missingcount, bool createtds = false ); |
|
bool CheckForMissingPredictionFields( int& missingcount, bool createtds = false ); |
|
bool CheckForPredictionFieldsInRecvTableNotMarkedAsSuchCorrectly( int& missingcount ); |
|
void AddVariable( int protection, char *type, char *name, bool array, char *arraysize = 0 ); |
|
|
|
// Parsing helper methods |
|
bool ParseProtection( char *&input, int &protection ); |
|
bool ParseNestedClass( char *&input ); |
|
bool ParseBaseClass( char *&input ); |
|
bool ParseClassMember( char *&input, int protection ); |
|
bool ParseNetworkVar( char *&input, int protection ); |
|
void ReportTypeMismatches( CClassVariable *var, CTypeDescriptionField *td ); |
|
|
|
void CheckForHungarianErrors( int& warnings ); |
|
|
|
char m_szName[ 128 ]; |
|
char m_szBaseClass[ 128 ]; |
|
char m_szTypedefBaseClass[ 128 ]; |
|
|
|
CClassVariable *FindVar( const char *name, bool checkbaseclasses = false ); |
|
CClassVariable *AddVar( const char *name ); |
|
int m_nVarCount; |
|
CClassVariable *m_Variables[ MAX_VARIABLES ]; |
|
|
|
CClassMemberFunction *FindMember( const char *name ); |
|
CClassMemberFunction *AddMember( const char *name ); |
|
int m_nMemberCount; |
|
CClassMemberFunction *m_Members[ MAX_MEMBERS ]; |
|
|
|
CTypeDescriptionField *FindTD( const char *name ); |
|
CTypeDescriptionField *AddTD( const char *name, const char *type, const char *definetype, bool incomments ); |
|
int m_nTDCount; |
|
CTypeDescriptionField *m_TDFields[ MAX_TDFIELDS ]; |
|
|
|
CTypeDescriptionField *FindPredTD( const char *name ); |
|
CTypeDescriptionField *AddPredTD( const char *name, const char *type, const char *definetype, bool incomments, bool inrecvtable ); |
|
int m_nPredTDCount; |
|
CTypeDescriptionField *m_PredTDFields[ MAX_TDFIELDS ]; |
|
|
|
|
|
CClass *m_pBaseClass; |
|
|
|
CClass *m_pNext; |
|
|
|
bool m_bDerivedFromCBaseEntity; |
|
bool m_bHasSaveRestoreData; |
|
bool m_bHasPredictionData; |
|
bool m_bHasRecvTableData; |
|
bool m_bConstructPredictableCalled; |
|
|
|
int m_nClassDataSize; |
|
|
|
private: |
|
struct MemberVarParse_t |
|
{ |
|
char m_pType[256]; |
|
char m_pTypeModifier[256]; |
|
char m_pName[256]; |
|
char m_pArraySize[ 128 ]; |
|
bool m_bArray; |
|
|
|
MemberVarParse_t() { Reset(); } |
|
|
|
void Reset() |
|
{ |
|
m_pType[0] = 0; |
|
m_pTypeModifier[0] = 0; |
|
m_pName[0] = 0; |
|
m_pArraySize[0] = 0; |
|
m_bArray = false; |
|
} |
|
}; |
|
}; |
|
|
|
#endif // CLASS_H
|