From 0a8e1566c766f3b5a5e71b5d80500034f1a614a8 Mon Sep 17 00:00:00 2001 From: Sven Gothel <sgothel@jausoft.com> Date: Wed, 20 Jul 2011 07:30:48 +0200 Subject: 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. --- src/java/com/jogamp/gluegen/JavaEmitter.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/java/com/jogamp/gluegen/JavaEmitter.java') 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()) { -- cgit v1.2.3