mirror of
https://github.com/TTimo/doom3.gpl.git
synced 2026-03-19 16:39:24 +01:00
hello world
This commit is contained in:
1050
neo/TypeInfo/TypeInfoGen.cpp
Normal file
1050
neo/TypeInfo/TypeInfoGen.cpp
Normal file
File diff suppressed because it is too large
Load Diff
116
neo/TypeInfo/TypeInfoGen.h
Normal file
116
neo/TypeInfo/TypeInfoGen.h
Normal file
@@ -0,0 +1,116 @@
|
||||
/*
|
||||
===========================================================================
|
||||
|
||||
Doom 3 GPL Source Code
|
||||
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
||||
|
||||
This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
|
||||
|
||||
Doom 3 Source Code is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Doom 3 Source Code is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
|
||||
|
||||
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
||||
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#ifndef __TYPEINFOGEN_H__
|
||||
#define __TYPEINFOGEN_H__
|
||||
|
||||
/*
|
||||
===================================================================================
|
||||
|
||||
Type Info Generator
|
||||
|
||||
- template classes are commented out (different instantiations are not identified)
|
||||
- bit fields are commented out (cannot get the address of bit fields)
|
||||
- multiple inheritance is not supported (only tracks a single super type)
|
||||
|
||||
===================================================================================
|
||||
*/
|
||||
|
||||
class idConstantInfo {
|
||||
public:
|
||||
idStr name;
|
||||
idStr type;
|
||||
idStr value;
|
||||
};
|
||||
|
||||
class idEnumValueInfo {
|
||||
public:
|
||||
idStr name;
|
||||
int value;
|
||||
};
|
||||
|
||||
class idEnumTypeInfo {
|
||||
public:
|
||||
idStr typeName;
|
||||
idStr scope;
|
||||
bool unnamed;
|
||||
bool isTemplate;
|
||||
idList<idEnumValueInfo> values;
|
||||
};
|
||||
|
||||
class idClassVariableInfo {
|
||||
public:
|
||||
idStr name;
|
||||
idStr type;
|
||||
int bits;
|
||||
};
|
||||
|
||||
class idClassTypeInfo {
|
||||
public:
|
||||
idStr typeName;
|
||||
idStr superType;
|
||||
idStr scope;
|
||||
bool unnamed;
|
||||
bool isTemplate;
|
||||
idList<idClassVariableInfo> variables;
|
||||
};
|
||||
|
||||
class idTypeInfoGen {
|
||||
public:
|
||||
idTypeInfoGen( void );
|
||||
~idTypeInfoGen( void );
|
||||
|
||||
void AddDefine( const char *define );
|
||||
void CreateTypeInfo( const char *path );
|
||||
void WriteTypeInfo( const char *fileName ) const;
|
||||
|
||||
private:
|
||||
idStrList defines;
|
||||
|
||||
idList<idConstantInfo *> constants;
|
||||
idList<idEnumTypeInfo *> enums;
|
||||
idList<idClassTypeInfo *> classes;
|
||||
|
||||
int numTemplates;
|
||||
int maxInheritance;
|
||||
idStr maxInheritanceClass;
|
||||
|
||||
int GetInheritance( const char *typeName ) const;
|
||||
int EvaluateIntegerString( const idStr &string );
|
||||
float EvaluateFloatString( const idStr &string );
|
||||
idConstantInfo * FindConstant( const char *name );
|
||||
int GetIntegerConstant( const char *scope, const char *name, idParser &src );
|
||||
float GetFloatConstant( const char *scope, const char *name, idParser &src );
|
||||
int ParseArraySize( const char *scope, idParser &src );
|
||||
void ParseConstantValue( const char *scope, idParser &src, idStr &value );
|
||||
idEnumTypeInfo * ParseEnumType( const char *scope, bool isTemplate, bool typeDef, idParser &src );
|
||||
idClassTypeInfo * ParseClassType( const char *scope, const char *templateArgs, bool isTemplate, bool typeDef, idParser &src );
|
||||
void ParseScope( const char *scope, bool isTemplate, idParser &src, idClassTypeInfo *typeInfo );
|
||||
};
|
||||
|
||||
#endif /* !__TYPEINFOGEN_H__ */
|
||||
307
neo/TypeInfo/main.cpp
Normal file
307
neo/TypeInfo/main.cpp
Normal file
@@ -0,0 +1,307 @@
|
||||
/*
|
||||
===========================================================================
|
||||
|
||||
Doom 3 GPL Source Code
|
||||
Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
|
||||
|
||||
This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
|
||||
|
||||
Doom 3 Source Code is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Doom 3 Source Code is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
|
||||
|
||||
If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
|
||||
|
||||
===========================================================================
|
||||
*/
|
||||
|
||||
#include "../idlib/precompiled.h"
|
||||
#include "../sys/sys_local.h"
|
||||
#pragma hdrstop
|
||||
|
||||
#include "TypeInfoGen.h"
|
||||
|
||||
idSession * session = NULL;
|
||||
idDeclManager * declManager = NULL;
|
||||
idEventLoop * eventLoop = NULL;
|
||||
|
||||
int idEventLoop::JournalLevel( void ) const { return 0; }
|
||||
|
||||
/*
|
||||
==============================================================
|
||||
|
||||
idCommon
|
||||
|
||||
==============================================================
|
||||
*/
|
||||
|
||||
#define STDIO_PRINT( pre, post ) \
|
||||
va_list argptr; \
|
||||
va_start( argptr, fmt ); \
|
||||
printf( pre ); \
|
||||
vprintf( fmt, argptr ); \
|
||||
printf( post ); \
|
||||
va_end( argptr )
|
||||
|
||||
|
||||
class idCommonLocal : public idCommon {
|
||||
public:
|
||||
idCommonLocal( void ) {}
|
||||
|
||||
virtual void Init( int argc, const char **argv, const char *cmdline ) {}
|
||||
virtual void Shutdown( void ) {}
|
||||
virtual void Quit( void ) {}
|
||||
virtual bool IsInitialized( void ) const { return true; }
|
||||
virtual void Frame( void ) {}
|
||||
virtual void GUIFrame( bool execCmd, bool network ) {}
|
||||
virtual void Async( void ) {}
|
||||
virtual void StartupVariable( const char *match, bool once ) {}
|
||||
virtual void InitTool( const toolFlag_t tool, const idDict *dict ) {}
|
||||
virtual void ActivateTool( bool active ) {}
|
||||
virtual void WriteConfigToFile( const char *filename ) {}
|
||||
virtual void WriteFlaggedCVarsToFile( const char *filename, int flags, const char *setCmd ) {}
|
||||
virtual void BeginRedirect( char *buffer, int buffersize, void (*flush)( const char * ) ) {}
|
||||
virtual void EndRedirect( void ) {}
|
||||
virtual void SetRefreshOnPrint( bool set ) {}
|
||||
virtual void Printf( const char *fmt, ... ) { STDIO_PRINT( "", "" ); }
|
||||
virtual void VPrintf( const char *fmt, va_list arg ) { vprintf( fmt, arg ); }
|
||||
virtual void DPrintf( const char *fmt, ... ) { /*STDIO_PRINT( "", "" );*/ }
|
||||
virtual void Warning( const char *fmt, ... ) { STDIO_PRINT( "WARNING: ", "\n" ); }
|
||||
virtual void DWarning( const char *fmt, ...) { /*STDIO_PRINT( "WARNING: ", "\n" );*/ }
|
||||
virtual void PrintWarnings( void ) {}
|
||||
virtual void ClearWarnings( const char *reason ) {}
|
||||
virtual void Error( const char *fmt, ... ) { STDIO_PRINT( "ERROR: ", "\n" ); exit(0); }
|
||||
virtual void FatalError( const char *fmt, ... ) { STDIO_PRINT( "FATAL ERROR: ", "\n" ); exit(0); }
|
||||
virtual const idLangDict *GetLanguageDict() { return NULL; }
|
||||
virtual const char * KeysFromBinding( const char *bind ) { return NULL; }
|
||||
virtual const char * BindingFromKey( const char *key ) { return NULL; }
|
||||
virtual int ButtonState( int key ) { return 0; }
|
||||
virtual int KeyState( int key ) { return 0; }
|
||||
};
|
||||
|
||||
idCVar com_developer( "developer", "0", CVAR_BOOL|CVAR_SYSTEM, "developer mode" );
|
||||
|
||||
idCommonLocal commonLocal;
|
||||
idCommon * common = &commonLocal;
|
||||
|
||||
/*
|
||||
==============================================================
|
||||
|
||||
idSys
|
||||
|
||||
==============================================================
|
||||
*/
|
||||
|
||||
void Sys_Mkdir( const char *path ) {}
|
||||
ID_TIME_T Sys_FileTimeStamp( FILE *fp ) { return 0; }
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
#include <io.h>
|
||||
#include <direct.h>
|
||||
|
||||
const char *Sys_Cwd( void ) {
|
||||
static char cwd[1024];
|
||||
|
||||
_getcwd( cwd, sizeof( cwd ) - 1 );
|
||||
cwd[sizeof( cwd ) - 1] = 0;
|
||||
|
||||
int i = idStr::FindText( cwd, CD_BASEDIR, false );
|
||||
if ( i >= 0 ) {
|
||||
cwd[i + strlen( CD_BASEDIR )] = '\0';
|
||||
}
|
||||
|
||||
return cwd;
|
||||
}
|
||||
|
||||
const char *Sys_DefaultCDPath( void ) {
|
||||
return "";
|
||||
}
|
||||
|
||||
const char *Sys_DefaultBasePath( void ) {
|
||||
return Sys_Cwd();
|
||||
}
|
||||
|
||||
const char *Sys_DefaultSavePath( void ) {
|
||||
return cvarSystem->GetCVarString( "fs_basepath" );
|
||||
}
|
||||
|
||||
const char *Sys_EXEPath( void ) {
|
||||
return "";
|
||||
}
|
||||
|
||||
int Sys_ListFiles( const char *directory, const char *extension, idStrList &list ) {
|
||||
idStr search;
|
||||
struct _finddata_t findinfo;
|
||||
int findhandle;
|
||||
int flag;
|
||||
|
||||
if ( !extension) {
|
||||
extension = "";
|
||||
}
|
||||
|
||||
// passing a slash as extension will find directories
|
||||
if ( extension[0] == '/' && extension[1] == 0 ) {
|
||||
extension = "";
|
||||
flag = 0;
|
||||
} else {
|
||||
flag = _A_SUBDIR;
|
||||
}
|
||||
|
||||
sprintf( search, "%s\\*%s", directory, extension );
|
||||
|
||||
// search
|
||||
list.Clear();
|
||||
|
||||
findhandle = _findfirst( search, &findinfo );
|
||||
if ( findhandle == -1 ) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
do {
|
||||
if ( flag ^ ( findinfo.attrib & _A_SUBDIR ) ) {
|
||||
list.Append( findinfo.name );
|
||||
}
|
||||
} while ( _findnext( findhandle, &findinfo ) != -1 );
|
||||
|
||||
_findclose( findhandle );
|
||||
|
||||
return list.Num();
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
const char * Sys_DefaultCDPath( void ) { return ""; }
|
||||
const char * Sys_DefaultBasePath( void ) { return ""; }
|
||||
const char * Sys_DefaultSavePath( void ) { return ""; }
|
||||
int Sys_ListFiles( const char *directory, const char *extension, idStrList &list ) { return 0; }
|
||||
|
||||
#endif
|
||||
|
||||
xthreadInfo * g_threads[MAX_THREADS];
|
||||
int g_thread_count;
|
||||
|
||||
void Sys_CreateThread( xthread_t function, void *parms, xthreadPriority priority, xthreadInfo &info, const char *name, xthreadInfo *threads[MAX_THREADS], int *thread_count ) {}
|
||||
void Sys_DestroyThread( xthreadInfo& info ) {}
|
||||
|
||||
void Sys_EnterCriticalSection( int index ) {}
|
||||
void Sys_LeaveCriticalSection( int index ) {}
|
||||
|
||||
void Sys_WaitForEvent( int index ) {}
|
||||
void Sys_TriggerEvent( int index ) {}
|
||||
|
||||
/*
|
||||
==============
|
||||
idSysLocal stub
|
||||
==============
|
||||
*/
|
||||
void idSysLocal::DebugPrintf( const char *fmt, ... ) {}
|
||||
void idSysLocal::DebugVPrintf( const char *fmt, va_list arg ) {}
|
||||
|
||||
double idSysLocal::GetClockTicks( void ) { return 0.0; }
|
||||
double idSysLocal::ClockTicksPerSecond( void ) { return 1.0; }
|
||||
cpuid_t idSysLocal::GetProcessorId( void ) { return (cpuid_t)0; }
|
||||
const char * idSysLocal::GetProcessorString( void ) { return ""; }
|
||||
const char * idSysLocal::FPU_GetState( void ) { return ""; }
|
||||
bool idSysLocal::FPU_StackIsEmpty( void ) { return true; }
|
||||
void idSysLocal::FPU_SetFTZ( bool enable ) {}
|
||||
void idSysLocal::FPU_SetDAZ( bool enable ) {}
|
||||
|
||||
bool idSysLocal::LockMemory( void *ptr, int bytes ) { return false; }
|
||||
bool idSysLocal::UnlockMemory( void *ptr, int bytes ) { return false; }
|
||||
|
||||
void idSysLocal::GetCallStack( address_t *callStack, const int callStackSize ) { memset( callStack, 0, callStackSize * sizeof( callStack[0] ) ); }
|
||||
const char * idSysLocal::GetCallStackStr( const address_t *callStack, const int callStackSize ) { return ""; }
|
||||
const char * idSysLocal::GetCallStackCurStr( int depth ) { return ""; }
|
||||
void idSysLocal::ShutdownSymbols( void ) {}
|
||||
|
||||
int idSysLocal::DLL_Load( const char *dllName ) { return 0; }
|
||||
void * idSysLocal::DLL_GetProcAddress( int dllHandle, const char *procName ) { return NULL; }
|
||||
void idSysLocal::DLL_Unload( int dllHandle ) { }
|
||||
void idSysLocal::DLL_GetFileName( const char *baseName, char *dllName, int maxLength ) { }
|
||||
|
||||
sysEvent_t idSysLocal::GenerateMouseButtonEvent( int button, bool down ) { sysEvent_t ev; memset( &ev, 0, sizeof( ev ) ); return ev; }
|
||||
sysEvent_t idSysLocal::GenerateMouseMoveEvent( int deltax, int deltay ) { sysEvent_t ev; memset( &ev, 0, sizeof( ev ) ); return ev; }
|
||||
|
||||
void idSysLocal::OpenURL( const char *url, bool quit ) { }
|
||||
void idSysLocal::StartProcess( const char *exeName, bool quit ) { }
|
||||
|
||||
void idSysLocal::FPU_EnableExceptions( int exceptions ) { }
|
||||
|
||||
idSysLocal sysLocal;
|
||||
idSys * sys = &sysLocal;
|
||||
|
||||
|
||||
/*
|
||||
==============================================================
|
||||
|
||||
main
|
||||
|
||||
==============================================================
|
||||
*/
|
||||
|
||||
int main( int argc, char** argv ) {
|
||||
idStr fileName, sourcePath;
|
||||
idTypeInfoGen *generator;
|
||||
|
||||
idLib::common = common;
|
||||
idLib::cvarSystem = cvarSystem;
|
||||
idLib::fileSystem = fileSystem;
|
||||
idLib::sys = sys;
|
||||
|
||||
idLib::Init();
|
||||
cmdSystem->Init();
|
||||
cvarSystem->Init();
|
||||
idCVar::RegisterStaticVars();
|
||||
fileSystem->Init();
|
||||
|
||||
generator = new idTypeInfoGen;
|
||||
|
||||
if ( argc > 1 ) {
|
||||
sourcePath = idStr( "../"SOURCE_CODE_BASE_FOLDER"/" ) + argv[1];
|
||||
} else {
|
||||
sourcePath = "../"SOURCE_CODE_BASE_FOLDER"/game";
|
||||
}
|
||||
|
||||
if ( argc > 2 ) {
|
||||
fileName = idStr( "../"SOURCE_CODE_BASE_FOLDER"/" ) + argv[2];
|
||||
} else {
|
||||
fileName = "../"SOURCE_CODE_BASE_FOLDER"/game/gamesys/GameTypeInfo.h";
|
||||
}
|
||||
|
||||
if ( argc > 3 ) {
|
||||
for ( int i = 3; i < argc; i++ ) {
|
||||
generator->AddDefine( argv[i] );
|
||||
}
|
||||
} else {
|
||||
generator->AddDefine( "__cplusplus" );
|
||||
generator->AddDefine( "GAME_DLL" );
|
||||
generator->AddDefine( "ID_TYPEINFO" );
|
||||
}
|
||||
|
||||
generator->CreateTypeInfo( sourcePath );
|
||||
generator->WriteTypeInfo( fileName );
|
||||
|
||||
delete generator;
|
||||
|
||||
fileName.Clear();
|
||||
sourcePath.Clear();
|
||||
|
||||
fileSystem->Shutdown( false );
|
||||
cvarSystem->Shutdown();
|
||||
cmdSystem->Shutdown();
|
||||
idLib::ShutDown();
|
||||
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user