Skip to content

Commit

Permalink
Merge pull request #3856 from 9rnsr/fix_visitor
Browse files Browse the repository at this point in the history
Add Nspace and others into Visitor
  • Loading branch information
yebblies committed Aug 9, 2014
2 parents c5b285d + c9ccbc6 commit 6c0946d
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/cond.h
Expand Up @@ -40,6 +40,7 @@ class Condition
virtual int include(Scope *sc, ScopeDsymbol *sds) = 0;
virtual void toCBuffer(OutBuffer *buf, HdrGenState *hgs) = 0;
virtual DebugCondition *isDebugCondition() { return NULL; }
virtual void accept(Visitor *v) { v->visit(this); }
};

class DVCondition : public Condition
Expand All @@ -52,6 +53,7 @@ class DVCondition : public Condition
DVCondition(Module *mod, unsigned level, Identifier *ident);

Condition *syntaxCopy();
void accept(Visitor *v) { v->visit(this); }
};

class DebugCondition : public DVCondition
Expand All @@ -65,6 +67,7 @@ class DebugCondition : public DVCondition
int include(Scope *sc, ScopeDsymbol *sds);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
DebugCondition *isDebugCondition() { return this; }
void accept(Visitor *v) { v->visit(this); }
};

class VersionCondition : public DVCondition
Expand All @@ -84,6 +87,7 @@ class VersionCondition : public DVCondition

int include(Scope *sc, ScopeDsymbol *sds);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
void accept(Visitor *v) { v->visit(this); }
};

class StaticIfCondition : public Condition
Expand All @@ -96,6 +100,7 @@ class StaticIfCondition : public Condition
Condition *syntaxCopy();
int include(Scope *sc, ScopeDsymbol *sds);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
void accept(Visitor *v) { v->visit(this); }
};

#endif
2 changes: 2 additions & 0 deletions src/mtype.h
Expand Up @@ -1006,6 +1006,8 @@ class Parameter : public RootObject
void toDecoBuffer(OutBuffer *buf);
// kludge for template.isType()
int dyncast() { return DYNCAST_PARAMETER; }
virtual void accept(Visitor *v) { v->visit(this); }

static Parameters *arraySyntaxCopy(Parameters *args);
static char *argsTypesToChars(Parameters *args, int varargs);
static void argsToCBuffer(OutBuffer *buf, HdrGenState *hgs, Parameters *arguments, int varargs);
Expand Down
1 change: 1 addition & 0 deletions src/nspace.h
Expand Up @@ -34,6 +34,7 @@ class Nspace : public ScopeDsymbol
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
void toObjFile(bool multiobj);
Nspace *isNspace() { return this; }
void accept(Visitor *v) { v->visit(this); }
};

#endif /* DMD_NSPACE_H */
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
32 changes: 32 additions & 0 deletions src/visitor.h
Expand Up @@ -113,6 +113,7 @@ class Package;
class Module;
class WithScopeSymbol;
class ArrayScopeSymbol;
class Nspace;

class AggregateDeclaration;
class StructDeclaration;
Expand Down Expand Up @@ -283,6 +284,21 @@ class ClassReferenceExp;
class VoidInitExp;
class ThrownExceptionExp;

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

class Condition;
class DVCondition;
class DebugCondition;
class VersionCondition;
class StaticIfCondition;

class Parameter;

class Visitor
{
public:
Expand Down Expand Up @@ -386,6 +402,7 @@ class Visitor
virtual void visit(Module *s) { visit((Package *)s); }
virtual void visit(WithScopeSymbol *s) { visit((ScopeDsymbol *)s); }
virtual void visit(ArrayScopeSymbol *s) { visit((ScopeDsymbol *)s); }
virtual void visit(Nspace *s) { visit((ScopeDsymbol *)s); }

virtual void visit(AggregateDeclaration *s) { visit((ScopeDsymbol *)s); }
virtual void visit(StructDeclaration *s) { visit((AggregateDeclaration *)s); }
Expand Down Expand Up @@ -555,6 +572,21 @@ 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); }

virtual void visit(Condition *) { assert(0); }
virtual void visit(DVCondition *c) { visit((Condition *)c); }
virtual void visit(DebugCondition *c) { visit((DVCondition *)c); }
virtual void visit(VersionCondition *c) { visit((DVCondition *)c); }
virtual void visit(StaticIfCondition *c) { visit((Condition *)c); }

virtual void visit(Parameter *) { assert(0); }
};

class StoppableVisitor : public Visitor
Expand Down

0 comments on commit 6c0946d

Please sign in to comment.