Commit Graph

79 Commits

Author SHA1 Message Date
Felipe Magno de Almeida a3ade15d5a cxx: Add license to CXX bindings.
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: https://phab.enlightenment.org/D9418
2019-10-24 10:40:16 -03:00
Marcel Hollerbach 639869703f autotools: REMOVAL!
Get your seatbelt fastend! It is happening! AUTOTOOLS IS GONE NOW!
All praise to meson!

This time the final version, ci has been adjusted, and now does not try
anymore to build a removed buildsystem. However, the scripts in there
need cleaning up.

Differential Revision: https://phab.enlightenment.org/D9027
2019-06-18 08:56:34 +02:00
Marcel Hollerbach 4f8e15c16c Revert "autotools: REMOVAL!"
This reverts commit e8c69667b0.

git push on a wrong branch, sorry. This will land today, but not now.
2019-06-18 08:12:53 +02:00
Marcel Hollerbach e8c69667b0 autotools: REMOVAL!
Get your seatbelt fastend! It is happening! AUTOTOOLS IS GONE NOW!
All praise to meson!

Differential Revision: https://phab.enlightenment.org/D9027
2019-06-18 08:11:55 +02:00
Daniel Kolesa cf200a7d28 eolian: remove legacy handling API and most of generation
Summary:
This removes all Eolian API that deals with handling of legacy
code. It also removes the code using it in the generator as well
as bindings, but for now keeps generation of .eo.legacy.h types,
as there are still instances in our codebase where things are
otherwise broken. We can remove the rest once that is resolved.

Reviewers: zmike, cedric

Subscribers: #reviewers, #committers

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D8255
2019-03-08 10:12:09 -05:00
Marcel Hollerbach 34efdfb1b1 efl: convert all classes to the new eolian syntax
ref T7459

Reviewed-by: Daniel Kolesa <daniel@octaforge.org>
Reviewed-by: Xavi Artigas <xavierartigas@yahoo.es>
Differential Revision: https://phab.enlightenment.org/D7684
2019-01-18 16:31:26 +01:00
Felipe Magno de Almeida 2032e7d787 eolian-cxx: Remove test that can't be implemented
The feature required by this test was removed. When the feature is
reincluded with newer syntax the test will be rewritten and readded.
Differential Revision: https://phab.enlightenment.org/D6897
2018-08-24 11:42:49 +02:00
Mike Blumenkrantz 310d6d972d build: move src/examples/ to a single makefile
this greatly improves build times by improving parallelizing, though it
does introduce more BUILT_SOURCES usage which causes builds with cxx
bindings to take significantly longer

fix T7157
ref T7154

Differential Revision: https://phab.enlightenment.org/D6633
2018-08-03 13:09:22 +02:00
Stefan Schmidt 72f4ab875d examples: cxx: fix some missing const attributes in colourable*
Fixing some fallout from fcae7cab27

Given that the examples do not build for weeks with CXX enabled this is
just the tip of the iceberg.
2018-04-18 10:15:26 +02:00
Lauro Moura 4214311a76 examples: Improve efl_mono and eolian_cxx build
The examples were either not build or using repeated rules due to
_EOLIAN_DEP_GEN not being set correctly was Makefile_Eolian_Helper.am
assumes it being inclueded from src/, while each example folder has its
own .am inside its folder.
2018-04-12 21:23:42 -03:00
Felipe Magno de Almeida 0322ff14a6 eolian-cxx: Fix distributing eo files in examples 2017-12-14 18:19:54 -02:00
Felipe Magno de Almeida f869065873 efl-cxx: Fixes in automake Makefiles 2017-12-14 17:42:42 -02:00
Felipe Magno de Almeida e67d6484b8 efl-cxx: Fixes to make dist 2017-12-13 14:13:09 -02:00
Daniel Kolesa 2f81b26367 eolian: scan system dir by default
The '-S' option lets you reverse that. But by default, most
people will want the prefix to be scanned for eo files.
2017-11-14 13:47:09 +01:00
Cedric BAIL 16b0733a52 build: fix make examples on Windows
Summary: We should define the windows version before including evil.

Test Plan: Run make examples on windows newer than XP.

Reviewers: vtorri

Subscribers: jenkins, cedric, jpeg

Tags: #efl, #windows

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

Signed-off-by: Cedric BAIL <cedric@osg.samsung.com>
2017-10-05 16:23:52 -07:00
Felipe Magno de Almeida 761e6a304c eolian-cxx: Fix example after disambiguation patch of C++ binding 2017-09-14 15:06:33 -03:00
Jean-Philippe Andre bcf3ce8428 examples: Fix most trivial warnings
This fixes all warnings for "make examples" for:
 -Wunused-parameter
 -Wshadow
 -Wformat-security
 -Wenum-conversion

Some remaining warnings include:
 -Wdeprecated-delcarations
2017-04-20 17:44:57 +09:00
Felipe Magno de Almeida a1f2db255b cxx: Modify how to generate C++ headers and allow cyclic dependencies
Allow cyclic dependencies in generated C++ headers by changing order
of includes and creating forward declarations.
2017-01-18 22:47:04 -02:00
Stefan Schmidt 7af39bc447 examples: eolian_cxx: adapt code generation to changed eolian_gen commandline
The commandline options have changed for eolian_gen to generate the code. Adapt
the makefile helpers to fix the build break in examples
2016-10-14 12:38:46 +02:00
Lauro Moura 16986ffc7a eolian_cxx: Fix behavior with explicit void return
Only perform the single value/return type substitution on properties if the
void return type is implicit (i.e. NULL return from function_return_type_get),
following the eolian-C implementation as we use the generated headers.

Also update example after Eo-Efl changes.
2016-08-17 20:54:27 -03:00
Tom Hacohen e65aae994e Eo: Finish the renaming of Eo to the EFL.
This renames all the rest of the API to the EFL namespace except for
Eo_Event that will follow soon.

Obviously breaks both API and ABI.
2016-08-15 15:07:42 +01:00
Tom Hacohen c662934be8 Change the EFL to follow the new Eo rename. 2016-08-11 17:04:43 +01:00
Stefan Schmidt 83dc71ecfe 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 2a3d7860db eolian-cxx: Rewrite to accomodate new features of the C++ binding 2016-06-06 02:54:36 -03:00
Felipe Magno de Almeida 09446ccb90 eolian-cxx: Fix C++ example compilation 2016-06-03 17:22:18 -03:00
Cedric Bail e0538735d9 Revert "autotools: fix lots of warning."
This reverts commit 885d6c7d9b.

Reverting all as it seems those warning where actually for working code...
2016-05-16 09:29:29 -07:00
Cedric Bail 885d6c7d9b autotools: fix lots of warning.
Thankcs Jean Guyomarc'h.
2016-05-16 09:09:23 -07:00
Stefan Schmidt 26f309112e examples: eolian_cxx: fix some problems after changing the colourable namespace
Fix commit 3e8db298f7 the namepsace changed but
only a few files have  been fixed for this. Many files did still not compile
with make examples. I fixed some more but stopped at the cxx files with the hope
that the original author would actually do this.
2016-05-10 11:10:24 +02:00
Felipe Magno de Almeida 3e8db298f7 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 bd5c1f7240 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 6826ce1c6f 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 fb759c7b90 examples: add DESTDIR support for install. 2016-04-14 17:00:08 -07:00
Stefan Schmidt 13ae999211 examples: adjust include path for headers no longer public headers
Since commit a4f0f08399 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
Vitor Sousa 9cbda57bf0 eolian-cxx: Fix Eolian C++ constructing methods with new eo_add
Also fix Eolian C++ examples using the new "eo_super".
2016-03-03 16:05:40 -03:00
Tom Hacohen f21ade6123 Automatic migration to Eo4.
I just ran my script (email to follow) to migrate all of the EFL
automatically. This commit is *only* the automatic conversion, so it can
be easily reverted and re-run.
2016-03-03 09:58:08 +00:00
Vincent Torri 097f7e9f7b 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
JinsolPark 0d1c1d5ad6 eolian: fix eo makefile example of --eo option.
Summary: eolian: fix eo makefile example of --eo option.

Reviewers: cedric, q66

Reviewed By: q66

Subscribers: jpeg, q66

Differential Revision: https://phab.enlightenment.org/D3389
2015-11-30 10:37:10 +00:00
Cedric BAIL 6748b047f5 eolian: fix build after removal of --eo option. 2015-11-17 05:39:09 +01:00
Daniel Kolesa ceda77750b eo: move some eo files to new doc syntax 2015-06-05 17:03:36 +01:00
Tom Hacohen 6efbfe227a Eo: Add a return value to eo_constructor().
From now on, constructors should return a value, usually the object
being worked on, or NULL (if the constructor failed). This can also
be used for implementing singletons, by just always returning the same
object from the constructor.

This is one of the final steps towards stabilizing Eo.

@feature
2015-05-20 13:03:24 +01:00
Daniel Kolesa 058a9c9d88 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 ed0988a22d eolian: change all EFL .eo files to use new syntax for properties 2015-05-07 16:36:58 +01:00
Vitor Sousa ce36f0be93 eolain_cxx: Fix C++ support for new Eolian features
Added optional constructor methods for C++ Eolian wrappers.
Changed the interface of wrappers' main constructors.
If there are optional constructor methods they should be passed as variadic
template argument at the end of the constructor.
To support variadic template arguments, the optional "parent" parameter is
now the first parameter and there is another constructor without the
"parent" parameter.

Checking for @optinal and @nullable attributes instead of @nonull.
Now @nonull is the default, and eina::optional is only used when @optional
or @nullable attribute is specified.

The names of constructor methods no longer have the class name prefixed.

Added unit tests for checking the binding of optional constructors.
Added new .eo file to be used in the test.

Changed the generated documentation of constructors.

Changed the efl::eo::inherit accordingly, to address these new features.
Now the constructor methods should be explicit called in the
efl::eo::inherit constructor, which will receive them via variadic
template arguments.

Added another constructor to efl::eo::inherit for passing the parent
object.

Updated some tests and examples to follow the new interface.

Removed some code that is no longer necessary.

Also, fix Eolian C++ support for constructing properties. fix
assertion when parsing constructing properties.

Now if a property is a constructing property eolian_cxx will generate a
constructor method that have the property name (without the "_set" suffix).
2015-04-14 01:06:57 -03:00
Vitor Sousa d530389898 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 0de4a1a4f2 eolian_cxx: fix change visibility to visible. 2015-04-03 16:30:48 +02:00
Cedric BAIL 0914115586 emile: build examples after adding emile. 2015-03-17 09:58:19 +01:00
Stefan Schmidt c5879dab4d 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
Larry Jr 2b12114777 allow C++ user create new classes inheriting from Eolian generated Classes 2015-01-05 15:52:27 -02:00
Vitor Sousa 6519ae6ed9 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 132abc3534 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