added everything
This commit is contained in:
123
engine/console/dynamicTypes.h
Executable file
123
engine/console/dynamicTypes.h
Executable file
@@ -0,0 +1,123 @@
|
||||
//-----------------------------------------------------------------------------
|
||||
// Torque Game Engine
|
||||
// Copyright (C) GarageGames.com, Inc.
|
||||
//-----------------------------------------------------------------------------
|
||||
#ifndef _DYNAMIC_CONSOLETYPES_H_
|
||||
#define _DYNAMIC_CONSOLETYPES_H_
|
||||
|
||||
#ifndef _SIMBASE_H_
|
||||
#include "console/simBase.h"
|
||||
#endif
|
||||
|
||||
class ConsoleBaseType
|
||||
{
|
||||
protected:
|
||||
/// This is used to generate unique IDs for each type.
|
||||
static S32 smConsoleTypeCount;
|
||||
|
||||
/// We maintain a linked list of all console types; this is its head.
|
||||
static ConsoleBaseType *smListHead;
|
||||
|
||||
/// Next item in the list of all console types.
|
||||
ConsoleBaseType *mListNext;
|
||||
|
||||
/// Destructor is private to avoid people mucking up the list.
|
||||
~ConsoleBaseType();
|
||||
|
||||
S32 mTypeID;
|
||||
dsize_t mTypeSize;
|
||||
const char *mTypeName;
|
||||
const char *mInspectorFieldType;
|
||||
|
||||
public:
|
||||
|
||||
/// @name cbt_list List Interface
|
||||
///
|
||||
/// Interface for accessing/traversing the list of types.
|
||||
|
||||
/// Get the head of the list.
|
||||
static ConsoleBaseType *getListHead();
|
||||
|
||||
/// Get the item that follows this item in the list.
|
||||
ConsoleBaseType *getListNext() const
|
||||
{
|
||||
return mListNext;
|
||||
}
|
||||
|
||||
/// Called once to initialize the console type system.
|
||||
static void initialize();
|
||||
|
||||
/// Call me to get a pointer to a type's info.
|
||||
static ConsoleBaseType *getType(const S32 typeID);
|
||||
|
||||
/// @}
|
||||
|
||||
/// The constructor is responsible for linking an element into the
|
||||
/// master list, registering the type ID, etc.
|
||||
ConsoleBaseType(const S32 size, S32 *idPtr, const char *aTypeName);
|
||||
|
||||
const S32 getTypeID() const { return mTypeID; }
|
||||
const S32 getTypeSize() const { return mTypeSize; }
|
||||
const char *getTypeName() const { return mTypeName; }
|
||||
|
||||
void setInspectorFieldType(const char *type) { mInspectorFieldType = type; }
|
||||
const char *getInspectorFieldType() { return mInspectorFieldType; }
|
||||
|
||||
virtual void setData(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag)=0;
|
||||
virtual const char *getData(void *dptr, EnumTable *tbl, BitSet32 flag )=0;
|
||||
virtual const char *getTypeClassName()=0;
|
||||
virtual const bool isDatablock() { return false; };
|
||||
virtual const char *prepData(const char *data, char *buffer, U32 bufferLen) { return data; };
|
||||
};
|
||||
|
||||
#define DefineConsoleType( type ) extern S32 type;
|
||||
|
||||
#define ConsoleType( typeName, type, size ) \
|
||||
class ConsoleType##type : public ConsoleBaseType \
|
||||
{ \
|
||||
public: \
|
||||
ConsoleType##type (const S32 aSize, S32 *idPtr, const char *aTypeName) : ConsoleBaseType(aSize, idPtr, aTypeName) { } \
|
||||
virtual void setData(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag); \
|
||||
virtual const char *getData(void *dptr, EnumTable *tbl, BitSet32 flag ); \
|
||||
virtual const char *getTypeClassName() { return #typeName ; } \
|
||||
}; \
|
||||
S32 type = -1; \
|
||||
ConsoleType##type gConsoleType##type##Instance(size,&type,#type); \
|
||||
|
||||
#define ConsolePrepType( typeName, type, size ) \
|
||||
class ConsoleType##type : public ConsoleBaseType \
|
||||
{ \
|
||||
public: \
|
||||
ConsoleType##type (const S32 aSize, S32 *idPtr, const char *aTypeName) : ConsoleBaseType(aSize, idPtr, aTypeName) { } \
|
||||
virtual void setData(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag); \
|
||||
virtual const char *getData(void *dptr, EnumTable *tbl, BitSet32 flag ); \
|
||||
virtual const char *getTypeClassName() { return #typeName; }; \
|
||||
virtual const char *prepData(const char *data, char *buffer, U32 bufferLen); \
|
||||
}; \
|
||||
S32 type = -1; \
|
||||
ConsoleType##type gConsoleType##type##Instance(size,&type,#type); \
|
||||
|
||||
#define ConsoleSetType( type ) \
|
||||
void ConsoleType##type::setData(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag)
|
||||
|
||||
#define ConsoleGetType( type ) \
|
||||
const char *ConsoleType##type::getData(void *dptr, EnumTable *tbl, BitSet32 flag)
|
||||
|
||||
#define ConsoleProcessData( type ) \
|
||||
const char *ConsoleType##type::prepData(const char *data, char *buffer, U32 bufferSz)
|
||||
|
||||
#define DatablockConsoleType( typeName, type, size, className ) \
|
||||
class ConsoleType##type : public ConsoleBaseType \
|
||||
{ \
|
||||
public: \
|
||||
ConsoleType##type (const S32 aSize, S32 *idPtr, const char *aTypeName) : ConsoleBaseType(aSize, idPtr, aTypeName) { } \
|
||||
virtual void setData(void *dptr, S32 argc, const char **argv, EnumTable *tbl, BitSet32 flag); \
|
||||
virtual const char *getData(void *dptr, EnumTable *tbl, BitSet32 flag ); \
|
||||
virtual const char *getTypeClassName() { return #className; }; \
|
||||
virtual const bool isDatablock() { return true; }; \
|
||||
}; \
|
||||
S32 type = -1; \
|
||||
ConsoleType##type gConsoleType##type##Instance(size,&type,#type); \
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user