Package org.bytedeco.javacpp.tools
Class Generator
java.lang.Object
org.bytedeco.javacpp.tools.Generator
The Generator is where all the C++ source code that we need gets generated.
It has not been designed in any meaningful way since the requirements were
not well understood. It is basically a prototype and is really quite a mess.
Now that we understand better what we need, it could use some refactoring.
When attempting to understand what the Generator does, try to run experiments and inspect the generated code: It is quite readable.
Moreover, although Generator is the one ultimately doing something with the various annotations it relies on, it was easier to describe the behavior its meant to have with them as part of the documentation of the annotations, so we can refer to them to understand more about how Generator should work:
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static enum
(package private) static enum
(package private) static enum
(package private) static enum
(package private) static enum
-
Field Summary
FieldsModifier and TypeFieldDescription(package private) boolean
(package private) Map
<Method, MethodInformation> (package private) IndexedSet
<Class> (package private) IndexedSet
<Class> (package private) final String
(package private) IndexedSet
<Class> (package private) IndexedSet
<Class> (package private) static final String
(package private) PrintWriter
(package private) final Logger
(package private) boolean
(package private) PrintWriter
(package private) PrintWriter
(package private) boolean
(package private) final Properties
(package private) PrintWriter
(package private) boolean
-
Constructor Summary
ConstructorsConstructorDescriptionGenerator
(Logger logger, Properties properties) Generator
(Logger logger, Properties properties, String encoding) -
Method Summary
Modifier and TypeMethodDescription(package private) AdapterInformation
adapterInformation
(boolean out, String valueTypeName, Annotation... annotations) (package private) AdapterInformation
adapterInformation
(boolean out, MethodInformation methodInfo, int j) (package private) static Allocator
(package private) static int
allocatorMax
(Class<?> cls, Method method) (package private) static boolean
asUtf16
(Annotation[] annotations) (package private) static boolean
asUtf16
(MethodInformation methodInfo, int j) (package private) Annotation
behavior
(Annotation... annotations) (package private) Annotation
by
(Annotation... annotations) (package private) Annotation
by
(MethodInformation methodInfo, int j) (package private) void
call
(MethodInformation methodInfo, String returnPrefix, boolean secondCall) (package private) void
callback
(Class<?> cls, Method callbackMethod, String callbackName, int allocatorMax, boolean needDefinition, MethodInformation methodInfo) (package private) void
callbackAllocator
(Class<?> cls, String callbackName, int allocatorMax) (package private) String
cast
(Class<?> type, Annotation... annotations) (package private) String
cast
(MethodInformation methodInfo, int j) (package private) boolean
classes
(boolean handleExceptions, boolean defineAdapters, boolean convertStrings, boolean declareEnums, String loadSuffix, String baseLoadSuffix, String classPath, Class<?>... classes) (package private) static boolean
constFunction
(Class<?> classType, Method functionMethod) (package private) static String
constValueTypeName
(String... typeName) (package private) String[]
cppAnnotationTypeName
(Class<?> type, Annotation... annotations) (package private) String[]
cppCastTypeName
(Class<?> type, Annotation... annotations) (package private) String[]
cppFunctionTypeName
(Method... functionMethods) (package private) static String
cppScopeName
(Class<?> type) (package private) static String
cppScopeName
(MethodInformation methodInfo) (package private) String[]
cppTypeName
(Class<?> type) (package private) String[]
cppTypeName
(Class<?> type, Annotation[] annotations) (package private) String[]
cppTypeName
(MethodInformation methodInfo, int j) (package private) static String
createString
(String ptr, String adapter, boolean asUtf16) (package private) static boolean
criticalRegion
(Class<?> cls, Method method) (package private) String
enumValueType
(Class<?> type) (package private) static String
functionClassName
(Class<?> cls) (package private) static Method[]
functionMethods
(Class<?> cls, boolean[] callbackAllocators) boolean
generate
(String sourceFilename, String jniConfigFilename, String reflectConfigFilename, String headerFilename, String loadSuffix, String baseLoadSuffix, String classPath, Class<?>... classes) (package private) static String
getStringData
(String str, boolean asUtf16) (package private) static String
jniTypeName
(Class type) (package private) static String
(package private) MethodInformation
methodInformation
(Method method) (package private) boolean
(package private) static boolean
noexceptFunction
(Class<?> classType, Method functionMethod) (package private) static boolean
noException
(Class<?> cls, Method method) (package private) void
parametersAfter
(MethodInformation methodInfo) (package private) void
parametersBefore
(MethodInformation methodInfo) (package private) static String
releaseStringData
(String str, String ptr, boolean asUtf16) (package private) void
returnAfter
(MethodInformation methodInfo) (package private) String
returnBefore
(MethodInformation methodInfo) (package private) static String
(package private) static String
valueTypeName
(String... typeName)
-
Field Details
-
JNI_VERSION
- See Also:
-
baseClasses
-
logger
-
properties
-
encoding
-
out
PrintWriter out -
out2
PrintWriter out2 -
jniConfigOut
PrintWriter jniConfigOut -
reflectConfigOut
PrintWriter reflectConfigOut -
callbacks
-
functions
IndexedSet<Class> functions -
deallocators
IndexedSet<Class> deallocators -
arrayDeallocators
IndexedSet<Class> arrayDeallocators -
jclasses
IndexedSet<Class> jclasses -
members
-
virtualFunctions
-
virtualMembers
-
annotationCache
Map<Method,MethodInformation> annotationCache -
mayThrowExceptions
boolean mayThrowExceptions -
usesAdapters
boolean usesAdapters -
passesStrings
boolean passesStrings -
accessesEnums
boolean accessesEnums
-
-
Constructor Details
-
Generator
-
Generator
-
-
Method Details
-
generate
public boolean generate(String sourceFilename, String jniConfigFilename, String reflectConfigFilename, String headerFilename, String loadSuffix, String baseLoadSuffix, String classPath, Class<?>... classes) throws IOException - Throws:
IOException
-
classes
-
methods
-
parametersBefore
-
returnBefore
-
call
-
returnAfter
-
parametersAfter
-
callback
void callback(Class<?> cls, Method callbackMethod, String callbackName, int allocatorMax, boolean needDefinition, MethodInformation methodInfo) -
callbackAllocator
-
functionClassName
-
functionMethods
-
methodInformation
-
allocatorMax
-
allocator
-
criticalRegion
-
noException
-
adapterInformation
-
adapterInformation
-
cast
-
cast
-
by
-
by
-
behavior
-
enumValueType
-
asUtf16
-
asUtf16
-
createString
-
getStringData
-
releaseStringData
-
constValueTypeName
-
valueTypeName
-
constFunction
-
noexceptFunction
-
cppAnnotationTypeName
-
cppCastTypeName
-
cppTypeName
-
cppTypeName
-
cppTypeName
-
cppFunctionTypeName
-
cppScopeName
-
cppScopeName
-
jniTypeName
-
signature
-
mangle
-