| #ifndef ASN1_COMPILER_NAMING_H |
| #define ASN1_COMPILER_NAMING_H |
| |
| |
| /* |
| * A member or a field name. |
| */ |
| struct c_names { |
| struct { |
| const char *asn_name; /* "T-Rex" */ |
| const char *part_name; /* "T_Rex" */ |
| const char *base_name; /* "T_Rex" */ |
| const char *c_name; /* "T_Rex_t" */ |
| } type; |
| const char *asn_name; /* "foo" */ |
| const char *part_name; /* "foo", "signed" */ |
| const char *base_name; /* "foo" if not, "parent_foo" if compound */ |
| const char *short_name; /* "foo_t", "e_foo" */ |
| const char *full_name; /* "struct foo", "enum foo" */ |
| const char *as_member; /* "foo" (not compounded) */ |
| const char *presence_enum; /* "enum foo_PR" */ |
| const char *presence_name; /* "foo_PR" */ |
| const char *members_enum; /* "enum foo" */ |
| const char *members_name; /* "e_foo" */ |
| }; |
| |
| struct c_names c_name(arg_t *); |
| struct c_names c_expr_name(arg_t *, asn1p_expr_t *); |
| const char *c_member_name(arg_t *, asn1p_expr_t *); /* %s_%s */ |
| const char *c_presence_name(arg_t *, asn1p_expr_t *); /* %s_PR_%s */ |
| |
| const char *c_names_format(struct c_names); /* For debugging */ |
| |
| /* |
| * Returns 0 if no C name clashes have been encountered. |
| * Returns 1 if C name clashes have been encountered. |
| * Prints out the clashing items and suggests -fcompound-names. |
| */ |
| int c_name_clash(arg_t *arg); |
| |
| void c_name_clash_finder_init(void); |
| |
| void c_name_clash_finder_destroy(void); |
| |
| #endif /* ASN1_COMPILER_NAMING_H */ |