aboutsummaryrefslogtreecommitdiffstats
path: root/src/java/com/sun/gluegen
diff options
context:
space:
mode:
authorkrishna_gadepalli <[email protected]>2007-03-05 19:56:27 +0000
committerkrishna_gadepalli <[email protected]>2007-03-05 19:56:27 +0000
commitc1d4aef4377ca5102e3f79bf9027f7f801263218 (patch)
treed2cd75fcd51f953a8daf1a07f95efb76a9ebadd7 /src/java/com/sun/gluegen
parent173474fa26823a6a508344430ec0f4443e0bc8b9 (diff)
- Add a fix (from Ken Russel) for properly parsing negative constants in enums
by adding getAllChildrenText() - Fixed the lineDirective() method in PCPP.java to emit the correct format of the line directive git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/gluegen/trunk@58 a78bb65f-1512-4460-ba86-f6dc96a7bf27
Diffstat (limited to 'src/java/com/sun/gluegen')
-rw-r--r--src/java/com/sun/gluegen/cgram/HeaderParser.g4
-rw-r--r--src/java/com/sun/gluegen/cgram/TNode.java10
-rw-r--r--src/java/com/sun/gluegen/pcpp/PCPP.java2
3 files changed, 13 insertions, 3 deletions
diff --git a/src/java/com/sun/gluegen/cgram/HeaderParser.g b/src/java/com/sun/gluegen/cgram/HeaderParser.g
index f91f146..7c13968 100644
--- a/src/java/com/sun/gluegen/cgram/HeaderParser.g
+++ b/src/java/com/sun/gluegen/cgram/HeaderParser.g
@@ -597,7 +597,7 @@ enumerator[EnumType enumeration, long defaultValue] returns [long newDefaultValu
: eName:ID ( ASSIGN eVal:expr )? {
long value = 0;
if (eVal != null) {
- String vTxt = eVal.getText();
+ String vTxt = eVal.getAllChildrenText();
if (enumHash.containsKey(vTxt)) {
EnumType oldEnumType = (EnumType) enumHash.get(vTxt);
value = oldEnumType.getEnumValue(vTxt);
@@ -605,7 +605,7 @@ enumerator[EnumType enumeration, long defaultValue] returns [long newDefaultValu
try {
value = Long.decode(vTxt).longValue();
} catch (NumberFormatException e) {
- System.err.println("NumberFormatException: " + enumerator_AST_in);
+ System.err.println("NumberFormatException: ID[" + eName.getText() + "], VALUE=[" + vTxt + "]");
throw e;
}
}
diff --git a/src/java/com/sun/gluegen/cgram/TNode.java b/src/java/com/sun/gluegen/cgram/TNode.java
index f5b2c17..9fca506 100644
--- a/src/java/com/sun/gluegen/cgram/TNode.java
+++ b/src/java/com/sun/gluegen/cgram/TNode.java
@@ -153,6 +153,16 @@ public void initialize(AST tr) {
text = text_;
}
+ /** Returns the text for this node and all children */
+ public String getAllChildrenText() {
+ StringBuffer buf = new StringBuffer();
+ buf.append(getText());
+ for (TNode node = (TNode) getFirstChild(); node != null; node = (TNode) node.getNextSibling()) {
+ buf.append(node.getText());
+ }
+ return buf.toString();
+ }
+
/** return the last child of this node, or null if there is none */
public TNode getLastChild() {
TNode down = (TNode)getFirstChild();
diff --git a/src/java/com/sun/gluegen/pcpp/PCPP.java b/src/java/com/sun/gluegen/pcpp/PCPP.java
index 4a98542..d5d9604 100644
--- a/src/java/com/sun/gluegen/pcpp/PCPP.java
+++ b/src/java/com/sun/gluegen/pcpp/PCPP.java
@@ -867,7 +867,7 @@ public class PCPP {
}
private void lineDirective() {
- print("#line " + lineNumber() + " \"" + filename() + "\"");
+ print("# " + lineNumber() + " \"" + filename() + "\"");
println();
}
}