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