asn1: Do not emit the same ASN.1 C comments repeatedly

This commit is contained in:
Nicolas Williams
2023-09-21 16:56:45 -05:00
committed by Jeffrey Altman
parent cfd2ccb546
commit c922303dd0
3 changed files with 15 additions and 4 deletions

View File

@@ -1925,10 +1925,13 @@ generate_type_header (const Symbol *s)
* member fields are not OPTIONAL/DEFAULTed.
*/
generate_subtypes_header(s);
fprintf(headerfile, "/*\n");
fprintf(headerfile, "%s ::= ", s->name);
define_asn1 (0, s->type);
fprintf(headerfile, "\n*/\n\n");
if (!s->emitted_asn1) {
fprintf(headerfile, "/*\n");
fprintf(headerfile, "%s ::= ", s->name);
define_asn1 (0, s->type);
fprintf(headerfile, "\n*/\n\n");
emitted_asn1(s);
}
/*
* Emit enums for the outermost tag of this type. These are needed for

View File

@@ -171,3 +171,9 @@ emitted_tag_enums(const Symbol *s)
{
((Symbol *)(uintptr_t)s)->emitted_tag_enums = 1;
}
void
emitted_asn1(const Symbol *s)
{
((Symbol *)(uintptr_t)s)->emitted_asn1 = 1;
}

View File

@@ -238,6 +238,7 @@ struct symbol {
IOSObject *object;
IOSObjectSet *objectset;
HEIM_TAILQ_ENTRY(symbol) symlist;
unsigned int emitted_asn1:1;
unsigned int emitted_declaration:1;
unsigned int emitted_definition:1;
unsigned int emitted_tag_enums:1;
@@ -260,6 +261,7 @@ Symbol *getsym(char *name);
void output_name (char *);
int checkundefined(void);
void generate_types(void);
void emitted_asn1(const Symbol *);
void emitted_declaration(const Symbol *);
void emitted_definition(const Symbol *);
void emitted_tag_enums(const Symbol *);