summaryrefslogtreecommitdiff
path: root/src/core/functions.h
blob: 01aacce4da7025ae8b79358ddc00ff9da4136461 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#include "token.h"

#include "interpret.h"
#include "../data/stack.h"
#include "../data/hash.h"

typedef struct {
   Hash *p_hash_functions;
} Functions;

Functions* functions_new();
void functions_delete(Functions *p_functions);
void functions_init(Functions *p_functions);

/* p_array_lhs / i_lhs_idx carry array-element LHS context for arr[i] = val;
 * pass NULL / 0 for plain assignment or non-assignment operators. */
void function_process(Interpret *p_interp, Token *p_token_op,
                      Token *p_token_op2, Stack *p_stack_args,
                      int i_args, Token *p_array_lhs, int i_lhs_idx);
_Bool function_is_buildin(Token *p_token_ident);
void function_process_buildin(Interpret *p_interpret,
                              Token *p_token_ident,
                              Stack *p_stack_args);
_Bool function_is_self_defined(Interpret *p_interpret);
void function_process_self_defined(Interpret *p_interpret,
                                   Token *p_token_ident);

#endif /* FUNCTIONS_H */