Rudiments
inttypes.h
1 // Copyright (c) 2005 David Muse
2 // See the COPYING file for more information.
3 
4 #ifndef RUDIMENTS_INTTYPES_H
5 #define RUDIMENTS_INTTYPES_H
6 
7 #include <rudiments/private/config.h>
8 
9 // define NULL...
10 
11 // NULL is typically defined in stddef.h
12 #include <stddef.h>
13 
14 // Certain versions of gcc define NULL as ((void *)0) and then complain when
15 // you set a const pointer to it. Work around that.
16 #ifdef RUDIMENTS_REDEFINE_NULL
17 #undef NULL
18 #define NULL 0
19 #endif
20 
21 
22 // define [u]int(8|16|32|64)_t...
23 
24 #if defined(RUDIMENTS_HAVE_STDINT_H)
25  #include <stdint.h>
26 #elif defined(RUDIMENTS_HAVE_SYS_BITYPES_H)
27  // Tru64 needs __arch64__ for int64_t and uint64_t typedefs
28  #ifndef __arch64__
29  #define __arch64__
30  #endif
31  #include <sys/bitypes.h>
32 #elif defined(RUDIMENTS_HAVE_INTTYPES_H)
33  #include <inttypes.h>
34 #endif
35 
36 #ifndef RUDIMENTS_HAVE_INT8_T
37  typedef signed char int8_t;
38 #endif
39 #ifndef RUDIMENTS_HAVE_UINT8_T
40  typedef unsigned char uint8_t;
41 #endif
42 #ifndef RUDIMENTS_HAVE_INT16_T
43  typedef signed short int16_t;
44 #endif
45 #ifndef RUDIMENTS_HAVE_UINT16_T
46  typedef unsigned short uint16_t;
47 #endif
48 #ifndef RUDIMENTS_HAVE_INT32_T
49  typedef signed int int32_t;
50 #endif
51 #ifndef RUDIMENTS_HAVE_UINT32_T
52  typedef unsigned int uint32_t;
53  // older versions of solaris require this to prevent a pthreads conflict
54  #define _UINT32_T 1
55 #endif
56 #ifndef RUDIMENTS_HAVE_INT64_T
57  #ifdef RUDIMENTS_HAVE_LONG_LONG
58  typedef signed long long int64_t;
59  #else
60  typedef signed long int64_t;
61  #endif
62 #endif
63 #ifndef RUDIMENTS_HAVE_UINT64_T
64  #ifdef RUDIMENTS_HAVE_LONG_LONG
65  typedef unsigned long long uint64_t;
66  #else
67  typedef unsigned long uint64_t;
68  #endif
69 #endif
70 
71 #ifndef RUDIMENTS_HAVE_BOOL
72  class bool {
73  public:
74  bool(const bool &b) {
75  value=b.value;
76  }
77  bool(const long &b) {
78  value=b;
79  }
80  bool(const int &b) {
81  value=b;
82  }
83  bool(const short &b) {
84  value=b;
85  }
86  bool(const char &b) {
87  value=b;
88  }
89  bool(const unsigned long &b) {
90  value=b;
91  }
92  bool(const unsigned int &b) {
93  value=b;
94  }
95  bool(const unsigned short &b) {
96  value=b;
97  }
98  bool(const unsigned char &b) {
99  value=b;
100  }
101  bool &operator=(const bool &b) {
102  value=b.value;
103  return *this;
104  }
105  bool &operator=(const long &b) {
106  value=b;
107  return *this;
108  }
109  bool &operator=(const int &b) {
110  value=b;
111  return *this;
112  }
113  bool &operator=(const short &b) {
114  value=b;
115  return *this;
116  }
117  bool &operator=(const char &b) {
118  value=b;
119  return *this;
120  }
121  bool &operator=(const unsigned long &b) {
122  value=b;
123  return *this;
124  }
125  bool &operator=(const unsigned int &b) {
126  value=b;
127  return *this;
128  }
129  bool &operator=(const unsigned short &b) {
130  value=b;
131  return *this;
132  }
133  bool &operator=(const unsigned char &b) {
134  value=b;
135  return *this;
136  }
137  operator long() const {
138  return value;
139  }
140  int operator!() {
141  value=!value;
142  return value;
143  }
144  int operator==(const bool &b) {
145  return value==b.value;
146  }
147  int operator!=(const bool &b) {
148  return value!=b.value;
149  }
150  private:
151  long value;
152  };
153 #endif
154 #ifndef RUDIMENTS_HAVE_TRUE_FALSE
155  #define true 1
156  #define false 0
157 #endif
158 
159 #endif
Definition: inttypes.h:72