summaryrefslogtreecommitdiff
path: root/src/macros.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/macros.hpp')
-rw-r--r--src/macros.hpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/src/macros.hpp b/src/macros.hpp
index 5646e203..606d3278 100644
--- a/src/macros.hpp
+++ b/src/macros.hpp
@@ -3,6 +3,7 @@
#include "parse/lex.hpp"
#include "parse/tokentree.hpp"
+#include <common.hpp>
#include <map>
#include <memory>
#include <cstring>
@@ -111,11 +112,23 @@ public:
};
/// A sigle 'macro_rules!' block
-//struct MacroRules {
-// bool export;
-// ::std::vector<MacroRule> m_rules;
-//};
-typedef ::std::vector<MacroRule> MacroRules;
+class MacroRules:
+ public Serialisable
+{
+public:
+ bool m_exported;
+ ::std::vector<MacroRule> m_rules;
+
+ MacroRules()
+ {
+ }
+ MacroRules( ::std::vector<MacroRule> rules ):
+ m_rules( mv$(rules) )
+ {
+ }
+
+ SERIALISABLE_PROTOTYPES();
+};
extern ::std::unique_ptr<TokenStream> Macro_InvokeRules(const char *name, const MacroRules& rules, TokenTree input);
extern ::std::unique_ptr<TokenStream> Macro_Invoke(const TokenStream& lex, const ::std::string& name, TokenTree input);