UCommon
Namespaces | Macros | Typedefs | Functions | Variables
platform.h File Reference

Various miscellaneous platform specific headers and defines. More...

#include <cstdlib>
#include <cstddef>
#include <stdexcept>
#include <pthread.h>
#include <signal.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <cctype>
#include <climits>
#include <cerrno>
#include <new>
#include <assert.h>
Include dependency graph for platform.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

namespace  ucommon
 Common namespace for all ucommon objects.
 

Macros

#define __ALIGNED(x)   __attribute__(align(x))
 
#define __DELETE_COPY(x)
 
#define __DELETE_DEFAULTS(x)
 
#define __DELETED
 
#define __EXPORT   __attribute__ ((visibility("default")))
 
#define __FINAL
 
#define __GNUC_PREREQ__(maj, min)   0
 
#define __LOCAL   __attribute__ ((visibility("hidden")))
 
#define __MALLOC
 
#define __OVERRIDE
 
#define __PRINTF(x, y)
 
#define __PROGRAM(c, v)   extern "C" int main(int c, char **v)
 
#define __PROTOCOL   virtual
 
#define __SCANF(x, y)
 
#define __SERVICE(id, c, v)   void service_##id(int c, char **v)
 
#define __SHARED   __attribute__ ((visibility("default")))
 
#define __THROW_ALLOC()   throw std::bad_alloc()
 
#define __THROW_DEREF(v)
 
#define __THROW_RANGE(x)   throw std::out_of_range(x)
 
#define __THROW_RUNTIME(x)   throw std::runtime_error(x)
 
#define __THROW_SIZE(x)   throw std::length_error(x)
 
#define __THROW_UNDEF(v, x)   if(v == nullptr) throw std::runtime_error(x)
 
#define __UNUSED(x)   (void)x
 
#define _POSIX_PTHREAD_SEMANTICS
 
#define _REENTRANT   1
 
#define _THREADSAFE   1
 
#define _UCOMMON_EXTENDED_
 
#define _UCOMMON_PLATFORM_H_
 
#define crit(x, text)   if(!(x)) cpr_runtime_error(text)
 
#define END_NAMESPACE   }
 
#define INVALID_HANDLE_VALUE   -1
 
#define INVALID_SOCKET   -1
 
#define NAMESPACE_UCOMMON   namespace ucommon {
 
#define NDEBUG
 
#define PROGRAM_EXIT(code)   return code
 
#define PROGRAM_MAIN(argc, argv)   extern "C" int main(int argc, char **argv)
 
#define SERVICE_MAIN(id, argc, argv)   void service_##id(int argc, char **argv)
 
#define UCOMMON_ABI   7
 
#define UCOMMON_NAMESPACE   ucommon
 
#define UCOMMON_RTTI   1
 

Typedefs

typedef void(* cpr_service_t) (int argc, char **argv)
 
typedef int fd_t
 
typedef long Integer
 
typedef double Real
 
typedef void(* sighandler_t) (int)
 Convenient typedef for signal handlers. More...
 
typedef int socket_t
 
typedef size_t socksize_t
 
typedef size_t stacksize_t
 
typedef unsigned long timeout_t
 
typedef uint8_t ubyte_t
 
typedef unsigned long Unsigned
 

Functions

template<typename T >
const T immutable_cast (T p)
 
template<class T >
T * init (T *memory)
 Template function to initialize memory by invoking default constructor. More...
 
template<class T , class S >
polyconst_cast (S *s)
 
template<class T , class S >
polydynamic_cast (S *s)
 
template<class T , class S >
polypointer_cast (S *s)
 
template<class T , class S >
T & polyreference_cast (S *s)
 
template<class T , class S >
polystatic_cast (S *s)
 
template<typename T , typename S >
protocol_cast (S *s)
 
template<typename T >
T & reference_cast (T *pointer)
 
void strfree (char *str)
 Matching function for strdup(). More...
 

Variables

const class nullptr_t nullptr = {}
 

Detailed Description

Various miscellaneous platform specific headers and defines.

This is used to support ucommon on different platforms. The ucommon library assumes at least a real posix threading library is present or will build thread support native on Microsoft Windows legacy platform. This header also deals with issues related to common base types.

Definition in file platform.h.

Macro Definition Documentation

◆ __ALIGNED

#define __ALIGNED (   x)    __attribute__(align(x))

Definition at line 167 of file platform.h.

◆ __DELETE_COPY

#define __DELETE_COPY (   x)
Value:
inline x(const x&);\
inline x& operator=(const x&)

Definition at line 175 of file platform.h.

◆ __DELETE_DEFAULTS

#define __DELETE_DEFAULTS (   x)
Value:
inline x();\
__DELETE_COPY(x)

Definition at line 177 of file platform.h.

◆ __DELETED

#define __DELETED

Definition at line 174 of file platform.h.

◆ __EXPORT

#define __EXPORT   __attribute__ ((visibility("default")))

Definition at line 312 of file platform.h.

◆ __FINAL

#define __FINAL

Definition at line 172 of file platform.h.

◆ __GNUC_PREREQ__

#define __GNUC_PREREQ__ (   maj,
  min 
)    0

Definition at line 148 of file platform.h.

◆ __LOCAL

#define __LOCAL   __attribute__ ((visibility("hidden")))

Definition at line 313 of file platform.h.

◆ __MALLOC

#define __MALLOC

Definition at line 216 of file platform.h.

◆ __OVERRIDE

#define __OVERRIDE

Definition at line 173 of file platform.h.

◆ __PRINTF

#define __PRINTF (   x,
 
)

Definition at line 214 of file platform.h.

◆ __PROGRAM

#define __PROGRAM (   c,
 
)    extern "C" int main(int c, char **v)

Definition at line 541 of file platform.h.

◆ __PROTOCOL

#define __PROTOCOL   virtual

Definition at line 127 of file platform.h.

◆ __SCANF

#define __SCANF (   x,
 
)

Definition at line 215 of file platform.h.

◆ __SERVICE

#define __SERVICE (   id,
  c,
 
)    void service_##id(int c, char **v)

Definition at line 547 of file platform.h.

◆ __SHARED

#define __SHARED   __attribute__ ((visibility("default")))

Definition at line 314 of file platform.h.

◆ __THROW_ALLOC

#define __THROW_ALLOC ( )    throw std::bad_alloc()

Definition at line 67 of file platform.h.

◆ __THROW_DEREF

#define __THROW_DEREF (   v)
Value:
if(v == nullptr) \
throw std::runtime_error("Dereference NULL")

Definition at line 68 of file platform.h.

◆ __THROW_RANGE

#define __THROW_RANGE (   x)    throw std::out_of_range(x)

Definition at line 65 of file platform.h.

◆ __THROW_RUNTIME

#define __THROW_RUNTIME (   x)    throw std::runtime_error(x)

Definition at line 66 of file platform.h.

◆ __THROW_SIZE

#define __THROW_SIZE (   x)    throw std::length_error(x)

Definition at line 64 of file platform.h.

◆ __THROW_UNDEF

#define __THROW_UNDEF (   v,
 
)    if(v == nullptr) throw std::runtime_error(x)

Definition at line 70 of file platform.h.

◆ __UNUSED

#define __UNUSED (   x)    (void)x

Definition at line 159 of file platform.h.

◆ _POSIX_PTHREAD_SEMANTICS

#define _POSIX_PTHREAD_SEMANTICS

Definition at line 104 of file platform.h.

◆ _REENTRANT

#define _REENTRANT   1

Definition at line 95 of file platform.h.

◆ _THREADSAFE

#define _THREADSAFE   1

Definition at line 100 of file platform.h.

◆ _UCOMMON_EXTENDED_

#define _UCOMMON_EXTENDED_

Definition at line 62 of file platform.h.

◆ _UCOMMON_PLATFORM_H_

#define _UCOMMON_PLATFORM_H_

Definition at line 55 of file platform.h.

◆ crit

#define crit (   x,
  text 
)    if(!(x)) cpr_runtime_error(text)

Definition at line 556 of file platform.h.

◆ END_NAMESPACE

#define END_NAMESPACE   }

Definition at line 92 of file platform.h.

◆ INVALID_HANDLE_VALUE

#define INVALID_HANDLE_VALUE   -1

Definition at line 432 of file platform.h.

◆ INVALID_SOCKET

#define INVALID_SOCKET   -1

Definition at line 431 of file platform.h.

◆ NAMESPACE_UCOMMON

#define NAMESPACE_UCOMMON   namespace ucommon {

Definition at line 91 of file platform.h.

◆ NDEBUG

#define NDEBUG

Definition at line 221 of file platform.h.

◆ PROGRAM_EXIT

#define PROGRAM_EXIT (   code)    return code

Definition at line 543 of file platform.h.

◆ PROGRAM_MAIN

#define PROGRAM_MAIN (   argc,
  argv 
)    extern "C" int main(int argc, char **argv)

Definition at line 542 of file platform.h.

◆ SERVICE_MAIN

#define SERVICE_MAIN (   id,
  argc,
  argv 
)    void service_##id(int argc, char **argv)

Definition at line 548 of file platform.h.

◆ UCOMMON_ABI

#define UCOMMON_ABI   7

Definition at line 56 of file platform.h.

◆ UCOMMON_NAMESPACE

#define UCOMMON_NAMESPACE   ucommon

Definition at line 90 of file platform.h.

◆ UCOMMON_RTTI

#define UCOMMON_RTTI   1

Definition at line 109 of file platform.h.

Typedef Documentation

◆ cpr_service_t

typedef void(* cpr_service_t) (int argc, char **argv)

Definition at line 549 of file platform.h.

◆ fd_t

typedef int fd_t

Definition at line 430 of file platform.h.

◆ Integer

typedef long Integer

Definition at line 569 of file platform.h.

◆ Real

typedef double Real

Definition at line 571 of file platform.h.

◆ sighandler_t

typedef void(* sighandler_t) (int)

Convenient typedef for signal handlers.

Definition at line 466 of file platform.h.

◆ socket_t

typedef int socket_t

Definition at line 429 of file platform.h.

◆ socksize_t

typedef size_t socksize_t

Definition at line 311 of file platform.h.

◆ stacksize_t

typedef size_t stacksize_t

Definition at line 428 of file platform.h.

◆ timeout_t

typedef unsigned long timeout_t

Definition at line 468 of file platform.h.

◆ ubyte_t

typedef uint8_t ubyte_t

Definition at line 572 of file platform.h.

◆ Unsigned

typedef unsigned long Unsigned

Definition at line 570 of file platform.h.

Function Documentation

◆ immutable_cast()

template<typename T >
const T immutable_cast ( p)
inline

Definition at line 631 of file platform.h.

◆ init()

template<class T >
T * init ( T *  memory)
inline

Template function to initialize memory by invoking default constructor.

If NULL is passed, then NULL is returned without any constructor called.

Parameters
memoryto initialize.
Returns
memory initialized.
Examples
cipher.cpp.

Definition at line 566 of file platform.h.

◆ polyconst_cast()

template<class T , class S >
T polyconst_cast ( S *  s)
inline

Definition at line 596 of file platform.h.

◆ polydynamic_cast()

template<class T , class S >
T polydynamic_cast ( S *  s)
inline

Definition at line 608 of file platform.h.

◆ polypointer_cast()

template<class T , class S >
T polypointer_cast ( S *  s)
inline

Definition at line 582 of file platform.h.

◆ polyreference_cast()

template<class T , class S >
T & polyreference_cast ( S *  s)
inline

Definition at line 618 of file platform.h.

◆ polystatic_cast()

template<class T , class S >
T polystatic_cast ( S *  s)
inline

Definition at line 602 of file platform.h.

◆ protocol_cast()

template<typename T , typename S >
T protocol_cast ( S *  s)

Definition at line 129 of file platform.h.

◆ reference_cast()

template<typename T >
T & reference_cast ( T *  pointer)
inline

Definition at line 625 of file platform.h.

◆ strfree()

void strfree ( char *  str)
inline

Matching function for strdup().

Parameters
stringto release from allocated memory.
Examples
string.cpp.

Definition at line 578 of file platform.h.