variables.h
changeset 534 17ab2f22ff74
parent 523 1184a22723ad
child 543 e3b43338096b
equal deleted inserted replaced
533:f512d1b9bc17 534:17ab2f22ff74
   365 VARDEF CargoConst _cargoc;
   365 VARDEF CargoConst _cargoc;
   366 
   366 
   367 typedef byte TownNameGenerator(byte *buf, uint32 seed);
   367 typedef byte TownNameGenerator(byte *buf, uint32 seed);
   368 extern TownNameGenerator * const _town_name_generators[];
   368 extern TownNameGenerator * const _town_name_generators[];
   369 
   369 
   370 #define SET_DPARAM32(n, v) (_decode_parameters[n] = (v))
   370 
   371 #define SET_DPARAMX32(s, n, v) ((s)[n] = (v))
   371 static inline void SetDParamX(uint32 *s, uint n, uint32 v)
   372 #define GET_DPARAM32(n) (_decode_parameters[n])
       
   373 
       
   374 #define SET_DPARAM(n, v) (_decode_parameters[n] = (v))
       
   375 #define SET_DPARAMX(s, n, v) ((s)[n] = (v))
       
   376 #define GET_DPARAM(n) (_decode_parameters[n])
       
   377 
       
   378 static void FORCEINLINE SET_DPARAM64(int n, int64 v)
       
   379 {
   372 {
   380 	_decode_parameters[n] = (uint32)v;
   373 	s[n] = v;
   381 	_decode_parameters[n+1] = (uint32)((uint64)v >> 32);
       
   382 }
   374 }
   383 
   375 
   384 #if defined(TTD_LITTLE_ENDIAN)
   376 static inline uint32 GetDParamX(const uint32 *s, uint n)
   385 #define SET_DPARAMX16(s, n, v) ( ((uint16*)(s+n))[0] = (v))
   377 {
   386 #define SET_DPARAMX8(s, n, v) ( ((uint8*)(s+n))[0] = (v))
   378 	return s[n];
   387 #define GET_DPARAMX16(s, n) ( ((uint16*)(s+n))[0])
   379 }
   388 #define GET_DPARAMX8(s, n) ( ((uint8*)(s+n))[0])
   380 
   389 #elif defined(TTD_BIG_ENDIAN)
   381 static inline void SetDParam(uint n, uint32 v)
   390 #define SET_DPARAMX16(s, n, v) ( ((uint16*)(s+n))[1] = (v))
   382 {
   391 #define SET_DPARAMX8(s, n, v) ( ((uint8*)(s+n))[3] = (v))
   383 	assert(n < lengthof(_decode_parameters));
   392 #define GET_DPARAMX16(s, n) ( ((uint16*)(s+n))[1])
   384 	_decode_parameters[n] = v;
   393 #define GET_DPARAMX8(s, n) ( ((uint8*)(s+n))[3])
   385 }
   394 #endif
   386 
   395 
   387 static inline void SetDParam64(uint n, uint64 v)
   396 #define SET_DPARAM16(n, v) SET_DPARAMX16(_decode_parameters, n, v)
   388 {
   397 #define SET_DPARAM8(n, v)  SET_DPARAMX8(_decode_parameters, n, v)
   389 	assert(n + 1 < lengthof(_decode_parameters));
   398 #define GET_DPARAM16(n)    GET_DPARAMX16(_decode_parameters, n)
   390 	_decode_parameters[n + 0] = v & 0xffffffff;
   399 #define GET_DPARAM8(n)     GET_DPARAMX8(_decode_parameters, n)
   391 	_decode_parameters[n + 1] = v >> 32;
       
   392 }
       
   393 
       
   394 static inline uint32 GetDParam(uint n)
       
   395 {
       
   396 	assert(n < lengthof(_decode_parameters));
       
   397 	return _decode_parameters[n];
       
   398 }
       
   399 
   400 
   400 
   401 #define COPY_IN_DPARAM(offs,src,num) memcpy(_decode_parameters + offs, src, sizeof(uint32) * (num))
   401 #define COPY_IN_DPARAM(offs,src,num) memcpy(_decode_parameters + offs, src, sizeof(uint32) * (num))
   402 #define COPY_OUT_DPARAM(dst,offs,num) memcpy(dst,_decode_parameters + offs, sizeof(uint32) * (num))
   402 #define COPY_OUT_DPARAM(dst,offs,num) memcpy(dst,_decode_parameters + offs, sizeof(uint32) * (num))
   403 
   403 
   404 #define INJECT_DPARAM(n) InjectDparam(n);
   404 #define INJECT_DPARAM(n) InjectDparam(n);