94 enum { KEYWORD_LENGTH=256 };
100 ip_string_list_t* table_keywords;
101 ip_string_list_t* current_table_keyword;
102 ip_keyword_tree_t* table_sub_tree;
103 int table_row_number;
104 int table_array_depth;
105 intlist_t *karray_indices;
106 ip_keyword_tree_t *sub_tree;
111 ip_cwk_stack_t *cwkstack;
117 char lastkeyword[KEYWORD_LENGTH];
121 std::ostream* ip_out;
122 ip_keyword_tree_t* ip_tree;
123 ip_keyword_tree_list_t* ip_cwk;
127 void ip_push_table_col(
char*);
128 void ip_next_table_entry();
129 char* dup_string(
const char*);
130 ip_keyword_tree_t* ip_get_variable_kt(
char*);
131 char* ip_get_variable_value(
char*);
132 void ip_internal_values();
133 void ip_push_keyword(
char*);
134 void ip_push_keyclass(
char*,
char*,ip_string_list_t*);
135 void ip_pop_keyword();
136 void ip_begin_table(ip_string_list_t*);
137 void ip_done_table();
138 ip_string_list_t* ip_add_string_list(ip_string_list_t*,
char*);
139 ip_string_list_t* ip_string_to_string_list(
char*);
140 void ip_assign_variable(
char*);
141 double ip_get_variable_double(
char*);
142 char* ip_double_to_string(
double);
143 void ip_assign_value(
char*value);
144 void ip_start_karray();
145 void ip_init_karray();
146 void ip_incr_karray();
147 void ip_lastkeyword(
const char*);
148 void ip_lastkeywordtree(ip_keyword_tree_t*);
149 void ip_lastkeyword_(ip_keyword_tree_t*);
150 ip_keyword_tree_t* ip_alloc_keyword_tree();
151 void ip_free_keyword_tree(ip_keyword_tree_t*);
152 void ip_cwk_add_kt(ip_keyword_tree_t*);
153 ip_keyword_tree_t* ip_cwk_descend_tree(
const char*);
154 ip_keyword_tree_t* ip_descend_tree(ip_keyword_tree_t*,
const char*);
155 char* ip_key_value(
const char*);
156 void free_keyword_tree_list(ip_keyword_tree_list_t*);
157 ip_keyword_tree_list_t* splice_keyword_tree_list(ip_keyword_tree_t*,
158 ip_keyword_tree_list_t*);
159 void ip_cwk_karray_add_v(
int,
int*);
160 void ip_cwk_karray_add(
int,...);
161 ip_keyword_tree_t* ip_karray_descend_v(ip_keyword_tree_t*,
int,
int*);
162 ip_keyword_tree_t* ip_karray_descend(ip_keyword_tree_t*,
int,...);
163 void print_tree_(std::ostream&,ip_keyword_tree_t*);
164 int ip_special_characters(
char*);
165 char* ip_append_keystrings(
char*,
char*);
166 void ip_pop_karray();
167 void ip_initialize(std::istream&,std::ostream&);
168 void ip_append(std::istream&,std::ostream&);
169 char* get_truename(ip_keyword_tree_t*kt);
173 IPV2FlexLexer *lexer;
175 int ylex() {
return lexer->yylex(); }
177 void yerror(
const char* s);
182 static int have_global();
183 static void set_global(IPV2*);
184 static IPV2* global();
186 void read(std::istream&,std::ostream&,
const char *filename=0);
187 void append_from_input(
const char*,std::ostream&);
189 const char* error_message(IPV2::Status);
190 void error(
const char*);
191 void warn(
const char*);
194 void cwk_add(
const char*);
197 IPV2::Status boolean(
const char*,
int*,
int,...);
198 IPV2::Status boolean_v(
const char*,
int*,
int,
int*);
199 int exist(
const char*,
int,...);
200 int exist_v(
const char*,
int,
int*);
201 IPV2::Status data(
const char*,
const char*,
void*,
int,...);
202 IPV2::Status data_v(
const char*,
const char*,
void*,
int,
int*);
204 IPV2::Status classname(
const char*,
const char**,
int,...);
205 IPV2::Status classname_v(
const char*,
const char**,
int,
int*);
209 IPV2::Status truekeyword(
const char*,
const char**,
int,...);
210 IPV2::Status truekeyword_v(
const char*,
const char**,
int,
int*);
211 IPV2::Status string(
const char*,
char**,
int,...);
212 IPV2::Status string_v(
const char*,
char**,
int,
int*);
215 IPV2::Status value(
const char*,
const char**,
int,...);
216 IPV2::Status value_v(
const char*,
const char**,
int,
int*);
218 IPV2::Status construct_key_v(
const char*,
char*,
int,
int*);
219 IPV2::Status count(
const char*,
int*,
int,...);
220 IPV2::Status count_v(
const char*,
int*,
int,
int*);
223 void print_keyword(std::ostream&f=
ExEnv::out0(),ip_keyword_tree_t*k=0);
224 void print_tree(std::ostream&f=
ExEnv::out0(),ip_keyword_tree_t*k=0);
225 void print_unseen(std::ostream&f=
ExEnv::out0(),ip_keyword_tree_t*k=0);
226 int have_unseen(ip_keyword_tree_t*k=0);