efl_mono: add a free function to every owned type

this is another step towards enforcing free functions on every owned
type. To equip every owned type with a free function the following is
applied. Every owned ptr is assumed to be a heap pointer, with the free
function "free". Every string that is owed is converted to a mstring. a
pointer to a eo object is also assumed to be a heap pointer, and equiped
with the free function "free".

Differential Revision: https://phab.enlightenment.org/D7710
This commit is contained in:
Marcel Hollerbach 2019-01-14 23:57:31 +01:00
parent efaa4bc7f9
commit 286ad91075
2 changed files with 49 additions and 49 deletions

View File

@ -10,7 +10,7 @@ enum Dummy.SampleEnum {
v4,
}
struct Dummy.StructSimple
struct @free(free) Dummy.StructSimple
{
fbyte: byte;
fubyte: ubyte;
@ -62,7 +62,7 @@ struct Dummy.StructSimple
fmyint: Dummy.MyInt;
}
struct Dummy.StructComplex {
struct @free(free) Dummy.StructComplex {
farray: array<ptr(int)>;
finarray: inarray<int>;
flist: list<string>;
@ -151,7 +151,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
params {
@in str: string;
}
return: string @owned;
return: mstring @owned;
}
in_own_string {
@ -166,7 +166,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
return_own_string {
return: string @owned;
return: mstring @owned;
}
out_string {
@ -177,7 +177,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
out_own_string {
params {
@out str: string @owned;
@out str: mstring @owned;
}
}
@ -198,7 +198,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
call_return_own_string {
return: string @owned;
return: mstring @owned;
}
call_out_string {
@ -206,7 +206,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
call_out_own_string {
return: string @owned;
return: mstring @owned;
}
// Stringshare virtual helpers
@ -373,7 +373,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_array_int_in_own {
params {
@in arr: array<ptr(int) @owned> @owned;
@in arr: array<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -393,7 +393,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_array_int_out_own {
params {
@out arr: array<ptr(int) @owned> @owned;
@out arr: array<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -406,7 +406,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_array_int_return_own {
return: array<ptr(int) @owned> @owned;
return: array<free(ptr(int),free) @owned> @owned;
}
/* String */
@ -419,7 +419,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_array_str_in_own {
params {
@in arr: array<string @owned> @owned;
@in arr: array<mstring @owned> @owned;
}
return: bool;
}
@ -439,7 +439,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_array_str_out_own {
params {
@out arr: array<string @owned> @owned;
@out arr: array<mstring @owned> @owned;
}
return: bool;
}
@ -452,7 +452,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_array_str_return_own {
return: array<string @owned> @owned;
return: array<mstring @owned> @owned;
}
/* Object */
@ -520,7 +520,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inarray_int_in_own {
params {
@in arr: inarray<ptr(int) @owned> @owned;
@in arr: inarray<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -540,7 +540,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inarray_int_out_own {
params {
@out arr: inarray<ptr(int) @owned> @owned;
@out arr: inarray<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -553,7 +553,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_inarray_int_return_own {
return: inarray<ptr(int) @owned> @owned;
return: inarray<free(ptr(int),free) @owned> @owned;
}
/* String */
@ -566,7 +566,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inarray_str_in_own {
params {
@in arr: inarray<string @owned> @owned;
@in arr: inarray<mstring @owned> @owned;
}
return: bool;
}
@ -586,7 +586,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inarray_str_out_own {
params {
@out arr: inarray<string @owned> @owned;
@out arr: inarray<mstring @owned> @owned;
}
return: bool;
}
@ -599,7 +599,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_inarray_str_return_own {
return: inarray<string @owned> @owned;
return: inarray<mstring @owned> @owned;
}
/* Object */
@ -667,7 +667,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_list_int_in_own {
params {
@in lst: list<ptr(int) @owned> @owned;
@in lst: list<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -687,7 +687,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_list_int_out_own {
params {
@out lst: list<ptr(int) @owned> @owned;
@out lst: list<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -700,7 +700,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_list_int_return_own {
return: list<ptr(int) @owned> @owned;
return: list<free(ptr(int),free) @owned> @owned;
}
/* String */
@ -713,7 +713,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_list_str_in_own {
params {
@in lst: list<string @owned> @owned;
@in lst: list<mstring @owned> @owned;
}
return: bool;
}
@ -733,7 +733,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_list_str_out_own {
params {
@out lst: list<string @owned> @owned;
@out lst: list<mstring @owned> @owned;
}
return: bool;
}
@ -746,7 +746,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_list_str_return_own {
return: list<string @owned> @owned;
return: list<mstring @owned> @owned;
}
/* Object */
@ -814,7 +814,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inlist_int_in_own {
params {
@in lst: inlist<ptr(int) @owned> @owned;
@in lst: inlist<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -834,7 +834,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inlist_int_out_own {
params {
@out lst: inlist<ptr(int) @owned> @owned;
@out lst: inlist<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -847,7 +847,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_inlist_int_return_own {
return: inlist<ptr(int) @owned> @owned;
return: inlist<free(ptr(int),free) @owned> @owned;
}
/* String */
@ -860,7 +860,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inlist_str_in_own {
params {
@in lst: inlist<string @owned> @owned;
@in lst: inlist<mstring @owned> @owned;
}
return: bool;
}
@ -880,7 +880,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_inlist_str_out_own {
params {
@out lst: inlist<string @owned> @owned;
@out lst: inlist<mstring @owned> @owned;
}
return: bool;
}
@ -893,7 +893,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_inlist_str_return_own {
return: inlist<string @owned> @owned;
return: inlist<mstring @owned> @owned;
}
/* Object */
@ -962,7 +962,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_hash_int_in_own {
params {
@in hsh: hash<ptr(int), ptr(int) @owned> @owned;
@in hsh: hash<ptr(int), free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -982,7 +982,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_hash_int_out_own {
params {
@out hsh: hash<ptr(int), ptr(int) @owned> @owned;
@out hsh: hash<ptr(int), free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -998,7 +998,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_hash_int_return_own {
return: hash<ptr(int), ptr(int) @owned> @owned;
return: hash<ptr(int), free(ptr(int),free) @owned> @owned;
}
check_eina_hash_int_return_own {
return: bool;
@ -1014,7 +1014,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_hash_str_in_own {
params {
@in hsh: hash<string, string @owned> @owned;
@in hsh: hash<string, mstring @owned> @owned;
}
return: bool;
}
@ -1034,7 +1034,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_hash_str_out_own {
params {
@out hsh: hash<string, string @owned> @owned;
@out hsh: hash<string, mstring @owned> @owned;
}
return: bool;
}
@ -1050,7 +1050,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_hash_str_return_own {
return: hash<string, string @owned> @owned;
return: hash<string, mstring @owned> @owned;
}
check_eina_hash_str_return_own {
return: bool;
@ -1158,7 +1158,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_iterator_int_in_own {
params {
@in itr: iterator<ptr(int) @owned> @owned;
@in itr: iterator<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -1178,7 +1178,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_iterator_int_out_own {
params {
@out itr: iterator<ptr(int) @owned> @owned;
@out itr: iterator<free(ptr(int),free) @owned> @owned;
}
return: bool;
}
@ -1191,7 +1191,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_iterator_int_return_own {
return: iterator<ptr(int) @owned> @owned;
return: iterator<free(ptr(int),free) @owned> @owned;
}
/* String */
@ -1204,7 +1204,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_iterator_str_in_own {
params {
@in itr: iterator<string @owned> @owned;
@in itr: iterator<mstring @owned> @owned;
}
return: bool;
}
@ -1224,7 +1224,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
eina_iterator_str_out_own {
params {
@out itr: iterator<string @owned> @owned;
@out itr: iterator<mstring @owned> @owned;
}
return: bool;
}
@ -1237,7 +1237,7 @@ class Dummy.Test_Object extends Efl.Object implements Efl.Part, Dummy.Test_Iface
}
eina_iterator_str_return_own {
return: iterator<string @owned> @owned;
return: iterator<mstring @owned> @owned;
}
/* Object */

View File

@ -165,7 +165,7 @@ void _dummy_test_object_int_ptr_out(EINA_UNUSED Eo *obj, Dummy_Test_Object_Data
*y = &pd->stored_int;
}
const char *_dummy_test_object_in_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd, const char *str)
char *_dummy_test_object_in_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd, const char *str)
{
const char *ret = malloc(sizeof(char)*(strlen(str) + 1));
return strcpy((char*)ret, str);
@ -196,7 +196,7 @@ const char *_dummy_test_object_return_string(EINA_UNUSED Eo *obj, EINA_UNUSED Du
return "string";
}
const char *_dummy_test_object_return_own_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
char *_dummy_test_object_return_own_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
{
static const char* reference = "own_string";
const char *ret = malloc(sizeof(char)*(strlen(reference) + 1));
@ -208,7 +208,7 @@ void _dummy_test_object_out_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_O
*str = "out_string";
}
void _dummy_test_object_out_own_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd, const char**str)
void _dummy_test_object_out_own_string(EINA_UNUSED Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd, char**str)
{
static const char* reference = "out_own_string";
*str = malloc(sizeof(char)*(strlen(reference) + 1));
@ -230,7 +230,7 @@ const char *_dummy_test_object_call_return_string(Eo *obj, EINA_UNUSED Dummy_Tes
return dummy_test_object_return_string(obj);
}
const char *_dummy_test_object_call_return_own_string(Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
char *_dummy_test_object_call_return_own_string(Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
{
return dummy_test_object_return_own_string(obj);
}
@ -242,9 +242,9 @@ const char *_dummy_test_object_call_out_string(Eo *obj, EINA_UNUSED Dummy_Test_O
return ret;
}
const char *_dummy_test_object_call_out_own_string(Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
char *_dummy_test_object_call_out_own_string(Eo *obj, EINA_UNUSED Dummy_Test_Object_Data *pd)
{
const char *ret = NULL;
char *ret = NULL;
dummy_test_object_out_own_string(obj, &ret);
return ret;
}