q66 pushed a commit to branch master.

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

commit f36e5bd543a1fed2bc93bc803e326684269e28d0
Author: Daniel Kolesa <d.kol...@osg.samsung.com>
Date:   Fri Sep 22 17:10:42 2017 +0200

    eolian: add mstring
    
    This is a new type representing a mutable string (no const).
    Regular strings cannot be made mutable with @owned because
    they might be hidden behind typedefs.
---
 src/lib/ecore_con/efl_net_dialer_http.eo            | 2 +-
 src/lib/elementary/efl_access_action.eo             | 2 +-
 src/lib/elementary/elm_entry.eo                     | 2 +-
 src/lib/elementary/elm_interface_atspi_text.eo      | 6 +++---
 src/lib/elementary/elm_web.eo                       | 4 ++--
 src/lib/eolian/database_type.c                      | 7 +------
 src/lib/eolian/eo_lexer.c                           | 2 +-
 src/lib/eolian/eo_lexer.h                           | 3 ++-
 src/lib/evas/canvas/efl_canvas_text.eo              | 2 +-
 src/tests/eolian/data/complex_type.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                  | 2 +-
 src/tests/eolian/data/function_as_argument.eo       | 2 +-
 src/tests/eolian/data/function_types.eot            | 2 +-
 src/tests/eolian/data/struct.eo                     | 2 +-
 src/tests/eolian/data/typedef.eo                    | 2 +-
 src/tests/eolian/data/var.eo                        | 2 +-
 src/tests/eolian_cxx/complex.eo                     | 4 ++--
 src/tests/eolian_cxx/name1_name2_type_generation.eo | 4 ++--
 21 files changed, 27 insertions(+), 31 deletions(-)

diff --git a/src/lib/ecore_con/efl_net_dialer_http.eo 
b/src/lib/ecore_con/efl_net_dialer_http.eo
index 0e6244de9f..af2a3d8f0c 100644
--- a/src/lib/ecore_con/efl_net_dialer_http.eo
+++ b/src/lib/ecore_con/efl_net_dialer_http.eo
@@ -383,7 +383,7 @@ class Efl.Net.Dialer.Http (Efl.Loop_User, Efl.Net.Dialer, 
Efl.Io.Sizer) {
             params {
                 epochtime: int64; [[UNIX Epoch time - seconds since 1/1/1970]]
             }
-            return: string @owned @warn_unused; [[Newly allocated 
null-terminated string on success or NULL on errors]]
+            return: mstring @owned @warn_unused; [[Newly allocated 
null-terminated string on success or NULL on errors]]
         }
     }
 
diff --git a/src/lib/elementary/efl_access_action.eo 
b/src/lib/elementary/efl_access_action.eo
index 577464cc93..931ecf2fd6 100644
--- a/src/lib/elementary/efl_access_action.eo
+++ b/src/lib/elementary/efl_access_action.eo
@@ -59,7 +59,7 @@ mixin Efl.Access.Action ()
          params {
             @in id: int; [[ID for widget]]
          }
-         return: string @owned @warn_unused; [[Should be freed by the user.]]
+         return: mstring @owned @warn_unused; [[Should be freed by the user.]]
       }
    }
 }
diff --git a/src/lib/elementary/elm_entry.eo b/src/lib/elementary/elm_entry.eo
index 11f2af6be9..a76fda2356 100644
--- a/src/lib/elementary/elm_entry.eo
+++ b/src/lib/elementary/elm_entry.eo
@@ -632,7 +632,7 @@ class Elm.Entry (Efl.Ui.Layout, Elm.Interface_Scrollable, 
Efl.Ui.Clickable,
               Only the text is returned, any format that may exist will not be 
part
               of the return value. You must free the string when done with 
\@ref free.
             ]]
-            return: string @owned @warn_unused; [[Character]]
+            return: mstring @owned @warn_unused; [[Character]]
          }
       }
       @property selection {
diff --git a/src/lib/elementary/elm_interface_atspi_text.eo 
b/src/lib/elementary/elm_interface_atspi_text.eo
index 8485d0885a..3cd2ddcaaa 100644
--- a/src/lib/elementary/elm_interface_atspi_text.eo
+++ b/src/lib/elementary/elm_interface_atspi_text.eo
@@ -70,7 +70,7 @@ interface Elm.Interface.Atspi.Text ()
             end_offset: ptr(int); [[Offset indicating end of string according 
to given granularity. -1 in case of error.]]
          }
          values {
-            string: string @owned; [[Newly allocated UTF-8 encoded string. 
Must be free by a user.]]
+            string: mstring @owned; [[Newly allocated UTF-8 encoded string. 
Must be free by a user.]]
          }
       }
       @property text @protected {
@@ -82,7 +82,7 @@ interface Elm.Interface.Atspi.Text ()
             end_offset: int; [[End offset of text.]]
          }
          values {
-            text: string @owned; [[UTF-8 encoded text.]]
+            text: mstring @owned; [[UTF-8 encoded text.]]
          }
       }
       @property caret_offset @protected {
@@ -108,7 +108,7 @@ interface Elm.Interface.Atspi.Text ()
             end_offset: ptr(int); [[Position in text to which given attribute 
is set.]]
          }
          values {
-            value: string @owned; [[Value of text attribute. Should be free()]]
+            value: mstring @owned; [[Value of text attribute. Should be 
free()]]
          }
       }
       @property attributes @protected {
diff --git a/src/lib/elementary/elm_web.eo b/src/lib/elementary/elm_web.eo
index f1c8e986ec..db349fd100 100644
--- a/src/lib/elementary/elm_web.eo
+++ b/src/lib/elementary/elm_web.eo
@@ -339,8 +339,8 @@ class Elm.Web (Elm.Widget)
               The string returned must be freed by the user when it's done
               with it.
             ]]
-            /* FIXME: const doesn't belong here */
-            return: const(string) @owned @warn_unused; [[A newly allocated 
string, or
+            /* FIXME: owned const string? */
+            return: string @owned @warn_unused; [[A newly allocated string, or
                                                       $null if nothing is 
selected
                                                       or an error occurred.]]
          }
diff --git a/src/lib/eolian/database_type.c b/src/lib/eolian/database_type.c
index d9a8f17661..a05fa25fa5 100644
--- a/src/lib/eolian/database_type.c
+++ b/src/lib/eolian/database_type.c
@@ -146,12 +146,7 @@ database_type_to_str(const Eolian_Type *tp, Eina_Strbuf 
*buf, const char *name,
           }
         int kw = eo_lexer_keyword_str_to_id(tp->name);
         if (kw && eo_lexer_is_type_keyword(kw))
-          {
-             /* FIXME: deal with aliased strings? */
-             if ((kw == KW_string) && !tp->owned)
-               eina_strbuf_append(buf, "const ");
-             eina_strbuf_append(buf, eo_lexer_get_c_type(kw));
-          }
+          eina_strbuf_append(buf, eo_lexer_get_c_type(kw));
         else
           eina_strbuf_append(buf, tp->name);
      }
diff --git a/src/lib/eolian/eo_lexer.c b/src/lib/eolian/eo_lexer.c
index caae8dd9bb..dc5d01fe3c 100644
--- a/src/lib/eolian/eo_lexer.c
+++ b/src/lib/eolian/eo_lexer.c
@@ -75,7 +75,7 @@ static const char * const ctypes[] =
 
    "Eina_Accessor", "Eina_Array", "Eina_Iterator", "Eina_Hash", "Eina_List",
    "Efl_Future",
-   "Eina_Value", "char *", "Eina_Stringshare *",
+   "Eina_Value", "char *", "const char *", "Eina_Stringshare *",
 
    "void *",
 
diff --git a/src/lib/eolian/eo_lexer.h b/src/lib/eolian/eo_lexer.h
index 2e7d0e5f7b..88e68a4690 100644
--- a/src/lib/eolian/eo_lexer.h
+++ b/src/lib/eolian/eo_lexer.h
@@ -54,7 +54,8 @@ enum Tokens
     \
     KW(accessor), KW(array), KW(iterator), KW(hash), KW(list), \
     KW(future),                                   \
-    KW(generic_value), KW(string), KW(stringshare), \
+    KW(generic_value), \
+    KW(mstring), KW(string), KW(stringshare), \
     \
     KW(void_ptr), \
     KW(__builtin_free_cb), \
diff --git a/src/lib/evas/canvas/efl_canvas_text.eo 
b/src/lib/evas/canvas/efl_canvas_text.eo
index 7d7b0f9b33..b0f075f1bf 100644
--- a/src/lib/evas/canvas/efl_canvas_text.eo
+++ b/src/lib/evas/canvas/efl_canvas_text.eo
@@ -159,7 +159,7 @@ Efl.Text.Font, Efl.Text.Style, Efl.Text.Format, 
Efl.Text.Cursor, Efl.Text.Annota
            @since 1.18
          ]]
          legacy: null;
-         return: string @owned; [[The text in the given range]]
+         return: mstring @owned; [[The text in the given range]]
          params {
             @in cur1: const(ptr(Efl.Text.Cursor.Cursor)); [[Start of range]]
             @in cur2: const(ptr(Efl.Text.Cursor.Cursor)); [[End of range]]
diff --git a/src/tests/eolian/data/complex_type.eo 
b/src/tests/eolian/data/complex_type.eo
index 2976125e6d..d4f85c942f 100644
--- a/src/tests/eolian/data/complex_type.eo
+++ b/src/tests/eolian/data/complex_type.eo
@@ -12,7 +12,7 @@ class Complex_Type {
       }
       foo {
          params {
-            buf: string @owned;
+            buf: mstring @owned;
          }
          return: list<stringshare> @owned; [[comment for method return]]
       }
diff --git a/src/tests/eolian/data/decl.eo b/src/tests/eolian/data/decl.eo
index de1ed889c3..ed036bc2a9 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: string @owned;
+         return: mstring @owned;
       }
    }
 }
diff --git a/src/tests/eolian/data/enum.eo b/src/tests/eolian/data/enum.eo
index 4275b24567..73e8da07a3 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: string @owned;
+            return: mstring @owned;
         }
     }
 }
diff --git a/src/tests/eolian/data/extern.eo b/src/tests/eolian/data/extern.eo
index d59caa21cd..217fb69c27 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: string @owned;
+         return: mstring @owned;
       }
    }
 }
diff --git a/src/tests/eolian/data/free_func.eo 
b/src/tests/eolian/data/free_func.eo
index 5e77e5cb4b..6a3228ba81 100644
--- a/src/tests/eolian/data/free_func.eo
+++ b/src/tests/eolian/data/free_func.eo
@@ -24,7 +24,7 @@ class Free_Func {
          params {
             idx: int;
          }
-         return: string @owned;
+         return: mstring @owned;
       }
    }
 }
diff --git a/src/tests/eolian/data/function_as_argument.eo 
b/src/tests/eolian/data/function_as_argument.eo
index 4c27253e40..5a14e8679e 100644
--- a/src/tests/eolian/data/function_as_argument.eo
+++ b/src/tests/eolian/data/function_as_argument.eo
@@ -19,7 +19,7 @@ class Function_As_Argument {
         a: int;
         b: double;
       }
-      return: string @owned;
+      return: mstring @owned;
     }
   }
 }
diff --git a/src/tests/eolian/data/function_types.eot 
b/src/tests/eolian/data/function_types.eot
index 5eae0e2da4..e8bc1865b5 100644
--- a/src/tests/eolian/data/function_types.eot
+++ b/src/tests/eolian/data/function_types.eot
@@ -16,7 +16,7 @@ function SimpleFunc {
 function ComplexFunc {
   params {
     @in c: string;
-    @out d: string @owned;
+    @out d: mstring @owned;
   }
   return: double;
 };
diff --git a/src/tests/eolian/data/struct.eo b/src/tests/eolian/data/struct.eo
index cb8981db37..cb664f366c 100644
--- a/src/tests/eolian/data/struct.eo
+++ b/src/tests/eolian/data/struct.eo
@@ -23,7 +23,7 @@ class Struct {
          params {
             idx: int;
          }
-         return: string @owned;
+         return: mstring @owned;
       }
       bar {
          return: ptr(Named);
diff --git a/src/tests/eolian/data/typedef.eo b/src/tests/eolian/data/typedef.eo
index 59a33cb685..ad6ed00ff8 100644
--- a/src/tests/eolian/data/typedef.eo
+++ b/src/tests/eolian/data/typedef.eo
@@ -33,7 +33,7 @@ class Typedef {
          params {
             idx: int;
          }
-         return: string @owned;
+         return: mstring @owned;
       }
    }
 }
diff --git a/src/tests/eolian/data/var.eo b/src/tests/eolian/data/var.eo
index 6605d30e28..a618f0331f 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: string @owned;
+         return: mstring @owned;
       }
    }
 }
diff --git a/src/tests/eolian_cxx/complex.eo b/src/tests/eolian_cxx/complex.eo
index df1c337b08..b9442a2ef1 100644
--- a/src/tests/eolian_cxx/complex.eo
+++ b/src/tests/eolian_cxx/complex.eo
@@ -40,7 +40,7 @@ class Complex (Efl.Object)
       }
       instringowncont {
          params {
-           l: list<string @owned>;
+           l: list<mstring @owned>;
          }
       }
       instringcontown {
@@ -121,7 +121,7 @@ class Complex (Efl.Object)
       }
       outstringowncont {
          params {
-           @out l: list<string @owned>;
+           @out l: list<mstring @owned>;
          }
       }
       outstringcontown {
diff --git a/src/tests/eolian_cxx/name1_name2_type_generation.eo 
b/src/tests/eolian_cxx/name1_name2_type_generation.eo
index 833a54059b..ee4d044a36 100644
--- a/src/tests/eolian_cxx/name1_name2_type_generation.eo
+++ b/src/tests/eolian_cxx/name1_name2_type_generation.eo
@@ -56,7 +56,7 @@ class Name1.Name2.Type_Generation (Efl.Object)
      }
      instringown {
        params {
-         @in v: string @owned;
+         @in v: mstring @owned;
        }
      }
      instringptrown {
@@ -102,7 +102,7 @@ class Name1.Name2.Type_Generation (Efl.Object)
        return: ptr(string);
      }
      returnstringown {
-       return: string @owned;
+       return: mstring @owned;
      }
      returnstringownptr {
        return: ptr(string) @owned;

-- 


Reply via email to