summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Kolesa <d.kolesa@osg.samsung.com>2016-11-10 16:20:19 +0100
committerDaniel Kolesa <d.kolesa@osg.samsung.com>2016-11-10 16:20:19 +0100
commit8002b3b24e6e238c1453dfe4dc863fa6cf14593b (patch)
tree2abf2b620b749a984cf9b88124ddc76fa7e228d4
parent5c54c53975b3bb8f4d7ea55ba33bee6d7dcabbe4 (diff)
downloadefl-8002b3b24e6e238c1453dfe4dc863fa6cf14593b.tar.gz
eolian: remove parsing of pointers and the corresponding APIs
Everything should be done via the new ptr() system now.
-rw-r--r--src/bindings/luajit/eolian.lua10
-rw-r--r--src/lib/eolian/Eolian.h1
-rw-r--r--src/lib/eolian/database_expr_api.c9
-rw-r--r--src/lib/eolian/database_validate.c1
-rw-r--r--src/lib/eolian/eo_parser.c30
-rw-r--r--src/scripts/elua/apps/docgen/doctree.lua8
-rw-r--r--src/tests/eolian/data/class_simple.eo2
-rw-r--r--src/tests/eolian/data/complex_type.eo4
-rw-r--r--src/tests/eolian/data/consts.eo2
-rw-r--r--src/tests/eolian/data/decl.eo2
-rw-r--r--src/tests/eolian/data/enum.eo2
-rw-r--r--src/tests/eolian/data/extern.eo2
-rw-r--r--src/tests/eolian/data/free_func.eo6
-rw-r--r--src/tests/eolian/data/null.eo8
-rw-r--r--src/tests/eolian/data/object_impl.eo2
-rw-r--r--src/tests/eolian/data/override.eo2
-rw-r--r--src/tests/eolian/data/struct.eo4
-rw-r--r--src/tests/eolian/data/typedef.eo4
-rw-r--r--src/tests/eolian/data/var.eo2
-rw-r--r--src/tests/eolian/eolian_parsing.c7
20 files changed, 32 insertions, 76 deletions
diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index ad9508cdea..851115264f 100644
--- a/src/bindings/luajit/eolian.lua
+++ b/src/bindings/luajit/eolian.lua
@@ -74,7 +74,6 @@ ffi.cdef [[
EOLIAN_TYPE_VOID,
EOLIAN_TYPE_REGULAR,
EOLIAN_TYPE_COMPLEX,
- EOLIAN_TYPE_POINTER,
EOLIAN_TYPE_CLASS,
EOLIAN_TYPE_STATIC_ARRAY,
EOLIAN_TYPE_TERMINATED_ARRAY,
@@ -456,11 +455,10 @@ M.type_type = {
VOID = 1,
REGULAR = 2,
COMPLEX = 3,
- POINTER = 4,
- CLASS = 5,
- STATIC_ARRAY = 6,
- TERMINATED_ARRAY = 7,
- UNDEFINED = 8
+ CLASS = 4,
+ STATIC_ARRAY = 5,
+ TERMINATED_ARRAY = 6,
+ UNDEFINED = 7
}
M.typedecl_type = {
diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h
index 90f64d8606..ef171028f2 100644
--- a/src/lib/eolian/Eolian.h
+++ b/src/lib/eolian/Eolian.h
@@ -218,7 +218,6 @@ typedef enum
EOLIAN_TYPE_VOID,
EOLIAN_TYPE_REGULAR,
EOLIAN_TYPE_COMPLEX,
- EOLIAN_TYPE_POINTER,
EOLIAN_TYPE_CLASS,
EOLIAN_TYPE_STATIC_ARRAY,
EOLIAN_TYPE_TERMINATED_ARRAY,
diff --git a/src/lib/eolian/database_expr_api.c b/src/lib/eolian/database_expr_api.c
index 28056b663b..db38c045c6 100644
--- a/src/lib/eolian/database_expr_api.c
+++ b/src/lib/eolian/database_expr_api.c
@@ -23,15 +23,6 @@ _eval_type(const Eolian_Expression *expr, const Eolian_Type *type)
return err;
switch (type->type)
{
- case EOLIAN_TYPE_POINTER:
- {
- int mask = EOLIAN_MASK_NULL;
- const Eolian_Type *base = eolian_type_base_type_get(type);
- int kw = base->name ? eo_lexer_keyword_str_to_id(base->name) : 0;
- if (kw == KW_char)
- mask |= EOLIAN_MASK_STRING;
- return database_expr_eval(expr, mask);
- }
case EOLIAN_TYPE_CLASS:
case EOLIAN_TYPE_COMPLEX:
return database_expr_eval(expr, EOLIAN_MASK_NULL);
diff --git a/src/lib/eolian/database_validate.c b/src/lib/eolian/database_validate.c
index 4e93b4e07f..bc93a57c30 100644
--- a/src/lib/eolian/database_validate.c
+++ b/src/lib/eolian/database_validate.c
@@ -223,7 +223,6 @@ _validate_type(const Eolian_Type *tp)
}
return _validate_typedecl(tpp);
}
- case EOLIAN_TYPE_POINTER:
case EOLIAN_TYPE_STATIC_ARRAY:
case EOLIAN_TYPE_TERMINATED_ARRAY:
return _validate_type(tp->base_type);
diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c
index 4fd22e16d9..592f2142f8 100644
--- a/src/lib/eolian/eo_parser.c
+++ b/src/lib/eolian/eo_parser.c
@@ -755,7 +755,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
def->is_const = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
- goto parse_ptr;
+ return def;
}
case KW_ptr:
{
@@ -768,7 +768,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
def->is_ptr = EINA_TRUE;
check_match(ls, ')', '(', pline, pcol);
- goto parse_ptr;
+ return def;
}
case KW_own:
{
@@ -788,7 +788,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
FILL_BASE(def->base, ls, line, col);
def->is_own = EINA_TRUE;
check_match(ls, ')', '(', pline, pcolumn);
- goto parse_ptr;
+ return def;
}
case KW_free:
{
@@ -811,7 +811,7 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
eo_lexer_get(ls);
FILL_BASE(def->base, ls, line, col);
check_match(ls, ')', '(', pline, pcolumn);
- goto parse_ptr;
+ return def;
}
default:
break;
@@ -941,28 +941,6 @@ parse_type_void(Eo_Lexer *ls, Eina_Bool allow_ref, Eina_Bool allow_sarray)
pop_strbuf(ls);
}
}
-parse_ptr:
- if ((def->type == EOLIAN_TYPE_CLASS) || (def->type == EOLIAN_TYPE_COMPLEX))
- {
- if (ls->t.token == '*')
- eo_lexer_syntax_error(ls, "pointer to complex/class type");
- }
- if (getenv("EOLIAN_WARN_PTR") && ls->t.token == '*')
- {
- fprintf(stderr, "eolian:%s:%d:%d: found pointer type\n",
- def->base.file, line, col);
- }
- while (ls->t.token == '*')
- {
- Eolian_Type *pdef;
- pop_type(ls);
- pdef = push_type(ls);
- FILL_BASE(pdef->base, ls, ls->line_number, ls->column);
- pdef->base_type = def;
- pdef->type = EOLIAN_TYPE_POINTER;
- def = pdef;
- eo_lexer_get(ls);
- }
return def;
}
diff --git a/src/scripts/elua/apps/docgen/doctree.lua b/src/scripts/elua/apps/docgen/doctree.lua
index 0f835c5185..da1fd8827f 100644
--- a/src/scripts/elua/apps/docgen/doctree.lua
+++ b/src/scripts/elua/apps/docgen/doctree.lua
@@ -596,7 +596,6 @@ M.Type = Node:clone {
VOID = eolian.type_type.VOID,
REGULAR = eolian.type_type.REGULAR,
COMPLEX = eolian.type_type.COMPLEX,
- POINTER = eolian.type_type.POINTER,
CLASS = eolian.type_type.CLASS,
STATIC_ARRAY = eolian.type_type.STATIC_ARRAY,
TERMINATED_ARRAY = eolian.type_type.TERMINATED_ARRAY,
@@ -708,13 +707,6 @@ M.Type = Node:clone {
end
return wrap_type_attrs(self, self:full_name_get() .. "<"
.. table.concat(stypes, ", ") .. ">")
- elseif tpt == self.POINTER then
- local btp = self:base_type_get()
- local suffix = " *"
- if btp:type_get() == self.POINTER then
- suffix = "*"
- end
- return wrap_type_attrs(self, btp:serialize() .. suffix)
elseif tpt == self.STATIC_ARRAY then
return wrap_type_attrs(self, "static_array<"
.. self:base_type_get():serialize() .. ", "
diff --git a/src/tests/eolian/data/class_simple.eo b/src/tests/eolian/data/class_simple.eo
index 1cb75c95d4..c08ec9fa2d 100644
--- a/src/tests/eolian/data/class_simple.eo
+++ b/src/tests/eolian/data/class_simple.eo
@@ -37,7 +37,7 @@ class Class_Simple {
@out c: double (1337.6);
@in d: ptr(int);
}
- return: char * (null); [[comment for method return]]
+ return: ptr(char) (null); [[comment for method return]]
}
bar @c_only {
eo: null;
diff --git a/src/tests/eolian/data/complex_type.eo b/src/tests/eolian/data/complex_type.eo
index 30429b52b8..8aac1163fc 100644
--- a/src/tests/eolian/data/complex_type.eo
+++ b/src/tests/eolian/data/complex_type.eo
@@ -2,7 +2,7 @@ class Complex_Type {
methods {
@property a {
set {
- return: own(list<array<own(Eo**)> >);
+ return: own(list<array<own(ptr(Eo))> >);
}
get {
}
@@ -12,7 +12,7 @@ class Complex_Type {
}
foo {
params {
- buf: own(char*);
+ buf: own(ptr(char));
}
return: own(list<stringshare>); [[comment for method return]]
}
diff --git a/src/tests/eolian/data/consts.eo b/src/tests/eolian/data/consts.eo
index 8f8422a68a..2b2f9bf08e 100644
--- a/src/tests/eolian/data/consts.eo
+++ b/src/tests/eolian/data/consts.eo
@@ -7,7 +7,7 @@ class Consts {
@inout b: char;
@out c: double;
}
- return: char * (null); [[comment for method return]]
+ return: ptr(char) (null); [[comment for method return]]
}
}
}
diff --git a/src/tests/eolian/data/decl.eo b/src/tests/eolian/data/decl.eo
index c43bf28988..001494b95c 100644
--- a/src/tests/eolian/data/decl.eo
+++ b/src/tests/eolian/data/decl.eo
@@ -16,7 +16,7 @@ class Decl {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/data/enum.eo b/src/tests/eolian/data/enum.eo
index dc410e457e..3b426e3a06 100644
--- a/src/tests/eolian/data/enum.eo
+++ b/src/tests/eolian/data/enum.eo
@@ -39,7 +39,7 @@ class Enum {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/data/extern.eo b/src/tests/eolian/data/extern.eo
index d0b741d67a..e8ee00673e 100644
--- a/src/tests/eolian/data/extern.eo
+++ b/src/tests/eolian/data/extern.eo
@@ -22,7 +22,7 @@ class Extern {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/data/free_func.eo b/src/tests/eolian/data/free_func.eo
index 156676d0af..5c10b24d87 100644
--- a/src/tests/eolian/data/free_func.eo
+++ b/src/tests/eolian/data/free_func.eo
@@ -15,8 +15,8 @@ struct Opaque1;
struct @free(opaque_free) Opaque2;
/* pointers */
-type Pointer1: char *;
-type Pointer2: free(char *, ptr_free);
+type Pointer1: ptr(char);
+type Pointer2: free(ptr(char), ptr_free);
class Free_Func {
methods {
@@ -24,7 +24,7 @@ class Free_Func {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/data/null.eo b/src/tests/eolian/data/null.eo
index 749248d89e..ad872e0ace 100644
--- a/src/tests/eolian/data/null.eo
+++ b/src/tests/eolian/data/null.eo
@@ -2,10 +2,10 @@ class Null {
methods {
foo {
params {
- x: char *;
- y: char * @nullable;
- z: char * @optional;
- w: char * @optional @nullable;
+ x: ptr(char);
+ y: ptr(char) @nullable;
+ z: ptr(char) @optional;
+ w: ptr(char) @optional @nullable;
}
}
}
diff --git a/src/tests/eolian/data/object_impl.eo b/src/tests/eolian/data/object_impl.eo
index 47cc95ba89..abf1820d43 100644
--- a/src/tests/eolian/data/object_impl.eo
+++ b/src/tests/eolian/data/object_impl.eo
@@ -41,7 +41,7 @@ class Object_Impl (Base) {
@inout b: char;
@out c: double;
}
- return: char * (null); [[comment for method return]]
+ return: ptr(char) (null); [[comment for method return]]
}
foo2 @const {
[[comment foo]]
diff --git a/src/tests/eolian/data/override.eo b/src/tests/eolian/data/override.eo
index 7ab1f7124c..01fa1108c1 100644
--- a/src/tests/eolian/data/override.eo
+++ b/src/tests/eolian/data/override.eo
@@ -38,7 +38,7 @@ class Override (Base) {
params {
@in idx: int;
@out a: int (250);
- @out str: char * (null);
+ @out str: ptr(char) (null);
}
}
}
diff --git a/src/tests/eolian/data/struct.eo b/src/tests/eolian/data/struct.eo
index c701d26857..679ff5f220 100644
--- a/src/tests/eolian/data/struct.eo
+++ b/src/tests/eolian/data/struct.eo
@@ -23,10 +23,10 @@ class Struct {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
bar {
- return: Named *;
+ return: ptr(Named);
}
}
}
diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo
index 15ebbf7cc4..258595ae7b 100644
--- a/src/tests/eolian/data/typedef.eo
+++ b/src/tests/eolian/data/typedef.eo
@@ -1,5 +1,5 @@
type Evas.Coord: int; /* Simple type definition */
-type List_Objects: own(list<Eo *>); /* A little more complex */
+type List_Objects: own(list<ptr(Eo)>); /* A little more complex */
type Evas.Coord2: Evas.Coord;
type Evas.Coord3: Evas.Coord2;
@@ -35,7 +35,7 @@ class Typedef {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/data/var.eo b/src/tests/eolian/data/var.eo
index 3b246a3e7d..93fcacc882 100644
--- a/src/tests/eolian/data/var.eo
+++ b/src/tests/eolian/data/var.eo
@@ -16,7 +16,7 @@ class Var {
params {
idx: int;
}
- return: own(char*);
+ return: own(ptr(char));
}
}
}
diff --git a/src/tests/eolian/eolian_parsing.c b/src/tests/eolian/eolian_parsing.c
index 328bb8a04d..1c61e9f2f7 100644
--- a/src/tests/eolian/eolian_parsing.c
+++ b/src/tests/eolian/eolian_parsing.c
@@ -451,7 +451,7 @@ START_TEST(eolian_complex_type)
fail_if(!!eolian_type_next_type_get(type));
fail_if(!(type_name = eolian_type_c_type_get(type)));
fail_if(!eolian_type_is_own(type));
- fail_if(strcmp(type_name, "Eo **"));
+ fail_if(strcmp(type_name, "Eo *"));
eina_stringshare_del(type_name);
/* Properties parameter type */
fail_if(!(iter = eolian_property_values_get(fid, EOLIAN_PROP_GET)));
@@ -611,7 +611,7 @@ START_TEST(eolian_simple_parsing)
/* Method */
fail_if(!(fid = eolian_class_function_get_by_name(class, "foo", EOLIAN_METHOD)));
fail_if(!eolian_function_is_beta(fid));
- fail_if(eolian_type_is_ptr(eolian_function_return_type_get(fid, EOLIAN_METHOD)));
+ fail_if(!eolian_type_is_ptr(eolian_function_return_type_get(fid, EOLIAN_METHOD)));
/* Function return */
tp = eolian_function_return_type_get(fid, EOLIAN_METHOD);
fail_if(!tp);
@@ -739,9 +739,8 @@ START_TEST(eolian_struct)
/* use in function */
fail_if(!(func = eolian_class_function_get_by_name(class, "bar", EOLIAN_METHOD)));
fail_if(!(type = eolian_function_return_type_get(func, EOLIAN_METHOD)));
- fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_POINTER);
- fail_if(!(type = eolian_type_base_type_get(type)));
fail_if(eolian_type_type_get(type) != EOLIAN_TYPE_REGULAR);
+ fail_if(!eolian_type_is_ptr(type));
fail_if(!(tdl = eolian_type_typedecl_get(type)));
fail_if(eolian_typedecl_type_get(tdl) != EOLIAN_TYPEDECL_STRUCT);