| 
					
				 | 
			
			
				@@ -1,43 +1,40 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #ifndef TYPES_H 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #define TYPES_H 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-namespace Size { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    namespace { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+namespace NumberSize { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    template<bool condition, typename IfTrue, typename IfFalse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    struct Conditional { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        typedef IfTrue dummy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        template<bool condition, typename IfTrue, typename IfFalse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        struct Conditional { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            typedef IfTrue dummy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    template<typename IfTrue, typename IfFalse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    struct Conditional<false, IfTrue, IfFalse> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        typedef IfFalse dummy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        template<typename IfTrue, typename IfFalse> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        struct Conditional<false, IfTrue, IfFalse> { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            typedef IfFalse dummy; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        }; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    template<int N, typename A, typename B> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    using SizeCheck = Conditional<sizeof (A) == N, A, B>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        template<int N, typename A, typename B> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        using SizeCheck = Conditional<sizeof (A) == N, A, B>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    template<int N> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    using Signed = SizeCheck<N, long long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, short, char>::dummy>::dummy>::dummy>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        template<int N> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        using Signed = SizeCheck<N, long long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, short, char>::dummy>::dummy>::dummy>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-         
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        template<int N> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        using Unsigned = SizeCheck<N, unsigned long long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, unsigned long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, unsigned int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        typename SizeCheck<N, unsigned short, unsigned char>::dummy>::dummy>::dummy>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    template<int N> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    using Unsigned = SizeCheck<N, unsigned long long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, unsigned long, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, unsigned int, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    typename SizeCheck<N, unsigned short, unsigned char>::dummy>::dummy>::dummy>; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Signed<8>::dummy int64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Signed<4>::dummy int32; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Signed<2>::dummy int16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Signed<1>::dummy int8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Unsigned<8>::dummy uint64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Unsigned<4>::dummy uint32; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Unsigned<2>::dummy uint16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-typedef Size::Unsigned<1>::dummy uint8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Signed<8>::dummy int64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Signed<4>::dummy int32; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Signed<2>::dummy int16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Signed<1>::dummy int8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Unsigned<8>::dummy uint64; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Unsigned<4>::dummy uint32; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Unsigned<2>::dummy uint16; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+typedef NumberSize::Unsigned<1>::dummy uint8; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #endif 
			 |