]> git.ipfire.org Git - thirdparty/bash.git/blame - arrayfunc.h
Bash-5.0 patch 4: the wait builtin without arguments only waits for known children...
[thirdparty/bash.git] / arrayfunc.h
CommitLineData
f73dda09
JA
1/* arrayfunc.h -- declarations for miscellaneous array functions in arrayfunc.c */
2
495aee44 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
3185942a
JA
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
3185942a
JA
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
3185942a
JA
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
d233b485
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
32/* The analog for indexed array subscripts */
33extern int array_expand_once;
34
495aee44
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
a0c0a00f
CR
39#define AV_USEVAL 0x008 /* XXX - should move this */
40#define AV_ASSIGNRHS 0x010 /* no splitting, special case ${a[@]} */
d233b485
CR
41#define AV_NOEXPAND 0x020 /* don't run assoc subscripts through word expansion */
42
43/* Flags for valid_array_reference. Value 1 is reserved for skipsubscript() */
44#define VA_NOEXPAND 0x001
45#define VA_ONEWORD 0x002
495aee44 46
f73dda09 47extern SHELL_VAR *convert_var_to_array __P((SHELL_VAR *));
3185942a 48extern SHELL_VAR *convert_var_to_assoc __P((SHELL_VAR *));
f73dda09 49
ac50fbac
CR
50extern char *make_array_variable_value __P((SHELL_VAR *, arrayind_t, char *, char *, int));
51
95732b49 52extern SHELL_VAR *bind_array_variable __P((char *, arrayind_t, char *, int));
3185942a 53extern SHELL_VAR *bind_array_element __P((SHELL_VAR *, arrayind_t, char *, int));
95732b49 54extern SHELL_VAR *assign_array_element __P((char *, char *, int));
f73dda09 55
0001803f
CR
56extern SHELL_VAR *bind_assoc_variable __P((SHELL_VAR *, char *, char *, char *, int));
57
f73dda09
JA
58extern SHELL_VAR *find_or_make_array_variable __P((char *, int));
59
95732b49
JA
60extern SHELL_VAR *assign_array_from_string __P((char *, char *, int));
61extern SHELL_VAR *assign_array_var_from_word_list __P((SHELL_VAR *, WORD_LIST *, int));
0628567a 62
3185942a 63extern WORD_LIST *expand_compound_array_assignment __P((SHELL_VAR *, char *, int));
0628567a 64extern void assign_compound_array_list __P((SHELL_VAR *, WORD_LIST *, int));
95732b49 65extern SHELL_VAR *assign_array_var_from_string __P((SHELL_VAR *, char *, int));
f73dda09 66
d233b485 67extern int unbind_array_element __P((SHELL_VAR *, char *, int));
0001803f 68extern int skipsubscript __P((const char *, int, int));
3185942a 69
f73dda09 70extern void print_array_assignment __P((SHELL_VAR *, int));
3185942a 71extern void print_assoc_assignment __P((SHELL_VAR *, int));
f73dda09 72
d233b485 73extern arrayind_t array_expand_index __P((SHELL_VAR *, char *, int, int));
a0c0a00f
CR
74extern int valid_array_reference __P((const char *, int));
75extern char *array_value __P((const char *, int, int, int *, arrayind_t *));
76extern char *get_array_value __P((const char *, int, int *, arrayind_t *));
f73dda09 77
b80f6443
JA
78extern char *array_keys __P((char *, int));
79
d233b485
CR
80extern char *array_variable_name __P((const char *, int, char **, int *));
81extern SHELL_VAR *array_variable_part __P((const char *, int, char **, int *));
f73dda09 82
ac50fbac
CR
83#else
84
85#define AV_ALLOWALL 0
86#define AV_QUOTED 0
87#define AV_USEIND 0
a0c0a00f 88#define AV_ASSIGNRHS 0
ac50fbac 89
d233b485
CR
90#define VA_ONEWORD 0
91
f73dda09
JA
92#endif
93
94#endif /* !_ARRAYFUNC_H_ */