40package com.jogamp.gluegen.opengl.nativesig;
42import com.jogamp.gluegen.CodeUnit;
43import com.jogamp.gluegen.FunctionEmitter;
44import com.jogamp.gluegen.JavaMethodBindingEmitter;
45import com.jogamp.gluegen.JavaType;
46import com.jogamp.gluegen.MethodBinding;
47import com.jogamp.gluegen.cgram.types.FunctionSymbol;
48import com.jogamp.gluegen.opengl.GLEmitter;
49import com.jogamp.gluegen.opengl.GLJavaMethodBindingEmitter;
51import java.io.PrintWriter;
52import java.util.ArrayList;
53import java.util.Iterator;
67 final List<? extends FunctionEmitter> res = super.generateMethodBindingEmitters(sym);
70 for (
final Iterator<? extends FunctionEmitter> iter = res.iterator(); iter.hasNext();) {
71 final FunctionEmitter emitter = iter.next();
72 if (!(emitter instanceof JavaMethodBindingEmitter)) {
81 final CodeUnit unit = (getConfig().allStatic() ? javaUnit() : javaImplUnit());
83 final List<FunctionEmitter> processed =
new ArrayList<FunctionEmitter>();
86 for (
final Iterator<? extends FunctionEmitter> iter = res.iterator(); iter.hasNext();) {
87 final FunctionEmitter emitter = iter.next();
88 if (emitter.getUnit() != unit) {
89 processed.add(emitter);
95 while (!res.isEmpty()) {
96 final List<JavaMethodBindingEmitter> emittersForBinding =
new ArrayList<JavaMethodBindingEmitter>();
97 final JavaMethodBindingEmitter emitter = (JavaMethodBindingEmitter) res.remove(0);
98 emittersForBinding.add(emitter);
99 final MethodBinding binding = emitter.getBinding();
100 for (
final Iterator<? extends FunctionEmitter> iter = res.iterator(); iter.hasNext();) {
101 final JavaMethodBindingEmitter emitter2 = (JavaMethodBindingEmitter) iter.next();
102 if (emitter2.getBinding() == binding) {
103 emittersForBinding.add(emitter2);
108 processed.addAll(emittersForBinding);
116 if (allEmitters.isEmpty()) {
120 final CodeUnit unit = (getConfig().allStatic() ? javaUnit() : javaImplUnit());
123 final List<JavaMethodBindingEmitter> newEmitters =
new ArrayList<JavaMethodBindingEmitter>();
124 for (
final JavaMethodBindingEmitter javaEmitter : allEmitters) {
131 newEmitters.add(newEmitter);
134 allEmitters.addAll(newEmitters);
146 emitter.removeModifier(JavaMethodBindingEmitter.PUBLIC);
147 emitter.addModifier(JavaMethodBindingEmitter.PRIVATE);
148 emitter.setPrivateNativeMethod(
true);
152 emitter.setForDirectBufferImplementation(
true);
153 allEmitters.add(emitter);
156 javaEmitter.removeModifier(JavaMethodBindingEmitter.NATIVE);
157 javaEmitter.setEmitBody(
true);
162 for (
int i = 0; i < binding.getNumArguments(); i++) {
163 final JavaType type = binding.getJavaArgumentType(i);
164 if (type.isString() || type.isStringArray()) {
168 final JavaType retType = binding.getJavaReturnType();
169 if (retType.isString() || retType.isStringArray()) {
176 for (
final JavaMethodBindingEmitter emitter : allEmitters) {
177 if (!emitter.signatureOnly()) {
185 for (
final JavaMethodBindingEmitter jemitter : allEmitters) {
187 if (emitter.getUnit() == unit) {
191 throw new RuntimeException(
"Unexpectedly failed to find an emitter with the given writer");
A subclass of ProcAddressEmitter with special OpenGL-specific configuration abilities.
A specialization of the proc address emitter which knows how to change argument names to take into ac...
Emitter producing NativeSignature attributes.
void generateNativeSignatureEmitters(final MethodBinding binding, final List< JavaMethodBindingEmitter > allEmitters)
NativeSignatureJavaMethodBindingEmitter findEmitterWithUnit(final List< JavaMethodBindingEmitter > allEmitters, final CodeUnit unit)
boolean signatureContainsStrings(final MethodBinding binding)
List<? extends FunctionEmitter > generateMethodBindingEmitters(final FunctionSymbol sym)
boolean haveEmitterWithBody(final List< JavaMethodBindingEmitter > allEmitters)
Review: This Package/Class is not used and subject to be deleted.