diff options
author | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-12-04 17:29:01 +0100 |
---|---|---|
committer | Robin Haberkorn <robin.haberkorn@googlemail.com> | 2012-12-04 22:07:08 +0100 |
commit | d8a316514c03d85b771a9dce4a8a51b875d955b3 (patch) | |
tree | 8966c29db767a155848f6d90f76771ce5b9de32e /goto.h | |
parent | b120616b6da52e951097f69ad267de06081d218a (diff) | |
download | sciteco-d8a316514c03d85b771a9dce4a8a51b875d955b3.tar.gz |
autoconf preparation: move everything into src/ subdir
Diffstat (limited to 'goto.h')
-rw-r--r-- | goto.h | 107 |
1 files changed, 0 insertions, 107 deletions
@@ -1,107 +0,0 @@ -#ifndef __GOTO_H -#define __GOTO_H - -#include <glib.h> -#include <glib/gprintf.h> - -#include "sciteco.h" -#include "parser.h" -#include "undo.h" -#include "rbtree.h" - -class GotoTable : public RBTree { - class UndoTokenSet : public UndoToken { - GotoTable *table; - - gchar *name; - gint pc; - - public: - UndoTokenSet(GotoTable *_table, gchar *_name, gint _pc = -1) - : table(_table), name(g_strdup(_name)), pc(_pc) {} - ~UndoTokenSet() - { - g_free(name); - } - - void - run(void) - { - table->set(name, pc); -#ifdef DEBUG - table->dump(); -#endif - } - }; - - class Label : public RBEntry { - public: - gchar *name; - gint pc; - - Label(gchar *_name, gint _pc = -1) - : name(g_strdup(_name)), pc(_pc) {} - ~Label() - { - g_free(name); - } - - int - operator <(RBEntry &l2) - { - return g_strcmp0(name, ((Label &)l2).name); - } - }; - - /* - * whether to generate UndoTokens (unnecessary in macro invocations) - */ - bool must_undo; - -public: - GotoTable(bool _undo = true) : RBTree(), must_undo(_undo) {} - - gint remove(gchar *name); - gint find(gchar *name); - - gint set(gchar *name, gint pc); - inline void - undo_set(gchar *name, gint pc = -1) - { - if (must_undo) - undo.push(new UndoTokenSet(this, name, pc)); - } - -#ifdef DEBUG - void dump(void); -#endif -}; - -namespace Goto { - extern GotoTable *table; - extern gchar *skip_label; -} - -/* - * Command states - */ - -class StateLabel : public State { -public: - StateLabel(); - -private: - State *custom(gchar chr) throw (Error); -}; - -class StateGotoCmd : public StateExpectString { -private: - State *done(const gchar *str) throw (Error); -}; - -namespace States { - extern StateLabel label; - extern StateGotoCmd gotocmd; -} - -#endif |