void EnumDeclaration::toJson(JsonOut *json) { if (isAnonymous()) { if (members) { for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (*members)[i]; s->toJson(json); } } return; } json->objectStart(); jsonProperties(json); json->property("base", "baseDeco", memtype); if (members) { json->propertyStart("members"); json->arrayStart(); for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (*members)[i]; s->toJson(json); } json->arrayEnd(); } json->objectEnd(); }
void AttribDeclaration::toJson(JsonOut *json) { Dsymbols *d = include(NULL, NULL); if (d) { for (size_t i = 0; i < d->dim; i++) { Dsymbol *s = (*d)[i]; s->toJson(json); } } }
void AggregateDeclaration::toJson(JsonOut *json) { json->objectStart(); jsonProperties(json); ClassDeclaration *cd = isClassDeclaration(); if (cd) { if (cd->baseClass && cd->baseClass->ident != Id::Object) { json->property("base", cd->baseClass->toChars()); } if (cd->interfaces_dim) { json->propertyStart("interfaces"); json->arrayStart(); for (size_t i = 0; i < cd->interfaces_dim; i++) { BaseClass *b = cd->interfaces[i]; json->item(b->base->toChars()); } json->arrayEnd(); } } if (members) { json->propertyStart("members"); json->arrayStart(); for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (*members)[i]; s->toJson(json); } json->arrayEnd(); } json->objectEnd(); }
void Module::toJson(JsonOut *json) { json->objectStart(); if (md) json->property("name", md->toChars()); json->property("kind", kind()); json->filename = srcfile->toChars(); json->property("file", json->filename); json->property("comment", (const char *)comment); json->propertyStart("members"); json->arrayStart(); for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (*members)[i]; s->toJson(json); } json->arrayEnd(); json->objectEnd(); }
void TemplateDeclaration::toJson(JsonOut *json) { json->objectStart(); // TemplateDeclaration::kind returns the kind of its Aggregate onemember, if it is one json->property("kind", "template"); jsonProperties(json); json->propertyStart("parameters"); json->arrayStart(); for (size_t i = 0; i < parameters->dim; i++) { TemplateParameter *s = (*parameters)[i]; json->objectStart(); json->property("name", s->ident->toChars()); TemplateTypeParameter *type = s->isTemplateTypeParameter(); if (type) { #if DMDV2 if (s->isTemplateThisParameter()) json->property("kind", "this"); else json->property("kind", "type"); #else json->property("kind", "type"); #endif json->property("type", "deco", type->specType); json->property("default", "defaultDeco", type->defaultType); } TemplateValueParameter *value = s->isTemplateValueParameter(); if (value) { json->property("kind", "value"); json->property("type", "deco", value->valType); if (value->specValue) json->property("specValue", value->specValue->toChars()); if (value->defaultValue) json->property("defaultValue", value->defaultValue->toChars()); } TemplateAliasParameter *alias = s->isTemplateAliasParameter(); if (alias) { json->property("kind", "alias"); json->property("type", "deco", alias->specType); if (alias->specAlias) json->property("specAlias", alias->specAlias->toChars()); if (alias->defaultAlias) json->property("defaultAlias", alias->defaultAlias->toChars()); } TemplateTupleParameter *tuple = s->isTemplateTupleParameter(); if (tuple) { json->property("kind", "tuple"); } json->objectEnd(); } json->arrayEnd(); json->propertyStart("members"); json->arrayStart(); for (size_t i = 0; i < members->dim; i++) { Dsymbol *s = (*members)[i]; s->toJson(json); } json->arrayEnd(); json->objectEnd(); }