X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=common.h;h=228a133e572874b95059abc0cf268a83259c4167;hb=53b08e0497613f69601607824c4d5cba788f1309;hp=406348072b37a6d53cb7a99d8ecf0808844eb7ac;hpb=c72641f5e795ed0e0d58a38d79860cc92597e4da;p=xonotic%2Fdarkplaces.git diff --git a/common.h b/common.h index 40634807..228a133e 100644 --- a/common.h +++ b/common.h @@ -21,9 +21,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #ifndef COMMON_H #define COMMON_H -/// many buffers use this size -#define MAX_INPUTLINE 16384 - /// MSVC has a different name for several standard functions #ifdef WIN32 @@ -72,78 +69,49 @@ void Com_BlockFullChecksum (void *buffer, int len, unsigned char *outbuf); // Endianess handling //============================================================================ -// We use BSD-style defines: BYTE_ORDER is defined to either BIG_ENDIAN or LITTLE_ENDIAN - -// Initializations -#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) || !defined(BIG_ENDIAN) || (BYTE_ORDER != LITTLE_ENDIAN && BYTE_ORDER != BIG_ENDIAN) -# undef BYTE_ORDER -# undef LITTLE_ENDIAN -# undef BIG_ENDIAN -# define LITTLE_ENDIAN 1234 -# define BIG_ENDIAN 4321 -#endif - -// If we still don't know the CPU endianess at this point, we try to guess -// normally including sys/types.h includes endian.h for the platform, which defines BYTE_ORDER, LITTLE_ENDIAN, and BIG_ENDIAN, however endian.h is a BSD-ism, and may not be present on all platforms (particularly windows) -#ifndef BYTE_ORDER -# if defined(WIN32) || defined (__i386) || defined(__amd64) -# define BYTE_ORDER LITTLE_ENDIAN -# else -# if defined(SUNOS) -# if defined(__i386) || defined(__amd64) -# define BYTE_ORDER LITTLE_ENDIAN -# else -# define BYTE_ORDER BIG_ENDIAN -# endif -# else -# warning "Unable to determine the CPU endianess. Defaulting to little endian" -# define BYTE_ORDER LITTLE_ENDIAN -# endif -# endif -#endif +// check mem_bigendian if you need to know the system byte order /*! \name Byte order functions. * @{ */ -/// Swaps the byte order of the given short \p l. -short ShortSwap (short l); - -/// Swaps the byte order of the given long \p l. -int LongSwap (int l); - -/// Swaps the byte order of the given float \p f. -float FloatSwap (float f); - -#if BYTE_ORDER == LITTLE_ENDIAN -// little endian -#define BigShort(l) ShortSwap(l) -#define LittleShort(l) (l) -#define BigLong(l) LongSwap(l) -#define LittleLong(l) (l) -#define BigFloat(l) FloatSwap(l) -#define LittleFloat(l) (l) -#else -// big endian -#define BigShort(l) (l) -#define LittleShort(l) ShortSwap(l) -#define BigLong(l) (l) -#define LittleLong(l) LongSwap(l) -#define BigFloat(l) (l) -#define LittleFloat(l) FloatSwap(l) -#endif +// unaligned memory access crashes on some platform, so always read bytes... +#define BigShort(l) BuffBigShort((unsigned char *)&(l)) +#define LittleShort(l) BuffLittleShort((unsigned char *)&(l)) +#define BigLong(l) BuffBigLong((unsigned char *)&(l)) +#define LittleLong(l) BuffLittleLong((unsigned char *)&(l)) +#define BigFloat(l) BuffBigFloat((unsigned char *)&(l)) +#define LittleFloat(l) BuffLittleFloat((unsigned char *)&(l)) + +/// Extract a big endian 32bit float from the given \p buffer. +float BuffBigFloat (const unsigned char *buffer); -/// Extract a big endian long from the given \p buffer. -unsigned int BuffBigLong (const unsigned char *buffer); +/// Extract a big endian 32bit int from the given \p buffer. +int BuffBigLong (const unsigned char *buffer); -/// Extract a big endian short from the given \p buffer. -unsigned short BuffBigShort (const unsigned char *buffer); +/// Extract a big endian 16bit short from the given \p buffer. +short BuffBigShort (const unsigned char *buffer); -/// Extract a little endian long from the given \p buffer. -unsigned int BuffLittleLong (const unsigned char *buffer); +/// Extract a little endian 32bit float from the given \p buffer. +float BuffLittleFloat (const unsigned char *buffer); -/// Extract a little endian short from the given \p buffer. -unsigned short BuffLittleShort (const unsigned char *buffer); +/// Extract a little endian 32bit int from the given \p buffer. +int BuffLittleLong (const unsigned char *buffer); + +/// Extract a little endian 16bit short from the given \p buffer. +short BuffLittleShort (const unsigned char *buffer); + +/// Encode a big endian 32bit int to the given \p buffer +void StoreBigLong (unsigned char *buffer, unsigned int i); + +/// Encode a big endian 16bit int to the given \p buffer +void StoreBigShort (unsigned char *buffer, unsigned short i); + +/// Encode a little endian 32bit int to the given \p buffer +void StoreLittleLong (unsigned char *buffer, unsigned int i); + +/// Encode a little endian 16bit int to the given \p buffer +void StoreLittleShort (unsigned char *buffer, unsigned short i); //@} //============================================================================ @@ -236,6 +204,7 @@ int COM_ParseToken_Console(const char **datapointer); extern int com_argc; extern const char **com_argv; +extern int com_selffd; int COM_CheckParm (const char *parm); void COM_Init (void); @@ -300,8 +269,10 @@ typedef enum gamemode_e GAME_DARSANA, GAME_CONTAGIONTHEORY, GAME_EDU2P, - GAME_BLADEMASTER, GAME_PROPHECY, + GAME_BLOODOMNICIDE, + GAME_STEELSTORM, // added by motorsep + GAME_STRAPBOMB, // added by motorsep for Urre GAME_COUNT } gamemode_t; @@ -377,5 +348,8 @@ size_t strlcpy(char *dst, const char *src, size_t siz); void FindFraction(double val, int *num, int *denom, int denomMax); +// decodes XPM file to XPM array (as if #include'd) +char **XPM_DecodeString(const char *in); + #endif