]> git.ipfire.org Git - thirdparty/bash.git/blame - arrayfunc.h
commit bash-20180921 snapshot
[thirdparty/bash.git] / arrayfunc.h
CommitLineData
f73dda09
JA
1/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */
2
6faad625 3/* Copyright (C) 2001-2010 Free Software Foundation, Inc.
f73dda09
JA
4
5 This file is part of GNU Bash, the Bourne Again SHell.
6
2e4498b3
CR
7 Bash is free software: you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
f73dda09 11
2e4498b3
CR
12 Bash is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
f73dda09
JA
16
17 You should have received a copy of the GNU General Public License
2e4498b3
CR
18 along with Bash. If not, see <http://www.gnu.org/licenses/>.
19*/
f73dda09
JA
20
21#if !defined (_ARRAYFUNC_H_)
22#define _ARRAYFUNC_H_
23
24/* Must include variables.h before including this file. */
25
26#if defined (ARRAY_VARS)
27
a57ed9e9
CR
28/* This variable means to not expand associative array subscripts more than
29 once, when performing variable expansion. */
30extern int assoc_expand_once;
31
ec157dfe
CR
32/* The analog for indexed array subscripts */
33extern int array_expand_once;
34
5f8cde23
CR
35/* Flags for array_value_internal and callers array_value/get_array_value */
36#define AV_ALLOWALL 0x001
37#define AV_QUOTED 0x002
38#define AV_USEIND 0x004
06c3a575 39#define AV_USEVAL 0x008 /* XXX - should move this */
13eae87b 40#define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */
a57ed9e9 41#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */
5f8cde23 42
f73dda09 43extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *));
fdf670ea 44extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *));
f73dda09 45
861a1900
CR
46extern char *make_array_variable_value __P((SHELL_VAR *, arrayind_t, char *, char *, int));
47
d11b8b46 48extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int));
6a8fd0ed 49extern SHELL_VAR *bind_array_element __P((SHELL_VAR *, arrayind_t, char *, int));
d11b8b46 50extern SHELL_VAR *assign_array_element __P((char *, char *, int));
f73dda09 51
a3143574
CR
52extern SHELL_VAR *bind_assoc_variable __P((SHELL_VAR *, char *, char *, char *, int));
53
f73dda09
JA
54extern SHELL_VAR *find_or_make_array_variable __P((char *, int));
55
d11b8b46
CR
56extern SHELL_VAR *assign_array_from_string __P((char *, char *, int));
57extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int));
d3ad40de 58
fdf670ea 59extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int));
d3ad40de 60extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int));
d11b8b46 61extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int));
f73dda09 62
61c476d2 63extern int unbind_array_element __P((SHELL_VAR *, char *, int));
3eb2d94a 64extern int skipsubscript __P((const char *, int, int));
fdf670ea 65
f73dda09 66extern void print_array_assignment __P((SHELL_VAR *, int));
fdf670ea 67extern void print_assoc_assignment __P((SHELL_VAR *, int));
f73dda09 68
e297b059 69extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int));
f8c5768e
CR
70extern int valid_array_reference __P((const char *, int));
71extern char *array_value __P((const char *, int, int, int *, arrayind_t *));
72extern char *get_array_value __P((const char *, int, int *, arrayind_t *));
f73dda09 73
d3a24ed2
CR
74extern char *array_keys __P((char *, int));
75
64a7a624
CR
76extern char *array_variable_name __P((const char *, int, char **, int *));
77extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *));
f73dda09 78
c31d56a7
CR
79#else
80
81#define AV_ALLOWALL 0
82#define AV_QUOTED 0
83#define AV_USEIND 0
13eae87b 84#define AV_ASSIGNRHS 0
c31d56a7 85
f73dda09
JA
86#endif
87
88#endif /* !_ARRAYFUNC_H_ */