OpenVAS Libraries  8.0.3
nasl_var.h
Go to the documentation of this file.
1 /* Nessus Attack Scripting Language
2  *
3  * Copyright (C) 2002 - 2003 Michel Arboi and Renaud Deraison
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License version 2,
7  * 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #ifndef NASL_VAR_H_INCLUDED
20 #define NASL_VAR_H_INCLUDED
21 
22 enum
23 {
29 };
30 
31 #define VAR_NAME_HASH 17
32 
33 typedef struct st_nasl_string
34 {
35  unsigned char *s_val;
36  int s_siz;
38 
39 struct st_a_nasl_var;
40 
41 typedef struct st_nasl_array
42 {
43  int max_idx; /* max index - 1! */
44  struct st_a_nasl_var **num_elt; /* max_idx elements */
45  struct st_n_nasl_var **hash_elt; /* VAR_NAME_HASH elements */
46 } nasl_array;
47 
48 #if NASL_DEBUG > 0
49 #define ALL_VARIABLES_NAMED
50 #endif
51 
52 typedef struct st_a_nasl_var
53 {
54  int var_type;
55 #ifdef ALL_VARIABLES_NAMED
56  char *av_name;
57 #endif
58  union
59  {
60  nasl_string_t v_str; /* character string / data */
61  int v_int; /* integer */
62  nasl_array v_arr; /* array */
63  } v;
65 
66 typedef struct st_n_nasl_var
67 {
68  struct st_a_nasl_var u;
69 #ifndef ALL_VARIABLES_NAMED
70  char *var_name;
71 #else
72 #define var_name u.av_name
73 #endif
74  struct st_n_nasl_var *next_var; /* next variable with same name hash */
76 
77 typedef struct
78 {
79  nasl_array *a; /* array */
80  int i1; /* index of numbered elements */
81  int iH; /* index of hash */
82  named_nasl_var *v; /* current variable in hash */
84 
86 
88 const char *var2str (const anon_nasl_var *);
89 
91 
94 int add_var_to_list (nasl_array *, int, const anon_nasl_var *);
95 int add_var_to_array (nasl_array *, char *, const anon_nasl_var *);
97 void free_array (nasl_array *);
98 
100 int hash_str2 (const char *, int);
102 
104 const char *array2str (const nasl_array *);
105 
106 
107 
108 #endif
Definition: nasl_var.h:25
struct st_n_nasl_var * next_var
Definition: nasl_var.h:74
char * var_name
Definition: nasl_var.h:70
Definition: nasl_var.h:66
void clear_unnamed_var(anon_nasl_var *)
Definition: nasl_var.h:27
const char * var2str(const anon_nasl_var *)
Definition: nasl_var.c:1227
union st_a_nasl_var::@9 v
tree_cell * make_array_from_elems(tree_cell *)
Definition: nasl_var.c:1516
nasl_iterator nasl_array_iterator(tree_cell *)
Definition: nasl_var.c:1367
named_nasl_var * v
Definition: nasl_var.h:82
struct st_a_nasl_var u
Definition: nasl_var.h:68
Definition: nasl_var.h:52
tree_cell * var2cell(anon_nasl_var *)
Definition: nasl_var.c:195
struct st_nasl_array nasl_array
nasl_string_t v_str
Definition: nasl_var.h:60
void free_array(nasl_array *)
Definition: nasl_var.c:362
nasl_array v_arr
Definition: nasl_var.h:62
int hash_str2(const char *, int)
Definition: nasl_var.c:51
int v_int
Definition: nasl_var.h:61
Definition: nasl_var.h:28
Definition: nasl_var.h:24
int var_type
Definition: nasl_var.h:54
tree_cell * copy_ref_array(const tree_cell *)
Definition: nasl_var.c:562
int s_siz
Definition: nasl_var.h:36
int iH
Definition: nasl_var.h:81
struct st_n_nasl_var named_nasl_var
Definition: nasl_tree.h:105
struct st_a_nasl_var ** num_elt
Definition: nasl_var.h:44
int i1
Definition: nasl_var.h:80
int array_max_index(nasl_array *)
Definition: nasl_var.c:1495
int max_idx
Definition: nasl_var.h:43
Definition: nasl_var.h:33
nasl_array * a
Definition: nasl_var.h:79
struct st_n_nasl_var ** hash_elt
Definition: nasl_var.h:45
struct st_nasl_string nasl_string_t
int add_var_to_list(nasl_array *, int, const anon_nasl_var *)
Definition: nasl_var.c:1441
Definition: nasl_var.h:77
unsigned char * s_val
Definition: nasl_var.h:35
tree_cell * nasl_affect(tree_cell *, tree_cell *)
Definition: nasl_var.c:778
struct st_a_nasl_var anon_nasl_var
Definition: nasl_var.h:41
tree_cell * nasl_iterate_array(nasl_iterator *)
Definition: nasl_var.c:1401
const char * array2str(const nasl_array *)
Definition: nasl_var.c:1115
Definition: nasl_var.h:26
int add_var_to_array(nasl_array *, char *, const anon_nasl_var *)
Definition: nasl_var.c:1470
anon_nasl_var * nasl_get_var_by_num(nasl_array *, int, int)
Definition: nasl_var.c:71