diff options
Diffstat (limited to 'src/map/script.hpp')
-rw-r--r-- | src/map/script.hpp | 77 |
1 files changed, 27 insertions, 50 deletions
diff --git a/src/map/script.hpp b/src/map/script.hpp index 6b345c4..4caf58e 100644 --- a/src/map/script.hpp +++ b/src/map/script.hpp @@ -1,75 +1,50 @@ -// $Id: script.h,v 1.2 2004/09/25 05:32:19 MouseJstr Exp $ #ifndef SCRIPT_HPP #define SCRIPT_HPP -// values are private, but gcc < 4.6 doesn't -// support forward-declared enums -enum class ScriptCode : uint8_t -#ifdef RECENT_GCC -; -#else -{ - // types and specials - NOP, POS, INT, PARAM, FUNC, STR, CONSTSTR, ARG, - NAME, EOL, RETINFO, +#include <cstdint> - // unary and binary operators - LOR, LAND, LE, LT, GE, GT, EQ, NE, - XOR, OR, AND, ADD, SUB, MUL, DIV, MOD, NEG, LNOT, - NOT, R_SHIFT, L_SHIFT, +#include <string> - // really nasty workaround for gcc < 4.6 +#include "../common/db.hpp" - x20, x21, x22, x23, x24, x25, x26, x27, x28, x29, x2a, x2b, x2c, x2d, x2e, x2f, - x30, x31, x32, x33, x34, x35, x36, x37, x38, x39, x3a, x3b, x3c, x3d, x3e, x3f, - x40, x41, x42, x43, x44, x45, x46, x47, x48, x49, x4a, x4b, x4c, x4d, x4e, x4f, - x50, x51, x52, x53, x54, x55, x56, x57, x58, x59, x5a, x5b, x5c, x5d, x5e, x5f, - x60, x61, x62, x63, x64, x65, x66, x67, x68, x69, x6a, x6b, x6c, x6d, x6e, x6f, - x70, x71, x72, x73, x74, x75, x76, x77, x78, x79, x7a, x7b, x7c, x7d, x7e, x7f, - x80, x81, x82, x83, x84, x85, x86, x87, x88, x89, x8a, x8b, x8c, x8d, x8e, x8f, - x90, x91, x92, x93, x94, x95, x96, x97, x98, x99, x9a, x9b, x9c, x9d, x9e, x9f, - xa0, xa1, xa2, xa3, xa4, xa5, xa6, xa7, xa8, xa9, xaa, xab, xac, xad, xae, xaf, - xb0, xb1, xb2, xb3, xb4, xb5, xb6, xb7, xb8, xb9, xba, xbb, xbc, xbd, xbe, xbf, - xc0, xc1, xc2, xc3, xc4, xc5, xc6, xc7, xc8, xc9, xca, xcb, xcc, xcd, xce, xcf, - xd0, xd1, xd2, xd3, xd4, xd5, xd6, xd7, xd8, xd9, xda, xdb, xdc, xdd, xde, xdf, - xe0, xe1, xe2, xe3, xe4, xe5, xe6, xe7, xe8, xe9, xea, xeb, xec, xed, xee, xef, - xf0, xf1, xf2, xf3, xf4, xf5, xf6, xf7, xf8, xf9, xfa, xfb, xfc, xfd, xfe, xff, -}; -#endif +enum class ScriptCode : uint8_t; struct script_data { ScriptCode type; union { - int num; + int num; const char *str; + const ScriptCode *script; } u; }; struct script_stack { - int sp, sp_max; + int sp, sp_max; struct script_data *stack_data; }; -struct script_state +// future improvements coming! +class ScriptState { +public: struct script_stack *stack; - int start, end; - int pos, state; - int rid, oid; + int start, end; + int pos, state; + int rid, oid; const ScriptCode *script, *new_script; - int defsp, new_pos, new_defsp; + int defsp, new_pos, new_defsp; }; -const ScriptCode *parse_script (const char *, int); +const ScriptCode *parse_script(const char *, int); typedef struct argrec { const char *name; union _aru { - int i; + int i; const char *s; _aru() = default; @@ -77,16 +52,18 @@ typedef struct argrec _aru(const char *z) : s(z) {} } v; } argrec_t; -int run_script_l (const ScriptCode *, int, int, int, int, argrec_t * args); -int run_script (const ScriptCode *, int, int, int); +int run_script_l(const ScriptCode *, int, int, int, int, argrec_t *args); +int run_script(const ScriptCode *, int, int, int); -struct dbt *script_get_label_db (void); -struct dbt *script_get_userfunc_db (void); +extern +Map<std::string, int> scriptlabel_db; +extern +DMap<std::string, const ScriptCode *> userfunc_db; -int script_config_read (const char *cfgName); -int do_init_script (void); -int do_final_script (void); +void script_config_read(); +void do_init_script(void); +void do_final_script(void); -extern char mapreg_txt[]; +extern char mapreg_txt[256]; -#endif +#endif // SCRIPT_HPP |