Commit Graph

48 Commits

Author SHA1 Message Date
Stefan Schmidt d528d9ab57 examples: eolian_cxx: package extra headers into dist.
Without them examples are not building from tarball distribution
2016-06-10 16:25:03 +02:00
Felipe Magno de Almeida e3081e2e50 eolian-cxx: Rewrite to accomodate new features of the C++ binding 2016-06-06 02:54:36 -03:00
Felipe Magno de Almeida 2107af0fc1 eolian-cxx: Fix C++ example compilation 2016-06-03 17:22:18 -03:00
Cedric Bail 7af402719a Revert "autotools: fix lots of warning."
This reverts commit 885d6c7d9bb0c253c49fd3f6351dd06d28a4cf74.

Reverting all as it seems those warning where actually for working code...
2016-05-16 09:29:29 -07:00
Cedric Bail 1073b4a887 autotools: fix lots of warning.
Thankcs Jean Guyomarc'h.
2016-05-16 09:09:23 -07:00
Felipe Magno de Almeida 47afc12f78 eolian-cxx: Disable example and fix new naming standard
Fixed naming standard in some tests and disabled the callback test
while Ecore Eo API is still rapidly changing
2016-05-08 12:19:48 -03:00
Felipe Magno de Almeida 1de3d58ae3 eolian-cxx: Remove deprecated examples
Removed deprecated and non-compilable examples for C++ using
Evas. Users should look into C++ Elementary's examples instead.
2016-04-21 15:25:24 -03:00
Jean-Philippe Andre cc413235d0 Examples: Fix compilation (disable CXX examples!)
Warning: This disables CXX examples because they use
now-internal APIs that have no EO API binding.
Those examples should be updated to use Efl.Ui widgets... once
we have them.
2016-04-21 17:16:53 +09:00
Cedric BAIL 9dfb570be9 examples: add DESTDIR support for install. 2016-04-14 17:00:08 -07:00
Stefan Schmidt b97fb616cb examples: adjust include path for headers no longer public headers
Since commit a4f0f08399de85b382603bc57e7a480872e85915 these header files are
no longer installed. Make sure the example have the correct path to actually
find teh files. If we no longer consider them public we might want to think
about removing the examples for them.

This commit fixes the examples build only.
2016-03-23 15:34:54 +01:00
Vincent Torri 84fc3b636e Examples: Fix compilation on Windows for eina, eio, elocation and eolian_cxx
Summary:
When compiling on Windows, Evil.h must be included, so update Makefile.am
accordinglY

Reviewers: cedric, jpeg

Reviewed By: jpeg

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D3439
2015-12-15 15:05:06 +09:00
Cedric BAIL 9606ceccd9 eolian: fix build after removal of --eo option. 2015-11-17 05:39:09 +01:00
Daniel Kolesa 91f3ad2865 eo: move some eo files to new doc syntax 2015-06-05 17:03:36 +01:00
Daniel Kolesa 943ed065a2 eolian: new syntax for params/values/keys
Instead of "@in type name;" we now use "@in name: type;". This change
is done because of consistency with the rest of Eolian; pretty much
every other part of Eolian syntax uses the latter form.

This is a big breaking change in the .eo format, so please update your
.eo files accordingly and compile Elementary together with the EFL.

@feature
2015-05-18 16:14:31 +01:00
Daniel Kolesa bcdabb197b eolian: change all EFL .eo files to use new syntax for properties 2015-05-07 16:36:58 +01:00
Vitor Sousa 0f8eee760e eolian_cxx: Add protected methods and events to C++ wrappers and fixes
Using eina::string_view in eolian generated interfaces (instead of
std::string) to allow lightweight passing of both C strings and C++
std::string.

Also, No longer using eina::optional in generated headers for types
that already implements the concept of null state (like Eo wrappers
and eina_accessor).

Also fix allocating callback objects require by class methods
(i.e. static) in static vectors so the memory will be freed when the
programs exit.

Added a new test case for testing callbacks on class methods.

Moved method definitions and supplementary code from generated C++
wrappers to auxiliary header file (.eo.impl.hh) generated together
with the main ".eo.hh" file. Updated Makefiles to list such files in
the compilation and cleanup processes. Updated .gitignore to include
these new generated files.

Made general adjustments on the documentation of generated C++ wrappers

Added "PREDEFINED" preprocessor macro definition in the Doxyfile.in in
order to make some adjustments for better documentation in the C++
generated headers.  Excluding generation of documentation for classes
in the "eo_cxx" namespace (the namespace for "abstract" eolian C++
wrappers).  Now generating the documentation for the events too.
Hiding some auxiliary code from being documented. Some aesthetic
adjustments for generated white space. Generate documentation for the
main constructor of C++ wrappers and added auxiliary grammars to list
parameters names.
2015-04-14 01:06:57 -03:00
Cedric BAIL 9d057a6a09 eolian_cxx: fix change visibility to visible. 2015-04-03 16:30:48 +02:00
Cedric BAIL 43187b66a9 emile: build examples after adding emile. 2015-03-17 09:58:19 +01:00
Stefan Schmidt 028f6ebc68 build: Unify use of $(MKDIR_P) for creating a dir within the build system
While we used different variation of mkdir -p all over we also had spots
where we did not use the option. This is one step in trying to make our
build system ready for parallel install. Using something like -j 10 even
for the install should help to speed up our jenkins jobs as well as distcheck.
2015-02-25 16:43:35 +01:00
Vitor Sousa d779be68e6 eolian_cxx: Fix "dreaded diamond" inheritance problem for C++ wrappers
Solved diamond inheritance problem by completely removing inheritance in
the abstract class.
All ancestors are inherited directly in the concrete class.
The algorithm that list the ancestors also avoid repetition.

Now concrete classes define methods too. This helps referring the correct
method directly by the object type (when there are methods with the same
name).

Moved the declaration and definition of constructor methods to the concrete
class, since they should not be used in derived classes.

Updated example that call "color_set".
With this model, if two ancestor classes have a method with the same name,
to call one of them from a derived class you must write the scoped name of
the member function in the wrapper.
In this case, either Evas.Object and Evas.SmartObject have a property
named "color".

Added "from_global" option to the full_name grammar too.
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
Cedric BAIL c4fa8dc07e gitignore: don't track generated files. 2014-09-30 16:25:46 +02:00
Savio Sena 2f27ceb8bc eolian-cxx: Update examples syntax and fix implementation accordingly. 2014-09-12 16:12:04 -03:00
Savio Sena 1f2ba6d012 autotools: Renamed EOS variable in the Makefiles uniquely.
EOS in Makefile_Efl.am becomes EFL_EOS.
EOS in examples/eolian_cxx/Makefile.am becomes ECXX_EXAMPLE_EOS.
2014-09-12 16:07:34 -03:00
Savio Sena 6a0b00f36e autotools: Add -I$(srcdir)/lib/efl/ to the examples.
This fixes 'make examples'.
2014-09-12 15:28:23 -03:00
Daniel Kolesa a46650836c eolian: move efl eo files over to the new ctor syntax 2014-09-01 15:53:35 +01:00
Daniel Kolesa 34b6914aa2 eo: migrate constructors sections to constructing methods 2014-08-27 15:43:47 +01:00
Daniel Kolesa 6b577aa514 eolian: more consistent syntax
"legacy foo" is now "legacy: foo" and "return foo" is now "return: foo".
2014-08-21 09:26:03 +01:00
Savio Sena 513ca1643d eolian-cxx: Renamed event_*_callback_{add,call} to callback_*_{add,call}. 2014-08-13 10:17:53 -03:00
Cedric BAIL f1733466e0 autotools: try to simplify our Makefile.am to reduce warnings. 2014-08-12 11:19:57 +02:00
Savio Sena 4c3dcef161 autotools: Fixed 'make dist' for Eolian-Cxx
Added .eo to EXTRA_DIST and *_stub.h to example's source lists.
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 d8523ed2ed eolian-cxx: Removes more warnings. 2014-07-21 21:32:22 -03:00
Felipe Magno de Almeida 9a1a0bb93e eolian-cxx: Fixed exapmle with support for complex types
Automatic conversion of Evas_Object* to evas::object wrapper broke the
example. Fixed it by using the new feature :).
2014-07-18 19:00:37 -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
Felipe Magno de Almeida 073f711ce1 eolian-cxx: Fixed example eo file
The coulourable.eo file got outdated when Eolian syntax changed, it is
now updated and fixed.
2014-07-18 12:28:59 -03:00
Felipe Magno de Almeida 8ef2bc4091 eolian-cxx: Disabled temporarily the inheritance feature
This feature is buggy when using multi-level namespaces. I disabled it
temporarily and will fix it ASAP and re-enable it.
2014-07-18 12:28:03 -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
Tom Hacohen 0ebaf5a0f3 Eo (base class): Fix .eo file to have proper namespacing for the class naem. 2014-06-30 17:47: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 20162de2d2 eolian-cxx: remove annoying compilation warnings and messages
Summary:
- remove an automake warning caused by a variable redefinition
- remove unnecessary verbosity during debug compilation

Reviewers: cedric, smohanty

CC: felipealmeida, cedric

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

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-10 10:15:37 +02:00
Savio Sena 8709d9a99f examples: fix eolian_cxx Makefile.am to work with --with-eolian-cxx.
Summary:
Includes Makefile_Eolian*_Helper.am and -- since
_EOLIAN_GEN_DEP and _EOLIAN_CXX_DEP can't be resolved from
src/examples -- redefine the generation rules locally.

Reviewers: cedric, stefan, stefan_schmidt

CC: felipealmeida, cedric

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

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-09 15:35:51 +02: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
Felipe Magno de Almeida a4cdc43c03 eolian_cxx: fix compilation of examples out-of-tree
Summary: Changed erroneous top_builddir for include paths for eolian_gen tool.

Reviewers: cedric, stefan_schmidt, stefan

CC: cedric

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

Signed-off-by: Cedric Bail <cedric.bail@free.fr>
2014-05-07 23:37:47 +02:00
Stefan Schmidt 47724c5bd4 examples: Fix install for eolian_cxx examples
Remove reference to non existing Makefile.example to let the install
succeed.

Fixes T1226
2014-05-06 09:56:46 +02:00
Savio Sena 8af864eb65 eolian-cxx: Fixed the generation .eo.h path.
Summary: This patch fixes T1225

Reviewers: uartie

CC: uartie, wayland-efl, felipealmeida, cedric, smohanty, raster, stefan_schmidt, stefan, woohyun

Maniphest Tasks: T1225

Differential Revision: https://phab.enlightenment.org/D821
2014-05-05 13:09:28 -07: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