Beamlib 3.3.2
This is the Beam C++ class library.
Loading...
Searching...
No Matches
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 0x030302
16
17// The standard types
18typedef bool Bool;
19typedef int8_t BInt8;
20typedef uint8_t BUInt8;
21typedef int16_t BInt16;
22typedef uint16_t BUInt16;
23typedef int32_t BInt32;
24typedef uint32_t BUInt32;
25typedef int64_t BInt64;
26typedef uint64_t BUInt64;
27typedef float BFloat32;
28typedef double BFloat64;
29typedef char BChar;
30
31// Generic
32typedef BInt32 BInt;
33typedef BUInt32 BUInt;
36typedef size_t BSize;
37typedef std::vector<BFloat32> BArrayFloat;
38typedef std::vector<BFloat64> BArrayDouble;
39
40// Events
43
44// Timeouts
46const BTimeout BTimeoutForever = 0xFFFFFFFF; // Forever timeout
47
48// Convert timeout to system ticks. Note system tick rate hard coded as ms
49inline BTimeout timeoutTicks(BTimeout timeoutUs){
50 if(timeoutUs == BTimeoutForever)
51 return timeoutUs;
52 else
53 return timeoutUs / 1000;
54}
55
56// Byte swap routines
57inline void byteSwap8(void* d, void* s){
58 char* dp = (char*)d;
59 char* sp = (char*)s;
60
61 *dp = *sp;
62}
63inline 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}
70inline 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}
79inline 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
95public:
96 BDataChunk(void* data = 0, BUInt size = 0) : data(data), size(size){}
97 void* data;
99};
100
101// BObj member information
104
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