acl  3.5.3.0
acl_stack.h 文件参考
#include "acl_define.h"
#include "acl_iterator.h"
+ acl_stack.h 的引用(Include)关系图:
+ 此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

struct  ACL_STACK
 

宏定义

#define acl_stack_push   acl_stack_append
 
#define acl_stack_pop_tail   acl_stack_pop
 

类型定义

typedef struct ACL_STACK ACL_STACK
 

函数

ACL_API void acl_stack_space (ACL_STACK *s, int count)
 
ACL_API ACL_STACKacl_stack_create (int init_size)
 
ACL_API void acl_stack_clean (ACL_STACK *s, void(*free_fn)(void *))
 
ACL_API void acl_stack_destroy (ACL_STACK *s, void(*free_fn)(void *))
 
ACL_API void acl_stack_append (ACL_STACK *s, void *obj)
 
ACL_API void acl_stack_prepend (ACL_STACK *s, void *obj)
 
ACL_API void acl_stack_delete (ACL_STACK *s, int position, void(*free_fn)(void *))
 
ACL_API void acl_stack_delete_obj (ACL_STACK *s, void *obj, void(*free_fn)(void *))
 
ACL_API void * acl_stack_index (ACL_STACK *s, int position)
 
ACL_API int acl_stack_size (const ACL_STACK *s)
 
ACL_API void * acl_stack_pop (ACL_STACK *s)
 
ACL_API void * acl_stack_top (ACL_STACK *s)
 

宏定义说明

◆ acl_stack_pop_tail

#define acl_stack_pop_tail   acl_stack_pop

在文件 acl_stack.h126 行定义.

◆ acl_stack_push

#define acl_stack_push   acl_stack_append

在文件 acl_stack.h80 行定义.

类型定义说明

◆ ACL_STACK

typedef struct ACL_STACK ACL_STACK

在文件 acl_stack.h13 行定义.

函数说明

◆ acl_stack_append()

ACL_API void acl_stack_append ( ACL_STACK s,
void *  obj 
)

往栈容器尾部添加新的对象

参数
s{ACL_STACK*} 创建的栈容器对象
obj{void*}

◆ acl_stack_clean()

ACL_API void acl_stack_clean ( ACL_STACK s,
void(*)(void *)  free_fn 
)

清空栈里的对象,但不销毁栈容器对象

参数
s{ACL_STACK*} 创建的栈容器对象
free_fn{void (*)(void*)} 如果不为空,则会用此函数回调栈里的每一个对象

◆ acl_stack_create()

ACL_API ACL_STACK* acl_stack_create ( int  init_size)

创建一个栈容器对象

参数
init_size{int} 栈的初始化空间大小,必须 > 0
返回
{ACL_STACK*} 新创建的栈容器对象

◆ acl_stack_delete()

ACL_API void acl_stack_delete ( ACL_STACK s,
int  position,
void(*)(void *)  free_fn 
)

从栈容器里删除某个对象

参数
s{ACL_STACK*} 创建的栈容器对象
position{int} 栈容器的位置
free_fn{void (*)(void*)} 如果不为空,则用此函数回调被删除对象

◆ acl_stack_delete_obj()

ACL_API void acl_stack_delete_obj ( ACL_STACK s,
void *  obj,
void(*)(void *)  free_fn 
)
参数
s{ACL_STACK*} 创建的栈容器对象
obj{void*} 被删除对象的地址
free_fn{void (*)(void*)} 如果不为空,则用此函数回调被删除对象

◆ acl_stack_destroy()

ACL_API void acl_stack_destroy ( ACL_STACK s,
void(*)(void *)  free_fn 
)

清空栈容器里的对象并销毁栈容器

参数
s{ACL_STACK*} 创建的栈容器对象
free_fn{void (*)(void*)} 如果不为空,则会用此函数回调栈里的每一个对象

◆ acl_stack_index()

ACL_API void* acl_stack_index ( ACL_STACK s,
int  position 
)

返回栈容器中某个位置的对象地址

参数
s{ACL_STACK*} 创建的栈容器对象
position{int} 栈容器中的位置
返回
{void*} != NULL: ok; == NULL: error或不存在

◆ acl_stack_pop()

ACL_API void* acl_stack_pop ( ACL_STACK s)

返回栈中尾部的对象地址, 同时将该对象从栈中移除

参数
s{ACL_STACK*} 创建的栈容器对象
返回
{void*} 对象地址, == NULL 表示当前对象为空

◆ acl_stack_prepend()

ACL_API void acl_stack_prepend ( ACL_STACK s,
void *  obj 
)

往栈容器的头部添加新的对象

参数
s{ACL_STACK*} 创建的栈容器对象
obj{void*} 注:此操作的效率要比 acl_stack_append 低,因为其内容需要移动所有的对象位置

◆ acl_stack_size()

ACL_API int acl_stack_size ( const ACL_STACK s)

返回栈容器中当前的对象个数

参数
s{ACL_STACK*} 创建的栈容器对象
返回
{int} 对象个数

◆ acl_stack_space()

ACL_API void acl_stack_space ( ACL_STACK s,
int  count 
)

增加栈空间大小

参数
s{ACL_STACK*} 创建的栈容器对象
count{int} 增加的空间大小

◆ acl_stack_top()

ACL_API void* acl_stack_top ( ACL_STACK s)

返回栈中最后添加的对象地址, 但不将该对象从栈中移除

参数
s{ACL_STACK*} 创建的栈容器对象
返回
{void*} 对象地址, == NULL 表示当前对象为空