Beam-lib  2.16.3
This is the Beam C++ class library.
BTypes.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * BTypes.h Basic Types
3  * T.Barnaby, BEAM Ltd, 1/4/05
4  * Copyright (c) 2012 All Right Reserved, Beam Ltd, http://www.beam.ltd.uk
5  *******************************************************************************
6  */
7 #ifndef BTYPES_H
8 #define BTYPES_H 1
9 
10 #include <stdint.h>
11 #include <sys/types.h>
12 #include <vector>
13 
14 // The standard types
15 typedef bool Bool;
16 typedef int8_t BInt8;
17 typedef uint8_t BUInt8;
18 typedef int16_t BInt16;
19 typedef uint16_t BUInt16;
20 typedef int32_t BInt32;
21 typedef uint32_t BUInt32;
22 typedef int64_t BInt64;
23 typedef uint64_t BUInt64;
24 typedef float BFloat32;
25 typedef double BFloat64;
26 typedef char BChar;
27 
28 // Generic
29 typedef BInt32 BInt;
30 typedef BUInt32 BUInt;
31 typedef BFloat32 BFloat;
32 typedef BFloat64 BDouble;
33 typedef size_t BSize;
34 typedef std::vector<BFloat32> BArrayFloat;
35 typedef std::vector<BFloat64> BArrayDouble;
36 
37 // Events
40 
41 // Timeouts
42 typedef BUInt32 BTimeout;
43 const BTimeout BTimeoutForever = 0xFFFFFFFF; // Forever timeout
44 
45 // Convert timeout to system ticks. Note system tick rate hard coded as ms
46 inline BTimeout timeoutTicks(BTimeout timeoutUs){
47  if(timeoutUs == BTimeoutForever)
48  return timeoutUs;
49  else
50  return timeoutUs / 1000;
51 }
52 
53 // Byte swap routines
54 inline void byteSwap8(void* d, void* s){
55  char* dp = (char*)d;
56  char* sp = (char*)s;
57 
58  *dp = *sp;
59 }
60 inline void byteSwap16(void* d, void* s){
61  char* dp = (char*)d;
62  char* sp = (char*)s;
63 
64  dp[1] = sp[0];
65  dp[0] = sp[1];
66 }
67 inline void byteSwap32(void* d, void* s){
68  char* dp = (char*)d;
69  char* sp = (char*)s;
70 
71  dp[3] = sp[0];
72  dp[2] = sp[1];
73  dp[1] = sp[2];
74  dp[0] = sp[3];
75 }
76 inline void byteSwap64(void* d, void* s){
77  char* dp = (char*)d;
78  char* sp = (char*)s;
79 
80  dp[7] = sp[0];
81  dp[6] = sp[1];
82  dp[5] = sp[2];
83  dp[4] = sp[3];
84  dp[3] = sp[4];
85  dp[2] = sp[5];
86  dp[1] = sp[6];
87  dp[0] = sp[7];
88 }
89 
90 // Data chunks
91 class BDataChunk {
92 public:
93  BDataChunk(void* data = 0, BUInt size = 0) : data(data), size(size){}
94  void* data;
96 };
97 
98 // BObj member information
101 
102 struct BObjMember {
107  const char* typeName;
108  const char* name;
109 };
110 
111 #endif
BInt32 BInt
Definition: BTypes.h:29
Definition: BTypes.h:99
BType
Definition: BTypes.h:99
BFloat32 BFloat
Definition: BTypes.h:31
int64_t BInt64
Definition: BTypes.h:22
Definition: BTypes.h:99
Definition: BTypes.h:99
void byteSwap8(void *d, void *s)
Definition: BTypes.h:54
void byteSwap32(void *d, void *s)
Definition: BTypes.h:67
const char * name
Definition: BTypes.h:108
BUInt size
Definition: BTypes.h:95
Definition: BTypes.h:38
size_t BSize
Definition: BTypes.h:33
Definition: BTypes.h:99
BDataChunk(void *data=0, BUInt size=0)
Definition: BTypes.h:93
Definition: BTypes.h:99
Definition: BTypes.h:99
Definition: BTypes.h:99
BEventType
Definition: BTypes.h:38
Definition: BTypes.h:38
Definition: BTypes.h:99
Definition: BTypes.h:99
Definition: BTypes.h:38
float BFloat32
Definition: BTypes.h:24
Definition: BTypes.h:38
Definition: BTypes.h:100
int16_t BInt16
Definition: BTypes.h:18
Definition: BTypes.h:100
Definition: BTypes.h:99
bool Bool
Definition: BTypes.h:15
Definition: BTypes.h:100
uint64_t BUInt64
Definition: BTypes.h:23
std::vector< BFloat64 > BArrayDouble
Definition: BTypes.h:35
BUInt32 BTimeout
Definition: BTypes.h:42
double BFloat64
Definition: BTypes.h:25
void * data
Definition: BTypes.h:94
BTypeComp typeComp
Definition: BTypes.h:104
const char * typeName
Definition: BTypes.h:107
Definition: BTypes.h:39
Definition: BTypes.h:99
Definition: BTypes.h:39
BTimeout timeoutTicks(BTimeout timeoutUs)
Definition: BTypes.h:46
BEventWaitSet
Definition: BTypes.h:39
Definition: BTypes.h:38
Definition: BTypes.h:102
Definition: BTypes.h:38
int32_t BInt32
Definition: BTypes.h:20
Definition: BTypes.h:100
BUInt32 BUInt
Definition: BTypes.h:30
uint32_t BUInt32
Definition: BTypes.h:21
const BTimeout BTimeoutForever
Definition: BTypes.h:43
Definition: BTypes.h:100
Definition: BTypes.h:38
Definition: BTypes.h:39
BTypeComp
Definition: BTypes.h:100
void byteSwap16(void *d, void *s)
Definition: BTypes.h:60
std::vector< BFloat32 > BArrayFloat
Definition: BTypes.h:34
Definition: BTypes.h:39
Definition: BTypes.h:99
Definition: BTypes.h:91
Definition: BTypes.h:99
uint16_t BUInt16
Definition: BTypes.h:19
uint8_t BUInt8
Definition: BTypes.h:17
Definition: BTypes.h:39
Definition: BTypes.h:39
Definition: BTypes.h:39
Definition: BTypes.h:39
BUInt16 size
Definition: BTypes.h:106
BType type
Definition: BTypes.h:103
Definition: BTypes.h:99
Definition: BTypes.h:99
Definition: BTypes.h:99
Definition: BTypes.h:39
BUInt16 dataOffset
Definition: BTypes.h:105
int8_t BInt8
Definition: BTypes.h:16
BFloat64 BDouble
Definition: BTypes.h:32
Definition: BTypes.h:38
Definition: BTypes.h:99
Definition: BTypes.h:39
Definition: BTypes.h:38
Definition: BTypes.h:99
char BChar
Definition: BTypes.h:26
void byteSwap64(void *d, void *s)
Definition: BTypes.h:76