15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  qcms
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//  Copyright (C) 2009 Mozilla Foundation
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Permission is hereby granted, free of charge, to any person obtaining
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// a copy of this software and associated documentation files (the "Software"),
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to deal in the Software without restriction, including without limitation
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// the rights to use, copy, modify, merge, publish, distribute, sublicense,
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// and/or sell copies of the Software, and to permit persons to whom the Software
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// is furnished to do so, subject to the following conditions:
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The above copyright notice and this permission notice shall be included in
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// all copies or substantial portions of the Software.
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef QCMS_TYPES_H
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define QCMS_TYPES_H
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if BYTE_ORDER == LITTLE_ENDIAN
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_LITTLE_ENDIAN
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif BYTE_ORDER == BIG_ENDIAN
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_BIG_ENDIAN
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* all of the platforms that we use _MSC_VER on are little endian
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * so this is sufficient for now */
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _MSC_VER
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_LITTLE_ENDIAN
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __OS2__
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_LITTLE_ENDIAN
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if !defined(IS_LITTLE_ENDIAN) && !defined(IS_BIG_ENDIAN)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#error Unknown endianess
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined (_SVR4) || defined (SVR4) || defined (__OpenBSD__) || defined (_sgi) || defined (__sun) || defined (sun) || defined (__digital__)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <inttypes.h>
47f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)#elif defined (_MSC_VER) && _MSC_VER < 1600
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int8 int8_t;
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int8 uint8_t;
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int16 int16_t;
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int16 uint16_t;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int32 int32_t;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int32 uint32_t;
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef __int64 int64_t;
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int64 uint64_t;
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef _WIN64
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned __int64 uintptr_t;
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(push)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Disable benign redefinition of type warning 4142 */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(disable:4142)
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef unsigned long uintptr_t;
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* Restore warnings */
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#pragma warning(pop)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#elif defined (_AIX)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <sys/inttypes.h>
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#  include <stdint.h>
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef qcms_bool bool;
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define true 1
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define false 0
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
78