forked from andrewprock/ustl
-
Notifications
You must be signed in to change notification settings - Fork 1
/
utypes.h
133 lines (122 loc) · 3.07 KB
/
utypes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
// This file is part of the uSTL library, an STL implementation.
//
// Copyright (c) 2005 by Mike Sharov <[email protected]>
// This file is free software, distributed under the MIT License.
#pragma once
/*
#define __STDC_LIMIT_MACROS // For WCHAR_MIN and WCHAR_MAX in stdint.
#define __STDC_CONSTANT_MACROS // For UINT??_C macros to avoid using L and UL suffixes on constants.
#include "config.h"
#if HAVE_STDINT_H
#include <stdint.h>
#elif HAVE_INTTYPES_H
#include <inttypes.h>
#else
#error "Need standard integer types definitions, usually in stdint.h"
#endif
#if HAVE_SYS_TYPES_H
#include <sys/types.h>
#endif
#include <stddef.h> // For ptrdiff_t, size_t
#include <stdarg.h>
#include <limits.h>
#include <float.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <assert.h>
#include <ctype.h>
#include <errno.h>
#if HAVE_ALLOCA_H
#include <alloca.h>
#endif
#ifndef WITHOUT_LIBSTDCPP
#include <exception>
#include <typeinfo>
#include <new>
#if HAVE_CPP11
#include <initializer_list>
#endif
#endif
*/
#ifndef SIZE_MAX
#define SIZE_MAX UINT_MAX
#endif
#if sun || __sun // Solaris defines UINTPTR_MAX as empty.
#undef UINTPTR_MAX
#define UINTPTR_MAX ULONG_MAX
#endif
#ifndef WCHAR_MAX
#ifdef __WCHAR_MAX__
#define WCHAR_MAX __WCHAR_MAX__
#else
#define WCHAR_MAX CHAR_MAX
#endif
#endif
#if HAVE_LONG_LONG
#ifndef LLONG_MAX
#define ULLONG_MAX UINT64_C(0xFFFFFFFFFFFFFFFF)
#define LLONG_MAX INT64_C(0x7FFFFFFFFFFFFFFF)
#define LLONG_MIN ULLONG_MAX
#endif
#endif
#ifndef BYTE_ORDER
#define LITTLE_ENDIAN USTL_LITTLE_ENDIAN
#define BIG_ENDIAN USTL_BIG_ENDIAN
#define BYTE_ORDER USTL_BYTE_ORDER
#endif
//sweb added
#ifndef NULL
#define NULL 0
#endif
#ifndef CHAR_MIN
#define CHAR_MIN 0
#endif
#ifndef CHAR_MAX
#define CHAR_MAX 0xFF
#endif
#ifndef UCHAR_MAX
#define UCHAR_MAX 0xFF
#endif
#define CHAR_BIT 8
#define DBL_MAX 0
#define DBL_MIN 0
#define FLT_MAX 0
#define FLT_MIN 0
#define INT_MAX 0xFFFFFFFF
#define INT_MIN 0
#define LONG_MAX 0
#define LONG_MIN 0
#define UINTPTR_MAX 0xFFFFFFFF
#define SHRT_MAX 0
#define SHRT_MIN 0
#define LDBL_MAX 0
#define LDBL_MIN 0
#define UINT_MAX 0xFFFFFFFF
#define INT_MIN 0
#define ULONG_MAX 0xFFFFFFFF
#define USHRT_MAX 0xFFFF
#include "types.h"
typedef uint64 uint64_t;
typedef int64 int64_t;
typedef uint32 uint32_t;
typedef int32 int32_t;
typedef uint16 uint16_t;
typedef int16 int16_t;
typedef uint8 uint8_t;
typedef int8 int8_t;
typedef ssize_t ptrdiff_t;
typedef ssize_t off_t;
typedef size_t uoff_t; ///< A type for storing offsets into blocks measured by size_t.
typedef uint32_t hashvalue_t; ///< Value type returned by the hash functions.
typedef size_t streamsize; ///< Size of stream data
typedef uoff_t streamoff; ///< Offset into a stream
typedef size_t uintptr_t;
typedef ssize_t intptr_t;
/*
#if !defined(UINTPTR_MAX) || !defined(UINT32_C)
#error "If you include stdint.h before ustl.h, define __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS first"
#endif*/
#if WANT_ALWAYS_INLINE
#define inline INLINE inline
#endif