Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00035 #include <eurephia_context.h>
00036
00037 #ifndef EUREPHIA_NULLSAFE_H_
00038 #define EUREPHIA_NULLSAFE_H_
00039
00047 #define atoi_nullsafe(str) (str != NULL ? atoi(str) : 0)
00048
00049
00058 #define strdup_nullsafe(str) (str != NULL ? strdup(str) : NULL)
00059
00060
00069 #define append_str(dest, src, size) strncat(dest, src, (size - strlen_nullsafe(dest)))
00070
00071
00079 #define strlen_nullsafe(str) (str != NULL ? strlen(str) : 0)
00080
00081
00082
00083 void *_malloc_nullsafe(eurephiaCTX *, size_t, const char *, int);
00084
00094 #define malloc_nullsafe(ctx, sz) _malloc_nullsafe(ctx, sz, __FILE__, __LINE__)
00095
00096
00097 void inline _free_nullsafe(eurephiaCTX *ctx, void *ptr, const char *file, int line);
00098
00106 #define free_nullsafe(ctx, ptr) { _free_nullsafe(ctx, ptr, __FILE__, __LINE__); ptr = NULL; }
00107
00108
00118 #define defaultValue(str, defstr) (strlen_nullsafe(str) == 0 ? defstr : str)
00119
00120
00129 #define defaultIntValue(ival, defval) (ival == 0 ? defval : ival)
00130 #endif