</parameter>
</parameters>
</function>
+ <function name="test_short" c:identifier="test_short">
+ <return-value transfer-ownership="none">
+ <type name="short" c:type="gshort"/>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+ <type name="short" c:type="gshort"/>
+ </parameter>
+ </parameters>
+ </function>
<function name="test_simple_boxed_a_const_return"
c:identifier="test_simple_boxed_a_const_return">
<return-value transfer-ownership="none">
</parameter>
</parameters>
</function>
+ <function name="test_ushort" c:identifier="test_ushort">
+ <return-value transfer-ownership="none">
+ <type name="ushort" c:type="gushort"/>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+ <type name="ushort" c:type="gushort"/>
+ </parameter>
+ </parameters>
+ </function>
<function name="test_utf8_const_in" c:identifier="test_utf8_const_in">
<return-value transfer-ownership="none">
<type name="none" c:type="void"/>
return in;
}
+gshort test_short (gshort in)
+{
+ return in;
+}
+
+gushort test_ushort (gushort in)
+{
+ return in;
+}
+
gint test_int (gint in)
{
return in;
guint32 test_uint32 (guint32 in);
gint64 test_int64 (gint64 in);
guint64 test_uint64 (guint64 in);
+gshort test_short (gshort in);
+gushort test_ushort (gushort in);
gint test_int (gint in);
guint test_uint (guint in);
glong test_long (glong in);
break;
case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_SHORT:
+ case GI_TYPE_TAG_USHORT:
value->v_uint16 = G_STRUCT_MEMBER(guint16, mem, offset);
result = TRUE;
break;
break;
case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_SHORT:
+ case GI_TYPE_TAG_USHORT:
value->v_int = (gint)G_STRUCT_MEMBER(guint16, mem, offset);
result = TRUE;
break;
break;
case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_SHORT:
+ case GI_TYPE_TAG_USHORT:
G_STRUCT_MEMBER(guint16, mem, offset) = value->v_uint16;
result = TRUE;
break;
break;
case GI_TYPE_TAG_INT16:
case GI_TYPE_TAG_UINT16:
+ case GI_TYPE_TAG_SHORT:
+ case GI_TYPE_TAG_USHORT:
G_STRUCT_MEMBER(guint16, mem, offset) = (guint16)value->v_int;
result = TRUE;
break;
case GI_TYPE_TAG_TIME_T:
value->v_long = *(long*)&base->typelib->data[blob->offset];
break;
+ case GI_TYPE_TAG_SHORT:
+ value->v_short = *(gshort*)&base->typelib->data[blob->offset];
+ break;
+ case GI_TYPE_TAG_USHORT:
+ value->v_ushort = *(gushort*)&base->typelib->data[blob->offset];
+ break;
case GI_TYPE_TAG_INT:
value->v_int = *(gint*)&base->typelib->data[blob->offset];
break;
return "int64";
case GI_TYPE_TAG_UINT64:
return "uint64";
+ case GI_TYPE_TAG_SHORT:
+ return "short";
+ case GI_TYPE_TAG_USHORT:
+ return "ushort";
case GI_TYPE_TAG_INT:
return "int";
case GI_TYPE_TAG_UINT:
guint64 v_uint64;
gfloat v_float;
gdouble v_double;
+ gshort v_short;
+ gushort v_ushort;
gint v_int;
guint v_uint;
glong v_long;
GI_TYPE_TAG_UINT32 = 7,
GI_TYPE_TAG_INT64 = 8,
GI_TYPE_TAG_UINT64 = 9,
- GI_TYPE_TAG_INT = 10,
- GI_TYPE_TAG_UINT = 11,
- GI_TYPE_TAG_LONG = 12,
- GI_TYPE_TAG_ULONG = 13,
- GI_TYPE_TAG_SSIZE = 14,
- GI_TYPE_TAG_SIZE = 15,
- GI_TYPE_TAG_FLOAT = 16,
- GI_TYPE_TAG_DOUBLE = 17,
- GI_TYPE_TAG_TIME_T = 18,
- GI_TYPE_TAG_GTYPE = 19,
- GI_TYPE_TAG_UTF8 = 20,
- GI_TYPE_TAG_FILENAME = 21,
+ GI_TYPE_TAG_SHORT = 10,
+ GI_TYPE_TAG_USHORT = 11,
+ GI_TYPE_TAG_INT = 12,
+ GI_TYPE_TAG_UINT = 13,
+ GI_TYPE_TAG_LONG = 14,
+ GI_TYPE_TAG_ULONG = 15,
+ GI_TYPE_TAG_SSIZE = 16,
+ GI_TYPE_TAG_SIZE = 17,
+ GI_TYPE_TAG_FLOAT = 18,
+ GI_TYPE_TAG_DOUBLE = 19,
+ GI_TYPE_TAG_TIME_T = 20,
+ GI_TYPE_TAG_GTYPE = 21,
+ GI_TYPE_TAG_UTF8 = 22,
+ GI_TYPE_TAG_FILENAME = 23,
/* Non-basic types */
- GI_TYPE_TAG_ARRAY = 22,
- GI_TYPE_TAG_INTERFACE = 23,
- GI_TYPE_TAG_GLIST = 24,
- GI_TYPE_TAG_GSLIST = 25,
- GI_TYPE_TAG_GHASH = 26,
- GI_TYPE_TAG_ERROR = 27
+ GI_TYPE_TAG_ARRAY = 24,
+ GI_TYPE_TAG_INTERFACE = 25,
+ GI_TYPE_TAG_GLIST = 26,
+ GI_TYPE_TAG_GSLIST = 27,
+ GI_TYPE_TAG_GHASH = 28,
+ GI_TYPE_TAG_ERROR = 29
/* Note - there is only room currently for 32 tags.
* See docs/typelib-format.txt SimpleTypeBlob definition */
} GITypeTag;
return &ffi_type_sint64;
case GI_TYPE_TAG_UINT64:
return &ffi_type_uint64;
+ case GI_TYPE_TAG_SHORT:
+ return &ffi_type_sshort;
+ case GI_TYPE_TAG_USHORT:
+ return &ffi_type_ushort;
case GI_TYPE_TAG_INT:
return &ffi_type_sint;
case GI_TYPE_TAG_UINT:
blob->size = 8;
*(guint64*)&data[blob->offset] = (guint64) parse_uint_value (constant->value);
break;
+ case GI_TYPE_TAG_SHORT:
+ blob->size = sizeof (gshort);
+ *(gshort*)&data[blob->offset] = (gshort) parse_int_value (constant->value);
+ break;
+ case GI_TYPE_TAG_USHORT:
+ blob->size = sizeof (gushort);
+ *(gushort*)&data[blob->offset] = (gushort) parse_uint_value (constant->value);
+ break;
case GI_TYPE_TAG_INT:
blob->size = sizeof (gint);
*(gint*)&data[blob->offset] = (gint) parse_int_value (constant->value);
{ "uint32", GI_TYPE_TAG_UINT32, 0 },
{ "int64", GI_TYPE_TAG_INT64, 0 },
{ "uint64", GI_TYPE_TAG_UINT64, 0 },
+ { "short", GI_TYPE_TAG_SHORT, 0 },
+ { "ushort", GI_TYPE_TAG_USHORT, 0 },
{ "int", GI_TYPE_TAG_INT, 0 },
{ "uint", GI_TYPE_TAG_UINT, 0 },
{ "long", GI_TYPE_TAG_LONG, 0 },
4, /* UINT32 */
8, /* INT64 */
8, /* UINT64 */
+ sizeof (gshort),
+ sizeof (gushort),
sizeof (gint),
sizeof (guint),
sizeof (glong),
TYPE_BOOLEAN = 'boolean'
TYPE_INT8 = 'int8'
TYPE_UINT8 = 'uint8'
+TYPE_SHORT = 'short'
+TYPE_USHORT = 'ushort'
TYPE_INT16 = 'int16'
TYPE_UINT16 = 'uint16'
TYPE_INT = 'int'
BASIC_GIR_TYPES = [TYPE_BOOLEAN, TYPE_INT8, TYPE_UINT8, TYPE_INT16,
TYPE_UINT16, TYPE_INT32, TYPE_UINT32, TYPE_INT64,
- TYPE_UINT64, TYPE_INT, TYPE_UINT, TYPE_LONG,
- TYPE_ULONG, TYPE_SSIZET, TYPE_SIZET, TYPE_FLOAT,
- TYPE_DOUBLE, TYPE_TIMET, TYPE_GTYPE]
+ TYPE_UINT64, TYPE_SHORT, TYPE_USHORT, TYPE_INT,
+ TYPE_UINT, TYPE_LONG, TYPE_ULONG, TYPE_SSIZET,
+ TYPE_SIZET, TYPE_FLOAT, TYPE_DOUBLE, TYPE_TIMET,
+ TYPE_GTYPE]
GIR_TYPES = [TYPE_NONE, TYPE_ANY]
GIR_TYPES.extend(BASIC_GIR_TYPES)
GIR_TYPES.extend([TYPE_STRING, TYPE_FILENAME])
type_names['char'] = TYPE_INT8
type_names['signed char'] = TYPE_INT8
type_names['unsigned char'] = TYPE_UINT8
-type_names['short'] = TYPE_INT16
-type_names['signed short'] = TYPE_INT16
-type_names['unsigned short'] = TYPE_UINT16
+type_names['short'] = TYPE_SHORT
+type_names['signed short'] = TYPE_SHORT
+type_names['unsigned short'] = TYPE_USHORT
type_names['int'] = TYPE_INT
type_names['signed int'] = TYPE_INT
type_names['signed'] = TYPE_INT
# Suppress some GLib names
type_names['uchar'] = TYPE_UINT8
-type_names['ushort'] = TYPE_UINT16
+type_names['ushort'] = TYPE_USHORT
type_names['size'] = TYPE_SIZET
type_names['ssize'] = TYPE_SSIZET
type_names['pointer'] = TYPE_ANY
default_array_types['utf8*'] = TYPE_STRING
# These types, when seen by reference, are interpreted as out parameters
-default_out_types = (TYPE_INT, TYPE_UINT, TYPE_LONG, TYPE_ULONG,
- TYPE_FLOAT, TYPE_DOUBLE, TYPE_SIZET, TYPE_SSIZET)
+default_out_types = (TYPE_SHORT, TYPE_USHORT, TYPE_INT, TYPE_UINT,
+ TYPE_LONG, TYPE_ULONG, TYPE_FLOAT, TYPE_DOUBLE,
+ TYPE_SIZET, TYPE_SSIZET)
def type_name_from_ctype(ctype):
Property, Struct, Union, Record)
from .ast import (
type_names, default_array_types,
- TYPE_STRING, TYPE_INT8, TYPE_UINT8, TYPE_INT16, TYPE_UINT16,
- TYPE_INT, TYPE_UINT, TYPE_UINT32, TYPE_INT32, TYPE_LONG,
- TYPE_ULONG, TYPE_INT64, TYPE_UINT64, TYPE_FLOAT,
- TYPE_DOUBLE, TYPE_BOOLEAN, TYPE_ANY, TYPE_SSIZET,
+ TYPE_STRING, TYPE_INT8, TYPE_UINT8, TYPE_SHORT, TYPE_USHORT,
+ TYPE_INT16, TYPE_UINT16, TYPE_INT, TYPE_UINT, TYPE_UINT32,
+ TYPE_INT32, TYPE_LONG, TYPE_ULONG, TYPE_INT64, TYPE_UINT64,
+ TYPE_FLOAT, TYPE_DOUBLE, TYPE_BOOLEAN, TYPE_ANY, TYPE_SSIZET,
TYPE_SIZET)
type_names['gssize'] = TYPE_SSIZET
type_names['gchar'] = TYPE_INT8
type_names['guchar'] = TYPE_UINT8
-type_names['gshort'] = TYPE_INT16
-type_names['gushort'] = TYPE_UINT16
+type_names['gshort'] = TYPE_SHORT
+type_names['gushort'] = TYPE_USHORT
# It's not very nice to duplicate the array types from ast.py,
# but a clean fix is hard without essentially hardcoding