Skip to content

Commit

Permalink
[Refactoring] Move TemplateParameter::toCBuffer into PrettyPrintVisitor
Browse files Browse the repository at this point in the history
  • Loading branch information
9rnsr committed Aug 9, 2014
1 parent 359c343 commit ee36f6a
Show file tree
Hide file tree
Showing 4 changed files with 76 additions and 79 deletions.
76 changes: 74 additions & 2 deletions src/hdrgen.c
Expand Up @@ -2331,7 +2331,7 @@ class PrettyPrintVisitor : public Visitor
{
buf->writestring(", ");
TemplateParameter *tp = (*e->parameters)[i];
tp->toCBuffer(buf, hgs);
tp->accept(this);
}
}
buf->writeByte(')');
Expand Down Expand Up @@ -2581,6 +2581,72 @@ class PrettyPrintVisitor : public Visitor
{
buf->writestring(e->value->toChars());
}

////////////////////////////////////////////////////////////////////////////

void visit(TemplateTypeParameter *tp)
{
buf->writestring(tp->ident->toChars());
if (tp->specType)
{
buf->writestring(" : ");
::toCBuffer(tp->specType, buf, NULL, hgs);
}
if (tp->defaultType)
{
buf->writestring(" = ");
::toCBuffer(tp->defaultType, buf, NULL, hgs);
}
}

void visit(TemplateThisParameter *tp)
{
buf->writestring("this ");
visit((TemplateTypeParameter *)tp);
}

void visit(TemplateAliasParameter *tp)
{
buf->writestring("alias ");
if (tp->specType)
{
HdrGenState hgs1;
::toCBuffer(tp->specType, buf, tp->ident, &hgs1);
}
else
buf->writestring(tp->ident->toChars());
if (tp->specAlias)
{
buf->writestring(" : ");
ObjectToCBuffer(buf, hgs, tp->specAlias);
}
if (tp->defaultAlias)
{
buf->writestring(" = ");
ObjectToCBuffer(buf, hgs, tp->defaultAlias);
}
}

void visit(TemplateValueParameter *tp)
{
::toCBuffer(tp->valType, buf, tp->ident, hgs);
if (tp->specValue)
{
buf->writestring(" : ");
tp->specValue->accept(this);
}
if (tp->defaultValue)
{
buf->writestring(" = ");
tp->defaultValue->accept(this);
}
}

void visit(TemplateTupleParameter *tp)
{
buf->writestring(tp->ident->toChars());
buf->writestring("...");
}
};

void toCBuffer(Statement *s, OutBuffer *buf, HdrGenState *hgs)
Expand Down Expand Up @@ -2781,7 +2847,7 @@ void functionToBufferFull(TypeFunction *tf, OutBuffer *buf, Identifier *ident,
TemplateParameter *tp = (*td->origParameters)[i];
if (i)
buf->writestring(", ");
tp->toCBuffer(buf, hgs);
::toCBuffer(tp, buf, hgs);
}
buf->writeByte(')');
}
Expand Down Expand Up @@ -2880,3 +2946,9 @@ void argsToCBuffer(OutBuffer *buf, Expressions *expressions, HdrGenState *hgs)
}
}
}

void toCBuffer(TemplateParameter *tp, OutBuffer *buf, HdrGenState *hgs)
{
PrettyPrintVisitor v(buf, hgs);
tp->accept(&v);
}
1 change: 1 addition & 0 deletions src/hdrgen.h
Expand Up @@ -30,6 +30,7 @@ void toCBuffer(Type *t, OutBuffer *buf, Identifier *ident, HdrGenState *hgs);
void toCBuffer(Dsymbol *s, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(Initializer *iz, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(Expression *e, OutBuffer *buf, HdrGenState *hgs);
void toCBuffer(TemplateParameter *tp, OutBuffer *buf, HdrGenState *hgs);

void toCBufferInstance(TemplateInstance *ti, OutBuffer *buf, bool qualifyTypes = false);

Expand Down
72 changes: 1 addition & 71 deletions src/template.c
Expand Up @@ -2675,7 +2675,7 @@ char *TemplateDeclaration::toChars()
TemplateParameter *tp = (*parameters)[i];
if (i)
buf.writestring(", ");
tp->toCBuffer(&buf, &hgs);
::toCBuffer(tp, &buf, &hgs);
}
buf.writeByte(')');

Expand Down Expand Up @@ -4882,23 +4882,6 @@ void TemplateTypeParameter::print(RootObject *oarg, RootObject *oded)
printf("\tDeduced Type: %s\n", ta->toChars());
}


void TemplateTypeParameter::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{
buf->writestring(ident->toChars());
if (specType)
{
buf->writestring(" : ");
::toCBuffer(specType, buf, NULL, hgs);
}
if (defaultType)
{
buf->writestring(" = ");
::toCBuffer(defaultType, buf, NULL, hgs);
}
}


void *TemplateTypeParameter::dummyArg()
{
Type *t = specType;
Expand Down Expand Up @@ -4961,12 +4944,6 @@ TemplateParameter *TemplateThisParameter::syntaxCopy()
return tp;
}

void TemplateThisParameter::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{
buf->writestring("this ");
TemplateTypeParameter::toCBuffer(buf, hgs);
}

/* ======================== TemplateAliasParameter ========================== */

// alias-parameter
Expand Down Expand Up @@ -5199,29 +5176,6 @@ void TemplateAliasParameter::print(RootObject *oarg, RootObject *oded)
printf("\tParameter alias: %s\n", sa->toChars());
}

void TemplateAliasParameter::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{
buf->writestring("alias ");
if (specType)
{
HdrGenState hgs1;
::toCBuffer(specType, buf, ident, &hgs1);
}
else
buf->writestring(ident->toChars());
if (specAlias)
{
buf->writestring(" : ");
ObjectToCBuffer(buf, hgs, specAlias);
}
if (defaultAlias)
{
buf->writestring(" = ");
ObjectToCBuffer(buf, hgs, defaultAlias);
}
}


void *TemplateAliasParameter::dummyArg()
{
RootObject *s = specAlias;
Expand Down Expand Up @@ -5491,23 +5445,6 @@ void TemplateValueParameter::print(RootObject *oarg, RootObject *oded)
printf("\tParameter Value: %s\n", ea ? ea->toChars() : "NULL");
}


void TemplateValueParameter::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{
::toCBuffer(valType, buf, ident, hgs);
if (specValue)
{
buf->writestring(" : ");
::toCBuffer(specValue, buf, hgs);
}
if (defaultValue)
{
buf->writestring(" = ");
::toCBuffer(defaultValue, buf, hgs);
}
}


void *TemplateValueParameter::dummyArg()
{
Expression *e = specValue;
Expand Down Expand Up @@ -5681,13 +5618,6 @@ void TemplateTupleParameter::print(RootObject *oarg, RootObject *oded)
printf("]\n");
}

void TemplateTupleParameter::toCBuffer(OutBuffer *buf, HdrGenState *hgs)
{
buf->writestring(ident->toChars());
buf->writestring("...");
}


void *TemplateTupleParameter::dummyArg()
{
return NULL;
Expand Down
6 changes: 0 additions & 6 deletions src/template.h
Expand Up @@ -157,7 +157,6 @@ class TemplateParameter
virtual void declareParameter(Scope *sc) = 0;
virtual void semantic(Scope *sc, TemplateParameters *parameters) = 0;
virtual void print(RootObject *oarg, RootObject *oded) = 0;
virtual void toCBuffer(OutBuffer *buf, HdrGenState *hgs) = 0;
virtual RootObject *specialization() = 0;
virtual RootObject *defaultArg(Loc loc, Scope *sc) = 0;
virtual bool hasDefaultArg() = 0;
Expand Down Expand Up @@ -195,7 +194,6 @@ class TemplateTypeParameter : public TemplateParameter
void declareParameter(Scope *sc);
void semantic(Scope *sc, TemplateParameters *parameters);
void print(RootObject *oarg, RootObject *oded);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
RootObject *specialization();
RootObject *defaultArg(Loc loc, Scope *sc);
bool hasDefaultArg();
Expand All @@ -215,7 +213,6 @@ class TemplateThisParameter : public TemplateTypeParameter

TemplateThisParameter *isTemplateThisParameter();
TemplateParameter *syntaxCopy();
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
void accept(Visitor *v) { v->visit(this); }
};

Expand All @@ -238,7 +235,6 @@ class TemplateValueParameter : public TemplateParameter
void declareParameter(Scope *sc);
void semantic(Scope *sc, TemplateParameters *parameters);
void print(RootObject *oarg, RootObject *oded);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
RootObject *specialization();
RootObject *defaultArg(Loc loc, Scope *sc);
bool hasDefaultArg();
Expand Down Expand Up @@ -267,7 +263,6 @@ class TemplateAliasParameter : public TemplateParameter
void declareParameter(Scope *sc);
void semantic(Scope *sc, TemplateParameters *parameters);
void print(RootObject *oarg, RootObject *oded);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
RootObject *specialization();
RootObject *defaultArg(Loc loc, Scope *sc);
bool hasDefaultArg();
Expand All @@ -290,7 +285,6 @@ class TemplateTupleParameter : public TemplateParameter
void declareParameter(Scope *sc);
void semantic(Scope *sc, TemplateParameters *parameters);
void print(RootObject *oarg, RootObject *oded);
void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
RootObject *specialization();
RootObject *defaultArg(Loc loc, Scope *sc);
bool hasDefaultArg();
Expand Down

0 comments on commit ee36f6a

Please sign in to comment.