port/merge Eurecom APER support from OPENAIRMME
Eurecom has developed APER support for asn1c as part of the OPENAIRMME
softare (a LTE MME). This is too important to let it bit-rout out
of asn1c. Let's forward-port and merge it.
diff --git a/libasn1compiler/asn1c_out.h b/libasn1compiler/asn1c_out.h
index d68f3a8..80026ce 100644
--- a/libasn1compiler/asn1c_out.h
+++ b/libasn1compiler/asn1c_out.h
@@ -117,17 +117,25 @@
* Format LONG_MIN according to C90 rules.
*/
#define OINT(iv) do { \
- if(iv == (-2147483647L - 1)) \
+ if(iv == (-2147483647L - 1)) \
OUT("(-2147483647L - 1)"); \
- else \
- OUT("%" PRIdASN, iv); \
+ else if (iv > 4294967296UL) \
+ OUT("%" PRIdASN "ull", iv); \
+ else if (iv > 2147483647L) \
+ OUT("%" PRIdASN "ul", iv); \
+ else \
+ OUT("%" PRIdASN "l", iv); \
} while(0)
#define OINTS(iv) do { \
- if(iv == (-2147483647L - 1)) \
+ if(iv == (-2147483647L - 1)) \
OUT("(-2147483647L - 1)"); \
- else \
- OUT("% " PRIdASN, iv); \
+ else if (iv > 4294967296UL) \
+ OUT("%" PRIdASN "ull", iv); \
+ else if (iv > 2147483647L) \
+ OUT("%" PRIdASN "ul", iv); \
+ else \
+ OUT("% " PRIdASN "l", iv); \
} while(0)
#endif /* _ASN1_COMPILED_OUTPUT_H_ */