summaryrefslogtreecommitdiffstats
path: root/src/net/java/games/gluegen/JavaConfiguration.java
diff options
context:
space:
mode:
authorKenneth Russel <[email protected]>2004-03-15 18:49:31 +0000
committerKenneth Russel <[email protected]>2004-03-15 18:49:31 +0000
commit0a7c6d77aab5b922f3225ed8ed6076f8ee984ab6 (patch)
treef2c7a495cd368f9977159f91d63338ad4a5a140e /src/net/java/games/gluegen/JavaConfiguration.java
parentedfa42f91c09df70073691db069db4295805f827 (diff)
Fixed Issue 68: Window system-specific JAWT classes must implement JAWT_PlatformInfo
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/svn-server-sync/jogl/trunk@90 232f8b59-042b-4e1e-8c03-345bb8c30851
Diffstat (limited to 'src/net/java/games/gluegen/JavaConfiguration.java')
-rw-r--r--src/net/java/games/gluegen/JavaConfiguration.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/net/java/games/gluegen/JavaConfiguration.java b/src/net/java/games/gluegen/JavaConfiguration.java
index 35586cb80..cdf2f091e 100644
--- a/src/net/java/games/gluegen/JavaConfiguration.java
+++ b/src/net/java/games/gluegen/JavaConfiguration.java
@@ -109,6 +109,7 @@ public class JavaConfiguration {
private Map/*<String, List<String>>*/ temporaryCVariableDeclarations = new HashMap();
private Map/*<String, List<String>>*/ temporaryCVariableAssignments = new HashMap();
private Map/*<String,List<String>>*/ extendedInterfaces = new HashMap();
+ private Map/*<String,List<String>>*/ implementedInterfaces = new HashMap();
private Map/*<String,String>*/ javaTypeRenames = new HashMap();
/** Reads the configuration file.
@@ -413,6 +414,18 @@ public class JavaConfiguration {
return res;
}
+ /** Returns a List of Strings indicating the interfaces the passed
+ class should declare it implements. May return null or a list
+ of zero length if there are none. */
+ public List/*<String>*/ implementedInterfaces(String className) {
+ List res = (List) implementedInterfaces.get(className);
+ if (res == null) {
+ res = new ArrayList();
+ implementedInterfaces.put(className, res);
+ }
+ return res;
+ }
+
/** Returns true if this #define, function, struct, or field within
a struct should be ignored during glue code generation. */
public boolean shouldIgnore(String symbol) {
@@ -602,6 +615,8 @@ public class JavaConfiguration {
doIncludeAs(tok, file, filename, lineNo);
} else if (cmd.equalsIgnoreCase("Extends")) {
readExtend(tok, filename, lineNo);
+ } else if (cmd.equalsIgnoreCase("Implements")) {
+ readImplements(tok, filename, lineNo);
} else if (cmd.equalsIgnoreCase("RenameJavaType")) {
readRenameJavaType(tok, filename, lineNo);
} else if (cmd.equalsIgnoreCase("RuntimeExceptionType")) {
@@ -1032,6 +1047,17 @@ public class JavaConfiguration {
}
}
+ protected void readImplements(StringTokenizer tok, String filename, int lineNo) {
+ try {
+ String className = tok.nextToken();
+ List intfs = implementedInterfaces(className);
+ intfs.add(tok.nextToken());
+ } catch (NoSuchElementException e) {
+ throw new RuntimeException("Error parsing \"Implements\" command at line " + lineNo +
+ " in file \"" + filename + "\": missing expected parameter", e);
+ }
+ }
+
protected void readRenameJavaType(StringTokenizer tok, String filename, int lineNo) {
try {
String fromName = tok.nextToken();