Newer
Older
/*
** func.h for 42sh
**
** Made by seblu
** Login <seblu@epita.fr>
**
** Started on Tue Nov 14 14:52:22 2006 seblu
*/
#ifndef FUNC_H_
# define FUNC_H_
# include <assert.h>
# include "../ast/ast.h"
typedef struct func_item
{
char *name;
s_ast_node *body;
} s_func_item;
typedef struct func
{
s_func_item *table;
size_t count;
size_t size;
} s_func;
/*!
** Init a function structure.
**
** @return a malloced func structure
*/
s_func *func_init(void);
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/*!
** Return if @var name is a function.
**
** @param func func struct
** @param name function name
**
** @return boolean existance
*/
int is_a_function(s_func *func, const char *name);
/*!
** Add a function. @var name and @var body are not copied.
** Not free/modify it after adding function.
** Return a boolean which explain if function @var name
** has been deleted before insertion.
**
** @param func func struct
** @param name func name
** @param body func body
**
** @return an boolean already exist function information
*/
int func_add(s_func *func, char *name, s_ast_node *body);
/*!
** Delete a function and destroy is AST.
**
** @param func func struct
** @param name func name to deleted
**
** @return Boolean delete success
*/
int func_del(s_func *func, const char *name);
/*!
** Return the function body of a function.
**
** @param func func struct
** @param name func name
**
** @return ast node to corresponding to the function
*/
s_ast_node *func_get(s_func *func, const char *name);