00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00049 #ifndef B64_INCL_B64_H_B64
00050 #define B64_INCL_B64_H_B64
00051
00052
00053
00054
00055
00056 #ifndef B64_DOCUMENTATION_SKIP_SECTION
00057 # define B64_VER_B64_H_B64_MAJOR 1
00058 # define B64_VER_B64_H_B64_MINOR 5
00059 # define B64_VER_B64_H_B64_REVISION 4
00060 # define B64_VER_B64_H_B64_EDIT 28
00061 #endif
00062
00079 #ifndef B64_DOCUMENTATION_SKIP_SECTION
00080 # define B64_VER_1_0_1 0x01000100
00081 # define B64_VER_1_0_2 0x01000200
00082 # define B64_VER_1_0_3 0x01000300
00083 # define B64_VER_1_1_1 0x01010100
00084 # define B64_VER_1_1_2 0x01010200
00085 # define B64_VER_1_1_3 0x01010300
00086 # define B64_VER_1_2_1 0x01020100
00087 # define B64_VER_1_2_2 0x01020200
00088 # define B64_VER_1_2_3 0x01020300
00089 # define B64_VER_1_2_4 0x01020400
00090 # define B64_VER_1_2_5 0x01020500
00091 # define B64_VER_1_2_6 0x01020600
00092 # define B64_VER_1_2_7 0x01020700
00093 # define B64_VER_1_3_1 0x010301ff
00094 # define B64_VER_1_3_2 0x010302ff
00095 # define B64_VER_1_3_3 0x010303ff
00096 # define B64_VER_1_3_4 0x010304ff
00097
00098 # define B64_VER B64_VER_1_3_4
00099 #else
00100 # define B64_VER 0x010304ff
00101 #endif
00102
00103 #define B64_VER_MAJOR 1
00104 #define B64_VER_MINOR 3
00105 #define B64_VER_REVISION 4
00106
00107
00108
00109
00110
00111 #include <stddef.h>
00112
00113
00114
00115
00116
00117 #if !defined(B64_NO_NAMESPACE) && \
00118 !defined(__cplusplus)
00119 # define B64_NO_NAMESPACE
00120 #endif
00121
00122 #ifdef B64_NAMESPACE
00123 # undef B64_NAMESPACE
00124 #endif
00125
00126 #ifdef B64_NAMESPACE_QUALIFIER
00127 # undef B64_NAMESPACE_QUALIFIER
00128 #endif
00129
00130
00131 #ifndef B64_NO_NAMESPACE
00132
00133 # ifdef B64_CUSTOM_NAMESPACE
00134 # define B64_NAMESPACE B64_CUSTOM_NAMESPACE
00135 # else
00136 # define B64_NAMESPACE b64
00137 # endif
00138
00139 # if defined(B64_CUSTOM_NAMESPACE) && \
00140 defined(B64_CUSTOM_NAMESPACE_QUALIFIER)
00141 # define B64_NAMESPACE_QUALIFIER B64_CUSTOM_NAMESPACE_QUALIFIER
00142 # else
00143 # define B64_NAMESPACE_QUALIFIER ::B64_NAMESPACE
00144 # endif
00145
00146
00155 namespace B64_NAMESPACE
00156 {
00157 #endif
00158
00159
00160
00161
00162
00165 enum B64_RC
00166 {
00167 B64_RC_OK = 0
00168 , B64_RC_INSUFFICIENT_BUFFER = 1
00169 , B64_RC_TRUNCATED_INPUT = 2
00170 , B64_RC_DATA_ERROR = 3
00171 #ifndef B64_DOCUMENTATION_SKIP_SECTION
00172 , B64_max_RC_value
00173 #endif
00174 };
00175
00176 #ifndef __cplusplus
00177 typedef enum B64_RC B64_RC;
00178 #endif
00179
00182 enum B64_FLAGS
00183 {
00184 B64_F_LINE_LEN_USE_PARAM = 0x0000
00185 , B64_F_LINE_LEN_INFINITE = 0x0001
00186 , B64_F_LINE_LEN_64 = 0x0002
00187 , B64_F_LINE_LEN_76 = 0x0003
00188 , B64_F_LINE_LEN_MASK = 0x000f
00189 , B64_F_STOP_ON_NOTHING = 0x0000
00190 , B64_F_STOP_ON_UNKNOWN_CHAR = 0x0100
00191 , B64_F_STOP_ON_UNEXPECTED_WS = 0x0200
00192 , B64_F_STOP_ON_BAD_CHAR = 0x0300
00193 };
00194
00195 #ifndef __cplusplus
00196 typedef enum B64_FLAGS B64_FLAGS;
00197 #endif
00198
00199
00200
00201
00202
00203 #ifdef __cplusplus
00204 extern "C" {
00205 #endif
00206
00230 size_t b64_encode(void const *src, size_t srcSize, char *dest, size_t destLen);
00231
00260 size_t b64_encode2( void const *src
00261 , size_t srcSize
00262 , char *dest
00263 , size_t destLen
00264 , unsigned flags
00265 , int lineLen
00266 , B64_RC *rc );
00267
00301 size_t b64_decode(char const *src, size_t srcLen, void *dest, size_t destSize);
00302
00343 size_t b64_decode2( char const *src
00344 , size_t srcLen
00345 , void *dest
00346 , size_t destSize
00347 , unsigned flags
00348 , char const **badChar
00349 , B64_RC *rc );
00350
00351
00356 char const *b64_getErrorString(B64_RC code);
00357
00364 size_t b64_getErrorStringLength(B64_RC code);
00365
00366
00367 #ifdef __cplusplus
00368 }
00369 #endif
00370
00371
00372
00373
00374
00375 #ifndef B64_NO_NAMESPACE
00376 }
00377
00378 # ifndef B64_DOCUMENTATION_SKIP_SECTION
00379
00380 namespace stlsoft
00381 {
00382
00383 inline char const *c_str_data_a( B64_NAMESPACE_QUALIFIER::B64_RC code)
00384 {
00385 return B64_NAMESPACE_QUALIFIER::b64_getErrorString(code);
00386 }
00387 inline char const *c_str_data( B64_NAMESPACE_QUALIFIER::B64_RC code)
00388 {
00389 return B64_NAMESPACE_QUALIFIER::b64_getErrorString(code);
00390 }
00391
00392 inline size_t c_str_len_a( B64_NAMESPACE_QUALIFIER::B64_RC code)
00393 {
00394 return B64_NAMESPACE_QUALIFIER::b64_getErrorStringLength(code);
00395 }
00396 inline size_t c_str_len( B64_NAMESPACE_QUALIFIER::B64_RC code)
00397 {
00398 return B64_NAMESPACE_QUALIFIER::b64_getErrorStringLength(code);
00399 }
00400
00401 inline char const *c_str_ptr_a( B64_NAMESPACE_QUALIFIER::B64_RC code)
00402 {
00403 return B64_NAMESPACE_QUALIFIER::b64_getErrorString(code);
00404 }
00405 inline char const *c_str_ptr( B64_NAMESPACE_QUALIFIER::B64_RC code)
00406 {
00407 return B64_NAMESPACE_QUALIFIER::b64_getErrorString(code);
00408 }
00409
00410 }
00411
00412 # endif
00413
00414 #endif
00415
00416
00417
00418 #endif
00419
00420