forked from sensorium/Mozzi
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathIntegerType.h
More file actions
31 lines (25 loc) · 888 Bytes
/
IntegerType.h
File metadata and controls
31 lines (25 loc) · 888 Bytes
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
#ifndef INTTYPE_H_
#define INTTYPE_H_
template<uint8_t BYTES> struct IntegerType {
// at an odd value, such as 3 bytes? Add one more byte (up to at most 8 bytes)..
typedef typename IntegerType<(BYTES < 8) ? (BYTES+1) : 8>::unsigned_type unsigned_type;
typedef typename IntegerType<(BYTES < 8) ? (BYTES+1) : 8>::signed_type signed_type;
};
// These are the specializations for the types that we actually assume to exist:
template<> struct IntegerType<1> {
typedef uint8_t unsigned_type;
typedef int8_t signed_type;
};
template<> struct IntegerType<2> {
typedef uint16_t unsigned_type;
typedef int16_t signed_type;
};
template<> struct IntegerType<4> {
typedef uint32_t unsigned_type;
typedef int32_t signed_type;
};
template<> struct IntegerType<8> {
typedef uint64_t unsigned_type;
typedef int64_t signed_type;
};
#endif /* INTTYPE_H_ */