summaryrefslogtreecommitdiffstats
path: root/src/java/com/jogamp/gluegen
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2011-07-20 07:30:48 +0200
committerSven Gothel <[email protected]>2011-07-20 07:30:48 +0200
commit0a8e1566c766f3b5a5e71b5d80500034f1a614a8 (patch)
treea00e98b531393652822d045c77d2da6e185a230a /src/java/com/jogamp/gluegen
parent846c64d71d0e07ce1f5b4955eba8b49bfa0b5a22 (diff)
Cleanup: Platform CPU enum, MachineDescription,
Platform: - enum CPUFamily is part of CPUType - DALVIK -> ANDROID - ARM: ARM + ARMv[567] MachineDescription - self contained - static size/alignment Config (enum) for unix32, unix64, win32, win64 and armeabi - add 'long double' - Removed MachineDescription32Bit, MachineDescription64Bit - createStatic(..) uses OS/CPU to fetch best match if not at runtime FIXES: JavaEmitter's struct-emit: Proper 32/64 struct sizes TODO: StructAccessor's mapping to <Type>Buffer w/ index os sizeof(<Type>) doesn't work, since offset may not be multiple of sizeof(<Type>)! i.e. typedef struct { int8_t bits1; // +1 - 0 // +3 (p32) int32_t id; // +4 - 4 int8_t bits2; // +1 - 8 // +3 (p32) - int64_t long0; // +8 - 12 so "longBuffer.get(<type-sized index>)" is invalid, but "byteBuffer.getLong(<byte index>)" must be done. The actual impl. doesn't matter, hence dropping the other nio type mappings is good.
Diffstat (limited to 'src/java/com/jogamp/gluegen')
-rw-r--r--src/java/com/jogamp/gluegen/GlueGen.java7
-rw-r--r--src/java/com/jogamp/gluegen/JavaEmitter.java5
-rw-r--r--src/java/com/jogamp/gluegen/package.html2
3 files changed, 6 insertions, 8 deletions
diff --git a/src/java/com/jogamp/gluegen/GlueGen.java b/src/java/com/jogamp/gluegen/GlueGen.java
index 9b0bb5f..c0e87ee 100644
--- a/src/java/com/jogamp/gluegen/GlueGen.java
+++ b/src/java/com/jogamp/gluegen/GlueGen.java
@@ -45,9 +45,6 @@ import com.jogamp.common.os.MachineDescription;
import java.io.*;
import java.util.*;
-import jogamp.common.os.MachineDescription32Bit;
-import jogamp.common.os.MachineDescription64Bit;
-
import antlr.*;
import com.jogamp.gluegen.cgram.*;
import com.jogamp.gluegen.cgram.types.*;
@@ -192,8 +189,8 @@ public class GlueGen implements GlueEmitterControls {
}
// Provide MachineDescriptions to emitter
- MachineDescription md32 = new MachineDescription32Bit();
- MachineDescription md64 = new MachineDescription64Bit();
+ final MachineDescription md32 = MachineDescription.createStaticUnix32();
+ final MachineDescription md64 = MachineDescription.createStaticUnix64();
emit.setMachineDescription(md32, md64);
// Repackage the enum and #define statements from the parser into a common format
diff --git a/src/java/com/jogamp/gluegen/JavaEmitter.java b/src/java/com/jogamp/gluegen/JavaEmitter.java
index a3ee962..770db38 100644
--- a/src/java/com/jogamp/gluegen/JavaEmitter.java
+++ b/src/java/com/jogamp/gluegen/JavaEmitter.java
@@ -1410,11 +1410,12 @@ public class JavaEmitter implements GlueEmitter {
private int slot(Type t, int byteOffset, MachineDescription curMachDesc) {
if (t.isInt()) {
- switch ((int) t.getSize(curMachDesc)) {
+ final int tsz = (int) t.getSize(curMachDesc);
+ switch (tsz) {
case 1:
case 2:
case 4:
- case 8: return byteOffset / (int) t.getSize(curMachDesc);
+ case 8: return byteOffset / tsz;
default: throw new RuntimeException("Illegal type");
}
} else if (t.isFloat()) {
diff --git a/src/java/com/jogamp/gluegen/package.html b/src/java/com/jogamp/gluegen/package.html
index cc97ad5..cd23370 100644
--- a/src/java/com/jogamp/gluegen/package.html
+++ b/src/java/com/jogamp/gluegen/package.html
@@ -89,7 +89,7 @@
<tr><td>long double</td><td>12<sup>&dagger;</sup><sup>&lowast;</sup>,8<sup>+</sup></td> <td>4<sup>&dagger;</sup><sup>&lowast;</sup>,8<sup>+</sup></td> <td> 16</td> <td>16</td></tr>
</table><br>
<sup>&dagger;</sup> Linux, Darwin<br>
- <sup>+</sup>armv7l-32bit-eabi (linux)<br>
+ <sup>+</sup>armv7l-eabi<br>
<sup>&lowast;</sup> Windows<br>
</P>