author | Medo <smaxein@googlemail.com> |
Sat, 18 Aug 2012 13:39:05 +0200 | |
changeset 7558 | 983ff426f91e |
child 7584 | 7831c84cc644 |
permissions | -rw-r--r-- |
7558
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
1 |
package org.hedgewars.hedgeroid.frontlib; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
2 |
|
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
3 |
import com.sun.jna.DefaultTypeMapper; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
4 |
import com.sun.jna.FromNativeContext; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
5 |
import com.sun.jna.ToNativeContext; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
6 |
import com.sun.jna.TypeConverter; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
7 |
import com.sun.jna.TypeMapper; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
8 |
|
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
9 |
class AndroidTypeMapper extends DefaultTypeMapper { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
10 |
static final int NATIVE_INT_SIZE = 4; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
11 |
static final int NATIVE_SIZE_T_SIZE = 4; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
12 |
static final int NATIVE_BOOL_SIZE = 1; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
13 |
public static final TypeMapper INSTANCE = new AndroidTypeMapper(); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
14 |
|
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
15 |
protected AndroidTypeMapper() { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
16 |
addTypeConverter(Boolean.class, new BooleanConverter()); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
17 |
addTypeConverter(NativeSizeT.class, new SizeTConverter()); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
18 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
19 |
|
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
20 |
private static final class BooleanConverter implements TypeConverter { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
21 |
public Class<Byte> nativeType() { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
22 |
return Byte.class; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
23 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
24 |
public Object fromNative(Object value, FromNativeContext context) { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
25 |
return ((Byte)value).intValue() != 0 ? Boolean.TRUE : Boolean.FALSE; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
26 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
27 |
public Object toNative(Object value, ToNativeContext context) { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
28 |
return Byte.valueOf((byte)(Boolean.TRUE.equals(value) ? 1 : 0)); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
29 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
30 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
31 |
|
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
32 |
private static final class SizeTConverter implements TypeConverter { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
33 |
public Class<Integer> nativeType() { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
34 |
return Integer.class; |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
35 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
36 |
public Object fromNative(Object value, FromNativeContext context) { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
37 |
return NativeSizeT.valueOf((Integer)value); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
38 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
39 |
public Object toNative(Object value, ToNativeContext context) { |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
40 |
return Integer.valueOf(value==null ? 0 : ((NativeSizeT)value).intValue()); |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
41 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
42 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
43 |
} |
983ff426f91e
Hedgeroid: Fixed JNA mapping of size_t
Medo <smaxein@googlemail.com>
parents:
diff
changeset
|
44 |