123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- /*
- ===========================================================================
- 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 __LIB_H__
- #define __LIB_H__
- /*
- ===============================================================================
- idLib contains stateless support classes and concrete types. Some classes
- do have static variables, but such variables are initialized once and
- read-only after initialization (they do not maintain a modifiable state).
- The interface pointers idSys, idCommon, idCVarSystem and idFileSystem
- should be set before using idLib. The pointers stored here should not
- be used by any part of the engine except for idLib.
- The frameNumber should be continuously set to the number of the current
- frame if frame base memory logging is required.
- ===============================================================================
- */
- class idLib {
- public:
- static class idSys * sys;
- static class idCommon * common;
- static class idCVarSystem * cvarSystem;
- static class idFileSystem * fileSystem;
- static int frameNumber;
- static void Init( void );
- static void ShutDown( void );
- // wrapper to idCommon functions
- static void Error( const char *fmt, ... );
- static void Warning( const char *fmt, ... );
- };
- /*
- ===============================================================================
- Types and defines used throughout the engine.
- ===============================================================================
- */
- typedef unsigned char byte; // 8 bits
- typedef unsigned short word; // 16 bits
- typedef unsigned int dword; // 32 bits
- typedef unsigned int uint;
- typedef unsigned long ulong;
- typedef int qhandle_t;
- class idFile;
- class idVec3;
- class idVec4;
- #ifndef NULL
- #define NULL ((void *)0)
- #endif
- #ifndef BIT
- #define BIT( num ) ( 1 << ( num ) )
- #endif
- #define MAX_STRING_CHARS 1024 // max length of a string
- // maximum world size
- #define MAX_WORLD_COORD ( 128 * 1024 )
- #define MIN_WORLD_COORD ( -128 * 1024 )
- #define MAX_WORLD_SIZE ( MAX_WORLD_COORD - MIN_WORLD_COORD )
- // basic colors
- extern idVec4 colorBlack;
- extern idVec4 colorWhite;
- extern idVec4 colorRed;
- extern idVec4 colorGreen;
- extern idVec4 colorBlue;
- extern idVec4 colorYellow;
- extern idVec4 colorMagenta;
- extern idVec4 colorCyan;
- extern idVec4 colorOrange;
- extern idVec4 colorPurple;
- extern idVec4 colorPink;
- extern idVec4 colorBrown;
- extern idVec4 colorLtGrey;
- extern idVec4 colorMdGrey;
- extern idVec4 colorDkGrey;
- // packs color floats in the range [0,1] into an integer
- dword PackColor( const idVec3 &color );
- void UnpackColor( const dword color, idVec3 &unpackedColor );
- dword PackColor( const idVec4 &color );
- void UnpackColor( const dword color, idVec4 &unpackedColor );
- // little/big endian conversion
- short BigShort( short l );
- short LittleShort( short l );
- int BigLong( int l );
- int LittleLong( int l );
- float BigFloat( float l );
- float LittleFloat( float l );
- void BigRevBytes( void *bp, int elsize, int elcount );
- void LittleRevBytes( void *bp, int elsize, int elcount );
- void LittleBitField( void *bp, int elsize );
- void Swap_Init( void );
- bool Swap_IsBigEndian( void );
- // for base64
- void SixtetsForInt( byte *out, int src);
- int IntForSixtets( byte *in );
- #ifdef _DEBUG
- void AssertFailed( const char *file, int line, const char *expression );
- #undef assert
- #define assert( X ) if ( X ) { } else AssertFailed( __FILE__, __LINE__, #X )
- #endif
- class idException {
- public:
- char error[MAX_STRING_CHARS];
- idException( const char *text = "" ) { strcpy( error, text ); }
- };
- // move from Math.h to keep gcc happy
- template<class T> ID_INLINE T Max( T x, T y ) { return ( x > y ) ? x : y; }
- template<class T> ID_INLINE T Min( T x, T y ) { return ( x < y ) ? x : y; }
- /*
- ===============================================================================
- idLib headers.
- ===============================================================================
- */
- // memory management and arrays
- #include "Heap.h"
- #include "containers/List.h"
- // math
- #include "math/Simd.h"
- #include "math/Math.h"
- #include "math/Random.h"
- #include "math/Complex.h"
- #include "math/Vector.h"
- #include "math/Matrix.h"
- #include "math/Angles.h"
- #include "math/Quat.h"
- #include "math/Rotation.h"
- #include "math/Plane.h"
- #include "math/Pluecker.h"
- #include "math/Polynomial.h"
- #include "math/Extrapolate.h"
- #include "math/Interpolate.h"
- #include "math/Curve.h"
- #include "math/Ode.h"
- #include "math/Lcp.h"
- // bounding volumes
- #include "bv/Sphere.h"
- #include "bv/Bounds.h"
- #include "bv/Box.h"
- #include "bv/Frustum.h"
- // geometry
- #include "geometry/DrawVert.h"
- #include "geometry/JointTransform.h"
- #include "geometry/Winding.h"
- #include "geometry/Winding2D.h"
- #include "geometry/Surface.h"
- #include "geometry/Surface_Patch.h"
- #include "geometry/Surface_Polytope.h"
- #include "geometry/Surface_SweptSpline.h"
- #include "geometry/TraceModel.h"
- // text manipulation
- #include "Str.h"
- #include "Token.h"
- #include "Lexer.h"
- #include "Parser.h"
- #include "Base64.h"
- #include "CmdArgs.h"
- // containers
- #include "containers/BTree.h"
- #include "containers/BinSearch.h"
- #include "containers/HashIndex.h"
- #include "containers/HashTable.h"
- #include "containers/StaticList.h"
- #include "containers/LinkList.h"
- #include "containers/Hierarchy.h"
- #include "containers/Queue.h"
- #include "containers/Stack.h"
- #include "containers/StrList.h"
- #include "containers/StrPool.h"
- #include "containers/VectorSet.h"
- #include "containers/PlaneSet.h"
- // hashing
- #include "hashing/CRC32.h"
- #include "hashing/MD4.h"
- #include "hashing/MD5.h"
- // misc
- #include "Dict.h"
- #include "LangDict.h"
- #include "BitMsg.h"
- #include "MapFile.h"
- #include "Timer.h"
- #endif /* !__LIB_H__ */
|