simplifications
[mala.git] / engine / mala_types.h
blobc086a14fa42b95e56bd303e9ac8cec8bce7ff0b1
1 /*
2 stringbucket.h - MaLa stringbuckets
4 Copyright (C) 2004, 2005, 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_TYPES_H
21 #define MALA_TYPES_H
23 #include <assert.h>
24 #include <sys/queue.h>
26 #ifdef DEBUG_MALA
27 #include <stdio.h>
28 #define MALA_ASSERT(exp) assert(exp)
29 /*#define MALA_DEBUG(fmt, ...) do{fprintf(stderr,"MALA_DEBUG: %s: %d: %s: " fmt "\n", strrchr(__FILE__, '/')+1, __LINE__, __func__, ## __VA_ARGS__);}while(0)
31 #else
32 #define MALA_ASSERT(exp)
33 //#define MALA_DEBUG(fmt,...)
34 #endif
38 * mala state codes
40 enum mala_state_enum
42 /* the first codes are the states of the MaLa VM and never returned from the engine*/
43 MALA_SUCCESS, /* last comand returned true */
44 MALA_FAILURE, /* last comand returned false */
45 MALA_LITERAL, /* dont evaluate argument */
46 MALA_DELAY, /* delay evaluation of the command */
47 MALA_EXCEPTION, /* some error occured (in MaLa code) */
49 MALA_EFAULT, /* everything beyond are runtime errors, which may be handled by the userprogram */
50 MALA_ENOACTION, /* no action found, exception falltrough */
51 MALA_EACTIONUSED, /* action has childs or is linked to an engine */
52 MALA_ESYNTAX, /* Syntax error in expansion (missing '}', ']', illegal characters)*/
53 MALA_EINCOMPLETE, /* interrupted in interactive mode */
55 MALA_EFATAL, /* everything beyond are fatal errors which leave the VM in a undefined state */
56 MALA_EINIT, /* initialization didnt complete */
57 MALA_EALLOC, /* memory allocation problem */
58 MALA_ENOENV, /* no environment space left */
59 MALA_ESTALEACT, /* there is an action which dont remove itself from the program */
60 MALA_EPARSER, /* parser wrong or missing*/
62 MALA_EINVALID, /* something is really wrong (even a mala_engine_free() might crash)*/
64 // state codes for the preprocessor
65 MALA_NO_EXPANSION = -1, /* nothing expanded */
66 MALA_EXPANSION_ERROR = -2 /* error in engine->state */
69 typedef enum mala_state_enum mala_state;
74 * datastructure and handle declarations
76 #define MALA_TYPEDEFS(name,Handle) \
77 typedef struct mala_##name##_struct mala_##name;\
78 typedef const mala_##name * const_Mala##Handle;\
79 typedef mala_##name * Mala##Handle;\
80 typedef mala_##name ** Mala##Handle##_ref;\
81 typedef const mala_##name ** const_Mala##Handle##_ref
83 MALA_TYPEDEFS(actioninit,ActionInit);
84 MALA_TYPEDEFS(action,Action);
85 MALA_TYPEDEFS(string,String);
86 MALA_TYPEDEFS(stringbucket,StringBucket);
87 MALA_TYPEDEFS(engine,Engine);
88 MALA_TYPEDEFS(actiondesc,ActionDesc);
90 CIRCLEQ_HEAD (mala_stringlist_struct, mala_stringlistnode_struct);
91 MALA_TYPEDEFS(stringlistnode,StringListNode);
92 MALA_TYPEDEFS(stringlist,StringList);
94 LIST_HEAD(mala_actionstack_struct, mala_action_struct);
95 MALA_TYPEDEFS(actionstack,ActionStack);
97 LIST_HEAD(mala_childstack_struct, mala_action_struct);
98 MALA_TYPEDEFS(childstack,ChildStack);
102 typedef void* (*MalaDataFactory)(void** dest, const void* src, MalaStringBucket bucket);
103 typedef int (*MalaParserFunc) (MalaEngine eng,
104 MalaStringListNode_ref pptr,
105 void * data);
106 int (*MalaEngineInit) (MalaEngine self);
110 #endif /* MALA_TYPES_H */
113 // Local Variables:
114 // mode: C
115 // c-file-style: "gnu"
116 // End:
117 // arch-tag: ee20274c-3a62-4022-a312-59572f1ffdb9
118 // end_of_file