| 
    iceWing
    
   | 
 
#include <sys/types.h>#include <limits.h>#include <glib.h>Go to the source code of this file.
Macros | |
| #define | ICEWING_NAME_D "iceWing" | 
| #define | IW_TIME_MESSURE | 
| #define | __FUNCTION__ __FILE__ | 
| #define | FALSE 0 | 
| #define | TRUE 1 | 
| #define | false FALSE | 
| #define | true TRUE | 
| #define | PATH_MAX 256 | 
| #define | IW_TIME_DIFF(t1, t2) | 
| #define | MIN(a, b) ((a) < (b) ? (a) : (b)) | 
| #define | MAX(a, b) ((a) > (b) ? (a) : (b)) | 
| #define | CLAMP(x, low, high) (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) | 
| #define | G_PI 3.14159265358979323846 | 
| #define | G_PI_2 1.57079632679489661923 | 
| #define | G_PI_4 0.78539816339744830962 | 
| #define | G_GINT64_FORMAT "li" | 
| #define | GINT64_PRINTTYPE long | 
| #define | IW_ARG_NO_NUMBER ((void*)G_MININT) | 
| #define | iw_error_1(a1) iw_error_x (__FUNCTION__,__LINE__,a1) | 
| #define | iw_error_2(a1, a2) iw_error_x (__FUNCTION__,__LINE__,a1,a2) | 
| #define | iw_error_3(a1, a2, a3) iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3) | 
| #define | iw_error_4(a1, a2, a3, a4) iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4) | 
| #define | iw_error_5(a1, a2, a3, a4, a5) iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5) | 
| #define | iw_error_6(a1, a2, a3, a4, a5, a6) iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5,a6) | 
| #define | iw_warning_1(a1) iw_warning_x (__FUNCTION__,__LINE__,a1) | 
| #define | iw_warning_2(a1, a2) iw_warning_x (__FUNCTION__,__LINE__,a1,a2) | 
| #define | iw_warning_3(a1, a2, a3) iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3) | 
| #define | iw_warning_4(a1, a2, a3, a4) iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4) | 
| #define | iw_warning_5(a1, a2, a3, a4, a5) iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5) | 
| #define | iw_warning_6(a1, a2, a3, a4, a5, a6) iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5,a6) | 
| #define | iw_debug_1(t, a1) | 
| #define | iw_debug_2(t, a1, a2) | 
| #define | iw_debug_3(t, a1, a2, a3) | 
| #define | iw_debug_4(t, a1, a2, a3, a4) | 
| #define | iw_debug_5(t, a1, a2, a3, a4, a5) | 
| #define | iw_debug_6(t, a1, a2, a3, a4, a5, a6) | 
| #define | iw_debug_7(t, a1, a2, a3, a4, a5, a6, a7) | 
| #define | iw_debug_8(t, a1, a2, a3, a4, a5, a6, a7, a8) | 
| #define | iw_debug_9(t, a1, a2, a3, a4, a5, a6, a7, a8, a9) | 
| #define | iw_debug_10(t, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10) | 
| #define | iw_assert_1(ex, a1) | 
| #define | iw_assert_2(ex, a1, a2) | 
| #define | iw_assert_3(ex, a1, a2, a3) | 
| #define | iw_assert_4(ex, a1, a2, a3, a4) | 
| #define | iw_assert_5(ex, a1, a2, a3, a4, a5) | 
| #define | iw_time_add_static(number, name) | 
| #define | iw_time_add_static2(number, name, number2, name2) | 
| #define | iw_time_add_static3(number, name, number2, name2, number3, name3) | 
Typedefs | |
| typedef int | BOOL | 
Functions | |
| void | iw_error (const char *str,...) | 
| void | iw_warning (const char *str,...) | 
| void | iw_error_errno (const char *str,...) | 
| void | iw_warning_errno (const char *str,...) | 
| void * | iw_malloc (size_t size, const char *err) | 
| void * | iw_malloc0 (size_t size, const char *err) | 
| void * | iw_realloc (void *ptr, size_t size, const char *err) | 
| void * | iw_malloc_align (size_t size, const char *err) | 
| void | iw_free_align (void *ptr) | 
| void | iw_string_split (char *str, int *array_len, char ***array) | 
| char | iw_parse_args (int argc, char **argv, int *nr, void **arg, const char *pattern) | 
| BOOL | iw_load_args (char *args, int argc, char **argv, int *nargc, char ***nargv) | 
| void | iw_usleep (unsigned long usec) | 
| void | iw_showtid (int level, const char *str) | 
| int | iw_time_add (const char *name) | 
| void | iw_time_set_enabled (BOOL enabled) | 
| void | iw_time_init (int nr) | 
| void | iw_time_init_all (void) | 
| void | iw_time_start (int nr) | 
| long | iw_time_stop (int nr, BOOL show) | 
| void | iw_time_show (void) | 
| void | iw_error_x (const char *proc, int line, const char *str,...) G_GNUC_PRINTF(3 | 
| void void | iw_warning_x (const char *proc, int line, const char *str,...) G_GNUC_PRINTF(3 | 
| void void void | iw_error_errno_x (const char *proc, int line, const char *str,...) G_GNUC_PRINTF(3 | 
| void void void void | iw_warning_errno_x (const char *proc, int line, const char *str,...) G_GNUC_PRINTF(3 | 
| void void void void void | iw_debug_set_level (int level) | 
Variables | |
| char * | ICEWING_NAME | 
| char * | ICEWING_VERSION | 
| #define ICEWING_NAME_D "iceWing" | 
| #define IW_TIME_MESSURE | 
Should the time measurement be performed ?
| #define __FUNCTION__ __FILE__ | 
| #define FALSE 0 | 
| #define TRUE 1 | 
| #define false FALSE | 
| #define true TRUE | 
| #define PATH_MAX 256 | 
| #define IW_TIME_DIFF | ( | t1, | |
| t2 | |||
| ) | 
Return the difference in ms between the timeval's t1 and t2
| #define MIN | ( | a, | |
| b | |||
| ) | ((a) < (b) ? (a) : (b)) | 
| #define MAX | ( | a, | |
| b | |||
| ) | ((a) > (b) ? (a) : (b)) | 
| #define CLAMP | ( | x, | |
| low, | |||
| high | |||
| ) | (((x) > (high)) ? (high) : (((x) < (low)) ? (low) : (x))) | 
| #define G_PI 3.14159265358979323846 | 
Somehow in the wrong file ...
| #define G_PI_2 1.57079632679489661923 | 
| #define G_PI_4 0.78539816339744830962 | 
| #define G_GINT64_FORMAT "li" | 
| #define GINT64_PRINTTYPE long | 
| #define IW_ARG_NO_NUMBER ((void*)G_MININT) | 
Indicator for "no number given" for optional options in parse_args()
| #define iw_error_1 | ( | a1 | ) | iw_error_x (__FUNCTION__,__LINE__,a1) | 
| #define iw_error_2 | ( | a1, | |
| a2 | |||
| ) | iw_error_x (__FUNCTION__,__LINE__,a1,a2) | 
| #define iw_error_3 | ( | a1, | |
| a2, | |||
| a3 | |||
| ) | iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3) | 
| #define iw_error_4 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4 | |||
| ) | iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4) | 
| #define iw_error_5 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4, | |||
| a5 | |||
| ) | iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5) | 
| #define iw_error_6 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6 | |||
| ) | iw_error_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5,a6) | 
| #define iw_warning_1 | ( | a1 | ) | iw_warning_x (__FUNCTION__,__LINE__,a1) | 
| #define iw_warning_2 | ( | a1, | |
| a2 | |||
| ) | iw_warning_x (__FUNCTION__,__LINE__,a1,a2) | 
| #define iw_warning_3 | ( | a1, | |
| a2, | |||
| a3 | |||
| ) | iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3) | 
| #define iw_warning_4 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4 | |||
| ) | iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4) | 
| #define iw_warning_5 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4, | |||
| a5 | |||
| ) | iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5) | 
| #define iw_warning_6 | ( | a1, | |
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6 | |||
| ) | iw_warning_x (__FUNCTION__,__LINE__,a1,a2,a3,a4,a5,a6) | 
| #define iw_debug_1 | ( | t, | |
| a1 | |||
| ) | 
| #define iw_debug_2 | ( | t, | |
| a1, | |||
| a2 | |||
| ) | 
| #define iw_debug_3 | ( | t, | |
| a1, | |||
| a2, | |||
| a3 | |||
| ) | 
| #define iw_debug_4 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4 | |||
| ) | 
| #define iw_debug_5 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5 | |||
| ) | 
| #define iw_debug_6 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6 | |||
| ) | 
| #define iw_debug_7 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6, | |||
| a7 | |||
| ) | 
| #define iw_debug_8 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6, | |||
| a7, | |||
| a8 | |||
| ) | 
| #define iw_debug_9 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6, | |||
| a7, | |||
| a8, | |||
| a9 | |||
| ) | 
| #define iw_debug_10 | ( | t, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5, | |||
| a6, | |||
| a7, | |||
| a8, | |||
| a9, | |||
| a10 | |||
| ) | 
| #define iw_assert_1 | ( | ex, | |
| a1 | |||
| ) | 
| #define iw_assert_2 | ( | ex, | |
| a1, | |||
| a2 | |||
| ) | 
| #define iw_assert_3 | ( | ex, | |
| a1, | |||
| a2, | |||
| a3 | |||
| ) | 
| #define iw_assert_4 | ( | ex, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4 | |||
| ) | 
| #define iw_assert_5 | ( | ex, | |
| a1, | |||
| a2, | |||
| a3, | |||
| a4, | |||
| a5 | |||
| ) | 
| #define iw_time_add_static | ( | number, | |
| name | |||
| ) | 
| #define iw_time_add_static2 | ( | number, | |
| name, | |||
| number2, | |||
| name2 | |||
| ) | 
| #define iw_time_add_static3 | ( | number, | |
| name, | |||
| number2, | |||
| name2, | |||
| number3, | |||
| name3 | |||
| ) | 
| typedef int BOOL | 
| void iw_error | ( | const char * | str, | 
| ... | |||
| ) | 
| void iw_warning | ( | const char * | str, | 
| ... | |||
| ) | 
| void iw_error_errno | ( | const char * | str, | 
| ... | |||
| ) | 
| void iw_warning_errno | ( | const char * | str, | 
| ... | |||
| ) | 
| void* iw_malloc | ( | size_t | size, | 
| const char * | err | ||
| ) | 
  Call malloc() / calloc() / realloc().
   If err!=NULL and memory could not be allocated, exit with
   'out of memory: "err"' by calling iw_error().
 
| void* iw_malloc0 | ( | size_t | size, | 
| const char * | err | ||
| ) | 
| void* iw_realloc | ( | void * | ptr, | 
| size_t | size, | ||
| const char * | err | ||
| ) | 
| void* iw_malloc_align | ( | size_t | size, | 
| const char * | err | ||
| ) | 
  Allocate 16 byte aligned memory. Must be freed with iw_free_align().
   If err!=NULL and memory could not be allocated, exit with
   'out of memory: "err"' by calling iw_error().
 
| void iw_free_align | ( | void * | ptr | ) | 
| void iw_string_split | ( | char * | str, | 
| int * | array_len, | ||
| char *** | array | ||
| ) | 
  Return in 'array' a NULL terminated array of strings pointing to
   the parts of 'str', which are separated by spaces. In 'str' '\0'
   are inserted. In 'array_len' the number of entries in 'array' is
   returned.
 
| char iw_parse_args | ( | int | argc, | 
| char ** | argv, | ||
| int * | nr, | ||
| void ** | arg, | ||
| const char * | pattern | ||
| ) | 
  Checks if argv[nr] can be found in pattern, the check is case
   insensitive. Increment nr afterwards. Format of pattern in EBNF:
     { "-" token ":" ch ["r"|"ro"|"i"|"io"|"f"|"fo"|"c"] " " }
     token: string without " " and without ":"
     ch  : Any character, given back if -token is found
     "r"  : Argument is required -> returned in *arg
     "i"  : Int argument is required -> returned in *arg
     "f"  : Float argument is required -> returned in *arg
     "c"  : Token can be continued in any way -> returned in *arg
     "o"  : Argument is optional
   Example: "-i:Ii -s:Sr -h:H -help:H --help:H"
   On error, print an error message on stderr and return '\0'.
 
| BOOL iw_load_args | ( | char * | args, | 
| int | argc, | ||
| char ** | argv, | ||
| int * | nargc, | ||
| char *** | nargv | ||
| ) | 
  PRIVATE: If args, split args, otherwise use argv. Check for any
   '@file', load the file, exchange '@file' with the args from the
   file, and expand any vars, commands, and wildcards. nargv is newly
   allocated.
 
| void iw_usleep | ( | unsigned long | usec | ) | 
  Wrapper for usleep() for enhanced portability (the OSF alpha
   version is really strange).
 
| void iw_showtid | ( | int | level, | 
| const char * | str | ||
| ) | 
  On linux: Show the thread ID as a debug output via gettid().
 
| int iw_time_add | ( | const char * | name | ) | 
  Add a new timer and return its number (must be passed to the other
   time_...() functions). 'name' describes the new timer.
 
| void iw_time_set_enabled | ( | BOOL | enabled | ) | 
  Enable/Disable time_start(), time_stop(), and time_show().
 
| void iw_time_init | ( | int | nr | ) | 
  Reset time measurement number nr (-> set mean value, count to 0).
 
| void iw_time_init_all | ( | void | ) | 
  Reset all timer, i.e. call iw_time_init() for all added timers.
 
| void iw_time_start | ( | int | nr | ) | 
  Start the timer nr (which was added before with iw_time_add()).
 
| long iw_time_stop | ( | int | nr, | 
| BOOL | show | ||
| ) | 
  Stop the timer number nr.
   show==TRUE: Print time and average time for number nr on stdout.
   Return the elapsed real time in ms.
 
| void iw_time_show | ( | void | ) | 
  Print average time for all registered timers on stdout, for which
   at least one time time_stop() was called.
 
| void iw_error_x | ( | const char * | proc, | 
| int | line, | ||
| const char * | str, | ||
| ... | |||
| ) | 
  Output passed arguments (including a short header) on stderr and
   terminate the program.
 
| void void iw_warning_x | ( | const char * | proc, | 
| int | line, | ||
| const char * | str, | ||
| ... | |||
| ) | 
  Output passed arguments (including a short header) on stderr.
 
| void void void iw_error_errno_x | ( | const char * | proc, | 
| int | line, | ||
| const char * | str, | ||
| ... | |||
| ) | 
  Output passed arguments (including a short header) on stderr,
   append ': 'strerror(errno) and terminate the program.
 
| void void void void iw_warning_errno_x | ( | const char * | proc, | 
| int | line, | ||
| const char * | str, | ||
| ... | |||
| ) | 
  Output passed arguments (including a short header) on stderr and
   append ': 'strerror(errno).
 
| void void void void void iw_debug_set_level | ( | int | level | ) | 
  Initialize the talklevel for following debug() calls. Debug
   messages are only given out if there level < talklevel.
 
| char* ICEWING_NAME | 
== "iceWing"
| char* ICEWING_VERSION | 
iceWing version string
 1.8.1