Index: src/libicpf/gen_types.h =================================================================== diff -u -N --- src/libicpf/gen_types.h (revision b5982438edac1abb34f8f5013ba073fd01523afc) +++ src/libicpf/gen_types.h (revision 0) @@ -1,341 +0,0 @@ -/*************************************************************************** -* Copyright (C) 2001-2008 by J�zef Starosczyk * -* ixen@copyhandler.com * -* * -* This program is free software; you can redistribute it and/or modify * -* it under the terms of the GNU Library General Public License * -* (version 2) as published by the Free Software Foundation; * -* * -* 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 Library 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. * -***************************************************************************/ -/** \file gen_types.h - * \brief Contains some compile-time settings for the whole engine. - */ -#ifndef __GENTYPES_H__ -#define __GENTYPES_H__ - -#if defined(HAVE_CONFIG_H) - #include "config.h" -#endif - -#ifdef HAVE_INTTYPES_H - #include -#else - #include -#endif - -#if defined (_WIN32) || defined (_WIN64) - #include -#endif - -#include - -// standard types and formats used throughout the library -// exactly 1 byte -/// Byte type (8bit unsigned int) -typedef unsigned char byte_t; - -// chars -/// 8bit signed char -typedef char char_t; -/// 8bit unsigned char -typedef unsigned char uchar_t; - -// system/configuration dependent chars -#if (defined(_WIN32) || defined(_WIN64)) && defined(_UNICODE) - /// System/configuration dependent character (either wide char or normal one) - typedef wchar_t tchar_t; - typedef std::wstring tstring_t; - /// Macro to be appended to each text in code to be either composed of wide characters or normal ones - #define __t(text) L##text - #define _t(text) __t(text) - /// String formatting string - depending on configuration could display wide char string or normal one. - #define TSTRFMT WSTRFMT - #define TCHRFMT CHRFMT -#else - // description as above - typedef char_t tchar_t; - typedef std::string tstring_t; - #define _t(text) text - #define TSTRFMT STRFMT - #define TCHRFMT CHRFMT -#endif - -// 16-bit integers -/// 16bit short integer -typedef short short_t; -/// 16bit unsigned short integer -typedef unsigned short ushort_t; - -// 32-bit integers -#ifdef _WIN32 - #ifdef _WIN64 - /// 32bit integer - typedef int int_t; - /// 32bit integer - typedef long long_t; - /// 32bit unsigned integer - typedef unsigned int uint_t; - /// 32bit unsigned long - typedef unsigned long ulong_t; - #else - /// 32bit integer - typedef int int_t; - /// 32bit integer - typedef long long_t; - /// 32bit unsigned integer - typedef unsigned int uint_t; - /// 32bit unsigned integer - typedef unsigned long ulong_t; - #endif -#else - /// 32bit integer - typedef int int_t; - /// 32bit integer - typedef int long_t; - /// 32bit unsigned integer - typedef unsigned int uint_t; - /// 32bit unsigned integer - typedef unsigned int ulong_t; -#endif - -// 64-bit integers; -/// 64bit; -typedef long long longlong_t; -/// 64bit unsigned long long -typedef unsigned long long ulonglong_t; -/// 64bit long long -typedef longlong_t ll_t; -/// 64bit unsigned long long -typedef ulonglong_t ull_t; - -// double and float -/// Float type -typedef float float_t; -/// Double type -typedef double double_t; - -// platform dependent integers (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) -#ifdef _WIN32 - /// platform-dependent size signed integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) -// typedef int intptr_t; - /// platform-dependent size signed integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) - typedef intptr_t longptr_t; - /// platform-dependent size unsigned integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) -// typedef unsigned int uintptr_t; - /// platform-dependent size unsigned integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) - typedef uintptr_t ulongptr_t; -#else - // linux and other - /// platform-dependent size signed integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) -// typedef long intptr_t; - /// platform-dependent size signed integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) - typedef intptr_t longptr_t; - /// platform-dependent size unsigned integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) -// typedef unsigned long uintptr_t; - /// platform-dependent size unsigned integer (32-bit on 32-bit platforms, 64-bit on 64-bit platforms) - typedef uintptr_t ulongptr_t; -#endif - -// pointer -/// untyped pointer -typedef void* ptr_t; - -/// std::string or std::wstring dependent on _UNICODE macro -#ifdef _UNICODE - #define tstring std::wstring -#else - #define tstring std::string -#endif - -// formatting-related macros -// chars -/// Printf-style format string for displaying char_t value (as char) -#define CHARFMT _t("%c") -/// Printf-style format string for displaying uchar_t value (as char) -#define UCHARFMT CHARFMT - -// char related numbers (workaround for (u)chars - values are(should be) converted to (u)short_t) -/// Printf-style format string for displaying char_t as a number (the number has to be converted to short_t) -#define CFMT _t("%hd") -/// Printf-style format string for displaying char_t as a hexadecimal number (the number has to be converted to short_t) -#define CXFMT _t("0x%.2hx") -/// Printf-style format string for displaying uchar_t as a number (the number has to be converted to ushort_t) -#define UCFMT _t("%hu") -/// Printf-style format string for displaying uchar_t as a hexadecimal number (the number has to be converted to ushort_t) -#define UCXFMT CXFMT - -// numbers -// 16-bit -/// Printf-style format string for displaying short_t as a number -#define SFMT _t("%hd") -/// Printf-style format string for displaying short_t as a hex number -#define SXFMT _t("0x%.4hx") -/// Printf-style format string for displaying ushort_t as a number -#define USFMT _t("%hu") -/// Printf-style format string for displaying ushort_t as a hex number -#define USXFMT SXFMT - -// 32-bit -#ifdef _WIN32 - /// Printf-style format string for displaying long_t - #define LFMT _t("%ld") - /// Printf-style format string for displaying long_t as a hex number - #define LXFMT _t("0x%.8lx") - /// Printf-style format string for displaying ulong_t - #define ULFMT _t("%lu") -#else - /// Printf-style format string for displaying long_t - #define LFMT _t("%d") - /// Printf-style format string for displaying long_t as a hex number - #define LXFMT _t("0x%.8x") - /// Printf-style format string for displaying ulong_t - #define ULFMT _t("%u") -#endif - -/// Printf-style format string for displaying int_t -#define IFMT LFMT -/// Printf-style format string for displaying int_t as a hex number -#define IXFMT LXFMT -/// Printf-style format string for displaying uint_t -#define UIFMT ULFMT -/// Printf-style format string for displaying ulong_t as a hex number -#define ULXFMT LXFMT -/// Printf-style format string for displaying uint_t as a hex number -#define UIXFMT ULXFMT - -// 64-bit & system dependent -#ifdef _WIN32 - /// Printf-style format string for displaying ulonglong_t as a number - #define ULLFMT _t("%I64u") - /// Printf-style format string for displaying ulonglong_t as a hex number - #define ULLXFMT _t("0x%.16I64x") - /// Printf-style format string for displaying longlong_t - #define LLFMT _t("%I64d") - /// Printf-style format string for displaying longlong_t as a hex number - #define LLXFMT ULLXFMT - - #ifdef _WIN64 - /// Printf-style format string for displaying intptr_t - #define IPTRFMT LLFMT - /// Printf-style format string for displaying longptr_t - #define LPTRFMT LLFMT - /// Printf-style format string for displaying intptr_t as a hex number - #define IPTRXFMT LLXFMT - /// Printf-style format string for displaying longptr_t as a hex number - #define LPTRXFMT LLXFMT - /// Printf-style format string for displaying uintptr_t - #define UIPTRFMT ULLFMT - /// Printf-style format string for displaying ulongptr_t - #define ULPTRFMT ULLFMT - /// Printf-style format string for displaying uintptr_t as a hex number - #define UIPTRXFMT ULLXFMT - /// Printf-style format string for displaying ulongptr_t as a hex number - #define ULPTRXFMT ULLXFMT - #else - /// Printf-style format string for displaying intptr_t - #define IPTRFMT LFMT - /// Printf-style format string for displaying longptr_t - #define LPTRFMT LFMT - /// Printf-style format string for displaying intptr_t as a hex number - #define IPTRXFMT LXFMT - /// Printf-style format string for displaying longptr_t as a hex number - #define LPTRXFMT LXFMT - /// Printf-style format string for displaying uintptr_t - #define UIPTRFMT ULFMT - /// Printf-style format string for displaying ulongptr_t - #define ULPTRFMT ULFMT - /// Printf-style format string for displaying uintptr_t as a hex number - #define UIPTRXFMT ULXFMT - /// Printf-style format string for displaying ulongptr_t as a hex number - #define ULPTRXFMT ULXFMT - #endif -#else - /// Printf-style format string for displaying ulonglong_t as a number - #define ULLFMT _t("%llu") - /// Printf-style format string for displaying ulonglong_t as a hex number - #define ULLXFMT _t("0x%.16llx") - /// Printf-style format string for displaying longlong_t - #define LLFMT _t("%lld") - /// Printf-style format string for displaying longlong_t as a hex number - #define LLXFMT ULLXFMT - - // FIXME: distinguish between linux 32-bit architecture and 64-bit architecture here - /// Printf-style format string for displaying intptr_t - #define IPTRFMT _t("%ld") - /// Printf-style format string for displaying longptr_t - #define LPTRFMT IPTRFMT - /// Printf-style format string for displaying intptr_t as a hex number - #define IPTRXFMT _t("0x%.8lx") - /// Printf-style format string for displaying longptr_t as a hex number - #define LPTRXFMT IPTRXFMT - /// Printf-style format string for displaying uintptr_t - #define UIPTRFMT _t("%lu") - /// Printf-style format string for displaying ulongptr_t - #define ULPTRFMT UIPTRFMT - /// Printf-style format string for displaying uintptr_t as a hex number - #define UIPTRXFMT _t("0x%.8lx") - /// Printf-style format string for displaying ulongptr_t as a hex number - #define ULPTRXFMT UIPTRXFMT -#endif - -// double (not checked for linux) -/// Printf-style format string for displaying float_t -#define FLOATFMT _t("%.2f") -/// Printf-style format string for displaying double_t -#define DOUBLEFMT _t("%.2f") - -// strings - -// NOTE: below are the specifications for strings, however win32/64 specified the -// formatting strings to be dependent on the function used - %s used in printf -// formats an ascii string, while the same %s used in wprintf gives a wide string. -// So, basically, those macros should be modified in some way - either by making -// a dependence on _UNICODE define or by creating additional set of macros to be used -// with wprintf() and use the current ones for printf(). -#if defined(_WIN32) || defined(_WIN64) - #ifdef _UNICODE - /// Printf-style format string for displaying ansi strings (char_t based strings) - #define STRFMT _t("%S") - /// Printf-style format string for displaying ascii char - #define CHRFMT _t("%C") - /// Printf-style format string for displaying wide strings (wchar_t based strings) - #define WSTRFMT _t("%s") - /// Printf-style format string for displaying wide char - #define WCHRFMT _t("%c") - #else - /// Printf-style format string for displaying ansi strings (char_t based strings) - #define STRFMT _t("%s") - /// Printf-style format string for displaying ascii char - #define CHRFMT _t("%c") - /// Printf-style format string for displaying wide strings (wchar_t based strings) - #define WSTRFMT _t("%S") - /// Printf-style format string for displaying wide char - #define WCHRFMT _t("%C") - #endif -#else - /// Printf-style format string for displaying ansi strings (char_t based strings) - #define STRFMT _t("%s") - /// Printf-style format string for displaying ascii char - #define CHRFMT _t("%c") - /// Printf-style format string for displaying wide strings (wchar_t based strings) - #define WSTRFMT _t("%ls") - /// Printf-style format string for displaying wide char (WARNING: untested) - #define WCHRFMT _t("%lc") -#endif - -// pointer -/// Printf-style format string for displaying pointers -#define PTRFMT _t("%p") -/// Printf-style format string for displaying pointers (with 0x prefix) -#define PTRXFMT _t("0x%p") - -#endif