efl/src/bin
Lucas Cavalcante de Sousa 117450e3fa C#: Update C# code-generation to use a new ICustomMarshaler in some string usages that were leaking
When `C` calls a function that return/has an out string and it was overwritten by `C#` inherit class the `C` portion
wasn't cleaning its copy. Now, when a `C` calls a `C#` delegate function, `Strings` that are `out` values or `return`
values use a new marshaler (specific to this case) that uses Eina short lived strings (`Eina_Slstr`) instead of
duplicating it with `strdup`, so at some point, the string passed to `C` is deleted.

To do so, a `direction_context` (a new `Context` at `generation_contexts.hh`) was created. It is only used when a C#
delegate is being called from C (so this context is only set in `function_definition.hh` and `property_definition.hh`,
where it is set to `native_to_manage` to indicate that it is a native call to a managed function).

When this `direction_context` is set and the `String` being marshaled is not marked with an `@move` tag and it is an
`out` or `return` value, the new `StringOutMarshaler` (implemented at `iwrapper.cs`) is used (instead of
`StringKeepOwnershipMarshaler`).

When marshaling a managed data to native this marshaler uses eina short lived string (`Eina_Slstr`) that will be
automatically deleted. This delete is bounded to "the loop of the current thread or until the clear function is called
explicitly" as said at `src/lib/eina/eina_slstr.h`.

Reviewed-by: Felipe Magno de Almeida <felipe@expertisesolutions.com.br>
Differential Revision: https://phab.enlightenment.org/D11434
2020-03-23 14:18:16 -03:00
..
ecore_buffer meson: modify install path of bqmgr binary 2019-02-27 21:20:31 +01:00
ecore_con bin/eet and ecore_con: remove Evil.h when not necessary and include evil_private.h when necessary 2019-05-17 13:51:50 -04:00
ecore_evas exotic: remove left-overs from Exotic support 2019-12-04 12:21:28 -08:00
edje canvas3d: remove all feature implementation in edje/edje_cc 2020-03-20 15:57:41 +01:00
eet bin/eet and ecore_con: remove Evil.h when not necessary and include evil_private.h when necessary 2019-05-17 13:51:50 -04:00
eeze efl: remove EFL_EO_API_SUPPORT macro 2019-03-18 12:13:59 +01:00
efl bin/efl and ecore: include evil_private.h when appropriate 2019-05-17 11:53:35 +01:00
efl_canvas_wl efl/wl: add docs for base compositor object 2020-03-13 12:17:22 -04:00
efl_js
efl_mono_msbuild_gen csharp: Add licensing information. 2019-10-24 10:10:56 -03:00
efreet eina - fix eina_strndup test passing 2020-01-15 19:23:44 +00:00
eina replace strndup with eina_strndup, remove strndup definition in evil and elm_test_dnd 2019-05-03 13:13:57 +01:00
eldbus ledbus - fix codegen to not conflict keys with eldbus inyternal 2019-01-09 18:57:22 +00:00
elementary efl_ui/image: implement efl.player::playback_loop property 2020-03-20 15:57:51 +01:00
elua build: fix macos build 2019-02-22 08:53:20 -05:00
embryo embryo: don't use sizeof() when strlen() is intended 2019-10-18 13:29:20 -04:00
eolian eolian_gen: utilize c_name instead of name for generation 2020-01-10 20:19:47 +01:00
eolian_cxx cxx: Add license to CXX bindings. 2019-10-24 10:40:16 -03:00
eolian_js eolian: rename param direction enum and fields for consistency 2019-09-26 16:56:13 +02:00
eolian_mono C#: Update C# code-generation to use a new ICustomMarshaler in some string usages that were leaking 2020-03-23 14:18:16 -03:00
ethumb here comes meson 2018-10-02 17:22:50 +02:00
ethumb_client here comes meson 2018-10-02 17:22:50 +02:00
exactness exactness: remove support for legacy .rec format 2020-03-20 12:04:40 +01:00