Rudiments
include
rudiments
private
inttypes.h
1
// Copyright (c) 1999-2018 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
#ifdef RUDIMENTS_HAVE_SYS_CDEFS_H
10
#include <sys/cdefs.h>
11
#endif
12
13
// define NULL...
14
15
// NULL is typically defined in stddef.h
16
#include <stddef.h>
17
18
// Certain versions of gcc define NULL as ((void *)0) and then complain when
19
// you set a const pointer to it. Work around that.
20
#ifdef RUDIMENTS_REDEFINE_NULL
21
#undef NULL
22
#define NULL 0
23
#endif
24
25
26
// some platforms define types like char16_t in their new or new.h
27
// (some firstworks C code uses inttypes.h to make sure types are defined
28
// though, and we don't want that code to include new.h)
29
#ifdef __cplusplus
30
#include <rudiments/private/new.h>
31
#endif
32
33
34
// define [u]int(8|16|32|64)_t...
35
36
#if defined(RUDIMENTS_HAVE_STDINT_H)
37
#include <stdint.h>
38
#elif defined(RUDIMENTS_HAVE_SYS_BITYPES_H)
39
// Tru64 needs __arch64__ for int64_t and uint64_t typedefs
40
#ifndef __arch64__
41
#define __arch64__
42
#endif
43
#include <sys/bitypes.h>
44
#elif defined(RUDIMENTS_HAVE_INTTYPES_H)
45
#include <inttypes.h>
46
#endif
47
48
#if defined(RUDIMENTS_HAVE_UCHAR_H)
49
#include <uchar.h>
50
#endif
51
52
#ifndef RUDIMENTS_HAVE_INT8_T
53
typedef
signed
char
int8_t;
54
#endif
55
#ifndef RUDIMENTS_HAVE_UINT8_T
56
typedef
unsigned
char
uint8_t;
57
#endif
58
#ifndef RUDIMENTS_HAVE_INT16_T
59
typedef
signed
short
int16_t;
60
#endif
61
#ifndef RUDIMENTS_HAVE_UINT16_T
62
typedef
unsigned
short
uint16_t;
63
#endif
64
#if !defined(RUDIMENTS_HAVE_CHAR16_T) && \
65
defined(__cplusplus) && (__cplusplus<201103L)
66
typedef
unsigned
short
char16_t;
67
#endif
68
#ifndef RUDIMENTS_HAVE_INT32_T
69
typedef
signed
int
int32_t;
70
#endif
71
#ifndef RUDIMENTS_HAVE_UINT32_T
72
typedef
unsigned
int
uint32_t;
73
// older versions of solaris require this to prevent a pthreads conflict
74
#define _UINT32_T 1
75
#endif
76
#ifndef RUDIMENTS_HAVE_INT64_T
77
#ifdef RUDIMENTS_HAVE_LONG_LONG
78
typedef
signed
long
long
int64_t;
79
#else
80
typedef
signed
long
int64_t;
81
#endif
82
#endif
83
#ifndef RUDIMENTS_HAVE_UINT64_T
84
#ifdef RUDIMENTS_HAVE_LONG_LONG
85
typedef
unsigned
long
long
uint64_t;
86
#else
87
typedef
unsigned
long
uint64_t;
88
#endif
89
#endif
90
91
#ifndef RUDIMENTS_HAVE_BOOL
92
class
bool
{
93
public
:
94
bool
(
const
bool
&b) {
95
value=b.value;
96
}
97
bool
(
const
long
&b) {
98
value=b;
99
}
100
bool
(
const
int
&b) {
101
value=b;
102
}
103
bool
(
const
short
&b) {
104
value=b;
105
}
106
bool
(
const
char
&b) {
107
value=b;
108
}
109
bool
(
const
unsigned
long
&b) {
110
value=b;
111
}
112
bool
(
const
unsigned
int
&b) {
113
value=b;
114
}
115
bool
(
const
unsigned
short
&b) {
116
value=b;
117
}
118
bool
(
const
unsigned
char
&b) {
119
value=b;
120
}
121
bool
&operator=(
const
bool
&b) {
122
value=b.value;
123
return
*
this
;
124
}
125
bool
&operator=(
const
long
&b) {
126
value=b;
127
return
*
this
;
128
}
129
bool
&operator=(
const
int
&b) {
130
value=b;
131
return
*
this
;
132
}
133
bool
&operator=(
const
short
&b) {
134
value=b;
135
return
*
this
;
136
}
137
bool
&operator=(
const
char
&b) {
138
value=b;
139
return
*
this
;
140
}
141
bool
&operator=(
const
unsigned
long
&b) {
142
value=b;
143
return
*
this
;
144
}
145
bool
&operator=(
const
unsigned
int
&b) {
146
value=b;
147
return
*
this
;
148
}
149
bool
&operator=(
const
unsigned
short
&b) {
150
value=b;
151
return
*
this
;
152
}
153
bool
&operator=(
const
unsigned
char
&b) {
154
value=b;
155
return
*
this
;
156
}
157
operator
long()
const
{
158
return
value;
159
}
160
int
operator!() {
161
value=!value;
162
return
value;
163
}
164
int
operator==(
const
bool
&b) {
165
return
value==b.value;
166
}
167
int
operator!=(
const
bool
&b) {
168
return
value!=b.value;
169
}
170
private
:
171
long
value;
172
};
173
#endif
174
#ifndef RUDIMENTS_HAVE_TRUE_FALSE
175
#define true 1
176
#define false 0
177
#endif
178
179
#endif
bool
Definition:
inttypes.h:92
Generated on Sat Mar 14 2020 21:50:17 for Rudiments by
1.8.15