blob: 6e2acb516bb813dc802fe10374538bfe4050675d [file] [log] [blame]
vlmfa67ddc2004-06-03 03:38:44 +00001#ifndef _ASN1_COMPILER_MISC_H_
2#define _ASN1_COMPILER_MISC_H_
3
4/*
5 * Make the target language identifier out of one or more names.
6 * The function will concatenate the names and replace unsafe characters
7 * with safe ones.
8 */
vlmaf841972005-01-28 12:18:50 +00009enum ami_flags_e {
10 AMI_MASK_ONLY_SPACES = 1, /* Mask only spaces, everything else's safe */
11 AMI_CHECK_RESERVED = 2, /* Check against reserved keywords */
vlmea226772006-09-13 02:51:20 +000012 AMI_NODELIMITER = 4, /* Do not put delimiter, just concatenate */
vlmaf841972005-01-28 12:18:50 +000013};
vlm0c6d3812006-03-21 03:40:38 +000014char *asn1c_make_identifier(enum ami_flags_e, asn1p_expr_t *expr, ...);
vlmfa67ddc2004-06-03 03:38:44 +000015
16/*
17 * Return the type name of the specified expression.
18 */
19enum tnfmt {
vlmaf841972005-01-28 12:18:50 +000020 TNF_UNMODIFIED = 0x10, /* Return unmodified type name */
21 TNF_INCLUDE = 0x20, /* Format for #include <> */
22 TNF_CTYPE = 0x30, /* Format as normal C-ish type (append "_t") */
23 TNF_SAFE = 0x40, /* Replace unsafe characters with _ */
24 TNF_RSAFE = 0x50, /* Recursion-safe C type format */
vlmfa67ddc2004-06-03 03:38:44 +000025};
26char *asn1c_type_name(arg_t *arg, asn1p_expr_t *expr, enum tnfmt _format);
27
vlm75b3a532005-08-14 02:18:27 +000028/*
29 * Check whether the specified INTEGER or ENUMERATED type can be represented
30 * using the generic 'long' type.
31 * Return values:
32 * FL_NOTFIT: No, it cannot be represented using long.
vlm12164c42007-12-03 13:41:36 +000033 * FL_FITS_SIGNED: It can be represented using signed long.
34 * FL_FITS_UNSIGN: It can be represented using unsigned long.
vlm75b3a532005-08-14 02:18:27 +000035 * FL_FORCED: Probably can't, but -fnative-types is in force.
36 */
37enum asn1c_fitslong_e {
38 FL_NOTFIT,
vlm12164c42007-12-03 13:41:36 +000039 FL_FITS_SIGNED,
40 FL_FITS_UNSIGN,
vlm75b3a532005-08-14 02:18:27 +000041 FL_FORCED,
42};
43enum asn1c_fitslong_e asn1c_type_fits_long(arg_t *arg, asn1p_expr_t *expr);
44
vlmfa67ddc2004-06-03 03:38:44 +000045#endif /* _ASN1_COMPILER_MISC_H_ */