summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2017-09-22 20:47:39 +0200
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2017-09-22 21:03:23 +0200
commit5e788e3a5c99a28152d5960fe49bdd3ef4d9707e (patch)
treefacd3289c96228fcba9385d3dae696c390c3e0dc
parentc146d6f877de68d789631c635290e83cfde20747 (diff)
downloadefl-5e788e3a5c99a28152d5960fe49bdd3ef4d9707e.tar.gz
elua: bind new eolian type builtin API
-rw-r--r--src/bindings/luajit/eolian.lua126
-rw-r--r--src/lib/eolian/eo_parser.c1
2 files changed, 127 insertions, 0 deletions
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index 1f3c009682..8982ef4817 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -83,6 +83,67 @@ ffi.cdef [[
EOLIAN_TYPE_UNDEFINED
} Eolian_Type_Type;
+ typedef enum
+ {
+ EOLIAN_TYPE_BUILTIN_INVALID = 0,
+
+ EOLIAN_TYPE_BUILTIN_BYTE,
+ EOLIAN_TYPE_BUILTIN_UBYTE,
+ EOLIAN_TYPE_BUILTIN_CHAR,
+ EOLIAN_TYPE_BUILTIN_SHORT,
+ EOLIAN_TYPE_BUILTIN_USHORT,
+ EOLIAN_TYPE_BUILTIN_INT,
+ EOLIAN_TYPE_BUILTIN_UINT,
+ EOLIAN_TYPE_BUILTIN_LONG,
+ EOLIAN_TYPE_BUILTIN_ULONG,
+ EOLIAN_TYPE_BUILTIN_LLONG,
+ EOLIAN_TYPE_BUILTIN_ULLONG,
+
+ EOLIAN_TYPE_BUILTIN_INT8,
+ EOLIAN_TYPE_BUILTIN_UINT8,
+ EOLIAN_TYPE_BUILTIN_INT16,
+ EOLIAN_TYPE_BUILTIN_UINT16,
+ EOLIAN_TYPE_BUILTIN_INT32,
+ EOLIAN_TYPE_BUILTIN_UINT32,
+ EOLIAN_TYPE_BUILTIN_INT64,
+ EOLIAN_TYPE_BUILTIN_UINT64,
+ EOLIAN_TYPE_BUILTIN_INT128,
+ EOLIAN_TYPE_BUILTIN_UINT128,
+
+ EOLIAN_TYPE_BUILTIN_SIZE,
+ EOLIAN_TYPE_BUILTIN_SSIZE,
+ EOLIAN_TYPE_BUILTIN_INTPTR,
+ EOLIAN_TYPE_BUILTIN_UINTPTR,
+ EOLIAN_TYPE_BUILTIN_PTRDIFF,
+
+ EOLIAN_TYPE_BUILTIN_TIME,
+
+ EOLIAN_TYPE_BUILTIN_FLOAT,
+ EOLIAN_TYPE_BUILTIN_DOUBLE,
+
+ EOLIAN_TYPE_BUILTIN_BOOL,
+
+ EOLIAN_TYPE_BUILTIN_VOID,
+
+ EOLIAN_TYPE_BUILTIN_ACCESSOR,
+ EOLIAN_TYPE_BUILTIN_ARRAY,
+ EOLIAN_TYPE_BUILTIN_ITERATOR,
+ EOLIAN_TYPE_BUILTIN_HASH,
+ EOLIAN_TYPE_BUILTIN_LIST,
+
+ EOLIAN_TYPE_BUILTIN_FUTURE,
+
+ EOLIAN_TYPE_BUILTIN_ANY_VALUE,
+ EOLIAN_TYPE_BUILTIN_ANY_VALUE_PTR,
+
+ EOLIAN_TYPE_BUILTIN_MSTRING,
+ EOLIAN_TYPE_BUILTIN_STRING,
+ EOLIAN_TYPE_BUILTIN_STRINGSHARE,
+
+ EOLIAN_TYPE_BUILTIN_VOID_PTR,
+ EOLIAN_TYPE_BUILTIN_FREE_CB
+ } Eolian_Type_Builtin_Type;
+
typedef enum {
EOLIAN_C_TYPE_DEFAULT = 0,
EOLIAN_C_TYPE_PARAM,
@@ -313,6 +374,7 @@ ffi.cdef [[
Eina_Iterator *eolian_typedecl_all_structs_get(const Eolian_Unit *unit);
Eina_Iterator *eolian_typedecl_all_enums_get(const Eolian_Unit *unit);
Eolian_Type_Type eolian_type_type_get(const Eolian_Type *tp);
+ Eolian_Type_Builtin_Type eolian_type_builtin_type_get(const Eolian_Type *tp);
Eolian_Typedecl_Type eolian_typedecl_type_get(const Eolian_Typedecl *tp);
Eina_Iterator *eolian_typedecl_struct_fields_get(const Eolian_Typedecl *tp);
const Eolian_Struct_Type_Field *eolian_typedecl_struct_field_get(const Eolian_Typedecl *tp, const char *field);
@@ -504,6 +566,66 @@ M.type_type = {
UNDEFINED = 4
}
+M.type_builtin_type = {
+ INVALID = 0,
+
+ BYTE = 1,
+ UBYTE = 2,
+ CHAR = 3,
+ SHORT = 4,
+ USHORT = 5,
+ INT = 6,
+ UINT = 7,
+ LONG = 8,
+ ULONG = 9,
+ LLONG = 10,
+ ULLONG = 11,
+
+ INT8 = 12,
+ UINT8 = 13,
+ INT16 = 14,
+ UINT16 = 15,
+ INT32 = 16,
+ UINT32 = 17,
+ INT64 = 18,
+ UINT64 = 19,
+ INT128 = 20,
+ UINT128 = 21,
+
+ SIZE = 22,
+ SSIZE = 23,
+ INTPTR = 24,
+ UINTPTR = 25,
+ PTRDIFF = 26,
+
+ TIME = 27,
+
+ FLOAT = 28,
+ DOUBLE = 29,
+
+ BOOL = 30,
+
+ VOID = 31,
+
+ ACCESSOR = 32,
+ ARRAY = 33,
+ ITERATOR = 34,
+ HASH = 35,
+ LIST = 36,
+
+ FUTURE = 37,
+
+ ANY_VALUE = 38,
+ ANY_VALUE_PTR = 39,
+
+ MSTRING = 40,
+ STRING = 41,
+ STRINGSHARE = 42,
+
+ VOID_PTR = 43,
+ FREE_CB = 44
+}
+
M.typedecl_type = {
UNKNOWN = 0,
STRUCT = 1,
@@ -674,6 +796,10 @@ M.Type = ffi.metatype("Eolian_Type", {
return tonumber(eolian.eolian_type_type_get(self))
end,
+ builtin_type_get = function(self)
+ return tonumber(eolian.eolian_type_builtin_type_get(self))
+ end,
+
file_get = function(self, name)
local v = eolian.eolian_type_file_get(self)
if v == nil then return nil end
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index e21a034084..6baeb5d017 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -743,6 +743,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref)
if (ls->t.kw == KW_void)
{
def->type = EOLIAN_TYPE_VOID;
+ def->btype = EOLIAN_TYPE_BUILTIN_VOID;
eo_lexer_get(ls);
}
else if (ls->t.kw == KW___undefined_type)