1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include <stdint.h>
#include <stddef.h>
#include "../include/libbase64.h"
#include "config.h"
// Function parameters for encoding functions:
#define BASE64_ENC_PARAMS \
( struct base64_state *state \
, const char *src \
, size_t srclen \
, char *out \
, size_t *outlen \
)
// Function parameters for decoding functions:
#define BASE64_DEC_PARAMS \
( struct base64_state *state \
, const char *src \
, size_t srclen \
, char *out \
, size_t *outlen \
)
// Function signature for encoding functions:
#define BASE64_ENC_FUNCTION(arch) \
void \
base64_stream_encode_ ## arch \
BASE64_ENC_PARAMS
// Function signature for decoding functions:
#define BASE64_DEC_FUNCTION(arch) \
int \
base64_stream_decode_ ## arch \
BASE64_DEC_PARAMS
// Cast away unused variable, silence compiler:
#define UNUSED(x) ((void)(x))
// Stub function when encoder arch unsupported:
#define BASE64_ENC_STUB \
UNUSED(state); \
UNUSED(src); \
UNUSED(srclen); \
UNUSED(out); \
\
*outlen = 0;
// Stub function when decoder arch unsupported:
#define BASE64_DEC_STUB \
UNUSED(state); \
UNUSED(src); \
UNUSED(srclen); \
UNUSED(out); \
UNUSED(outlen); \
\
return -1;
struct codec
{
void (* enc) BASE64_ENC_PARAMS;
int (* dec) BASE64_DEC_PARAMS;
};
extern void codec_choose (struct codec *, int flags);
|