Switch to intmax_t (rather than int) for #if expressions
authorCarl Worth <cworth@cworth.org>
Mon, 24 May 2010 18:27:23 +0000 (11:27 -0700)
committerCarl Worth <cworth@cworth.org>
Mon, 24 May 2010 18:27:23 +0000 (11:27 -0700)
This is what the C99 specification demands. And the GLSL specification
says that we should follow the "standard C++" rules for #if condition
expressions rather than the GLSL rules, (which only support a 32-bit
integer).

glcpp-parse.y
glcpp.h

index 0d3afa7af64c8ae9573d0a36633400dba5416357..2c0fe9a6af9ce2efbc7f0d8c1b37c996227ef1b6 100644 (file)
@@ -107,6 +107,7 @@ glcpp_parser_lex (glcpp_parser_t *parser);
 %}
 
 %union {
+       intmax_t imaxval;
        int ival;
        char *str;
        argument_list_t *argument_list;
@@ -119,7 +120,8 @@ glcpp_parser_lex (glcpp_parser_t *parser);
 %lex-param {glcpp_parser_t *parser}
 
 %token DEFINE DEFINED ELIF ELSE ENDIF FUNC_MACRO IDENTIFIER IDENTIFIER_FINALIZED IF IFDEF IFNDEF INTEGER OBJ_MACRO NEWLINE SPACE TOKEN UNDEF
-%type <ival> expression INTEGER punctuator
+%type <ival> punctuator
+%type <imaxval> expression INTEGER
 %type <str> content FUNC_MACRO IDENTIFIER IDENTIFIER_FINALIZED OBJ_MACRO
 %type <argument_list> argument_list
 %type <string_list> macro parameter_list
diff --git a/glcpp.h b/glcpp.h
index 33ece8f92b114fa5165a2700811128826d7113b1..503731b85b3b8e7ef0df104f64dd6dc1a2b6d48c 100644 (file)
--- a/glcpp.h
+++ b/glcpp.h
@@ -24,6 +24,8 @@
 #ifndef GLCPP_H
 #define GLCPP_H
 
+#include <stdint.h>
+
 #include <talloc.h>
 
 #include "hash_table.h"