q66 pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=8002b3b24e6e238c1453dfe4dc863fa6cf14593b

commit 8002b3b24e6e238c1453dfe4dc863fa6cf14593b
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Thu Nov 10 16:20:19 2016 +0100

    eolian: remove parsing of pointers and the corresponding APIs
    
    Everything should be done via the new ptr() system now.
---
 src/bindings/luajit/eolian.lua           | 10 ++++------
 src/lib/eolian/Eolian.h                  |  1 -
 src/lib/eolian/database_expr_api.c       |  9 ---------
 src/lib/eolian/database_validate.c       |  1 -
 src/lib/eolian/eo_parser.c               | 30 ++++--------------------------
 src/scripts/elua/apps/docgen/doctree.lua |  8 --------
 src/tests/eolian/data/class_simple.eo    |  2 +-
 src/tests/eolian/data/complex_type.eo    |  4 ++--
 src/tests/eolian/data/consts.eo          |  2 +-
 src/tests/eolian/data/decl.eo            |  2 +-
 src/tests/eolian/data/enum.eo            |  2 +-
 src/tests/eolian/data/extern.eo          |  2 +-
 src/tests/eolian/data/free_func.eo       |  6 +++---
 src/tests/eolian/data/null.eo            |  8 ++++----
 src/tests/eolian/data/object_impl.eo     |  2 +-
 src/tests/eolian/data/override.eo        |  2 +-
 src/tests/eolian/data/struct.eo          |  4 ++--
 src/tests/eolian/data/typedef.eo         |  4 ++--
 src/tests/eolian/data/var.eo             |  2 +-
 src/tests/eolian/eolian_parsing.c        |  7 +++----
 20 files changed, 32 insertions(+), 76 deletions(-)

diff --git a/src/bindings/luajit/eolian.lua b/src/bindings/luajit/eolian.lua
index ad9508c..8511152 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 90f64d8..ef17102 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 28056b6..db38c04 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 4e93b4e..bc93a57 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 4fd22e1..592f214 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 0f835c5..da1fd88 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 1cb75c9..c08ec9f 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 30429b5..8aac116 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 8f8422a..2b2f9bf 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 c43bf28..001494b 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 dc410e4..3b426e3 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 d0b741d..e8ee006 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 156676d..5c10b24 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 749248d..ad872e0 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 47cc95b..abf1820 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 7ab1f71..01fa110 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 c701d26..679ff5f 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 15ebbf7..258595a 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 3b246a3..93fcacc 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 328bb8a..1c61e9f 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);
 

-- 


Reply via email to