37 #ifndef INCLUDED_OSCPACK_OSCTYPES_H
38 #define INCLUDED_OSCPACK_OSCTYPES_H
45 #if defined(__BORLANDC__) || defined(_MSC_VER)
47 typedef __int64 int64;
48 typedef unsigned __int64 uint64;
50 #elif defined(__x86_64__) || defined(_M_X64)
53 typedef unsigned long uint64;
57 typedef long long int64;
58 typedef unsigned long long uint64;
64 #if defined(__x86_64__) || defined(_M_X64)
66 typedef signed int int32;
67 typedef unsigned int uint32;
71 typedef signed long int32;
72 typedef unsigned long uint32;
79 OSC_SIZEOF_UINT32 = 4,
81 OSC_SIZEOF_UINT64 = 8,
89 typedef int32 osc_bundle_element_size_t;
92 OSC_INT32_MAX = 0x7FFFFFFF,
96 OSC_BUNDLE_ELEMENT_SIZE_MAX = 0x7FFFFFFC
100 inline bool IsValidElementSizeValue( osc_bundle_element_size_t x )
103 return x >= 0 && x <= OSC_BUNDLE_ELEMENT_SIZE_MAX;
107 inline bool IsMultipleOf4( osc_bundle_element_size_t x )
109 return (x & ((osc_bundle_element_size_t)0x03)) == 0;
115 FALSE_TYPE_TAG =
'F',
117 INFINITUM_TYPE_TAG =
'I',
118 INT32_TYPE_TAG =
'i',
119 FLOAT_TYPE_TAG =
'f',
121 RGBA_COLOR_TYPE_TAG =
'r',
122 MIDI_MESSAGE_TYPE_TAG =
'm',
123 INT64_TYPE_TAG =
'h',
124 TIME_TAG_TYPE_TAG =
't',
125 DOUBLE_TYPE_TAG =
'd',
126 STRING_TYPE_TAG =
's',
127 SYMBOL_TYPE_TAG =
'S',
129 ARRAY_BEGIN_TYPE_TAG =
'[',
130 ARRAY_END_TYPE_TAG =
']'
137 struct BundleInitiator{
138 explicit BundleInitiator( uint64 timeTag_ ) : timeTag( timeTag_ ) {}
142 extern BundleInitiator BeginBundleImmediate;
144 inline BundleInitiator BeginBundle( uint64 timeTag=1 )
146 return BundleInitiator(timeTag);
150 struct BundleTerminator{
153 extern BundleTerminator EndBundle;
156 explicit BeginMessage(
const char *addressPattern_ ) : addressPattern( addressPattern_ ) {}
157 const char *addressPattern;
160 struct MessageTerminator{
163 extern MessageTerminator EndMessage;
172 extern NilType OscNil;
174 #ifndef _OBJC_OBJC_H_
178 struct InfinitumType{
181 extern InfinitumType Infinitum;
185 explicit RgbaColor( uint32 value_ ) : value( value_ ) {}
188 operator uint32()
const {
return value; }
194 explicit MidiMessage( uint32 value_ ) : value( value_ ) {}
197 operator uint32()
const {
return value; }
203 explicit TimeTag( uint64 value_ ) : value( value_ ) {}
206 operator uint64()
const {
return value; }
212 explicit Symbol(
const char* value_ ) : value( value_ ) {}
215 operator const char *()
const {
return value; }
221 explicit Blob(
const void* data_, osc_bundle_element_size_t size_ )
222 : data( data_ ), size( size_ ) {}
224 osc_bundle_element_size_t size;
227 struct ArrayInitiator{
230 extern ArrayInitiator BeginArray;
232 struct ArrayTerminator{
235 extern ArrayTerminator EndArray;