add a "long" type to MFF structs
Change-Id: Idd6e5abe2f2efb122ee0cb78c51e20fc21c7341a
diff --git a/mca/structgen.py b/mca/structgen.py
index 34af238..437326c 100755
--- a/mca/structgen.py
+++ b/mca/structgen.py
@@ -104,11 +104,12 @@
return "On line %d: %s" % (self.lineno, self.message)
class FieldType_BasePOD:
- def __init__(self, name, structname, jclassname, package, ctype, jtype, defval):
+ def __init__(self, name, structname, jclassname, package, javatype, ctype, jtype, defval):
self.name = name
self.structname = structname
self.jclassname = jclassname
self.package = package
+ self.javatype = javatype
self.ctype = ctype
self.jtype = jtype
self.defval = defval
@@ -120,21 +121,21 @@
return " public %s get%s(int index) {\n"\
" assertReadable();\n"\
" return nativeGet%s(index);\n"\
- " }" % (self.ctype, ToJavaName(self.name, 0), ToJavaName(self.name, 0))
+ " }" % (self.javatype, ToJavaName(self.name, 0), ToJavaName(self.name, 0))
def javaSetter(self):
return " public void set%s(int index, %s value) {\n"\
" assertWritable();\n"\
" nativeSet%s(index, value);\n"\
- " }" % (ToJavaName(self.name, 0), self.ctype, ToJavaName(self.name, 0))
+ " }" % (ToJavaName(self.name, 0), self.javatype, ToJavaName(self.name, 0))
def javaNativeGetter(self):
return " private native %s nativeGet%s(int index);"\
- % (self.ctype, ToJavaName(self.name, 0))
+ % (self.javatype, ToJavaName(self.name, 0))
def javaNativeSetter(self):
return " private native boolean nativeSet%s(int index, %s value);"\
- % (ToJavaName(self.name, 0), self.ctype)
+ % (ToJavaName(self.name, 0), self.javatype)
def jniGetterDefString(self):
return "JNIEXPORT %s JNICALL\n" \
@@ -168,11 +169,15 @@
class FieldType_Float(FieldType_BasePOD):
def __init__(self, name, structname, jclassname, package):
- FieldType_BasePOD.__init__(self, name, structname, jclassname, package, "float", "jfloat", "0.0")
+ FieldType_BasePOD.__init__(self, name, structname, jclassname, package, "float", "float", "jfloat", "0.0")
class FieldType_Int(FieldType_BasePOD):
def __init__(self, name, structname, jclassname, package):
- FieldType_BasePOD.__init__(self, name, structname, jclassname, package, "int", "jint", "0")
+ FieldType_BasePOD.__init__(self, name, structname, jclassname, package, "int", "int", "jint", "0")
+
+class FieldType_Long(FieldType_BasePOD):
+ def __init__(self, name, structname, jclassname, package):
+ FieldType_BasePOD.__init__(self, name, structname, jclassname, package, "long", "long long", "jlong", "0")
class StructSpec:
@@ -222,6 +227,8 @@
typestr = linecomps[1]
if typestr == "int":
fieldtype = FieldType_Int(linecomps[2], self.structname, self.jclassname, self.package)
+ elif typestr == "long":
+ fieldtype = FieldType_Long(linecomps[2], self.structname, self.jclassname, self.package)
elif typestr == "float":
fieldtype = FieldType_Float(linecomps[2], self.structname, self.jclassname, self.package)
else: