Skip to content

Commit d7d32fe

Browse files
committed
JNAerator: started refactoring of DeclarationsConverter, TypeConversion and GlobalsConverter into BridJ- and JNA-specific subclasses
1 parent a955252 commit d7d32fe

1 file changed

Lines changed: 18 additions & 48 deletions

File tree

Generator/src/main/java/com/nativelibs4java/opencl/generator/JavaCLGenerator.java

Lines changed: 18 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,50 +2,19 @@
22

33
import com.nativelibs4java.opencl.*;
44
import com.ochafik.io.IOUtils;
5-
import com.ochafik.lang.jnaerator.ClassOutputter;
6-
import com.ochafik.lang.jnaerator.DeclarationsConverter;
7-
import com.ochafik.lang.jnaerator.GlobalsGenerator;
8-
import com.ochafik.lang.jnaerator.JNAerator;
9-
import com.ochafik.lang.jnaerator.JNAeratorConfig;
10-
import com.ochafik.lang.jnaerator.JNAeratorParser;
11-
import com.ochafik.lang.jnaerator.ObjectiveCGenerator;
5+
import com.ochafik.lang.jnaerator.*;
126
import com.ochafik.lang.jnaerator.PreprocessorUtils.MacroUseCallback;
13-
import com.ochafik.lang.jnaerator.Result;
14-
import com.ochafik.lang.jnaerator.Signatures;
15-
import com.ochafik.lang.jnaerator.SourceFiles;
16-
import com.ochafik.lang.jnaerator.TypeConversion;
177
import com.ochafik.lang.jnaerator.TypeConversion.JavaPrimitive;
188
import com.ochafik.lang.jnaerator.TypeConversion.TypeConversionMode;
19-
import com.ochafik.lang.jnaerator.UniversalReconciliator;
20-
import com.ochafik.lang.jnaerator.UnsupportedConversionException;
21-
import com.ochafik.lang.jnaerator.parser.Arg;
22-
import com.ochafik.lang.jnaerator.parser.DeclarationsHolder;
23-
import com.ochafik.lang.jnaerator.parser.Declarator;
24-
import com.ochafik.lang.jnaerator.parser.Expression;
25-
import com.ochafik.lang.jnaerator.parser.Function;
26-
import com.ochafik.lang.jnaerator.parser.Identifier;
27-
import com.ochafik.lang.jnaerator.parser.Modifier;
28-
import com.ochafik.lang.jnaerator.parser.ModifierType;
29-
import com.ochafik.lang.jnaerator.parser.SourceFile;
30-
import com.ochafik.lang.jnaerator.parser.Statement;
31-
import com.ochafik.lang.jnaerator.parser.Struct;
32-
import com.ochafik.lang.jnaerator.parser.TypeRef;
33-
import com.ochafik.lang.jnaerator.parser.VariablesDeclaration;
9+
import com.ochafik.lang.jnaerator.parser.*;
3410
import com.ochafik.lang.jnaerator.runtime.NativeSize;
3511
import com.ochafik.util.listenable.Adapter;
3612
import com.ochafik.util.listenable.Pair;
3713
import com.ochafik.util.string.RegexUtils;
3814
import com.ochafik.util.string.StringUtils;
3915
import java.io.File;
40-
import java.nio.*;
41-
import java.io.IOException;
42-
import java.io.PrintWriter;
43-
import java.util.ArrayList;
44-
import java.util.HashMap;
45-
import java.util.HashSet;
46-
import java.util.List;
47-
import java.util.Set;
48-
import java.util.Map;
16+
import java.io.*;
17+
import java.util.*;
4918
import static com.ochafik.lang.jnaerator.parser.ElementsHelper.*;
5019

5120
import java.util.regex.Pattern;
@@ -87,19 +56,20 @@ public Boolean adapt(Function value) {
8756
}
8857

8958
Map<String, Set<String>> macrosByFile = new HashMap<String, Set<String>>();
90-
public SourceFiles parseSources(Feedback feedback, TypeConversion typeConverter) throws IOException, LexerException {
91-
feedback.setStatus("Parsing native headers...");
92-
return JNAeratorParser.parse(config, typeConverter, null/*new MacroUseCallback() {
59+
60+
@Override
61+
protected JNAeratorParser createJNAeratorParser() {
62+
return new JNAeratorParser() {
9363

9464
@Override
95-
public void macroUsed(String path, String macroName) {
96-
Set<String> macros = macrosByFile.get(path);
97-
if (macros == null)
98-
macrosByFile.put(path, macros = new HashSet<String>());
99-
macros.add(macroName);
65+
protected com.ochafik.lang.jnaerator.parser.ObjCppParser newObjCppParser(TypeConversion typeConverter, String s, boolean verbose, PrintStream errorOut) throws IOException {
66+
com.ochafik.lang.jnaerator.parser.ObjCppParser parser = super.newObjCppParser(typeConverter, s, verbose, errorOut);
67+
parser.allowKinds(ModifierKind.OpenCL);
68+
return parser;
10069
}
101-
}*/);
102-
}
70+
71+
};
72+
}
10373

10474
static Set<String> openclPrimitives = new HashSet<String>();
10575
static {
@@ -116,7 +86,7 @@ public Result createResult(final ClassOutputter outputter, Feedback feedback) {
11686

11787
@Override
11888
public void init() {
119-
typeConverter = new TypeConversion(this) {
89+
typeConverter = new JNATypeConversion(this) {
12090

12191
@Override
12292
public void initTypes() {
@@ -148,7 +118,7 @@ public boolean isObjCppPrimitive(String s) {
148118
}
149119

150120
};
151-
declarationsConverter = new DeclarationsConverter(this) {
121+
declarationsConverter = new JNADeclarationsConverter(this) {
152122

153123
@Override
154124
public void convertFunction(Function function, Signatures signatures, boolean isCallback, DeclarationsHolder out, Identifier libraryClassName, int unused) {
@@ -262,7 +232,7 @@ public void convertFunction(Function function, Signatures signatures, boolean is
262232
out.addDeclaration(method);
263233
}
264234
};
265-
globalsGenerator = new GlobalsGenerator(this);
235+
globalsGenerator = new JNAGlobalsGenerator(this);
266236
objectiveCGenerator = new ObjectiveCGenerator(this);
267237
universalReconciliator = new UniversalReconciliator();
268238
}

0 commit comments

Comments
 (0)