NAVTOR SDK  v.3.0
Software Development Kit for fast and efficient development of ECDIS, ECS and generic marine applications
base_types.h
Go to the documentation of this file.
1 #ifndef SDK_BASE_BASE_TYPES_H_
11 #define SDK_BASE_BASE_TYPES_H_
12 
13 #include "platform.h"
14 #include <float.h>
15 #if !defined(SDK_CC_MSVC)
16 # include <math.h>
17 #endif
18 #if /*defined(SDK_CC_GCC) || */defined(SDK_CC_CLANG) || defined(_PUSHPOP_SUPPORTED)
19 # pragma GCC diagnostic push
20 # pragma GCC diagnostic ignored "-Wpragma-pack"
21 #endif
22 #include "sdk_pshpack1.h"
23 
24 struct SDKTimeStruct;
25 struct SDKString;
26 struct SDKAny;
27 struct SDKArray;
28 
29 #ifndef SDK_NAMESPACE
30 #define SDK_NAMESPACE sdk
31 #endif // SDK_NAMESPACE
32 
33 #ifndef SDK_BEGIN_NAMESPACE
34 #define SDK_BEGIN_NAMESPACE namespace SDK_NAMESPACE {
35 #endif // SDK_BEGIN_NAMESPACE
36 
37 #ifndef SDK_END_NAMESPACE
38 #define SDK_END_NAMESPACE }
39 #endif // SDK_END_NAMESPACE
40 
41 #ifndef SDK_BASE_NAMESPACE
42 #define SDK_BASE_NAMESPACE SDK_NAMESPACE::base
43 #endif // SDK_BASE_NAMESPACE
44 
45 #ifndef SDK_BASE_BEGIN_NAMESPACE
46 #define SDK_BASE_BEGIN_NAMESPACE namespace SDK_NAMESPACE { \
47  namespace base {
48 #endif // SDK_BASE_BEGIN_NAMESPACE
49 
50 #ifndef SDK_BASE_END_NAMESPACE
51 #define SDK_BASE_END_NAMESPACE SDK_END_NAMESPACE }
52 #endif // SDK_BASE_END_NAMESPACE
53 
54 SDK_BEGIN_NAMESPACE
55 
57 
58 SDK_END_NAMESPACE // see sdk_component_interface.h
59 
62 typedef SDKInt64 SDKTime;
63 typedef SDKInt64 SDKTimeDelta;
66 static const SDKUInt16 kUnixEpoch = 1970;
67 static const SDKUInt16 kMillisecondsInSecond = 1000;
68 
72 SDK_PACK(struct SDKTimeStruct {
73  SDKInt16 year;
74  SDKUInt8 month;
75  SDKUInt16 yday;
76  SDKUInt8 mday;
77  SDKUInt8 wday;
78  SDKUInt8 hour;
79  SDKUInt8 minute;
80  SDKUInt8 second;
81  SDKUInt16 millisec;
82 });
83 
86 static const SDKUInt16 kSDKTimeStruct_Year_Min = 1970;
87 static const SDKUInt16 kSDKTimeStruct_Year_Max = 3000;
88 static const SDKUInt8 kSDKTimeStruct_Month_Min = 1;
89 static const SDKUInt8 kSDKTimeStruct_Month_Max = 12;
90 static const SDKUInt16 kSDKTimeStruct_Yday_Min = 1;
91 static const SDKUInt16 kSDKTimeStruct_Yday_Max = 366;
92 static const SDKUInt8 kSDKTimeStruct_Mday_Min = 1;
93 static const SDKUInt8 kSDKTimeStruct_Mday_Max = 31;
94 static const SDKUInt8 kSDKTimeStruct_Wday_Min = 1;
95 static const SDKUInt8 kSDKTimeStruct_Wday_Max = 7;
96 static const SDKUInt8 kSDKTimeStruct_Hour_Min = 0;
97 static const SDKUInt8 kSDKTimeStruct_Hour_Max = 23;
98 static const SDKUInt8 kSDKTimeStruct_Minute_Min = 0;
99 static const SDKUInt8 kSDKTimeStruct_Minute_Max = 59;
100 static const SDKUInt8 kSDKTimeStruct_Second_Min = 0;
101 static const SDKUInt8 kSDKTimeStruct_Second_Max = 59;
102 static const SDKUInt16 kSDKTimeStruct_Millisec_Min = 0;
103 static const SDKUInt16 kSDKTimeStruct_Millisec_Max = 999;
104 
110 SDK_PACK(struct SDKString {
111  SDKUInt32 length;
112  SDKUInt16* data;
113 });
114 
117 #if defined(__cplusplus)
118 inline bool IsNullSDKString(const SDKString& str) {
119  return (str.data == NULL);
120 }
121 #else
122 #define IsNullSDKString(str) (str.data == NULL)
123 #endif
124 #if defined(__cplusplus)
127 inline bool IsEmptySDKString(const SDKString& str) {
128  return ((str.data == NULL) || (str.length == 0));
129 }
130 #else
131 #define IsEmptySDKString(str) ((str.data == NULL) || (str.length == 0))
132 #endif // #if defined(__cplusplus)
133 
134 
164 };
165 
166 typedef SDKUInt16 SDKAnyType16;
167 typedef SDKUInt32 SDKAnyType;
171 SDK_PACK(struct SDKAny {
172  SDKAnyType any_type;
173  union
174  {
175  SDKInt8 i8;
176  SDKUInt8 ui8;
177  SDKInt16 i16;
178  SDKUInt16 ui16;
179  SDKInt32 i32;
180  SDKUInt32 ui32;
181  SDKInt64 i64;
182  SDKUInt64 ui64;
183  float flt;
184  double dbl;
185  SDKInt8 bl;
186  SDKTime time;
187  SDKTimeDelta dtime;
188  SDKString* str;
189  SDKAny* any;
190  SDKArray* arr;
191  sdk::ISDKComponent* obj;
192  void* vd;
193  union {
194  SDKUInt64 time_packed;
195  struct {
196  SDKInt64 year : 16;
197  SDKUInt64 month: 4;
198  SDKUInt64 mday: 6;
199  SDKUInt64 hour: 5;
200  SDKUInt64 minute: 6;
201  SDKUInt64 second: 6;
202  SDKUInt64 millisec: 10;
203  };
204  };
205  };
206 });
209 #define ANY_UNION(X, Y) ((X)->Y)
210 #define ANY_TYPE(X) ((X)->any_type)
211 #define ANY_EMPTY(X) (ANY_TYPE(X) == kSDKAnyType_Empty)
212 #define ANY_IS_EMPTY(X) (ANY_TYPE(X) == kSDKAnyType_Empty)
213 #define ANY_IS_NULL(X) (ANY_TYPE(X) == kSDKAnyType_Null)
214 #define ANY_IS_STR(X) ((ANY_TYPE(X) == kSDKAnyType_SDKStringPtr) && \
215  ANY_UNION(X, str))
216 #define ANY_IS_ARRAY(X) ((ANY_TYPE(X) == kSDKAnyType_SDKArrayPtr) && \
217  ANY_UNION(X, arr))
218 #define ANY_IS_COMPONENT(X) ((ANY_TYPE(X) == kSDKAnyType_SDKComponentPtr) && \
219  ANY_UNION(X, obj))
220 #define ANY_IS_TIME(X) ((ANY_TYPE(X) == kSDKAnyType_SDKTime) || \
221  (ANY_TYPE(X) == kSDKAnyType_Int64))
222 #define ANY_IS_TIME_DELTA(X) ((ANY_TYPE(X) == kSDKAnyType_SDKTimeDelta) || \
223  (ANY_TYPE(X) == kSDKAnyType_Int64))
224 #define ANY_IS_TIME_PACKED(X) (ANY_TYPE(X) == kSDKAnyType_SDKTimePacked)
225 
226 #define ANY_IS_SCALAR(X) ((ANY_TYPE(X) == kSDKAnyType_Uint8) || \
227  (ANY_TYPE(X) == kSDKAnyType_Uint16) || \
228  (ANY_TYPE(X) == kSDKAnyType_Uint32) || \
229  (ANY_TYPE(X) == kSDKAnyType_Uint64) || \
230  (ANY_TYPE(X) == kSDKAnyType_Int8) || \
231  (ANY_TYPE(X) == kSDKAnyType_Int16) || \
232  (ANY_TYPE(X) == kSDKAnyType_Int32) || \
233  (ANY_TYPE(X) == kSDKAnyType_Int64) || \
234  (ANY_TYPE(X) == kSDKAnyType_Float) || \
235  (ANY_TYPE(X) == kSDKAnyType_Double) || \
236  (ANY_TYPE(X) == kSDKAnyType_Bool) || \
237  (ANY_TYPE(X) == kSDKAnyType_SDKTime) || \
238  (ANY_TYPE(X) == kSDKAnyType_SDKTimeDelta))
239 
240 #define ANY_UI8(X) ANY_UNION(X, ui8)
241 #define ANY_UI16(X) ANY_UNION(X, ui16)
242 #define ANY_UI32(X) ANY_UNION(X, ui32)
243 #define ANY_UI64(X) ANY_UNION(X, ui64)
244 #define ANY_I8(X) ANY_UNION(X, i8)
245 #define ANY_I16(X) ANY_UNION(X, i16)
246 #define ANY_I32(X) ANY_UNION(X, i32)
247 #define ANY_I64(X) ANY_UNION(X, i64)
248 #define ANY_FLOAT(X) ANY_UNION(X, flt)
249 #define ANY_DOUBLE(X) ANY_UNION(X, dbl)
250 #define ANY_BOOL(X) ANY_UNION(X, bl)
251 #define ANY_bool(X) (ANY_UNION(X, bl) ? true : false)
252 #define ANY_DATE(X) ANY_UNION(X, time)
253 #define ANY_TIME(X) ANY_UNION(X, time)
254 #define ANY_TIME_DELTA(X) ANY_UNION(X, dtime)
255 #define ANY_STR(X) ANY_UNION(X, str)
256 #define ANY_ANY(X) ANY_UNION(X, any)
257 #define ANY_ARRAY(X) ANY_UNION(X, arr)
258 #define ANY_COMPONENT(X) ANY_UNION(X, obj)
259 #define ANY_PTR(X) ANY_UNION(X, vd)
260 #define ANY_TIME_PACKED(X) ANY_UNION(X, time_packed)
261 #define ANY_TIME_PACKED_YEAR(X) ANY_UNION(X, year)
262 #define ANY_TIME_PACKED_MONTH(X) ANY_UNION(X, month)
263 #define ANY_TIME_PACKED_MDAY(X) ANY_UNION(X, mday)
264 #define ANY_TIME_PACKED_HOUR(X) ANY_UNION(X, hour)
265 #define ANY_TIME_PACKED_MINUTE(X) ANY_UNION(X, minute)
266 #define ANY_TIME_PACKED_SECOND(X) ANY_UNION(X, second)
267 #define ANY_TIME_PACKED_MILLISEC(X) ANY_UNION(X, millisec)
268 #define ANY_IS_NUMERIC(X) \
269  (ANY_TYPE(X) >= kSDKAnyType_Uint8 && ANY_TYPE(X) <= kSDKAnyType_Bool)
270 
271 #ifndef SDKAnyTimePackedDateToSDKTimeStruct
272 #define SDKAnyTimePackedDateToSDKTimeStruct(T,V) \
273  T.year = ANY_TIME_PACKED_YEAR(&V); \
274  T.month = ANY_TIME_PACKED_MONTH(&V); \
275  T.mday = ANY_TIME_PACKED_MDAY(&V);
276 #endif // SDKAnyTimePackedDateToSDKTimeStruct
277 #ifndef SDKAnyTimePackedTimeToSDKTimeStruct
278 #define SDKAnyTimePackedTimeToSDKTimeStruct(T,V) \
279  T.hour = ANY_TIME_PACKED_HOUR(&V); \
280  T.minute = ANY_TIME_PACKED_MINUTE(&V); \
281  T.second = ANY_TIME_PACKED_SECOND(&V); \
282  T.millisec = ANY_TIME_PACKED_MILLISEC(&V);
283 #endif // SDKAnyTimePackedTimeToSDKTimeStruct
284 #ifndef SDKAnyTimePackedToSDKTimeStruct
285 #define SDKAnyTimePackedToSDKTimeStruct(T,V) \
286  SDKAnyTimePackedDateToSDKTimeStruct(T,V) \
287  SDKAnyTimePackedTimeToSDKTimeStruct(T,V)
288 #endif // SDKAnyTimePackedToSDKTimeStruct
289 
290 #ifndef SDKAnyTimePackedDateFromSDKTimeStruct
291 #define SDKAnyTimePackedDateFromSDKTimeStruct(V,T) \
292  ANY_TIME_PACKED_YEAR(&V) = T.year; \
293  ANY_TIME_PACKED_MONTH(&V) = T.month; \
294  ANY_TIME_PACKED_MDAY(&V) = T.mday;
295 #endif // SDKAnyTimePackedDateFromSDKTimeStruct
296 #ifndef SDKAnyTimePackedTimeFromSDKTimeStruct
297 #define SDKAnyTimePackedTimeFromSDKTimeStruct(V,T) \
298  ANY_TIME_PACKED_HOUR(&V) = T.hour; \
299  ANY_TIME_PACKED_MINUTE(&V) = T.minute; \
300  ANY_TIME_PACKED_SECOND(&V) = T.second; \
301  ANY_TIME_PACKED_MILLISEC(&V) = T.millisec;
302 #endif // SDKAnyTimePackedTimeFromSDKTimeStruct
303 #ifndef SDKAnyTimePackedFromSDKTimeStruct
304 #define SDKAnyTimePackedFromSDKTimeStruct(V,T) \
305  SDKAnyTimePackedDateFromSDKTimeStruct(V,T) \
306  SDKAnyTimePackedTimeFromSDKTimeStruct(V,T)
307 #endif // SDKAnyTimePackedFromSDKTimeStruct
308 
312 #ifndef kSDK_PACKED_TIME_INVALID_YEAR
313 #define kSDK_PACKED_TIME_INVALID_YEAR 0
314 #endif // kSDK_PACKED_TIME_INVALID_YEAR
315 #ifndef kSDK_PACKED_TIME_INVALID_MONTH
316 #define kSDK_PACKED_TIME_INVALID_MONTH 0
317 #endif // kSDK_PACKED_TIME_INVALID_MONTH
318 #ifndef kSDK_PACKED_TIME_INVALID_MDAY
319 #define kSDK_PACKED_TIME_INVALID_MDAY 0
320 #endif // kSDK_PACKED_TIME_INVALID_MDAY
321 #ifndef kSDK_PACKED_TIME_INVALID_HOUR
322 #define kSDK_PACKED_TIME_INVALID_HOUR (kSDKTimeStruct_Hour_Max + 1)
323 #endif // kSDK_PACKED_TIME_INVALID_HOUR
324 #ifndef kSDK_PACKED_TIME_INVALID_MINUTE
325 #define kSDK_PACKED_TIME_INVALID_MINUTE (kSDKTimeStruct_Minute_Max + 1)
326 #endif // kSDK_PACKED_TIME_INVALID_MINUTE
327 #ifndef kSDK_PACKED_TIME_INVALID_SECOND
328 #define kSDK_PACKED_TIME_INVALID_SECOND (kSDKTimeStruct_Second_Max + 1)
329 #endif // kSDK_PACKED_TIME_INVALID_SECOND
330 #ifndef kSDK_PACKED_TIME_INVALID_MILLISEC
331 #define kSDK_PACKED_TIME_INVALID_MILLISEC (kSDKTimeStruct_Millisec_Max + 1)
332 #endif // kSDK_PACKED_TIME_INVALID_MILLISEC
333 
334 #ifndef SDK_TIME_IS_VALID
335 #define SDK_TIME_IS_VALID(T) (T != kInvalidSDKTime)
336 #endif // SDK_TIME_IS_VALID
337 #ifndef SDK_TIME_IS_INVALID
338 #define SDK_TIME_IS_INVALID(T) !SDK_TIME_IS_VALID(T)
339 #endif // SDK_TIME_IS_INVALID
340 #ifndef SDK_TIME_IS_VALID_YEAR
341 #define SDK_TIME_IS_VALID_YEAR(Y) (Y > 0)
342 #endif // SDK_TIME_IS_VALID_YEAR
343 #define SDK_TIME_IS_INVALID_YEAR(Y) !SDK_TIME_IS_VALID_YEAR(Y)
344 #ifndef SDK_TIME_IS_VALID_MONTH
345 #define SDK_TIME_IS_VALID_MONTH(M) ((M > 0) && (M <= 12))
346 #endif // SDK_TIME_IS_VALID_MONTH
347 #define SDK_TIME_IS_INVALID_MONTH(M) !SDK_TIME_IS_VALID_MONTH(M)
348 #ifndef SDK_TIME_IS_VALID_MDAY
349 #define SDK_TIME_IS_VALID_MDAY(D) ((D > 0) && (D <= 31))
350 #endif // SDK_TIME_IS_VALID_MDAY
351 #define SDK_TIME_IS_INVALID_MDAY(D) !SDK_TIME_IS_VALID_MDAY(D)
352 #ifndef SDK_TIME_IS_VALID_WDAY
353 #define SDK_TIME_IS_VALID_WDAY(D) ((D > 0) && (D <= 7))
354 #endif // SDK_TIME_IS_VALID_WDAY
355 #define SDK_TIME_IS_INVALID_WDAY(D) !SDK_TIME_IS_VALID_WDAY(D)
356 #ifndef ANY_TIME_IS_VALID_DATE
357 #define ANY_TIME_IS_VALID_DATE(D) ( \
358  SDK_TIME_IS_VALID_YEAR(ANY_TIME_PACKED_YEAR(D)) && \
359  SDK_TIME_IS_VALID_MONTH(ANY_TIME_PACKED_MONTH(D)) && \
360  SDK_TIME_IS_VALID_MDAY(ANY_TIME_PACKED_MDAY(D)))
361 #endif // ANY_TIME_IS_VALID_DATE
362 #define ANY_TIME_IS_INVALID_DATE(D) !ANY_TIME_IS_VALID_DATE(D)
363 
364 #ifndef SDK_TIME_IS_VALID_HOUR
365 #define SDK_TIME_IS_VALID_HOUR(H) (H < 24)
366 #endif // SDK_TIME_IS_VALID_HOUR
367 #define SDK_TIME_IS_INVALID_HOUR(H) !SDK_TIME_IS_VALID_HOUR(H)
368 #ifndef SDK_TIME_IS_VALID_MINUTE
369 #define SDK_TIME_IS_VALID_MINUTE(M) (M < 60)
370 #endif // SDK_TIME_IS_VALID_MINUTE
371 #define SDK_TIME_IS_INVALID_MINUTE(M) !SDK_TIME_IS_VALID_MINUTE(M)
372 #ifndef SDK_TIME_IS_VALID_SECOND
373 #define SDK_TIME_IS_VALID_SECOND(S) (S < 60)
374 #endif // SDK_TIME_IS_VALID_SECOND
375 #define SDK_TIME_IS_INVALID_SECOND(S) !SDK_TIME_IS_VALID_SECOND(S)
376 #ifndef SDK_TIME_IS_VALID_MILLISECOND
377 #define SDK_TIME_IS_VALID_MILLISECOND(S) (S < 1000)
378 #endif // SDK_TIME_IS_VALID_MILLISECOND
379 #define SDK_TIME_IS_INVALID_MILLISECOND(S) !SDK_TIME_IS_VALID_MILLISECOND(S)
380 #ifndef ANY_TIME_IS_VALID_TIME
381 #define ANY_TIME_IS_VALID_TIME(D) ( \
382  SDK_TIME_IS_VALID_HOUR(ANY_TIME_PACKED_HOUR(D)) && \
383  SDK_TIME_IS_VALID_MINUTE(ANY_TIME_PACKED_MINUTE(D)) && \
384  SDK_TIME_IS_VALID_SECOND(ANY_TIME_PACKED_SECOND(D)))
385 #endif // SDK_TIME_IS_VALID_TIME
386 #define ANY_TIME_IS_INVALID_TIME(D) !ANY_TIME_IS_VALID_TIME(D)
387 
392 
393 typedef SDKUInt16 SDKArrayElementType;
394 SDK_PACK(struct SDKArray {
395  SDKUInt64 num_of_elements;
396  SDKArrayElementType element_type;
397  SDKUInt32 element_size;
398  SDKUInt8* data;
399 });
400 
403 typedef SDKUInt32 SDKCRC32;
404 
405 #ifndef membsize
406 # define membsize(s, m) (sizeof((s *)0)->m)
407 #endif
408 
409 template <typename Int, typename Rnd>
410 static inline Int RoundUp(Int N, Rnd R) {
411  return Int(N + R - 1) & ~Int(R - 1);
412 }
413 
414 template <typename Int, typename Rnd>
415 static inline Int RoundToNearest(Rnd V) {
416  static double D[2] = {-0.5, +0.5};
417  return static_cast<Int>(V + D[V >= 0]);
418 }
419 
420 template <typename T>
421 inline T RoundToNearest(T r, double precision) {
422  double res = (r >= 0.0) ? floor(r * precision + 0.5) : ceil(r * precision - 0.5);
423  res = res / precision;
424  return static_cast<T>(res);
425 }
426 
429 // This should be used in the private: declarations for a class
430 #define DENY_COPY_AND_ASSIGN(T) \
431  T(const T&); \
432  void operator=(const T&)
433 
434 // A macro to disallow all the implicit constructors, namely the
435 // default constructor, copy constructor and operator= functions.
436 //
437 // This should be used in the private: declarations for a class
438 // that wants to prevent anyone from instantiating it. This is
439 // especially useful for classes containing only static methods.
440 #define DENY_IMPLICIT_CONSTRUCTORS(T) \
441  T(); \
442  DENY_COPY_AND_ASSIGN(T)
443 
444 
445 template<class _InIt, class _OutIt, class _Fn1>
446 inline _OutIt unsafe_transform(_InIt _First, _InIt _Last,
447  _OutIt _Dest, _Fn1 _Func) { // transform [_First, _Last) with _Func
448  for (; _First != _Last; ++_First, ++_Dest)
449  *_Dest = _Func(*_First);
450  return (_Dest);
451 }
452 
453 // copy reversing elements in [_First, _Last)
454 template<class _BidIt, class _OutIt, class _Fn1>
455 inline _OutIt unsafe_reverse_copy(
456  _BidIt _First, _BidIt _Last, _OutIt _Dest) {
457  for (; _First != _Last; ++_Dest)
458  *_Dest = *--_Last;
459  return (_Dest);
460 }
461 
462 template<class _BidIt, class _OutIt, class _Fn1>
463 inline _OutIt unsafe_reverse_copy_pred(
464  _BidIt _First, _BidIt _Last, _OutIt _Dest, _Fn1 _Func) {
465  for (; _First != _Last; ++_Dest)
466  *_Dest = _Func(*--_Last);
467  return (_Dest);
468 }
469 
470 // Used to explicitly mark the return value of a function as unused. If you are
471 // really sure you don't want to do anything with the return value of a function
472 // that has been marked WARN_UNUSED_RESULT, wrap it with this. Example:
473 //
474 // std::unique_ptr<MyType> my_var = ...;
475 // if (TakeOwnership(my_var.get()) == SUCCESS)
476 // ignore_result(my_var.release());
477 //
478 template<typename T>
479 inline void ignore_result_t(const T&) {
480 }
481 
482 #include "sdk_poppack.h"
483 #if /*defined(SDK_CC_GCC) || */defined(SDK_CC_CLANG) || defined(_PUSHPOP_SUPPORTED)
484 # pragma GCC diagnostic pop
485 #endif
486 
487 #endif // SDK_BASE_BASE_TYPES_H_
SDK_MAX_INT64
static const SDKInt64 SDK_MAX_INT64
Max limit of 64-bit signed integer.
Definition: platform.h:188
kSDKTimeStruct_Millisec_Min
static const SDKUInt16 kSDKTimeStruct_Millisec_Min
Minimum millisecond value.
Definition: base_types.h:102
kSDKTimeStruct_Yday_Max
static const SDKUInt16 kSDKTimeStruct_Yday_Max
Maximum day of year value.
Definition: base_types.h:91
kInvalidSDKTime
static const SDKTime kInvalidSDKTime
SDKTime invalid value.
Definition: base_types.h:64
kSDKAnyType_Uint16
@ kSDKAnyType_Uint16
unsigned integer 16 bit value
Definition: base_types.h:141
kSDKAnyType_Bool
@ kSDKAnyType_Bool
boolean value
Definition: base_types.h:152
kSDKAnyType_3DGeo
@ kSDKAnyType_3DGeo
3D Geo coordinate - Double
Definition: base_types.h:161
IsEmptySDKString
#define IsEmptySDKString(str)
Return true if a string is an empty string.
Definition: base_types.h:131
SDK_PACK
SDK_PACK(struct SDKTimeStruct { SDKInt16 year;SDKUInt8 month;SDKUInt16 yday;SDKUInt8 mday;SDKUInt8 wday;SDKUInt8 hour;SDKUInt8 minute;SDKUInt8 second;SDKUInt16 millisec;})
Represents the exploded SDKTime.
kSDKAnyType_Uint64
@ kSDKAnyType_Uint64
unsigned integer 64 bit value
Definition: base_types.h:143
kSDKAnyType_Uint8
@ kSDKAnyType_Uint8
unsigned integer 8 bit value
Definition: base_types.h:140
kSDKAnyType_GeoInt
@ kSDKAnyType_GeoInt
GeoInt.
Definition: base_types.h:147
kSDKAnyType_Int32
@ kSDKAnyType_Int32
signed integer 32 bit value
Definition: base_types.h:146
kSDKTimeStruct_Mday_Min
static const SDKUInt8 kSDKTimeStruct_Mday_Min
Minimum day of month value.
Definition: base_types.h:92
kSDKAnyType_3DGeoInt
@ kSDKAnyType_3DGeoInt
3D Geo coordinate - Int32
Definition: base_types.h:160
IsNullSDKString
#define IsNullSDKString(str)
Returns true is a string is a null string.
Definition: base_types.h:122
kSDKAnyType_Float
@ kSDKAnyType_Float
single precision real value
Definition: base_types.h:149
kSDKTimeStruct_Year_Max
static const SDKUInt16 kSDKTimeStruct_Year_Max
Maximum year value.
Definition: base_types.h:87
kSDKAnyType_Null
@ kSDKAnyType_Null
null value or no value
Definition: base_types.h:139
kSDKTimeStruct_Month_Min
static const SDKUInt8 kSDKTimeStruct_Month_Min
Minimum month value.
Definition: base_types.h:88
kSDKAnyType_Empty
@ kSDKAnyType_Empty
variable is empty
Definition: base_types.h:138
kSDKTimeStruct_Minute_Min
static const SDKUInt8 kSDKTimeStruct_Minute_Min
Minimum minute value.
Definition: base_types.h:98
kSDKTimeStruct_Month_Max
static const SDKUInt8 kSDKTimeStruct_Month_Max
Maximum month value.
Definition: base_types.h:89
SDKCRC32
SDKUInt32 SDKCRC32
CRC32 value.
Definition: base_types.h:403
kSDKTimeStruct_Second_Min
static const SDKUInt8 kSDKTimeStruct_Second_Min
Minimum second value.
Definition: base_types.h:100
kUnixEpoch
static const SDKUInt16 kUnixEpoch
Unix epoch definition.
Definition: base_types.h:66
SDKTimeDelta
SDKInt64 SDKTimeDelta
Time delta in Milliseconds.
Definition: base_types.h:63
kSDKTimeStruct_Mday_Max
static const SDKUInt8 kSDKTimeStruct_Mday_Max
Maximum day of month value.
Definition: base_types.h:93
kSDKAnyType_Uint32
@ kSDKAnyType_Uint32
unsigned integer 32 bit value
Definition: base_types.h:142
kSDKAnyType_UserPtr
@ kSDKAnyType_UserPtr
user defined type of any size
Definition: base_types.h:163
kSDKTimeStruct_Wday_Min
static const SDKUInt8 kSDKTimeStruct_Wday_Min
Minimum day of week value.
Definition: base_types.h:94
kSDKTimeStruct_Millisec_Max
static const SDKUInt16 kSDKTimeStruct_Millisec_Max
Maximum millisecond value.
Definition: base_types.h:103
kSDKTimeStruct_Wday_Max
static const SDKUInt8 kSDKTimeStruct_Wday_Max
Maximum day of week value.
Definition: base_types.h:95
kSDKAnyType_Int8
@ kSDKAnyType_Int8
signed integer 8 bit value
Definition: base_types.h:144
kSDKAnyType_SDKArrayPtr
@ kSDKAnyType_SDKArrayPtr
pointer to SDKArray
Definition: base_types.h:156
SDKArrayElementType
SDKUInt16 SDKArrayElementType
Basic type for one dimensional array of any values, use SDKArray* functions from base library.
Definition: base_types.h:393
platform.h
Describes the platform constants.
kSDKAnyType_SDKTimeDelta
@ kSDKAnyType_SDKTimeDelta
Time delta.
Definition: base_types.h:159
kSDKAnyType_SDKComponentPtr
@ kSDKAnyType_SDKComponentPtr
pointer to ISDKComponent
Definition: base_types.h:157
ISDKComponent
Base interface for all SDK interfaces.
Definition: sdk_component_interface.h:41
kInvalidSDKTimeDelta
static const SDKTimeDelta kInvalidSDKTimeDelta
SDKTimeDelta invalid value.
Definition: base_types.h:65
kSDKAnyType_SDKAnyPtr
@ kSDKAnyType_SDKAnyPtr
pointer to SDKAny
Definition: base_types.h:155
kSDKTimeStruct_Minute_Max
static const SDKUInt8 kSDKTimeStruct_Minute_Max
Maximum minute value.
Definition: base_types.h:99
kSDKAnyType_Double
@ kSDKAnyType_Double
double precision real value
Definition: base_types.h:150
kSDKAnyType_Int64
@ kSDKAnyType_Int64
signed integer 64 bit value
Definition: base_types.h:148
kSDKAnyType_3DFloat
@ kSDKAnyType_3DFloat
3D Geo coordinate - Float
Definition: base_types.h:162
kSDKAnyType_SDKTimePacked
@ kSDKAnyType_SDKTimePacked
SDKTime packed structure.
Definition: base_types.h:158
kMillisecondsInSecond
static const SDKUInt16 kMillisecondsInSecond
Milliseconds in second.
Definition: base_types.h:67
kSDKAnyType_Int16
@ kSDKAnyType_Int16
signed integer 16 bit value
Definition: base_types.h:145
kSDKTimeStruct_Hour_Min
static const SDKUInt8 kSDKTimeStruct_Hour_Min
Minimum hour value.
Definition: base_types.h:96
SDKTime
SDK_END_NAMESPACE typedef SDKInt64 SDKTime
Milliseconds from Unix epoch.
Definition: base_types.h:56
kSDKAnyType_SDKStringPtr
@ kSDKAnyType_SDKStringPtr
pointer to SDKString
Definition: base_types.h:154
kSDKTimeStruct_Hour_Max
static const SDKUInt8 kSDKTimeStruct_Hour_Max
Maximum hour value.
Definition: base_types.h:97
kSDKTimeStruct_Yday_Min
static const SDKUInt16 kSDKTimeStruct_Yday_Min
Minimum day of year value.
Definition: base_types.h:90
kSDKAnyType_Geo
@ kSDKAnyType_Geo
Geo coordinate.
Definition: base_types.h:151
SDKAnyTypeEnum
SDKAnyTypeEnum
Enumeration of supported types of data.
Definition: base_types.h:137
kSDKAnyType_SDKTime
@ kSDKAnyType_SDKTime
SDKTime.
Definition: base_types.h:153
kSDKTimeStruct_Second_Max
static const SDKUInt8 kSDKTimeStruct_Second_Max
Maximum second value.
Definition: base_types.h:101
kSDKTimeStruct_Year_Min
static const SDKUInt16 kSDKTimeStruct_Year_Min
Minimum year value.
Definition: base_types.h:86