Index: ext/libicpf/src/gen_types.h
===================================================================
diff -u -N -r2446443341715955423610c01b43fe7841a10e3e -rf04d7d60e54893d8baca9f61f22ab4a2233d172e
--- ext/libicpf/src/gen_types.h	(.../gen_types.h)	(revision 2446443341715955423610c01b43fe7841a10e3e)
+++ ext/libicpf/src/gen_types.h	(.../gen_types.h)	(revision f04d7d60e54893d8baca9f61f22ab4a2233d172e)
@@ -33,49 +33,149 @@
 	#include <stddef.h>
 #endif
 
+// 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;
+	/// Macro to be appended to each text in code to be either composed of wide characters or normal ones
+	#define _t(text)	L(text)
+	/// String formatting string - depending on configuration could display wide char string or normal one.
+	#define TSTRFMT		WSTRFMT
+#else
+	// description as above
+	typedef char_t		tchar_t;
+	#define _t(text)	text
+	#define TSTRFMT		STRFMT
+#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 long			int_t;
+		/// 32bit integer
+		typedef long			long_t;
+		/// 32bit unsigned integer
+		typedef unsigned long	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 long long
+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;
+
+// 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;
+
 // formatting-related macros
 // chars
 /// Printf-style format string for displaying char_t value (as char)
-#define CHARFMT		"%c"
+#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		"%hd"
+#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		"0x%.2hx"
+#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		"%hu"
+#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		"%hd"
+#define SFMT		_t("%hd")
 /// Printf-style format string for displaying short_t as a hex number
-#define SXFMT		"0x%.4hx"
+#define SXFMT		_t("0x%.4hx")
 /// Printf-style format string for displaying ushort_t as a number
-#define USFMT		"%hu"
+#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		"%ld"
+	#define LFMT		_t("%ld")
 	/// Printf-style format string for displaying long_t as a hex number
-	#define LXFMT		"0x%.8lx"
+	#define LXFMT		_t("0x%.8lx")
 	/// Printf-style format string for displaying ulong_t
-	#define ULFMT		"%lu"
+	#define ULFMT		_t("%lu")
 #else
 	/// Printf-style format string for displaying long_t
-	#define LFMT		"%d"
+	#define LFMT		_t("%d")
 	/// Printf-style format string for displaying long_t as a hex number
-	#define LXFMT		"0x%.8x"
+	#define LXFMT		_t("0x%.8x")
 	/// Printf-style format string for displaying ulong_t
-	#define ULFMT		"%u"
+	#define ULFMT		_t("%u")
 #endif
 
 /// Printf-style format string for displaying int_t
@@ -92,11 +192,11 @@
 // 64-bit & system dependent
 #ifdef _WIN32
 	/// Printf-style format string for displaying ulonglong_t as a number
-	#define ULLFMT		"%I64u"
+	#define ULLFMT		_t("%I64u")
 	/// Printf-style format string for displaying ulonglong_t as a hex number
-	#define ULLXFMT		"0x%.16I64x"
+	#define ULLXFMT		_t("0x%.16I64x")
 	/// Printf-style format string for displaying longlong_t
-	#define LLFMT		"%I64d"
+	#define LLFMT		_t("%I64d")
 	/// Printf-style format string for displaying longlong_t as a hex number
 	#define LLXFMT		ULLXFMT
 	
@@ -137,146 +237,46 @@
 	#endif
 #else
 	/// Printf-style format string for displaying ulonglong_t as a number
-	#define ULLFMT		"%llu"
+	#define ULLFMT		_t("%llu")
 	/// Printf-style format string for displaying ulonglong_t as a hex number
-	#define ULLXFMT		"0x%.16llx"
+	#define ULLXFMT		_t("0x%.16llx")
 	/// Printf-style format string for displaying longlong_t
-	#define LLFMT		"%lld"
+	#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		"%ld"
+	#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	"0x%.8lx"
+	#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	"%lu"
+	#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	"0x%.8lx"
+	#define UIPTRXFMT	_t("0x%.8lx")
 	/// Printf-style format string for displaying ulongptr_t as a hex number
 	#define ULPTRXFMT	UIPTRXFMT
 #endif
 
 // strings
 /// Printf-style format string for displaying ansi strings (char_t based strings)
-#define STRFMT		"%s"
+#define STRFMT		_t("%s")
 #ifdef _WIN32
 	/// Printf-style format string for displaying wide strings (wchar_t based strings)
-	#define WSTRFMT		"%S"
+	#define WSTRFMT		_t("%S")
 #else
 	/// Printf-style format string for displaying wide strings (wchar_t based strings)
-	#define WSTRFMT		"%ls"
+	#define WSTRFMT		_t("%ls")
 #endif
 
 // pointer
 /// Printf-style format string for displaying pointers
-#define PTRFMT		"%p"
+#define PTRFMT		_t("%p")
 
-// 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;
-	/// Macro to be appended to each text in code to be either composed of wide characters or normal ones
-	#define _t(text)	L(text)
-	/// String formatting string - depending on configuration could display wide char string or normal one.
-	#define TSTRFMT		WSTRFMT
-#else
-	// description as above
-	typedef char_t		tchar_t;
-	#define _t(text)	text
-	#define TSTRFMT		STRFMT
 #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 long			int_t;
-		/// 32bit integer
-		typedef long			long_t;
-		/// 32bit unsigned integer
-		typedef unsigned long	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 long long
-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;
-
-// 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;
-
-#endif