Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.0 KiB
83 lines
2.0 KiB
/* |
|
** DynASM encoding engine prototypes. |
|
** Copyright (C) 2005-2012 Mike Pall. All rights reserved. |
|
** Released under the MIT license. See dynasm.lua for full copyright notice. |
|
*/ |
|
|
|
#ifndef _DASM_PROTO_H |
|
#define _DASM_PROTO_H |
|
|
|
#include <stddef.h> |
|
#include <stdarg.h> |
|
|
|
#define DASM_IDENT "DynASM 1.3.0" |
|
#define DASM_VERSION 10300 /* 1.3.0 */ |
|
|
|
#ifndef Dst_DECL |
|
#define Dst_DECL dasm_State **Dst |
|
#endif |
|
|
|
#ifndef Dst_REF |
|
#define Dst_REF (*Dst) |
|
#endif |
|
|
|
#ifndef DASM_FDEF |
|
#define DASM_FDEF extern |
|
#endif |
|
|
|
#ifndef DASM_M_GROW |
|
#define DASM_M_GROW(ctx, t, p, sz, need) \ |
|
do { \ |
|
size_t _sz = (sz), _need = (need); \ |
|
if (_sz < _need) { \ |
|
if (_sz < 16) _sz = 16; \ |
|
while (_sz < _need) _sz += _sz; \ |
|
(p) = (t *)realloc((p), _sz); \ |
|
if ((p) == NULL) exit(1); \ |
|
(sz) = _sz; \ |
|
} \ |
|
} while(0) |
|
#endif |
|
|
|
#ifndef DASM_M_FREE |
|
#define DASM_M_FREE(ctx, p, sz) free(p) |
|
#endif |
|
|
|
/* Internal DynASM encoder state. */ |
|
typedef struct dasm_State dasm_State; |
|
|
|
|
|
/* Initialize and free DynASM state. */ |
|
DASM_FDEF void dasm_init(Dst_DECL, int maxsection); |
|
DASM_FDEF void dasm_free(Dst_DECL); |
|
|
|
/* Setup global array. Must be called before dasm_setup(). */ |
|
DASM_FDEF void dasm_setupglobal(Dst_DECL, void **gl, unsigned int maxgl); |
|
|
|
/* Grow PC label array. Can be called after dasm_setup(), too. */ |
|
DASM_FDEF void dasm_growpc(Dst_DECL, unsigned int maxpc); |
|
|
|
/* Setup encoder. */ |
|
DASM_FDEF void dasm_setup(Dst_DECL, const void *actionlist); |
|
|
|
/* Feed encoder with actions. Calls are generated by pre-processor. */ |
|
DASM_FDEF void dasm_put(Dst_DECL, int start, ...); |
|
|
|
/* Link sections and return the resulting size. */ |
|
DASM_FDEF int dasm_link(Dst_DECL, size_t *szp); |
|
|
|
/* Encode sections into buffer. */ |
|
DASM_FDEF int dasm_encode(Dst_DECL, void *buffer); |
|
|
|
/* Get PC label offset. */ |
|
DASM_FDEF int dasm_getpclabel(Dst_DECL, unsigned int pc); |
|
|
|
#ifdef DASM_CHECKS |
|
/* Optional sanity checker to call between isolated encoding steps. */ |
|
DASM_FDEF int dasm_checkstep(Dst_DECL, int secmatch); |
|
#else |
|
#define dasm_checkstep(a, b) 0 |
|
#endif |
|
|
|
|
|
#endif /* _DASM_PROTO_H */
|
|
|