From 704dd48213a37c6ca9b517eb0f3442e04ee529fa Mon Sep 17 00:00:00 2001 From: Harley Laue Date: Tue, 11 May 2010 23:11:51 -0500 Subject: [PATCH] Added a couple missing Windows files --- Source/WinDefs.cpp | 134 +++++++++++++++++++++++++++++++++++++++++++++ Source/WinDefs.h | 120 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 254 insertions(+) create mode 100644 Source/WinDefs.cpp create mode 100644 Source/WinDefs.h diff --git a/Source/WinDefs.cpp b/Source/WinDefs.cpp new file mode 100644 index 0000000..55a7190 --- /dev/null +++ b/Source/WinDefs.cpp @@ -0,0 +1,134 @@ +/* +Copyright (C) 2003, 2010 - Wolfire Games + +This file is part of Lugaru. + +Lugaru 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 2 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +/**> HEADER FILES <**/ +#include "WinDefs.h" +#include +#include +#include +#include + + +class AppTime +{ +public: + AppTime() + { + counterRate = 1; + baseCounter = 0; + QueryPerformanceFrequency( (LARGE_INTEGER*)&counterRate); + QueryPerformanceCounter( (LARGE_INTEGER*)&baseCounter); + } + __int64 counterRate; // LARGE_INTEGER type has no math functions so use int64 + __int64 baseCounter; +}; +static AppTime g_appTime; + + + +void CopyCStringToPascal( const char* src, unsigned char dst[256]) +{ + int len = strlen( src); + dst[ 0] = len; + memcpy( dst + 1, src, len); +} + + +void CopyPascalStringToC( const unsigned char* src, char* dst) +{ + int len = src[ 0]; + memcpy( dst, src + 1, len); + dst[ len] = 0; +} + + +AbsoluteTime UpTime() +{ + __int64 counter; + QueryPerformanceCounter( (LARGE_INTEGER*)&counter); + + counter -= g_appTime.baseCounter; + + AbsoluteTime time; + time.lo = (unsigned long)counter; + time.hi = (unsigned long)(counter >> 32); + return time; +} + + +Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b) +{ + __int64 value = a.hi; + value <<= 32; + value |= a.lo; + __int64 value2 = b.hi; + value2 <<= 32; + value2 |= b.lo; + value -= value2; + + if (value <= 0) + return durationImmediate; + + __int64 frac = value % g_appTime.counterRate; + value /= g_appTime.counterRate; + + Duration time; + + if (value == 0) + { + frac *= -1000000; + frac /= g_appTime.counterRate; + time = (Duration)frac; + } + else + { + frac *= 1000; + frac /= g_appTime.counterRate; + value *= 1000; + value += frac; + time = (Duration)value; + } + + return time; +} + + +static char g_filename[ 256]; +char* ConvertFileName( const char* orgfilename) +{ + // translate filename into proper path name + if (orgfilename[ 0] == ':') + orgfilename++; + strcpy( g_filename, orgfilename); + + for (int n = 0; g_filename[ n]; n++) + { + if (g_filename[ n] == ':') + g_filename[ n] = '/'; + } + + return g_filename; +} + +char* ConvertFileName( const char* orgfilename, const char* junk) +{ + return ConvertFileName(orgfilename); +} diff --git a/Source/WinDefs.h b/Source/WinDefs.h new file mode 100644 index 0000000..e598863 --- /dev/null +++ b/Source/WinDefs.h @@ -0,0 +1,120 @@ +/* +Copyright (C) 2003, 2010 - Wolfire Games + +This file is part of Lugaru. + +Lugaru 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 2 +of the License, or (at your option) any later version. + +This program 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 this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +*/ + +#ifndef _WINDEFS_H_ +#define _WINDEFS_H_ +#ifdef WIN32 + + +#include +#include + +// stuff to make Mac code compatable with Windows + + +// disable warnings about double to float conversions +#pragma warning(disable:4305) +#pragma warning(disable:4244) + +// disable warnings about boolean to int conversions +#pragma warning(disable:4800) + +// disable warning about unreferenced local variables +#pragma warning(disable:4101) + +typedef bool Boolean; + + +struct Point +{ + short v; + short h; +}; + +typedef signed char SInt8; +typedef unsigned int UInt32; + + +#include "Random.h" + + +void CopyCStringToPascal( const char* src, unsigned char dst[256]); +void CopyPascalStringToC( const unsigned char* src, char* dst); + + +typedef struct AbsoluteTime +{ + unsigned long hi; + unsigned long lo; +} AbsoluteTime; + +AbsoluteTime UpTime(); // NOTE: returns time since app started, not system start + +typedef long Duration; + +enum +{ + durationMicrosecond = -1, + durationMillisecond = 1, + durationSecond = 1000, + durationMinute = 1000 * 60, + durationHour = 1000 * 60 * 60, + durationDay = 1000 * 60 * 60 * 24, + durationForever = 0x7FFFFFFF, + durationImmediate = 0, +}; + +Duration AbsoluteDeltaToDuration( AbsoluteTime& a, AbsoluteTime& b); + + +inline bool isnormal( double x) +{ + int ret = _fpclass( x); + return (ret == _FPCLASS_NN || ret == _FPCLASS_PN); +} + +typedef unsigned int uintptr_t; + + +// fix file names to use '/' instead of ':' +char* ConvertFileName( const char* orgfilename); +char* ConvertFileName( const char* orgfilename, const char* junk); + + +#define fopen( a, b) fopen( ConvertFileName( a), b); + +inline float abs( float f) +{ + if (f < 0) + return -f; + return f; +} + +inline double abs( double f) +{ + if (f < 0) + return -f; + return f; +} + + +#endif +#endif -- 2.39.5