Commit Graph

12 Commits

Author SHA1 Message Date
Larry Jr 74e90e9884 allow C++ user create new classes inheriting from Eolian generated Classes 2015-01-05 15:52:27 -02:00
Vitor Sousa 5239214a63 eolian_cxx: Fix Eolian C++ generated wrapper inconsistencies
In convert.cc: Reading functions instead of implements to convert the
Eolian_Class. It avoids creation of methods that do not belong to the
class, in special it avoids calling the default constructor twice in the
generated code.

No longer generating one constructor in the C++ wrapper for each eolian
class constructor, since the correct behavior demands that all constructor
should be called. Now the wrappers have "constructor methods" that
must be called when creating a new object.

Updated test cases and examples to match the new interface. Some class
constructors and some test cases have to be removed since they were based
on the wrong assumption that constructors are mutually exclusive.

Created new generators for forwarding parameters and for looping over
the relevant parameters to the C++ wrapper executing a generic lambda.

Added a TODO comment regarding the call of constructor methods of all
base classes. Currently there is no base type with constructors, so this
situation should be discussed more.

Added a TODO comment regarding the way callback parameters are being
processed.
2015-01-05 15:52:27 -02:00
Savio Sena 2f27ceb8bc eolian-cxx: Update examples syntax and fix implementation accordingly. 2014-09-12 16:12:04 -03:00
Savio Sena e4d974005a examples: Fix include file name in Eolian-CXX examples..
ecore_poll.eo.hh -> ecore_poller.eo.hh
2014-09-12 15:28:23 -03:00
Savio Sena e01d622230 eolian-cxx: Removed a warning from the example. 2014-07-24 19:52:23 -03:00
Savio Sena f1783cfdc0 eolian-cxx: Added example of Eo implementation in C++.
Instead of implementing Eo functions in C we do it in C++ simply.
2014-07-24 19:52:23 -03:00
Savio Sena b30a2dfba7 eolian-cxx: Updated the examples according to the new syntax. 2014-07-18 18:57:13 -03:00
Savio Sena 58ec781598 eolian-cxx: Added examples.
Added complex types, callbacks and events examples.
2014-07-18 18:57:09 -03:00
Daniel Kolesa b879550d4a eolian-cxx: Added namespaces and more (see below)
Implemented namespaces
Added eolian_wrappers.hh with C++ code wrapping Eolain API
Changed eolian_cxx program options. Now they're eolian_gen's
Added functions to safe_str.hh (safe_lower, safe_upper, normalize_spaces, path_base)
Added a mocked version of type_lookup.hh in advance. The full
version will come as soon as complex-types are added.

Made apply again by Daniel Kolesa, original implementation by Savio Sena.
2014-06-30 19:35:06 +01:00
Savio Sena 9a5644b285 Eolian-Cxx: Corrected the syntax of the .eo examples and added missing includes.
Summary: Just updating the .eo's to match the new syntax.

Reviewers: cedric, q66, tasn, JackDanielZ

Reviewed By: q66

CC: felipealmeida, smohanty, woohyun, cedric

Differential Revision: https://phab.enlightenment.org/D1067
2014-06-19 23:54:36 +01:00
Savio Sena 69017b2e3b eolian_cxx: fix install-examples and (post-install) compilation.
Summary:
This patch fixes T1226 by adding a Makefile.examples to
examples/eolian_cxx. It also fixes a bug in bin/eolian_cxx: the
include paths were not being correctly generated for directories
outside EFL tree.

Reviewers: cedric, smohanty, stefan_schmidt, stefan

CC: uartie, wayland-efl, felipealmeida, raster, woohyun, cedric

Maniphest Tasks: T1226

Differential Revision: https://phab.enlightenment.org/D824

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-07 23:40:46 +02:00
Savio Sena c4dba109db eolian_cxx: initial version of the EFL C++ Bindings Generator.
Summary:
This patch adds 'eolian_cxx' -- a C++ bindings generator --
to the EFL tree. Eolian Cxx uses Eolian API to read .eo files and generate
.eo.hh. It relies/depends on Eo Cxx and Eina Cxx (both non-generated
bindings).

src/bin/eolian_cxx: The eolian_cxx program.
src/lib/eolian_cxx: A header-only library that implements the C++ code
generation that binds the .eo classes.

=Examples=

src/examples/eolian_cxx/eolian_cxx_simple_01.cc: The simplest example,
it just uses some "dummy" generated C++ classes.

src/examples/eolian_cxx/eolian_cxx_inherit_01.cc: Illustrates how
pure C++ classes inherit from .eo generated classes.

src/examples/evas/evas_cxx_rectangle.cc: More realistic example using
the generated bindings Evas Cxx. Still a bit shallow because we don't
have full fledged .eo descriptions yet, but will be improved.

=Important=

The generated code is not supported and not a stable API/ABI. It is
here to gather people interest and get review before we set things in
stone for release 1.11.

@feature

Reviewers: cedric, smohanty, raster, stefan_schmidt

CC: felipealmeida, JackDanielZ, cedric, stefan

Differential Revision: https://phab.enlightenment.org/D805

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-03 00:56:32 +02:00