OpenVAS Scanner  6.0.1
nasl_var.h
Go to the documentation of this file.
1 /* Based on work Copyright (C) 2002 - 2003 Michel Arboi and Renaud Deraison
2  *
3  * SPDX-License-Identifier: GPL-2.0-only
4  *
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU General Public License
7  * version 2 as published by the Free Software Foundation.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #ifndef NASL_VAR_H_INCLUDED
20 #define NASL_VAR_H_INCLUDED
21 
22 #include "nasl_tree.h"
23 
24 enum
25 {
31 };
32 
33 #define VAR_NAME_HASH 17
34 
35 typedef struct st_nasl_string
36 {
37  unsigned char *s_val;
38  int s_siz;
40 
41 struct st_a_nasl_var;
42 
43 typedef struct st_nasl_array
44 {
45  int max_idx; /* max index - 1! */
46  struct st_a_nasl_var **num_elt; /* max_idx elements */
47  struct st_n_nasl_var **hash_elt; /* VAR_NAME_HASH elements */
48 } nasl_array;
49 
50 typedef struct st_a_nasl_var
51 {
52  int var_type;
53 #ifdef ALL_VARIABLES_NAMED
54  char *av_name;
55 #endif
56  union
57  {
58  nasl_string_t v_str; /* character string / data */
59  long int v_int; /* integer */
60  nasl_array v_arr; /* array */
61  } v;
62  char *string_form;
64 
65 typedef struct st_n_nasl_var
66 {
67  struct st_a_nasl_var u;
68 #ifndef ALL_VARIABLES_NAMED
69  char *var_name;
70 #else
71 #define var_name u.av_name
72 #endif
73  struct st_n_nasl_var *next_var; /* next variable with same name hash */
75 
76 typedef struct
77 {
78  nasl_array *a; /* array */
79  int i1; /* index of numbered elements */
80  int iH; /* index of hash */
81  named_nasl_var *v; /* current variable in hash */
83 
84 tree_cell *
86 
87 void
89 
90 const char *
92 
94 nasl_get_var_by_num (void *, nasl_array *, int, int);
95 
97 nasl_array_iterator (void *, tree_cell *);
98 
99 tree_cell *
101 
102 int
103 add_var_to_list (nasl_array *, int, const anon_nasl_var *);
104 
105 int
106 add_var_to_array (nasl_array *, char *, const anon_nasl_var *);
107 
108 int
110 
111 void
113 
114 tree_cell *
115 copy_ref_array (const tree_cell *);
116 
117 int
118 hash_str2 (const char *, int);
119 
120 tree_cell *
122 
123 tree_cell *
125 
126 char *
127 array2str (const nasl_array *);
128 
129 #endif
struct st_n_nasl_var * next_var
Definition: nasl_var.h:73
Definition: nasl_var.h:30
Definition: nasl_var.h:27
char * var_name
Definition: nasl_var.h:69
Definition: nasl_var.h:65
void clear_unnamed_var(anon_nasl_var *)
tree_cell * make_array_from_elems(tree_cell *)
Definition: nasl_var.c:1336
named_nasl_var * v
Definition: nasl_var.h:81
struct st_a_nasl_var u
Definition: nasl_var.h:67
anon_nasl_var * nasl_get_var_by_num(void *, nasl_array *, int, int)
Definition: nasl_var.c:58
Definition: nasl_var.h:50
tree_cell * var2cell(anon_nasl_var *)
Definition: nasl_var.c:183
struct st_nasl_array nasl_array
nasl_string_t v_str
Definition: nasl_var.h:58
void free_array(nasl_array *)
Definition: nasl_var.c:356
nasl_array v_arr
Definition: nasl_var.h:60
int hash_str2(const char *, int)
Definition: nasl_var.c:38
Definition: nasl_var.h:26
nasl_iterator nasl_array_iterator(void *, tree_cell *)
Definition: nasl_var.c:1182
int var_type
Definition: nasl_var.h:52
tree_cell * copy_ref_array(const tree_cell *)
Definition: nasl_var.c:551
int s_siz
Definition: nasl_var.h:38
int iH
Definition: nasl_var.h:80
struct st_n_nasl_var named_nasl_var
Definition: nasl_var.h:29
Definition: nasl_tree.h:104
struct st_a_nasl_var ** num_elt
Definition: nasl_var.h:46
int i1
Definition: nasl_var.h:79
int array_max_index(nasl_array *)
Definition: nasl_var.c:1315
int max_idx
Definition: nasl_var.h:45
char * string_form
Definition: nasl_var.h:62
Definition: nasl_var.h:28
Definition: nasl_var.h:35
union st_a_nasl_var::@4 v
nasl_array * a
Definition: nasl_var.h:78
struct st_n_nasl_var ** hash_elt
Definition: nasl_var.h:47
struct st_nasl_string nasl_string_t
int add_var_to_list(nasl_array *, int, const anon_nasl_var *)
Definition: nasl_var.c:1258
Definition: nasl_var.h:76
unsigned char * s_val
Definition: nasl_var.h:37
const char * var2str(anon_nasl_var *)
Definition: nasl_var.c:1080
tree_cell * nasl_affect(tree_cell *, tree_cell *)
Definition: nasl_var.c:715
struct st_a_nasl_var anon_nasl_var
Definition: nasl_var.h:43
tree_cell * nasl_iterate_array(nasl_iterator *)
Definition: nasl_var.c:1218
char * array2str(const nasl_array *)
Definition: nasl_var.c:1008
long int v_int
Definition: nasl_var.h:59
int add_var_to_array(nasl_array *, char *, const anon_nasl_var *)
Definition: nasl_var.c:1290