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_ */