1169691Skan#ifndef stdafx_h_
2169691Skan#define stdafx_h_
3169691Skan
4169691Skan// stdafx.h : include file for standard system include files,
5169691Skan// or project specific include files that are used frequently, but
6169691Skan// are changed infrequently
7169691Skan//
8169691Skan
9169691Skan// Default to external release.
10169691Skan#ifndef SGTL_INTERNAL
11169691Skan    #define SGTL_INTERNAL 0
12169691Skan#endif
13169691Skan
14169691Skan#include <iostream>
15169691Skan#include <stdexcept>
16169691Skan
17169691Skan#if defined(WIN32)
18169691Skan//#include <tchar.h>
19169691Skan
20169691Skan    // define this macro for use in VC++
21169691Skan    #if !defined(__LITTLE_ENDIAN__)
22169691Skan        #define __LITTLE_ENDIAN__ 1
23169691Skan    #endif // !defined(__LITTLE_ENDIAN__)
24169691Skan#endif // defined(WIN32)
25169691Skan
26169691Skan#if defined(Linux)
27169691Skan// For Linux systems only, types.h only defines the signed
28169691Skan// integer types.  This is not professional code.
29169691Skan// Update: They are defined in the header files in the more recent version of redhat enterprise gcc.
30169691Skan#include <sys/types.h>
31169691Skan#include <stdint.h>
32169691Skan//typedef unsigned long uint32_t;
33169691Skan//typedef unsigned short uint16_t;
34169691Skan//typedef unsigned char uint8_t;
35169691Skan
36169691Skan//#define TCHAR char
37169691Skan//#define _tmain main
38169691Skan
39169691Skan    // give a default endian in case one is not defined on Linux (it should be, though)
40169691Skan    #if !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
41169691Skan        #define __LITTLE_ENDIAN__ 1
42169691Skan    #endif // !defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)
43169691Skan
44169691Skan#endif // defined(Linux)
45169691Skan
46169691Skan// gcc on Mac OS X
47169691Skan#if defined(__GNUC__) && ( defined(__APPLE_CPP__) || defined(__APPLE_CC__) || defined(__MACOS_CLASSIC__) )
48169691Skan	#include <TargetConditionals.h>
49169691Skan
50169691Skan	#if defined(TARGET_RT_LITTLE_ENDIAN) && TARGET_RT_LITTLE_ENDIAN
51169691Skan		#if !defined(__LITTLE_ENDIAN__)
52169691Skan			#define __LITTLE_ENDIAN__
53169691Skan		#endif
54169691Skan	#elif defined(TARGET_RT_BIG_ENDIAN) && TARGET_RT_BIG_ENDIAN
55169691Skan		#if !defined(__BIG_ENDIAN__)
56169691Skan			#define __BIG_ENDIAN__
57169691Skan		#endif
58169691Skan	#endif
59169691Skan#endif
60169691Skan
61169691Skan#if defined(WIN32) //!defined(Linux) || !defined(__GNUC__)
62169691Skan// redefine missing typedefs from stdint.h or syst/types.h
63169691Skan
64169691Skantypedef unsigned long long uint64_t;
65169691Skantypedef unsigned long uint32_t;
66169691Skantypedef unsigned short uint16_t;
67169691Skantypedef unsigned char uint8_t;
68169691Skan
69169691Skantypedef long long int64_t;
70169691Skantypedef long int32_t;
71169691Skantypedef short int16_t;
72169691Skantypedef char int8_t;
73169691Skan#endif // !defined(Linux)
74169691Skan
75169691Skan#if !defined(TRUE)
76169691Skan    #define TRUE 1
77169691Skan#endif // !defined(TRUE)
78169691Skan
79169691Skan#if !defined(FALSE)
80169691Skan    #define FALSE 0
81169691Skan#endif // !defined(FALSE)
82169691Skan
83169691Skan#endif // stdafx_h_
84169691Skan