new startup scheme, *breaks tests until we have the first parsers*
[mala.git] / engine / engine.h
blob10cc3b3358aa519ef468185fa3a1410c495ba794
1 /*
2 engine.h - MaLa core engine
4 Copyright (C) 2004, Christian Thaeter <chth@gmx.net>
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License version 2 as
8 published by the Free Software Foundation.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, contact me.
20 #ifndef MALA_ENGINE_H
21 #define MALA_ENGINE_H
23 #include "mala_types.h"
24 #include "stringbucket.h"
25 #include "stringlist.h"
26 //#include "action.h"
28 enum mala_common_strings_enum
30 MALA_STRING_FALSE,
31 MALA_STRING_TRUE,
32 MALA_STRING_ZERO,
33 MALA_STRING_EXCLAMATIONMARK,
34 MALA_STRING_ASSIGN,
35 MALA_STRING_BACKQUOTE,
36 MALA_STRING_NOT,
37 MALA_STRING_LITERAL,
38 MALA_STRING_ENVSUBST,
39 MALA_STRING_SETENV,
40 MALA_STRING_SECTION,
41 MALA_STRING_FLAG_LITERAL_EXPANSION,
42 MALA_STRING_FLAG_EXCLAM_EXPANSION,
43 MALA_STRING_FLAG_NO_EXPANSION,
44 MALA_STRING_FLAG_NUMSPLIT_EXPANSION,
45 MALA_STRING_FLAG_CHAR_EXPANSION,
46 MALA_STRING_FLAG_ASSIGN_EXPANSION,
47 MALA_STRING_FLAG_SETENV_EXPANSION,
48 MALA_STRING_FLAG_ENVVAR_EXPANSION,
49 MALA_STRING_FLAG_UNDERSCORE_EXPANSION,
50 MALA_STRING_FLAG_BRACKET_EXPANSION,
51 MALA_STRING_FLAG_ASSIGN_CONTRACTION,
52 MALA_MAX_COMMON_STRING
60 //#ifdef MALA_PRIVATE
61 struct mala_engine_struct
64 * every tokenized word is collected in 'words'
65 * actions can be bound to these words through the strings user variable
67 mala_stringbucket words;
68 mala_stringlist program;
69 mala_stringlist arguments;
71 MalaString common_string[MALA_MAX_COMMON_STRING];
73 /*TODO static ringbuffer char ringbuffer *[10] */
75 const char * argv_0;
77 int negated:1;
79 int state;
81 //#endif
84 \f/**/
92 * Mala engine
94 MalaEngine
95 mala_engine_new ();
97 #if 0
98 MalaEngine
99 mala_engine_new_main (int (*initfunc) (MalaEngine),
100 int argc, char ** argv,
101 mala_actioninit * actions_init);
102 #endif
104 void
105 mala_engine_free (MalaEngine self);
109 mala_engine_register_actions (MalaEngine, MalaActionInit);
112 mala_engine_macro_define (MalaEngine self, const char * name, int argc, char **argv);
115 mala_engine_pushback (MalaEngine self, const char * word);
117 MalaStringList
118 mala_engine_getprogram (MalaEngine self);
120 mala_state
121 mala_engine_state_get (MalaEngine self);
123 void
124 mala_engine_clearstate (MalaEngine self);
127 mala_engine_negated (MalaEngine self);
129 void
130 mala_engine_clear_negated (MalaEngine self);
132 void
133 mala_engine_dumpprogram (MalaEngine self, const char * prefix, const char * suffix);
135 void
136 mala_engine_dumpargs (MalaEngine self, const char * prefix, const char * suffix);
138 MalaEngine
139 mala_engine_run (MalaEngine self);
142 mala_engine_eval (MalaEngine self, MalaStringListNode_ref pptr);
144 //int
145 //mala_engine_expansions (MalaEngine self, MalaStringListNode_ref pptr);
149 mala_engine_string_istrue (MalaEngine self, MalaString str);
152 mala_engine_check_expansionflag (MalaEngine self, int flag);
156 mala_engine_expand (MalaEngine self, MalaStringList list, MalaStringListNode_ref pptr);
159 mala_engine_literal_expansion (MalaEngine self,
160 MalaStringList list,
161 MalaStringListNode_ref pptr);
164 mala_engine_backquote_expansion (MalaEngine self,
165 MalaStringList list,
166 MalaStringListNode_ref pptr);
169 mala_engine_numsplit_expansion (MalaEngine self,
170 MalaStringList list,
171 MalaStringListNode_ref pptr);
174 mala_engine_exclam_expansion (MalaEngine self,
175 MalaStringList list,
176 MalaStringListNode_ref pptr);
179 mala_engine_no_expansion (MalaEngine self,
180 MalaStringList list,
181 MalaStringListNode_ref pptr);
184 mala_engine_assign_expansion (MalaEngine self,
185 MalaStringList list,
186 MalaStringListNode_ref pptr);
189 mala_engine_envvar_expansion (MalaEngine self,
190 MalaStringList list,
191 MalaStringListNode_ref pptr);
194 mala_engine_char_expansion (MalaEngine self,
195 MalaStringList list,
196 MalaStringListNode_ref pptr);
199 mala_engine_underscore_expansion (MalaEngine self,
200 MalaStringList list,
201 MalaStringListNode_ref pptr);
203 int mala_engine_setenv_expansion (MalaEngine self,
204 MalaStringList list,
205 MalaStringListNode_ref pptr);
207 int mala_engine_bracket_expansion (MalaEngine self,
208 MalaStringList list,
209 MalaStringListNode_ref pptr);
211 int mala_engine_assign_contraction (MalaEngine self,
212 MalaStringList list,
213 MalaStringListNode_ref pptr);
216 mala_engine_add_action (MalaEngine self, const char* name, void* data,
217 MalaParserFunc parser, MalaDataFactory factory,
218 MalaAction parent);
222 #if 0 /*TODO*/
224 MalaEngine
225 mala_engine_new_initfunc (int (*initfunc) (MalaEngine));
229 void
230 mala_engine_pushfront_program (MalaEngine self, int args, char ** argv);
234 mala_engine_erase_action (MalaEngine, const t_uchar * key);
237 mala_engine_eval (MalaEngine self, LList pptr);
240 mala_engine_deepeval (MalaEngine self, LList pptr);
242 MalaEngine
243 mala_engine_run (MalaEngine);
245 mala_engine_exception (MalaEngine, LList begin, LList end, const char *);
247 MalaAction
248 mala_engine_action_new (MalaEngine, t_uchar** name, void** data,
249 MalaParserFunc parser, MalaDataDestructor destructor);
252 MalaAction
253 mala_engine_getaction (MalaEngine, const t_uchar * name);
255 MalaAction
256 mala_engine_getprevaction (MalaEngine, const t_uchar * name);
258 #endif /*TODO*/
264 #endif /*MALA_ENGINE_H*/
266 // Local Variables:
267 // mode: C
268 // c-file-style: "gnu"
269 // End:
270 // arch-tag: 47d718f6-e397-400c-93a6-bc71f475c0c7
271 // end_of_file