//===-- MIDataTypes.h -------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// //++ // File: MIDataTypes.h // // Overview: Common global switches, macros, etc. // // This file contains common data types required by applications // generally. If supported by the compiler, this file should be // #include'd as part of the project's PCH (precompiled header). // // Environment: Compilers: Visual C++ 12. // gcc (Ubuntu/Linaro 4.8.1-10ubuntu9) 4.8.1 // Libraries: See MIReadmetxt. // // Copyright: None. //-- #pragma once //-------------------------------------------------------------------------------------- // Windows headers: #ifdef _WIN32 // Debugging: #ifdef _DEBUG #include // C-runtime debugging library (defines _ASSERT). #endif // _DEBUG #endif // _WIN32 //-------------------------------------------------------------------------------------- // Common definitions: // Function return status namespace MIstatus { const bool success = true; const bool failure = false; } // Use to avoid "unused parameter" compiler warnings: #define MIunused( x ) (void) x; #ifdef _WIN32 #define MI_NO_INITIALIZE_VTABLE __declspec( novtable ) #define MI_FORCE_INLINE __forceinline #else #define MI_NO_INITIALIZE_VTABLE #define MI_FORCE_INLINE inline // __attribute__( ( always_inline ) ) #endif // _WIN32 // Portability issues #ifdef _WIN64 typedef unsigned __int64 size_t; typedef unsigned __int64 PointerToInteger_t; typedef __int64 MIint; typedef unsigned __int64 MIuint; #else #ifdef _WIN32 typedef unsigned int size_t; typedef unsigned int PointerToInteger_t; typedef int MIint; typedef unsigned int MIuint; #else // typedef long unsigned int size_t; // size_t already defined typedef unsigned int PointerToInteger_t; typedef int MIint; typedef unsigned int MIuint; #define MAX_PATH 4096 #endif // _WIN32 #endif // _WIN64 //-------------------------------------------------------------------------------------- // Common types: // Fundamentals: typedef float MIflt; typedef double MIdbl; typedef char MIchar; // Defaults to signed char, i.e. MIschar. typedef signed char MIschar; // Range: -128 to 127. More explicit than using MIchar. typedef unsigned char MIuchar; // Range: 0 to 255. typedef long long MIint64; // 64bit signed integer. typedef unsigned long long MIuint64; // 64bit unsigned integer. //using namespace std; // Better to put this or std:: at translation units scope. //-------------------------------------------------------------------------------------- // Common routines: //--------------------------------------------------------------------------------------