/**********************************************************/ /* apimagic: cparser-based API normalization utility */ /* Copyright (C) 2015--2016 Z. Gilboa */ /* Released under GPLv2 and GPLv3; see COPYING.APIMAGIC. */ /**********************************************************/ #include #include #include int amgc_init_unit_meta( const struct amgc_unit_ctx * uctx, struct amgc_unit_meta * meta) { union entity_t * entity; entity = uctx->ccunit->ast->scope.first_entity; for (; entity; entity=entity->base.next) { if (strcmp(*uctx->path,entity->base.pos.input_name)) continue; if ((is_declaration(entity)) && (entity->declaration.implicit)) meta->ngenerated++; else { switch (entity->kind) { case ENTITY_ENUM: meta->nenums++; break; case ENTITY_ENUM_VALUE: meta->nenumvals++; break; case ENTITY_TYPEDEF: meta->ntypedefs++; break; case ENTITY_STRUCT: if (entity->base.symbol || entity->compound.alias) meta->nstructs++; break; case ENTITY_UNION: if (entity->base.symbol || entity->compound.alias) meta->nunions++; break; case ENTITY_FUNCTION: meta->nfunctions++; break; default: break; } } } return 0; }