Open Files 5.3.0
Multi-Platform Event-Driven Application Framework
types.h
Go to the documentation of this file.
1 /* Copyright (c) 2021 Connected Way, LLC. All rights reserved.
2  * Use of this source code is governed by a Creative Commons
3  * Attribution-NoDerivatives 4.0 International license that can be
4  * found in the LICENSE file.
5  */
6 #if !defined(__OFC_TYPES_H__)
7 #define __OFC_TYPES_H__
8 
9 #include "ofc/config.h"
10 
115 typedef long int OFC_SIZET;
119 typedef int OFC_INT;
123 typedef unsigned int OFC_UINT;
127 #if defined(OFC_LONGINT_64)
128 typedef int OFC_INT32;
129 #else
130 typedef long int OFC_INT32 ;
131 #endif
135 typedef short int OFC_INT16;
139 typedef char OFC_INT8;
143 typedef char OFC_CHAR;
147 typedef char OFC_BYTE;
155 typedef unsigned char OFC_UCHAR;
159 typedef void OFC_VOID;
163 typedef long OFC_LONG;
171 typedef short OFC_SHORT;
175 #if defined(OFC_LONGINT_64)
176 typedef unsigned int OFC_UINT32;
177 #else
178 typedef unsigned long int OFC_UINT32 ;
179 #endif
183 typedef unsigned short int OFC_UINT16;
187 typedef unsigned char OFC_UINT8;
188 
192 #if defined(OFC_64BIT_INTEGER)
193 typedef unsigned long long int OFC_UINT64;
194 #else
195 typedef struct
196 {
200  OFC_UINT32 low ;
204  OFC_UINT32 high ;
205 } OFC_UINT64 ;
206 #endif
210 #if defined(OFC_64BIT_INTEGER)
211 typedef long long int OFC_INT64;
212 #else
213 typedef struct
214 {
218  OFC_UINT32 low ;
222  OFC_INT32 high ;
223 } OFC_INT64 ;
224 #endif
225 
230 
237 #if defined(OFC_64BIT_INTEGER)
238 #define OFC_LARGE_INTEGER_HIGH(x) ((OFC_UINT32)((x)>>32))
239 #else
240 #define OFC_LARGE_INTEGER_HIGH(x) ((x).high)
241 #endif
242 
249 #if defined(OFC_64BIT_INTEGER)
250 #define OFC_LARGE_INTEGER_LOW(x) ((OFC_UINT32)((x)&0xFFFFFFFF))
251 #else
252 #define OFC_LARGE_INTEGER_LOW(x) ((x).low)
253 #endif
254 
264 #if defined(OFC_64BIT_INTEGER)
265 #define OFC_LARGE_INTEGER_ASSIGN(x, y) x=y
266 #else
267 #define OFC_LARGE_INTEGER_ASSIGN(x,y) ofc_memcpy(&x,&y, sizeof(OFC_LARGE_INTEGER))
268 #endif
269 
282 #if defined(OFC_64BIT_INTEGER)
283 #define OFC_LARGE_INTEGER_SET(x, y, z) (x)=(OFC_LARGE_INTEGER)(z)<<32|(y)
284 #else
285 #define OFC_LARGE_INTEGER_SET(x, y, z) {(x).low = (y); (x).high=(z);}
286 #endif
287 
300 #if defined(OFC_64BIT_INTEGER)
301 #define OFC_LARGE_INTEGER_EQUAL(x, y) (x==y)
302 #else
303 #define OFC_LARGE_INTEGER_EQUAL(x,y) ((x).high==(y).high && (x).low==(y).low)
304 #endif
305 
314 #if defined(OFC_64BIT_INTEGER)
315 #define OFC_LARGE_INTEGER_INCR(x) x++
316 #else
317 #define OFC_LARGE_INTEGER_INCR(x) ((x).low==0xFFFFFFFF?\
318  (x).high++,(x).low=0:(x).low++)
319 #endif
320 
333 #if defined(OFC_64BIT_INTEGER)
334 #define OFC_LARGE_INTEGER_AND(x, y, z) (x)&=((OFC_LARGE_INTEGER)(z)<<32|(y))
335 #else
336 #define OFC_LARGE_INTEGER_AND(x, y, z) {(x).low &= (y); (x).high&=(z);}
337 #endif
338 
351 #if defined(OFC_64BIT_INTEGER)
352 #define OFC_LARGE_INTEGER_INIT(x, y) (OFC_LARGE_INTEGER)(y)<<32|(x)
353 #else
354 #define OFC_LARGE_INTEGER_INIT(x,y) {x; y}
355 #endif
356 
364 typedef unsigned long OFC_ULONG;
368 #define OFC_ULONG_MAX ((OFC_ULONG)(~0L))
372 #define OFC_LONG_MAX ((OFC_LONG)(OFC_ULONG_MAX >> 1))
376 #define OFC_LONG_MIN ((OFC_LONG)(~OFC_LONG_MAX))
381 
385 #if defined(OFC_64BIT_POINTER)
387 #else
388 typedef OFC_UINT32 OFC_ULONG_PTR ;
389 #endif
390 
394 typedef const OFC_VOID OFC_CVOID;
398 typedef OFC_WCHAR *OFC_LPWSTR;
402 typedef OFC_WCHAR *OFC_LMSTR;
406 typedef const OFC_WCHAR OFC_CWCHAR;
410 typedef const OFC_WCHAR *OFC_LPCWSTR;
414 typedef const OFC_CHAR OFC_CCHAR;
422 typedef const OFC_CHAR *OFC_LPCSTR;
434 #define OFC_DWORD_MASK 0xFFFFFFFF
442 #if defined(OFC_64BIT_POINTER)
444 #else
445 typedef OFC_UINT32 OFC_DWORD_PTR ;
446 #endif
458 typedef const OFC_VOID *OFC_LPCVOID;
459 
463 typedef OFC_WCHAR OFC_TCHAR;
467 typedef const OFC_WCHAR OFC_CTCHAR;
468 
472 #if defined(OFC_UNICODE_API)
474 #else
475 typedef OFC_CHAR OFC_TACHAR ;
476 #endif
477 
481 #if defined(OFC_UNICODE_API)
482 typedef const OFC_TCHAR OFC_CTACHAR;
483 #else
484 typedef const OFC_CHAR OFC_CTACHAR ;
485 #endif
486 
498 typedef const OFC_TCHAR *OFC_LPCTSTR;
502 typedef const OFC_TACHAR *OFC_LPCTASTR;
507 
511 #define TCHAR_BACKSLASH L'\\'
515 #define TCHAR_SLASH L'/'
519 #define TCHAR_COLON L':'
523 #define TCHAR_EOS L'\0'
527 #define TCHAR_AMP L'@'
534 #define TSTR(x) (const OFC_TCHAR *) L##x
541 #define TCHAR(x) (const OFC_TCHAR) L##x
542 
546 #if defined(OFC_UNICODE_API)
547 #define TACHAR_BACKSLASH TCHAR('\\')
548 #else
552 #define TACHAR_BACKSLASH '\\'
553 #endif
554 
558 #if defined(OFC_UNICODE_API)
559 #define TACHAR_SLASH TCHAR('/')
560 #else
561 #define TACHAR_SLASH '/'
562 #endif
563 
567 #if defined(OFC_UNICODE_API)
568 #define TACHAR_COLON TCHAR(':')
569 #else
570 #define TACHAR_COLON ':'
571 #endif
572 
576 #if defined(OFC_UNICODE_API)
577 #define TACHAR_EOS TCHAR('\0')
578 #else
579 #define TACHAR_EOS '\0'
580 #endif
581 
585 #if defined(OFC_UNICODE_API)
586 #define TACHAR_AMP TCHAR('@')
587 #else
588 #define TACHAR_AMP '@'
589 #endif
590 
594 #if defined(OFC_UNICODE_API)
595 #define TASTR(x) TSTR(x)
596 #else
597 #define TASTR(x) x
598 #endif
599 
603 #if defined(OFC_UNICODE_API)
604 #define TACHAR(x) TCHAR(x)
605 #else
606 #define TACHAR(x) x
607 #endif
608 
612 #define OFC_UUID_LEN 16
617 
628 enum {
636  OFC_TRUE = 1
637 };
638 
645 typedef enum
646  {
651  } OFC_LOG_LEVEL;
652 
656 #define OFC_NULL ((OFC_LPVOID) 0)
660 typedef struct _iovec {
664 
680 #define container_of(ptr, type, member) \
681  (type *)((OFC_CHAR *)(ptr)-(OFC_CHAR *)&((type *)0)->member)
682 
684 #endif
685 
Definition: types.h:660
OFC_CHAR * iov_base
Definition: types.h:662
OFC_LONG iov_len
Definition: types.h:661
@ OFC_FALSE
Definition: types.h:632
@ OFC_TRUE
Definition: types.h:636
unsigned char OFC_UCHAR
Definition: types.h:155
OFC_LONG * OFC_PLONG
Definition: types.h:167
struct _iovec OFC_IOVEC
char OFC_INT8
Definition: types.h:139
const OFC_WCHAR OFC_CWCHAR
Definition: types.h:406
OFC_UCHAR OFC_UUID[OFC_UUID_LEN]
Definition: types.h:616
void OFC_VOID
Definition: types.h:159
OFC_CHAR * OFC_LPSTR
Definition: types.h:418
short int OFC_INT16
Definition: types.h:135
const OFC_CHAR OFC_CCHAR
Definition: types.h:414
OFC_UINT64 OFC_DWORD_PTR
Definition: types.h:443
unsigned long long int OFC_UINT64
Definition: types.h:193
unsigned int OFC_UINT32
Definition: types.h:176
const OFC_VOID * OFC_LPCVOID
Definition: types.h:458
OFC_LARGE_INTEGER OFC_OFFT
Definition: types.h:360
OFC_LOG_LEVEL
Definition: types.h:646
@ OFC_LOG_FATAL
Definition: types.h:647
@ OFC_LOG_WARN
Definition: types.h:648
@ OFC_LOG_DEBUG
Definition: types.h:650
@ OFC_LOG_INFO
Definition: types.h:649
const OFC_TCHAR * OFC_LPCTSTR
Definition: types.h:498
const OFC_WCHAR * OFC_LPCWSTR
Definition: types.h:410
OFC_UINT8 OFC_BOOL
Definition: types.h:624
long OFC_LONG
Definition: types.h:163
unsigned int OFC_UINT
Definition: types.h:123
short OFC_SHORT
Definition: types.h:171
OFC_TCHAR * OFC_LPTSTR
Definition: types.h:490
int OFC_INT32
Definition: types.h:128
OFC_BYTE * OFC_LPBYTE
Definition: types.h:151
char OFC_BYTE
Definition: types.h:147
OFC_UINT32 OFC_DWORD
Definition: types.h:430
const OFC_TCHAR OFC_CTACHAR
Definition: types.h:482
unsigned char OFC_UINT8
Definition: types.h:187
OFC_DWORD * OFC_LPDWORD
Definition: types.h:438
OFC_ULONG * OFC_LPULONG
Definition: types.h:380
OFC_WCHAR OFC_TCHAR
Definition: types.h:463
OFC_TCHAR OFC_TACHAR
Definition: types.h:473
OFC_UINT16 OFC_WORD
Definition: types.h:426
OFC_VOID * OFC_PVOID
Definition: types.h:454
OFC_UINT64 OFC_ULONG_PTR
Definition: types.h:386
#define OFC_UUID_LEN
Definition: types.h:612
OFC_WCHAR * OFC_LPWSTR
Definition: types.h:398
unsigned long OFC_ULONG
Definition: types.h:364
char OFC_CHAR
Definition: types.h:143
OFC_INT32 OFC_MSTIME
Definition: types.h:506
OFC_TACHAR * OFC_LPTASTR
Definition: types.h:494
OFC_INT64 OFC_LARGE_INTEGER
Definition: types.h:229
const OFC_CHAR * OFC_LPCSTR
Definition: types.h:422
OFC_WCHAR * OFC_LMSTR
Definition: types.h:402
const OFC_WCHAR OFC_CTCHAR
Definition: types.h:467
const OFC_TACHAR * OFC_LPCTASTR
Definition: types.h:502
int OFC_INT
Definition: types.h:119
long int OFC_SIZET
Definition: types.h:115
unsigned short int OFC_UINT16
Definition: types.h:183
const OFC_VOID OFC_CVOID
Definition: types.h:394
long long int OFC_INT64
Definition: types.h:211
OFC_VOID * OFC_LPVOID
Definition: types.h:450