OpenVAS Scanner  22.7.9
nasl_var.h
Go to the documentation of this file.
1 /* SPDX-FileCopyrightText: 2023 Greenbone AG
2  * SPDX-FileCopyrightText: 2002-2003 Michel Arboi
3  * SPDX-FileCopyrightText: 2002-2003 Renaud Deraison
4  *
5  * SPDX-License-Identifier: GPL-2.0-only
6  */
7 
8 #ifndef NASL_NASL_VAR_H
9 #define NASL_NASL_VAR_H
10 
11 #include "nasl_tree.h"
12 
13 enum
14 {
20 };
21 
22 #define VAR_NAME_HASH 17
23 
24 typedef struct st_nasl_string
25 {
26  unsigned char *s_val;
27  int s_siz;
29 
30 struct st_a_nasl_var;
31 
32 typedef struct st_nasl_array
33 {
34  int max_idx; /* max index - 1! */
35  struct st_a_nasl_var **num_elt; /* max_idx elements */
36  struct st_n_nasl_var **hash_elt; /* VAR_NAME_HASH elements */
38 
39 typedef struct st_a_nasl_var
40 {
41  int var_type;
42 #ifdef ALL_VARIABLES_NAMED
43  char *av_name;
44 #endif
45  union
46  {
47  nasl_string_t v_str; /* character string / data */
48  long int v_int; /* integer */
49  nasl_array v_arr; /* array */
50  } v;
51  char *string_form;
53 
54 typedef struct st_n_nasl_var
55 {
56  struct st_a_nasl_var u;
57 #ifndef ALL_VARIABLES_NAMED
58  char *var_name;
59 #else
60 #define var_name u.av_name
61 #endif
62  struct st_n_nasl_var *next_var; /* next variable with same name hash */
64 
65 typedef struct
66 {
67  nasl_array *a; /* array */
68  int i1; /* index of numbered elements */
69  int iH; /* index of hash */
70  named_nasl_var *v; /* current variable in hash */
72 
73 tree_cell *
75 
76 void
78 
79 const char *
81 
83 nasl_get_var_by_num (void *, nasl_array *, int, int);
84 
86 nasl_array_iterator (void *, tree_cell *);
87 
88 tree_cell *
90 
91 int
92 add_var_to_list (nasl_array *, int, const anon_nasl_var *);
93 
94 int
95 add_var_to_array (nasl_array *, char *, const anon_nasl_var *);
96 
97 int
99 
100 void
102 
103 tree_cell *
104 copy_ref_array (const tree_cell *);
105 
106 int
107 hash_str2 (const char *, int);
108 
109 tree_cell *
111 
112 tree_cell *
114 
115 char *
116 array2str (const nasl_array *);
117 
118 #endif
nasl_iterator::i1
int i1
Definition: nasl_var.h:68
st_a_nasl_var
Definition: nasl_var.h:40
VAR2_UNDEF
@ VAR2_UNDEF
Definition: nasl_var.h:15
st_n_nasl_var
Definition: nasl_var.h:55
st_nasl_string
Definition: nasl_var.h:25
st_nasl_array::max_idx
int max_idx
Definition: nasl_var.h:34
st_a_nasl_var::v_arr
nasl_array v_arr
Definition: nasl_var.h:49
st_nasl_array::hash_elt
struct st_n_nasl_var ** hash_elt
Definition: nasl_var.h:36
nasl_array_iterator
nasl_iterator nasl_array_iterator(void *, tree_cell *)
Definition: nasl_var.c:1169
add_var_to_list
int add_var_to_list(nasl_array *, int, const anon_nasl_var *)
Definition: nasl_var.c:1245
nasl_get_var_by_num
anon_nasl_var * nasl_get_var_by_num(void *, nasl_array *, int, int)
Definition: nasl_var.c:46
var2str
const char * var2str(anon_nasl_var *)
Definition: nasl_var.c:1065
st_n_nasl_var::var_name
char * var_name
Definition: nasl_var.h:58
st_a_nasl_var::v
union st_a_nasl_var::@7 v
st_a_nasl_var::v_str
nasl_string_t v_str
Definition: nasl_var.h:47
var2cell
tree_cell * var2cell(anon_nasl_var *)
Definition: nasl_var.c:171
VAR2_STRING
@ VAR2_STRING
Definition: nasl_var.h:17
st_nasl_string::s_siz
int s_siz
Definition: nasl_var.h:27
VAR2_DATA
@ VAR2_DATA
Definition: nasl_var.h:18
st_nasl_array
Definition: nasl_var.h:33
array_max_index
int array_max_index(nasl_array *)
Definition: nasl_var.c:1302
VAR2_INT
@ VAR2_INT
Definition: nasl_var.h:16
make_array_from_elems
tree_cell * make_array_from_elems(tree_cell *)
Definition: nasl_var.c:1323
nasl_iterator::v
named_nasl_var * v
Definition: nasl_var.h:70
st_n_nasl_var::next_var
struct st_n_nasl_var * next_var
Definition: nasl_var.h:62
nasl_iterator::iH
int iH
Definition: nasl_var.h:69
free_array
void free_array(nasl_array *)
Definition: nasl_var.c:342
named_nasl_var
struct st_n_nasl_var named_nasl_var
VAR2_ARRAY
@ VAR2_ARRAY
Definition: nasl_var.h:19
st_a_nasl_var::var_type
int var_type
Definition: nasl_var.h:41
TC
Definition: nasl_tree.h:94
nasl_string_t
struct st_nasl_string nasl_string_t
nasl_affect
tree_cell * nasl_affect(tree_cell *, tree_cell *)
Definition: nasl_var.c:700
clear_unnamed_var
void clear_unnamed_var(anon_nasl_var *)
st_a_nasl_var::string_form
char * string_form
Definition: nasl_var.h:51
nasl_iterate_array
tree_cell * nasl_iterate_array(nasl_iterator *)
Definition: nasl_var.c:1205
array2str
char * array2str(const nasl_array *)
Definition: nasl_var.c:993
nasl_iterator::a
nasl_array * a
Definition: nasl_var.h:67
nasl_array
struct st_nasl_array nasl_array
nasl_iterator
Definition: nasl_var.h:66
anon_nasl_var
struct st_a_nasl_var anon_nasl_var
copy_ref_array
tree_cell * copy_ref_array(const tree_cell *)
Definition: nasl_var.c:537
st_a_nasl_var::v_int
long int v_int
Definition: nasl_var.h:48
st_n_nasl_var::u
struct st_a_nasl_var u
Definition: nasl_var.h:56
nasl_tree.h
add_var_to_array
int add_var_to_array(nasl_array *, char *, const anon_nasl_var *)
Definition: nasl_var.c:1277
hash_str2
int hash_str2(const char *, int)
Definition: nasl_var.c:26
st_nasl_string::s_val
unsigned char * s_val
Definition: nasl_var.h:26
st_nasl_array::num_elt
struct st_a_nasl_var ** num_elt
Definition: nasl_var.h:35