Skip to content

Commit

Permalink
Add TemplateParameter and its derived classes into Visitor
Browse files Browse the repository at this point in the history
  • Loading branch information
9rnsr committed Aug 9, 2014
1 parent 7d969e3 commit 726e1ae
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 0 deletions.
6 changes: 6 additions & 0 deletions src/template.h
Expand Up @@ -175,6 +175,7 @@ class TemplateParameter
/* Create dummy argument based on parameter.
*/
virtual void *dummyArg() = 0;
virtual void accept(Visitor *v) { v->visit(this); }
};

/* Syntax:
Expand Down Expand Up @@ -202,6 +203,7 @@ class TemplateTypeParameter : public TemplateParameter
int overloadMatch(TemplateParameter *);
MATCH matchArg(Scope *sc, RootObject *oarg, size_t i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam);
void *dummyArg();
void accept(Visitor *v) { v->visit(this); }
};

/* Syntax:
Expand All @@ -215,6 +217,7 @@ class TemplateThisParameter : public TemplateTypeParameter
TemplateThisParameter *isTemplateThisParameter();
TemplateParameter *syntaxCopy();
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
void accept(Visitor *v) { v->visit(this); }
};

/* Syntax:
Expand Down Expand Up @@ -243,6 +246,7 @@ class TemplateValueParameter : public TemplateParameter
int overloadMatch(TemplateParameter *);
MATCH matchArg(Scope *sc, RootObject *oarg, size_t i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam);
void *dummyArg();
void accept(Visitor *v) { v->visit(this); }
};

/* Syntax:
Expand Down Expand Up @@ -271,6 +275,7 @@ class TemplateAliasParameter : public TemplateParameter
int overloadMatch(TemplateParameter *);
MATCH matchArg(Scope *sc, RootObject *oarg, size_t i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam);
void *dummyArg();
void accept(Visitor *v) { v->visit(this); }
};

/* Syntax:
Expand All @@ -294,6 +299,7 @@ class TemplateTupleParameter : public TemplateParameter
MATCH matchArg(Loc loc, Scope *sc, Objects *tiargs, size_t i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam);
MATCH matchArg(Scope *sc, RootObject *oarg, size_t i, TemplateParameters *parameters, Objects *dedtypes, Declaration **psparam);
void *dummyArg();
void accept(Visitor *v) { v->visit(this); }
};

/* Given:
Expand Down
14 changes: 14 additions & 0 deletions src/visitor.h
Expand Up @@ -284,6 +284,13 @@ class ClassReferenceExp;
class VoidInitExp;
class ThrownExceptionExp;

class TemplateParameter;
class TemplateTypeParameter;
class TemplateThisParameter;
class TemplateValueParameter;
class TemplateAliasParameter;
class TemplateTupleParameter;

class Visitor
{
public:
Expand Down Expand Up @@ -557,6 +564,13 @@ class Visitor
virtual void visit(ClassReferenceExp *e) { visit((Expression *)e); }
virtual void visit(VoidInitExp *e) { visit((Expression *)e); }
virtual void visit(ThrownExceptionExp *e) { visit((Expression *)e); }

virtual void visit(TemplateParameter *) { assert(0); }
virtual void visit(TemplateTypeParameter *tp) { visit((TemplateParameter *)tp); }
virtual void visit(TemplateThisParameter *tp) { visit((TemplateTypeParameter *)tp); }
virtual void visit(TemplateValueParameter *tp) { visit((TemplateParameter *)tp); }
virtual void visit(TemplateAliasParameter *tp) { visit((TemplateParameter *)tp); }
virtual void visit(TemplateTupleParameter *tp) { visit((TemplateParameter *)tp); }
};

class StoppableVisitor : public Visitor
Expand Down

0 comments on commit 726e1ae

Please sign in to comment.