path: root/src/bindings/cxx (follow)
AgeCommit message (Collapse)Author
2020-06-09cxx: Fix uses of intrinsic eolian binbuf typeFelipe Magno de Almeida
Add special binbuf and Eina_Strbuf conversions Reviewed-by: Marcel Hollerbach <> Differential Revision:
2020-05-07Use __func__ C99 identifier instead of __FUNCTION__ compiler extensionVincent Torri
Summary: see section page 52 Test Plan: compilation Reviewers: raster, devilhorns Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2020-05-07cxx: Initialize _list and _node with nullptrJoão Paulo Taylor Ienczak Zanette
Fixes CID 1409576 pointing that _node was unitialized. Reviewed-by: Stefan Schmidt <> Reviewed-by: Felipe Magno de Almeida <> Differential Revision:
2020-02-18eolian-mono: Make Get/Set internal for generated propertiesFelipe Magno de Almeida
Make Get and Set methods internal for properties that get the property syntax generated. Reviewed-by: João Paulo Taylor Ienczak Zanette <> Differential Revision:
2019-10-24cxx: Add license to CXX bindings.Felipe Magno de Almeida
Summary: Like C#, it will also be Apache 2.0 Depends on D9414 Reviewers: vitor.sousa, woohyun, jpeg, lauromoura Reviewed By: lauromoura Subscribers: jpeg, cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-09-30eolian-cxx: Release iteratorsLauro Moura
Summary: When the iterators advanced, the CXX wrappers null'd them but did not call eina_value_free. ref T8280 Reviewers: q66, brunobelo, felipealmeida Reviewed By: q66 Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T8280 Differential Revision:
2019-09-23cxx: Fix some warnings from -WextraLauro Moura
Summary: - As we don't have C++17's [[fallthrough]], rely on GCC'd detection of fallthrough comments. See - Replaced some copy constructors with typecast operators. Previously, a constructor with remove_const/remove_cv were used to allow const iterators to be constructed from non-const iterators. This had the side effect of making these constructors actual copy constructors for non const lists. As we did not define other special constructors/operators, the rule of 5 were violated for these cases. This commit replaces these constructors with actual typecast operators that promote non const iterators to their const counterparts. - Cast a Eina_Bool/bool narrowing conversion - Add a missing break statement from D10050 Reviewers: zmike, brunobelo, felipealmeida Reviewed By: brunobelo Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-09-16Revert "cxx: Fix some warnings from -Wextra"Mike Blumenkrantz
This reverts commit bdb8505f3b7318b024530d1f9559c91978a3b421. more review pending on this
2019-09-16cxx: Fix some warnings from -WextraLauro Moura
Summary: - As we don't have C++17's [[fallthrough]], rely on GCC'd detection of fallthrough comments. See - Add some missing copy assignment operators as reported by -Wdeprecated-copy - Cast a Eina_Bool/bool narrowing conversion Reviewers: zmike, brunobelo, felipealmeida Reviewed By: zmike Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-07-31eolian-cxx: Generate eot filesFelipe Magno de Almeida
Summary: Eolian Type files were not being generated, which made some template specialization to not be defined, for example for function_wrappers. Reviewers: bu5hm4n, woohyun, lauromoura Reviewed By: lauromoura Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-07-17cxx: remove a compilation warning for g++ 7.xVitor Sousa
Remove a compilation warning about an unsupported warning category for g++ 7.x. A `#pragma` directive was used to suppress a `-Wcast-function-type` warning in g++. Versions older than 8.x do not have this warning category and raises a warning because of this directive. Now this directive is only enabled for g++ version 8.x or newer.
2019-07-12cxx: remove compilation warnings in C++ code, from both gcc and clangVitor Sousa
Summary: Remove almost all the compilation warnings from C++ code. Only explicit warnings using the `#warning` preprocessor directive remain. Some warnings had to be suppressed with `#pragma` directives because the behavior they were warning about is intended in some specific places. Code comments were added in such situations. Added a generator that creates `#pragma` directives in order to suppress warnings in all generated C++ headers. Currently `-Wignored-qualifiers` is the only warning category being suppressed. The innocuous const qualifiers that it points are inoffensive and have no effect in compilation at all. They are also hard to track in generation since they can emerge from different types in many places. To ease the generation of the warning suppressors an utility constructor was added to `efl::eolian::grammar::attributes::unused_type`. Add constructors to `eolian_mono::class_context` to default initialize its internal string and avoid field initialization warnings. Test Plan: `meson test` Reviewers: lauromoura, felipealmeida, zmike, segfaultxavi Reviewed By: zmike Subscribers: cedric, #reviewers, #committers Tags: #efl_language_bindings Differential Revision:
2019-05-02cxx: Rename Elementary.hh into Efl_Ui.hhLauro Moura
Also include Efl_Ui.h alongside Elementary.h (the latter is still needed by some widgets).
2019-04-18meson: unbreak cxx header installationMarcel Hollerbach
Summary: before we had *correct* fileds in the subdir: keyword. However, install_dir: was wrong, so *this* time, this seems right. Reviewers: cedric, zmike, segfaultxavi, raster Reviewed By: zmike Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-04-15cxx: Fix eldbus meta include nameLauro Moura
Summary: It should not conflict with Eldbus_Model header Fixes T7805 Reviewers: vtorri Reviewed By: vtorri Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T7805 Differential Revision:
2019-03-14meson: fix subdir in the installationMarcel Hollerbach
we did a completly wrong thing here, and it only worked by accident. We passed a absolut path into a parameter where only a number should be passed. This is now fixed. This fixes meson build with meson-0.50 and bindings enabled Reviewed-by: Cedric BAIL <> Differential Revision:
2019-03-01efl-mono: Add support for dotnet coreFelipe Magno de Almeida
Summary: This commits adds dotnet as a supported C# platform for EFL# bindings. Due to differences between Mono and Dotnet regarding DllImport, the bindings now are using an imperative approach to load the function pointers through the NativeModule and FunctionWrapper classes. These classes handle the dlopen/LoadLibrary and dlsym/GetProcAddress calls. Also, the previous caching of non-owned strings returned to native code was removed until further memory checks. We also had to create workaround for bool and chars in Structs for C# marshaling. Going through System.Byte instead and Marshaling manually to their respective types. In order to actually build efl_mono.dll with dotnet right now, issue #4782 from Meson should be fixed to make it properly detect and used the Dotnet compiler. Also use "-Ddotnet=true" when running meson. Fixes T7394 Reviewers: felipealmeida, vitor.sousa, bu5hm4n Reviewed By: vitor.sousa Subscribers: cedric Tags: #efl Maniphest Tasks: T7394 Differential Revision:
2019-02-01efl-cxx: Fix compilation error when using a ptr to const any_valueFelipe Magno de Almeida
Reviewers: lauromoura, cedric Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-01-28eo: Replace ptr(Eina.Strbuf) with plain strbuf.Lauro Moura
Summary: Also fix CXX compilation after this change. Reviewers: cedric, felipealmeida Reviewed By: felipealmeida Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-01-16eina_cxx: allow for the generation of function that return Eina_Promise in ↵Cedric BAIL
.eo files. Reviewed-by: Mike Blumenkrantz <> Differential Revision:
2019-01-02meson-cxx: ecore must be build after eflMarcel Hollerbach
2018-12-27meson - fix pc file versions that were missing mirco versionCarsten Haitzler (Rasterman)
2018-12-17build: make bindings cross compileableMarcel Hollerbach
Differential Revision:
2018-10-24meson: here comes cxx bindingsMarcel Hollerbach
this commits is bringing cxx bindings. You can enable / disable them with the cxx option. Differential Revision:
2018-10-18Revert "meson: add cxx bindings"Marcel Hollerbach
This reverts commit 5aaf2cbb5defd64a2048fe90e80004d435bbca1a. The cxx bindings were accidently merged. Things are missing (like .eot.h files)
2018-10-18meson: add cxx bindingsMarcel Hollerbach
this commit adds cxx bindings to meson. Differential Revision:
2018-10-16eina_cxx: Fix eina::value copy constructor.Lauro Moura
Summary: The previous declaration was causing the implicit copy constructor to be invoked when copying a new eina::value from an existing eina::value, thus leading to two wrappers pointing to the same underlying C pointer. This showed some error messages when running the tests but under autotools it didn't fail, while building with meson caused it to segfault. Reviewers: vitor.sousa Reviewed By: vitor.sousa Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2018-08-21cxx: Remove libeolian_cxx dependency on eo_cxxLauro Moura
Summary: Fixes T7324 Reviewers: felipealmeida, bu5hm4n, zmike Reviewed By: felipealmeida, bu5hm4n, zmike Subscribers: segfaultxavi, cedric, #reviewers, #committers, zmike Tags: #efl Maniphest Tasks: T7324 Differential Revision:
2018-05-25eo_cxx: Fix do_eo_add after lifecycle branch.Lauro Moura
Summary: Also changed the previously failing tests to use ck_assert_int_eqinstead of fail_if for better reporting. Test Plan: make check Reviewers: cedric, felipealmeida Reviewed By: cedric Subscribers: #committers, zmike Tags: #efl Differential Revision: Reviewed-by: Cedric BAIL <>
2018-05-01efl_cxx: remove eolized promises from the CXX bindingsLauro Moura
Summary: Also added a blacklist header to temporarily disable generation of eo methods with futures as arguments or return type. Once the models branch lands, we should enable future support again with eina_futures. Reviewers: cedric Reviewed By: cedric Differential Revision:
2018-04-03efl-cxx: Fix using efl_add_ref instead of efl_addFelipe Magno de Almeida
2018-03-03Revert "cxx: Fix manual code after efl_app change."Carsten Haitzler (Rasterman)
This reverts commit 135154303bea691c6f7f9472a5dec32d9103c38d. Revert "efl: move signal events from efl.loop to" This reverts commit 3dbca39f98288580c62a43c179ac11621433ec88. Revert "efl: add test suite for efl_app" This reverts commit 3e94be5d73256a7f5c02d3a9474173226be7beff. Revert "efl: create Efl.App class, the parent of Efl.Loop" This reverts commit 28fe00b94e55575c15684959b89a614d5a579309. Go back to before because I think this should be done with superclassing here not a parent object. reasons? 1. multiple loops per single thread make no sense. so if multilpe loop objects they wont be contained in a single app object and then deleted like this. 2. the app object is not really sharable in this design so it cant be accessed from other threads 3. it makes it harder to get the main loop or app object (well 2 func calls one calling the other and more typing. it is longer to type and more work where it is not necessary, and again it can't work from other threads unless we go duplicating per thread and then what is the point of splittyign out the signal events from efl.loop then?) etc.
2018-02-26cxx: Fix manual code after efl_app change.Lauro Moura
Test Plan: Run make check Reviewers: felipealmeida Subscribers: cedric Differential Revision:
2018-01-02efl loop - rename ecore_main_loop_get to efl_main_loop_getCarsten Haitzler (Rasterman)
ecore_main_loop_get() is really a new "eo api" but it's using our old ecore_* namespace, so move to the new efl namespace.
2017-12-05eo: Move hacky API auto_unref to C onlyJean-Philippe Andre
This API is meant to be used by parts only, and by bindings dealing with part objects. This patch fixes make check which got broken in the after the previous one (cxx).
2017-12-05cxx: Fix one conversion to Eina_ValueJean-Philippe Andre
2017-12-05cxx: Add global _delete() method to all objectsJean-Philippe Andre
This is really just calling efl_del() and detaching the internal pointer from the C++ object. This will not affect other references, which means after del the object may still be alive, probably without a parent.
2017-12-05cxx: Use per-function guards in efl objectJean-Philippe Andre
This prevents generation of del(). I also removed constructor, finalize and destructor as I believe this requires special work with eo_inherit (where did this work go??).
2017-12-05cxx: Give ref to returned objectsJean-Philippe Andre
This should give a ref to obj in the following scenario: auto obj = other.function(); Where obj is an eo object.
2017-12-05cxx: Add define EFL_CXXPERIMENTAL for testingJean-Philippe Andre
I'll hide some controversial features behind this, until we come to an agreement with @felipealmeida and people who actually know C++ (iow: not just me^^). Features protected: - easy wref (using -> without locking) - xxx_event_cb_add() functions in object classes - instantiate(obj) to create a new object - add as a synonym for instantiate (both in efl::eo)
2017-12-05cxx: Add support for function pointersJean-Philippe Andre
This was tested on the function pointer Efl.Ui.Format_Func_Cb
2017-12-05cxx: Add FIXME note in eina_value.hhJean-Philippe Andre
I think some concepts are not handled properly in this set of classes. I'll do some more experiments to see if I can find a working solution, but I think we need 3 variants of eina_value, instead of just the two provided.
2017-12-05cxx: Add strbuf supportJean-Philippe Andre
Comes in two fashions: - strbuf_view (read-only) - strbuf (read/write)
2017-12-05cxx: Add alternative form to instantiate objectJean-Philippe Andre
This still uses the instantiate object but provides a more convenient syntax for objects declared before their creation (eg. a global win). Note: I wonder if we shouldn't rename instantiate to add. It would be closer to EFL API's while being much much easier to type.
2017-11-14cxx: Only give a single ref to unparented objectsJean-Philippe Andre
On instantiation objects get either one or two refs: - with a parent, they will have 2 refs, one for C++, one for the parent. - without a parent, they get a single ref, the one for C++ This will break the existing C++ examples, which I will fix in later patches. Note that the window is a strange object which can be created with no parent but internally reparents itself to an object it creates (oh so ugly).
2017-11-08eo: Rename efl_ref_get to efl_ref_countAndy Williams
2017-11-07cxx: Fix log color in eina_log.hhJean-Philippe Andre
Changed from invalid "black" to arbitrary choice of green.
2017-11-07cxx: Add support for operator == with objectsJean-Philippe Andre
2017-11-07cxx: Add experimental "easy" way to use wrefJean-Philippe Andre
I hid it behind ifdef for now as I'm very much unsure of what I'm doing. This whole modern C++ thing is still weird to me :) Prerequisite: #define EFL_CXX_WREF_EASY This allows constructs such as: auto wobj = obj._get_wref(); std::cout << wobj->text_get() << std::endl;
2017-11-07cxx: Mark wref::lock as constJean-Philippe Andre
This allows passing in wref to a lambda. If we passed normal refs, we would end up with dangling references and many ERR messages.