diff options
author | Sven Gothel <[email protected]> | 2011-07-20 07:30:48 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-07-20 07:30:48 +0200 |
commit | 0a8e1566c766f3b5a5e71b5d80500034f1a614a8 (patch) | |
tree | a00e98b531393652822d045c77d2da6e185a230a /src/java/com/jogamp/gluegen | |
parent | 846c64d71d0e07ce1f5b4955eba8b49bfa0b5a22 (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.java | 7 | ||||
-rw-r--r-- | src/java/com/jogamp/gluegen/JavaEmitter.java | 5 | ||||
-rw-r--r-- | src/java/com/jogamp/gluegen/package.html | 2 |
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>†</sup><sup>∗</sup>,8<sup>+</sup></td> <td>4<sup>†</sup><sup>∗</sup>,8<sup>+</sup></td> <td> 16</td> <td>16</td></tr> </table><br> <sup>†</sup> Linux, Darwin<br> - <sup>+</sup>armv7l-32bit-eabi (linux)<br> + <sup>+</sup>armv7l-eabi<br> <sup>∗</sup> Windows<br> </P> |