mirror of
https://github.com/neovim/neovim.git
synced 2025-09-12 22:38:16 +00:00
fix(ci): don't enrage the CI Gods by calling a file 'core.*'
This commit is contained in:
87
src/mpack/mpack_core.h
Normal file
87
src/mpack/mpack_core.h
Normal file
@@ -0,0 +1,87 @@
|
||||
#ifndef MPACK_CORE_H
|
||||
#define MPACK_CORE_H
|
||||
|
||||
#ifndef MPACK_API
|
||||
# define MPACK_API extern
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
#include <limits.h>
|
||||
#include <stddef.h>
|
||||
|
||||
#ifdef __GNUC__
|
||||
# define FPURE __attribute__((const))
|
||||
# define FNONULL __attribute__((nonnull))
|
||||
# define FNONULL_ARG(x) __attribute__((nonnull x))
|
||||
# define FUNUSED __attribute__((unused))
|
||||
#else
|
||||
# define FPURE
|
||||
# define FNONULL
|
||||
# define FNONULL_ARG(x)
|
||||
# define FUNUSED
|
||||
#endif
|
||||
|
||||
#if UINT_MAX == 0xffffffff
|
||||
typedef int mpack_sint32_t;
|
||||
typedef unsigned int mpack_uint32_t;
|
||||
#elif ULONG_MAX == 0xffffffff
|
||||
typedef long mpack_sint32_t;
|
||||
typedef unsigned long mpack_uint32_t;
|
||||
#else
|
||||
# error "can't find unsigned 32-bit integer type"
|
||||
#endif
|
||||
|
||||
typedef struct mpack_value_s {
|
||||
mpack_uint32_t lo, hi;
|
||||
} mpack_value_t;
|
||||
|
||||
|
||||
enum {
|
||||
MPACK_OK = 0,
|
||||
MPACK_EOF = 1,
|
||||
MPACK_ERROR = 2
|
||||
};
|
||||
|
||||
#define MPACK_MAX_TOKEN_LEN 9 /* 64-bit ints/floats plus type code */
|
||||
|
||||
typedef enum {
|
||||
MPACK_TOKEN_NIL = 1,
|
||||
MPACK_TOKEN_BOOLEAN = 2,
|
||||
MPACK_TOKEN_UINT = 3,
|
||||
MPACK_TOKEN_SINT = 4,
|
||||
MPACK_TOKEN_FLOAT = 5,
|
||||
MPACK_TOKEN_CHUNK = 6,
|
||||
MPACK_TOKEN_ARRAY = 7,
|
||||
MPACK_TOKEN_MAP = 8,
|
||||
MPACK_TOKEN_BIN = 9,
|
||||
MPACK_TOKEN_STR = 10,
|
||||
MPACK_TOKEN_EXT = 11
|
||||
} mpack_token_type_t;
|
||||
|
||||
typedef struct mpack_token_s {
|
||||
mpack_token_type_t type; /* Type of token */
|
||||
mpack_uint32_t length; /* Byte length for str/bin/ext/chunk/float/int/uint.
|
||||
Item count for array/map. */
|
||||
union {
|
||||
mpack_value_t value; /* 32-bit parts of primitives (bool,int,float) */
|
||||
const char *chunk_ptr; /* Chunk of data from str/bin/ext */
|
||||
int ext_type; /* Type field for ext tokens */
|
||||
} data;
|
||||
} mpack_token_t;
|
||||
|
||||
typedef struct mpack_tokbuf_s {
|
||||
char pending[MPACK_MAX_TOKEN_LEN];
|
||||
mpack_token_t pending_tok;
|
||||
size_t ppos, plen;
|
||||
mpack_uint32_t passthrough;
|
||||
} mpack_tokbuf_t;
|
||||
|
||||
#define MPACK_TOKBUF_INITIAL_VALUE { { 0 }, { 0, 0, { { 0, 0 } } }, 0, 0, 0 }
|
||||
|
||||
MPACK_API void mpack_tokbuf_init(mpack_tokbuf_t *tb) FUNUSED FNONULL;
|
||||
MPACK_API int mpack_read(mpack_tokbuf_t *tb, const char **b, size_t *bl,
|
||||
mpack_token_t *tok) FUNUSED FNONULL;
|
||||
MPACK_API int mpack_write(mpack_tokbuf_t *tb, char **b, size_t *bl,
|
||||
const mpack_token_t *tok) FUNUSED FNONULL;
|
||||
|
||||
#endif /* MPACK_CORE_H */
|
Reference in New Issue
Block a user