Main Page | Alphabetical List | Data Structures | Directories | File List | Data Fields

util.h

00001 #ifndef util_h
00002 #define util_h
00003 
00004 #ifdef HAVE_CONFIG_H
00005 #       include <config.h>
00006 #endif
00007 
00008 #include "lc.h"
00009         /* lc_size, MAXs */
00010 
00011 #include "no_opt.h"
00012 
00013 #include <string.h>
00014         /* memcpy, memset */
00015 
00016 #ifdef HAVE_BYTESWAP_H
00017 #       include<byteswap.h>
00018 #endif
00019 
00020 #ifndef false
00021 #       define false 0
00022 
00023 #endif
00024 #ifndef true
00025 #       define true !false
00026 
00027 #endif
00028 
00029 #if 0
00030 typedef int bool;
00035 #endif
00036 
00044 #define return_error(val)       return_val_error(val,val)
00045 
00053 #define return_success() return_error(lc_error_success)
00054 
00063 #define return_previous() return lc_errno
00064 
00072 #define return_null_error(val) do \
00073                                 { \
00074                                         lc_errno = val; \
00075                                         return NULL; \
00076                                 } while(false)
00077 
00085 #define return_void_error(val) do \
00086                                 { \
00087                                         lc_errno = val; \
00088                                         return; \
00089                                 } while(false)
00090 
00091 
00099 #define return_null_success() return_null_error(lc_error_success)
00100 
00108 #define return_void_success() return_void_error(lc_error_success)
00109 
00117 #define return_null_previous() return NULL
00118 
00122 #define return_val_previous(val) return val
00123 
00131 #define return_val_success(val) do \
00132                                 { \
00133                                         lc_errno = lc_error_success; \
00134                                         return val; \
00135                                 } while(false)
00136 
00142 #define return_val_error(val, error) do \
00143                                 { \
00144                                         lc_errno = error; \
00145                                         return val; \
00146                                 } while(false)
00147 
00148 #define test_free(alloced, ptr) do \
00149                                 { \
00150                                         if(alloced) \
00151                                                 lc_free(ptr); \
00152                                 } while(false)
00153 #define tf_return_error(alloced, ptr, val) do \
00154                                 { \
00155                                         test_free(alloced, ptr);        \
00156                                         return_error(val);      \
00157                                 } while (false)
00158 #define tf_return_null_error(alloced, ptr, val) do \
00159                                                 { \
00160                                                         test_free(alloced, ptr);        \
00161                                                         return_null_error(val); \
00162                                                 } while(false)
00163 #define tf_return_previous(alloced, ptr) do     \
00164                                                 {       \
00165                                                         test_free(alloced, ptr);        \
00166                                                         return_previous();      \
00167                                                 } while(false)
00168 #define tf_return_null_success(alloced, ptr) do \
00169                                                 {       \
00170                                                         test_free(alloced, ptr);        \
00171                                                         return_null_error(lc_error_success);    \
00172                                                 } while(false)
00173 #define tf_return_null_previous(alloced, ptr) do \
00174                                                 {       \
00175                                                         test_free(alloced, ptr);        \
00176                                                         return_null_previous(); \
00177                                                 } while(false)
00178 
00179 #if !defined(HAVE_BSWAP_64) && !defined(bswap_64)
00180 #       define bswap_64(n)      \
00181                 (       \
00182                         (((n)&0x00000000000000FFull) << 56) |   \
00183                         (((n)&0x000000000000FF00ull) << 40) |   \
00184                         (((n)&0x0000000000FF0000ull) << 24) |   \
00185                         (((n)&0x00000000FF000000ull) <<  8) |   \
00186                         (((n)&0x000000FF00000000ull) >>  8) |   \
00187                         (((n)&0x0000FF0000000000ull) >> 24) |   \
00188                         (((n)&0x00FF000000000000ull) >> 40) |   \
00189                         (((n)&0xFF00000000000000ull) >> 56)     \
00190                 )
00191 #endif
00192 
00193 #ifdef WORDS_BIGENDIAN
00194 #       define hton_64(n)       (n)
00195 #       define ntoh_64(n)       (n)
00196 #else
00197 #       define hton_64(n)       (bswap_64((n)))
00198 #       define ntoh_64(n)       (bswap_64((n)))
00199 #endif
00200 
00201 #define value_of1(var)  var
00202 #define value_of2(var)  value_of1(var)
00203 #define lc_reg_concat(a,b)      a ## b
00204 #define lc_val_concat(a,b)      lc_reg_concat(a,b)
00205 #define lc_line_var(var)        lc_val_concat(lc_val_concat(var, _), __LINE__)
00206 
00213 #if LC_SIZE_MAX > SIZE_MAX
00214 #       define lc_mem_cpy(dst, src, size)       do      \
00215                                                 {       \
00216                                                         lc_size lc_line_var(lc_mem_cpy_tmp) = (size); \
00217                                                         if(lc_line_var(lc_mem_cpy_tmp) > SIZE_MAX)      \
00218                                                                 lc_mem_cpy_huge(dst, src, lc_line_var(lc_mem_cpy_tmp)); \
00219                                                         else    \
00220                                                                 memcpy(dst, src, (size_t)(lc_line_var(lc_mem_cpy_tmp)));        \
00221                                                 } while(false)
00222 #else
00223 #       define lc_mem_cpy(dst, src, size)       memcpy(dst, src, (size_t)size)
00224 #endif
00225 
00226 #if LC_SIZE_MAX > SIZE_MAX
00227         void *lc_mem_cpy_huge(void *dst, const void *src, lc_size size);
00228 #endif
00229 void lc_reverse(void *out_arg, const void *in_arg, unsigned int len);
00230 char *lc_hex(const void *in, lc_size in_size, void *out);
00231 
00232 #endif

Generated on Wed Jan 12 17:28:55 2005 for logcrypt-0.2 by  doxygen 1.4.0