Beamlib  3.0.1
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) 2022 All Right Reserved, Beam Ltd, https://www.beam.ltd.uk
5  * For license see LICENSE.txt at the root of the beamlib source tree.
6  *******************************************************************************
7  */
8 #ifndef BTYPES_H
9 #define BTYPES_H 1
10 
11 #include <stdint.h>
12 #include <sys/types.h>
13 #include <vector>
14 
15 #define BeamlibVersion 0x030000
16 
17 // The standard types
18 typedef bool Bool;
19 typedef int8_t BInt8;
20 typedef uint8_t BUInt8;
21 typedef int16_t BInt16;
22 typedef uint16_t BUInt16;
23 typedef int32_t BInt32;
24 typedef uint32_t BUInt32;
25 typedef int64_t BInt64;
26 typedef uint64_t BUInt64;
27 typedef float BFloat32;
28 typedef double BFloat64;
29 typedef char BChar;
30 
31 // Generic
32 typedef BInt32 BInt;
33 typedef BUInt32 BUInt;
34 typedef BFloat32 BFloat;
35 typedef BFloat64 BDouble;
36 typedef size_t BSize;
37 typedef std::vector<BFloat32> BArrayFloat;
38 typedef std::vector<BFloat64> BArrayDouble;
39 
40 // Events
43 
44 // Timeouts
45 typedef BUInt32 BTimeout;
46 const BTimeout BTimeoutForever = 0xFFFFFFFF; // Forever timeout
47 
48 // Convert timeout to system ticks. Note system tick rate hard coded as ms
49 inline BTimeout timeoutTicks(BTimeout timeoutUs){
50  if(timeoutUs == BTimeoutForever)
51  return timeoutUs;
52  else
53  return timeoutUs / 1000;
54 }
55 
56 // Byte swap routines
57 inline void byteSwap8(void* d, void* s){
58  char* dp = (char*)d;
59  char* sp = (char*)s;
60 
61  *dp = *sp;
62 }
63 inline void byteSwap16(void* d, void* s){
64  char* dp = (char*)d;
65  char* sp = (char*)s;
66 
67  dp[1] = sp[0];
68  dp[0] = sp[1];
69 }
70 inline void byteSwap32(void* d, void* s){
71  char* dp = (char*)d;
72  char* sp = (char*)s;
73 
74  dp[3] = sp[0];
75  dp[2] = sp[1];
76  dp[1] = sp[2];
77  dp[0] = sp[3];
78 }
79 inline void byteSwap64(void* d, void* s){
80  char* dp = (char*)d;
81  char* sp = (char*)s;
82 
83  dp[7] = sp[0];
84  dp[6] = sp[1];
85  dp[5] = sp[2];
86  dp[4] = sp[3];
87  dp[3] = sp[4];
88  dp[2] = sp[5];
89  dp[1] = sp[6];
90  dp[0] = sp[7];
91 }
92 
94 class BDataChunk {
95 public:
96  BDataChunk(void* data = 0, BUInt size = 0) : data(data), size(size){}
97  void* data;
99 };
100 
101 // BObj member information
104 
106 struct BObjMember {
111  const char* typeName;
112  const char* name;
113 };
114 
115 #endif
size_t BSize
Definition: BTypes.h:36
std::vector< BFloat64 > BArrayDouble
Definition: BTypes.h:38
void byteSwap32(void *d, void *s)
Definition: BTypes.h:70
int16_t BInt16
Definition: BTypes.h:21
double BFloat64
Definition: BTypes.h:28
uint16_t BUInt16
Definition: BTypes.h:22
BEventType
Definition: BTypes.h:41
@ BEventTypeConnect
Definition: BTypes.h:41
@ BEventTypeDisconnect
Definition: BTypes.h:41
@ BEventTypeWrite
Definition: BTypes.h:41
@ BEventTypeError
Definition: BTypes.h:41
@ BEventTypeRead
Definition: BTypes.h:41
@ BEventTypeNone
Definition: BTypes.h:41
@ BEventTypeClientDisconnect
Definition: BTypes.h:41
@ BEventTypeClientConnect
Definition: BTypes.h:41
@ BEventTypeReadLine
Definition: BTypes.h:41
BType
Definition: BTypes.h:102
@ BTypeString
Definition: BTypes.h:102
@ BTypeUInt16
Definition: BTypes.h:102
@ BTypeInt8
Definition: BTypes.h:102
@ BTypeFloat32
Definition: BTypes.h:102
@ BTypeTime
Definition: BTypes.h:102
@ BTypeTimeUs
Definition: BTypes.h:102
@ BTypeUInt8
Definition: BTypes.h:102
@ BTypeUInt32
Definition: BTypes.h:102
@ BTypeFloat64
Definition: BTypes.h:102
@ BTypeInt32
Definition: BTypes.h:102
@ BTypeInt64
Definition: BTypes.h:102
@ BTypeNone
Definition: BTypes.h:102
@ BTypeBool
Definition: BTypes.h:102
@ BTypeError
Definition: BTypes.h:102
@ BTypeChar
Definition: BTypes.h:102
@ BTypeInt16
Definition: BTypes.h:102
@ BTypeUInt64
Definition: BTypes.h:102
@ BTypeObj
Definition: BTypes.h:102
const BTimeout BTimeoutForever
Definition: BTypes.h:46
BUInt32 BUInt
Definition: BTypes.h:33
uint32_t BUInt32
Definition: BTypes.h:24
BFloat64 BDouble
Definition: BTypes.h:35
bool Bool
Definition: BTypes.h:18
uint8_t BUInt8
Definition: BTypes.h:20
void byteSwap16(void *d, void *s)
Definition: BTypes.h:63
int32_t BInt32
Definition: BTypes.h:23
int64_t BInt64
Definition: BTypes.h:25
void byteSwap8(void *d, void *s)
Definition: BTypes.h:57
BInt32 BInt
Definition: BTypes.h:32
BTimeout timeoutTicks(BTimeout timeoutUs)
Definition: BTypes.h:49
float BFloat32
Definition: BTypes.h:27
std::vector< BFloat32 > BArrayFloat
Definition: BTypes.h:37
BEventWaitSet
Definition: BTypes.h:42
@ BEventWaitError
Definition: BTypes.h:42
@ BEventWaitClientConnect
Definition: BTypes.h:42
@ BEventWaitWrite
Definition: BTypes.h:42
@ BEventWaitAny
Definition: BTypes.h:42
@ BEventWaitReadLine
Definition: BTypes.h:42
@ BEventWaitConnect
Definition: BTypes.h:42
@ BEventWaitClientDisconnect
Definition: BTypes.h:42
@ BEventWaitRead
Definition: BTypes.h:42
@ BEventWaitDisconnect
Definition: BTypes.h:42
@ BEventWaitNone
Definition: BTypes.h:42
void byteSwap64(void *d, void *s)
Definition: BTypes.h:79
char BChar
Definition: BTypes.h:29
int8_t BInt8
Definition: BTypes.h:19
BUInt32 BTimeout
Definition: BTypes.h:45
BTypeComp
Definition: BTypes.h:103
@ BTypeCompList
Definition: BTypes.h:103
@ BTypeCompArrayFixed
Definition: BTypes.h:103
@ BTypeCompArray
Definition: BTypes.h:103
@ BTypeCompDict
Definition: BTypes.h:103
@ BTypeCompSingle
Definition: BTypes.h:103
BFloat32 BFloat
Definition: BTypes.h:34
uint64_t BUInt64
Definition: BTypes.h:26
A chunk of data allowing writes of multiple chunks of segmented data.
Definition: BTypes.h:94
void * data
Definition: BTypes.h:97
BDataChunk(void *data=0, BUInt size=0)
Definition: BTypes.h:96
BUInt size
Definition: BTypes.h:98
A structure to define a member of a generic BObj.
Definition: BTypes.h:106
BUInt16 size
Definition: BTypes.h:110
BType type
Definition: BTypes.h:107
BUInt16 dataOffset
Definition: BTypes.h:109
const char * typeName
Definition: BTypes.h:111
const char * name
Definition: BTypes.h:112
BTypeComp typeComp
Definition: BTypes.h:108