/************************************************************************* ** types.h ** ** ** ** This file is part of dvisvgm -- the DVI to SVG converter ** ** Copyright (C) 2005-2013 Martin Gieseking ** ** ** ** This program is free software; you can redistribute it and/or ** ** modify it under the terms of the GNU General Public License as ** ** published by the Free Software Foundation; either version 3 of ** ** the License, or (at your option) any later version. ** ** ** ** 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 General Public License ** ** along with this program; if not, see . ** *************************************************************************/ #ifndef TYPES_H #define TYPES_H namespace internal { template class ERROR_inttype_not_available { ERROR_inttype_not_available(); }; template struct select { typedef A T; }; template struct select { typedef B T; }; } // Retrieves a signed integer type with sizeof(T) == BYTES template struct int_t { typedef typename internal::select >::T>::T>::T>::T>::T T; }; // Retrieves an unsigned integer type with sizeof(T) == BYTES template struct int_t { typedef typename internal::select >::T>::T>::T>::T>::T T; }; // Machine independent definition of sized integer types typedef int_t<1, true>::T Int8; typedef int_t<2, true>::T Int16; typedef int_t<4, true>::T Int32; typedef int_t<8, true>::T Int64; typedef int_t<1, false>::T UInt8; typedef int_t<2, false>::T UInt16; typedef int_t<4, false>::T UInt32; typedef int_t<8, false>::T UInt64; typedef Int32 FixWord; typedef UInt32 ScaledInt; #endif