Re: [PATCH] Make large enum constants unsigned

Stefan Kristiansson <[email protected]> Thu, 22 May 2014 10:10:02 +0300
Newsgroups gmane.comp.tools.cgen.devel
Message-ID <[email protected]>
On Thu, May 22, 2014 at 09:52:50AM +0300, Stefan Kristiansson wrote:
> 
> As for 'u' vs 'U', a 'U' is emitted in the .h file even if I put a 'u'
> in the .scm.
> If 'u' in the output is preferred, maybe someone can point out the
> reason for this?
> 

I found the reason, there's a 'string-upcase' a couple of rows above
what the patch touches.
I'm not sure getting around that is worth pursuing though?

Anyway, below is the updated patch.

2014-05-22  Stefan Kristiansson  <[email protected]>

	* enum.scm (gen-enum-decl): Emit 'U' after constants larger than
	 #x80000000

Index: cgen/enum.scm
===================================================================
RCS file: /cvs/src/src/cgen/enum.scm,v
retrieving revision 1.13
diff -u -r1.13 enum.scm
--- cgen/enum.scm	13 Feb 2010 03:39:15 -0000	1.13
+++ cgen/enum.scm	22 May 2014 07:09:00 -0000
@@ -298,7 +298,10 @@
 		     ""
 		     (string-append " = "
 				    (if (number? (cadr e))
-					(number->string (cadr e))
+					(string-append (number->string (cadr e))
+						       (if (> (cadr e)
+							      #x80000000)
+							   "U" ""))
 					(cadr e))))
 		 ))
 	       (if (and san? include-sanitize-marker?)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.