1 Star 0 Fork 37

gaap_yin / Exjson

forked from Josin / Exjson 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
stack.h 1.73 KB
一键复制 编辑 原始数据 按行查看 历史
liqiongfan 提交于 2019-05-11 12:07 . Fix memory leak
/**
* File: stack.h for project Exjson
* Email: xeapplee@gmail.com
* website: https://www.supjos.cn
* Author: Josin
*/
#ifndef EXJSON_STACK_H
#define EXJSON_STACK_H
#include <stdlib.h>
#include <string.h>
#include <assert.h>
typedef void (*_destructor_stack_func_)(void *data);
typedef struct _STACK_V
{
void *data;
unsigned char tag;
unsigned char memory_free; /* 1: not free */
struct _STACK_V *prev;
struct _STACK_V *next;
} E_STACK_V;
#define SV_INT 2
#define SV_DOUBLE 3
#define SV_STRING 4
#define SV_ARRAY 5
#define SV_OBJECT 6
#define SV_PTR 7
#define SV_DATA(stack_v) (stack_v).data
#define SV_DATA_P(stack_v) SV_DATA(*(stack_v))
#define SV_TAG(stack_v) (stack_v).tag
#define SV_TAG_P(stack_v) SV_TAG(*(stack_v))
#define SV_PREV(stack_v) (stack_v).prev
#define SV_PREV_P(stack_v) SV_PREV(*(stack_v))
#define SV_NEXT(stack_v) (stack_v).next
#define SV_NEXT_P(stack_v) SV_NEXT(*(stack_v))
#define SV_MEMORY_FREE(stack_v) (stack_v).memory_free
#define SV_MEMORY_FREE_P(stack_v) SV_MEMORY_FREE(*(stack_v))
typedef struct _STACK
{
struct _STACK_V *head;
_destructor_stack_func_ destructor_stack_func_;
} E_STACK;
#define ST_HEAD(stack) (stack).head
#define ST_HEAD_P(stack) ST_HEAD(*(stack))
#define ST_FUNC(stack) (stack).destructor_stack_func_
#define ST_FUNC_P(stack) ST_FUNC(*stack)
E_STACK *
INIT_STACK();
E_STACK_V *
INIT_STACK_V();
E_STACK_V *
pop(E_STACK *);
int push(E_STACK *, void *data, size_t size);
int push_int(E_STACK *, int val);
int push_int_tag(E_STACK *, int val, unsigned char tag);
int push_double(E_STACK *, double val);
int push_string(E_STACK *, char *str, int _re_alloc_);
void destroy_stack(E_STACK *);
void destroy_stack2(E_STACK *stack);
#endif /* EXJSON_STACK_H */
C
1
https://gitee.com/gaat_yin/Exjson.git
git@gitee.com:gaat_yin/Exjson.git
gaat_yin
Exjson
Exjson
master

搜索帮助