summaryrefslogtreecommitdiff
path: root/src/macro_rules
diff options
context:
space:
mode:
Diffstat (limited to 'src/macro_rules')
-rw-r--r--src/macro_rules/macro_rules.hpp24
-rw-r--r--src/macro_rules/mod.cpp67
2 files changed, 4 insertions, 87 deletions
diff --git a/src/macro_rules/macro_rules.hpp b/src/macro_rules/macro_rules.hpp
index 2a588a78..c04e3548 100644
--- a/src/macro_rules/macro_rules.hpp
+++ b/src/macro_rules/macro_rules.hpp
@@ -19,7 +19,7 @@
class MacroExpander;
-TAGGED_UNION_EX(MacroExpansionEnt, (: public Serialisable), Token, (
+TAGGED_UNION(MacroExpansionEnt, Token,
// TODO: have a "raw" stream instead of just tokens
(Token, Token),
// TODO: Have a flag on `NamedValue` that indicates that it is the only/last usage of this particular value (at this level)
@@ -34,19 +34,11 @@ TAGGED_UNION_EX(MacroExpansionEnt, (: public Serialisable), Token, (
/// Boolean is true if the variable will be unconditionally expanded
::std::map< unsigned int, bool> variables;
})
- ),
- (),
- (),
- (
- public:
- SERIALISABLE_PROTOTYPES();
- )
);
extern ::std::ostream& operator<<(::std::ostream& os, const MacroExpansionEnt& x);
/// Matching pattern entry
-struct MacroPatEnt:
- public Serialisable
+struct MacroPatEnt
{
::std::string name;
unsigned int name_index = 0;
@@ -99,13 +91,10 @@ struct MacroPatEnt:
friend ::std::ostream& operator<<(::std::ostream& os, const MacroPatEnt& x);
friend ::std::ostream& operator<<(::std::ostream& os, const MacroPatEnt::Type& x);
-
- SERIALISABLE_PROTOTYPES();
};
/// An expansion arm within a macro_rules! blcok
-struct MacroRulesArm:
- public Serialisable
+struct MacroRulesArm
{
/// Names for the parameters
::std::vector< ::std::string> m_param_names;
@@ -126,13 +115,10 @@ struct MacroRulesArm:
MacroRulesArm& operator=(const MacroRulesArm&) = delete;
MacroRulesArm(MacroRulesArm&&) = default;
MacroRulesArm& operator=(MacroRulesArm&&) = default;
-
- SERIALISABLE_PROTOTYPES();
};
/// A sigle 'macro_rules!' block
-class MacroRules:
- public Serialisable
+class MacroRules
{
public:
/// Marks if this macro should be exported from the defining crate
@@ -152,8 +138,6 @@ public:
}
virtual ~MacroRules();
MacroRules(MacroRules&&) = default;
-
- SERIALISABLE_PROTOTYPES();
};
extern ::std::unique_ptr<TokenStream> Macro_InvokeRules(const char *name, const MacroRules& rules, const Span& sp, TokenTree input, AST::Module& mod);
diff --git a/src/macro_rules/mod.cpp b/src/macro_rules/mod.cpp
index 0f16a377..2613a0b4 100644
--- a/src/macro_rules/mod.cpp
+++ b/src/macro_rules/mod.cpp
@@ -161,55 +161,6 @@ MacroRulesPtr::~MacroRulesPtr()
}
}
-SERIALISE_TYPE_S(MacroRulesArm, {
-})
-
-void operator%(Serialiser& s, MacroPatEnt::Type c) {
- switch(c) {
- #define _(v) case MacroPatEnt::v: s << #v; return
- _(PAT_TOKEN);
- _(PAT_TT);
- _(PAT_PAT);
- _(PAT_TYPE);
- _(PAT_EXPR);
- _(PAT_LOOP);
- _(PAT_STMT);
- _(PAT_PATH);
- _(PAT_BLOCK);
- _(PAT_META);
- _(PAT_ITEM);
- _(PAT_IDENT);
- #undef _
- }
-}
-void operator%(::Deserialiser& s, MacroPatEnt::Type& c) {
- ::std::string n;
- s.item(n);
- #define _(v) else if(n == #v) c = MacroPatEnt::v
- if(0) ;
- _(PAT_TOKEN);
- _(PAT_TT);
- _(PAT_PAT);
- _(PAT_TYPE);
- _(PAT_EXPR);
- _(PAT_LOOP);
- //_(PAT_OPTLOOP);
- _(PAT_STMT);
- _(PAT_PATH);
- _(PAT_BLOCK);
- _(PAT_META);
- _(PAT_IDENT);
- _(PAT_ITEM);
- else
- throw ::std::runtime_error( FMT("No conversion for '" << n << "'") );
- #undef _
-}
-SERIALISE_TYPE_S(MacroPatEnt, {
- s % type;
- s.item(name);
- s.item(tok);
- s.item(subpats);
-});
::std::ostream& operator<<(::std::ostream& os, const MacroPatEnt& x)
{
switch(x.type)
@@ -257,20 +208,6 @@ SERIALISE_TYPE_S(MacroPatEnt, {
return os;
}
-SERIALISE_TU(MacroExpansionEnt, "MacroExpansionEnt", e,
-(Token,
- s.item(e);
- ),
-(NamedValue,
- s.item(e);
- ),
-(Loop,
- s.item(e.entries);
- s.item(e.joiner);
- //s.item(e.variables);
- )
-);
-
::std::ostream& operator<<(::std::ostream& os, const MacroExpansionEnt& x)
{
TU_MATCH( MacroExpansionEnt, (x), (e),
@@ -295,8 +232,4 @@ SERIALISE_TU(MacroExpansionEnt, "MacroExpansionEnt", e,
MacroRules::~MacroRules()
{
}
-SERIALISE_TYPE_S(MacroRules, {
- s.item( m_exported );
- s.item( m_rules );
-});