Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 1 | #ifndef ASN1_COMPILER_NAMING_H |
| 2 | #define ASN1_COMPILER_NAMING_H |
| 3 | |
Lev Walkin | 6d69204 | 2017-09-29 23:15:30 -0700 | [diff] [blame] | 4 | |
| 5 | /* |
| 6 | * A member or a field name. |
| 7 | */ |
Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 8 | struct c_names { |
Lev Walkin | 6d69204 | 2017-09-29 23:15:30 -0700 | [diff] [blame] | 9 | struct { |
| 10 | const char *asn_name; /* "T-Rex" */ |
| 11 | const char *part_name; /* "T_Rex" */ |
| 12 | const char *base_name; /* "T_Rex" */ |
| 13 | const char *c_name; /* "T_Rex_t" */ |
Lev Walkin | b545070 | 2017-10-04 02:52:57 -0700 | [diff] [blame] | 14 | const char *constrained_c_name; /* "long" */ |
Lev Walkin | 6d69204 | 2017-09-29 23:15:30 -0700 | [diff] [blame] | 15 | } type; |
| 16 | const char *asn_name; /* "foo" */ |
| 17 | const char *part_name; /* "foo", "signed" */ |
| 18 | const char *base_name; /* "foo" if not, "parent_foo" if compound */ |
Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 19 | const char *short_name; /* "foo_t", "e_foo" */ |
| 20 | const char *full_name; /* "struct foo", "enum foo" */ |
| 21 | const char *as_member; /* "foo" (not compounded) */ |
| 22 | const char *presence_enum; /* "enum foo_PR" */ |
| 23 | const char *presence_name; /* "foo_PR" */ |
| 24 | const char *members_enum; /* "enum foo" */ |
| 25 | const char *members_name; /* "e_foo" */ |
Bi-Ruei, Chiu | dcc822a | 2017-10-19 01:06:57 +0800 | [diff] [blame] | 26 | const char *compound_name; /* always contain "parent_foo" */ |
Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 27 | }; |
| 28 | |
| 29 | struct c_names c_name(arg_t *); |
Lev Walkin | 6d69204 | 2017-09-29 23:15:30 -0700 | [diff] [blame] | 30 | struct c_names c_expr_name(arg_t *, asn1p_expr_t *); |
Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 31 | const char *c_member_name(arg_t *, asn1p_expr_t *); /* %s_%s */ |
| 32 | const char *c_presence_name(arg_t *, asn1p_expr_t *); /* %s_PR_%s */ |
| 33 | |
Lev Walkin | 6d69204 | 2017-09-29 23:15:30 -0700 | [diff] [blame] | 34 | const char *c_names_format(struct c_names); /* For debugging */ |
| 35 | |
Lev Walkin | 5efafc5 | 2017-09-05 03:43:00 -0700 | [diff] [blame] | 36 | /* |
| 37 | * Returns 0 if no C name clashes have been encountered. |
| 38 | * Returns 1 if C name clashes have been encountered. |
| 39 | * Prints out the clashing items and suggests -fcompound-names. |
| 40 | */ |
| 41 | int c_name_clash(arg_t *arg); |
| 42 | |
| 43 | void c_name_clash_finder_init(void); |
| 44 | |
Lev Walkin | 47fc74c | 2017-09-26 18:02:27 -0700 | [diff] [blame] | 45 | void c_name_clash_finder_destroy(void); |
| 46 | |
Lev Walkin | b46156d | 2017-09-05 02:53:05 -0700 | [diff] [blame] | 47 | #endif /* ASN1_COMPILER_NAMING_H */ |