MessagePack for C
Loading...
Searching...
No Matches
unpack_template.h File Reference

Go to the source code of this file.

Macros

#define msgpack_unpack_struct_decl(name)
 
#define USE_CASE_RANGE
 
#define push_simple_value(func)
 
#define push_fixed_value(func, arg)
 
#define push_variable_value(func, base, pos, len)
 
#define again_fixed_trail(_cs, trail_len)
 
#define again_fixed_trail_if_zero(_cs, trail_len, ifzero)
 
#define start_container(func, count_, ct_)
 
#define NEXT_CS(p)
 
#define SWITCH_RANGE_BEGIN   switch(*p) {
 
#define SWITCH_RANGE(FROM, TO)
 
#define SWITCH_RANGE_DEFAULT   default:
 
#define SWITCH_RANGE_END   }
 

Functions

 msgpack_unpack_struct_decl (_stack)
 
 msgpack_unpack_struct_decl (_context)
 
 msgpack_unpack_func (void, _init)(msgpack_unpack_struct(_context) *ctx)
 
 msgpack_unpack_func (msgpack_unpack_object, _data)(msgpack_unpack_struct(_context) *ctx)
 
 msgpack_unpack_func (int, _execute)(msgpack_unpack_struct(_context) *ctx
 
 msgpack_unpack_struct (_stack) *stack = NULL
 
 if (p==pe)
 
 switch (c->ct)
 
 while (p !=pe)
 

Variables

const char * data
 
const char size_t len
 
const char size_t size_t * off
 
const unsigned char *const pe = (unsigned char*)data + len
 
const void * n = NULL
 
unsigned int trail = ctx->trail
 
unsigned int cs = ctx->cs
 
unsigned int top = ctx->top
 
msgpack_unpack_user * user = &ctx->user
 
msgpack_unpack_object obj
 
int ret = 1
 
 do
 
_header_again __pad0__
 
 p
 
goto _out
 
_finish __pad1__
 
goto _end
 
_failed __pad2__
 
_out __pad3__
 
_end __pad4__
 

Macro Definition Documentation

◆ again_fixed_trail

#define again_fixed_trail ( _cs,
trail_len )
Value:
trail = trail_len; \
cs = _cs; \
goto _fixed_trail_again
unsigned int cs
Definition unpack_template.h:103
unsigned int trail
Definition unpack_template.h:102

◆ again_fixed_trail_if_zero

#define again_fixed_trail_if_zero ( _cs,
trail_len,
ifzero )
Value:
trail = trail_len; \
if(trail == 0) { goto ifzero; } \
cs = _cs; \
goto _fixed_trail_again

◆ msgpack_unpack_struct_decl

#define msgpack_unpack_struct_decl ( name)
Value:
msgpack_unpack_struct(_stack) *stack

◆ NEXT_CS

#define NEXT_CS ( p)
Value:
((unsigned int)*p & 0x1f)
p
Definition unpack_template.h:423

◆ push_fixed_value

#define push_fixed_value ( func,
arg )
Value:
ret = msgpack_unpack_callback(func)(user, arg, &obj); \
if(ret < 0) { goto _failed; } \
goto _push
int ret
Definition unpack_template.h:114
msgpack_unpack_object obj
Definition unpack_template.h:111
msgpack_unpack_user * user
Definition unpack_template.h:109

◆ push_simple_value

#define push_simple_value ( func)
Value:
ret = msgpack_unpack_callback(func)(user, &obj); \
if(ret < 0) { goto _failed; } \
goto _push

◆ push_variable_value

#define push_variable_value ( func,
base,
pos,
len )
Value:
ret = msgpack_unpack_callback(func)(user, \
(const char*)base, (const char*)pos, len, &obj); \
if(ret < 0) { goto _failed; } \
goto _push
const char size_t len
Definition unpack_template.h:94

◆ start_container

#define start_container ( func,
count_,
ct_ )
Value:
goto _failed; \
} /* FIXME */ \
ret = msgpack_unpack_callback(func)(user, count_, &stack[top].obj); \
if(ret < 0) { goto _failed; } \
if((count_) == 0) { obj = stack[top].obj; goto _push; } \
stack[top].ct = ct_; \
stack[top].count = count_; \
++top; \
goto _header_again
@ MSGPACK_UNPACK_NOMEM_ERROR
Definition unpack.h:38
#define MSGPACK_EMBED_STACK_SIZE
Definition unpack_define.h:25
unsigned int top
Definition unpack_template.h:104

◆ SWITCH_RANGE

#define SWITCH_RANGE ( FROM,
TO )
Value:
case FROM ... TO:

◆ SWITCH_RANGE_BEGIN

#define SWITCH_RANGE_BEGIN   switch(*p) {

◆ SWITCH_RANGE_DEFAULT

#define SWITCH_RANGE_DEFAULT   default:

◆ SWITCH_RANGE_END

#define SWITCH_RANGE_END   }

◆ USE_CASE_RANGE

#define USE_CASE_RANGE

Function Documentation

◆ if()

if ( p = pe)

References _out.

◆ msgpack_unpack_func() [1/3]

msgpack_unpack_func ( int ,
_execute  )

◆ msgpack_unpack_func() [2/3]

msgpack_unpack_func ( msgpack_unpack_object ,
_data  )

◆ msgpack_unpack_func() [3/3]

msgpack_unpack_func ( void ,
_init  )

References MSGPACK_CS_HEADER.

◆ msgpack_unpack_struct()

msgpack_unpack_struct ( _stack ) = NULL

◆ msgpack_unpack_struct_decl() [1/2]

msgpack_unpack_struct_decl ( _context )

◆ msgpack_unpack_struct_decl() [2/2]

msgpack_unpack_struct_decl ( _stack )

References obj.

◆ switch()

◆ while()

while ( p ! = pe)

Variable Documentation

◆ __pad0__

_header_again __pad0__

◆ __pad1__

_finish __pad1__

◆ __pad2__

_failed __pad2__

◆ __pad3__

_out __pad3__

◆ __pad4__

_end __pad4__

◆ _end

goto _end

◆ _out

goto _out

Referenced by if().

◆ cs

unsigned int cs = ctx->cs

◆ data

const char* data

◆ do

do

◆ len

const char size_t len

◆ n

const void* n = NULL

◆ obj

msgpack_unpack_object obj

◆ off

* off
Initial value:
{
assert(len >= *off)
const char size_t size_t * off
Definition unpack_template.h:95

◆ p

p

◆ pe

const unsigned char* const pe = (unsigned char*)data + len

◆ ret

return ret = 1

Referenced by switch().

◆ top

ctx top = ctx->top

◆ trail

ctx trail = ctx->trail

◆ user

msgpack_unpack_user* user = &ctx->user