Commit Graph

189 Commits

Author SHA1 Message Date
Daniel Zaoui d95224b5a7 Eo: add function name to the eo_do pre and post hooks.
This is useful to determine the Eolian class/function.
2015-01-11 16:28:44 +02:00
Daniel Kolesa f58f59d635 elua: convert some eolian binding API results to numbers
This might fix some bugs and is the right thing to do anyway.
2015-01-09 15:45:03 +00:00
Felipe Magno de Almeida c57fa54fc8 eolian-cxx: Fixed mixed inheritance between C and C++ classes
Removed genereation for Eo.Base primitive methods which segfault'ed
on parent_set function.
2015-01-05 18:59:09 -02:00
Vitor Sousa 666b0da912 eolian_cxx: Using eina::optional to handle parameters without @nonull property 2015-01-05 15:52:27 -02:00
Vitor Sousa b713342987 eina_cxx: Allow creating an eina::optional<T> from a type convertible to T 2015-01-05 15:52:27 -02:00
Vitor Sousa 11eff05ead eo_cxx: Implicit conversion from C++ wrapper to void* via address_of operator 2015-01-05 15:52:27 -02:00
Vitor Sousa 4222cd3f50 eolian_cxx: Fix compilation of inheritance from Eolian generated classes
Updated the code for the "inheritance helper" functions and classes
to be in conformance with the new wrapper architecture.

Member variable "parents" of efl::eo::eo_class struct was split in two
member variables, "ancestors" and "parents", the former containing all
Eo class ancestors and the later only the direct bases.
Changed all required files accordingly.

Check to avoid using biding string when the parameter is @out now matches
any variation of "char".

Add default constructor to efl::eo::concrete in order to allow it to be
NULL initialized in the "inheritance helper" classes.

Removed conflicting parent_set member function in the efl::eo::inherit
class.

Removed the "inheritance_extension_function" generator since it is no
longer used.
2015-01-05 15:52:27 -02: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 0685885c2a eolian_cxx: Add implicit conversion of the returned pointer of C++ wrappers
Overloaded address-of operator for C++ Eolian wrappers for implicit converting
to any ancestor pointer type when getting the object memory address.

Added new grammars to aid the creation of the pointer wrappers
responsible of doing the implicit conversions.

Added a unit test which checks the address-of overload for arbitrary classes.
Added new .eo files to be used in it.
2015-01-05 15:52:27 -02:00
Vitor Sousa ed75aa32d6 cxx: General C++ Eo wrapper generation improvement
Using a new architecture in the generated files that simplify multiple
inheritance and allows the use of interface types as parameters.

No longer using a hand-crafted C++ header for eo_base.eo.
This file was added to the generation process.

Updated all files that are dependent in the hand-crafted eo_base
C++ header.

Now there is a class that contains the essentials functions of the former
eo::base wrapper and that is used to create (through inheritance) the
"concrete" classes for all Eo generated wrappers.

No longer binding any function or property that are protected, private or
legacy for now.

eolian_type_instance is now a struct with general information for the
whole type.

Added the new header file namespace_generator.hh to hold namespace
generation grammars.

Separated declaration and definition of Eo wrappers methods.

Referring for most objects by its full name (starting at the global
namespace ::) in the generated files.

Created additional helper grammars to avoid code replication.

Removed a TODO comment referring to a doubt about inheritance of
constructor methods.
Added a TODO comment regarding memory allocation for callbacks in static
member functions.
2015-01-05 15:52:27 -02:00
Vitor Sousa d5ec6c41d9 eolian_cxx: Fix: Using binding type for @out parameter instead of native type
No longer reverting to the native type when the parameter has "@out"
direction.

Added "is_out" member variable to eolian_type class.
With that, generators can keep track of the direction of the parameters.
Also added helper functions "type_is_out" and "type_is_complex".

Created "to_native" functions in eo_cxx_interop.hh to convert binding types
from C++ arguments to the actual C function arguments.
Added static assertions in these functions to enforce compatibility
between the binding and the native type (Required by @out parameters).

Reworked the overload of the "to_c" function for eo::base derivated
objects. Now there is a overload that rely in the compatibility
between the native type and the wrapper, enabling a wrapper to be used as
an output parameter.
2015-01-05 15:52:27 -02:00
Vitor Sousa 64dede1cf1 eolian_cxx: Fix callback handling on generated wrappers
Added callbacks to the event EO_EV_DEL for deleting heap-allocated
function objects. This will enforce that the allocated memory,
necessary for maintaining these callable objects alive, is freed at
least when the underlaying Eo object is destroyed.

Functions and constructor methods are now able to have multiple
callback types.

Removed some unused generators, since they become inconsistent now that
functions are required to handle multiple callback types.

Allocating callback objects in the constructor methods instead of
delaying it until the final constructor is called.

Created some generators to avoid code repetition.

Now the generator parameters_forward_to_c replicate the behavior of the
generator parameters_list. The generator parameters_list was, then,
removed since it have a less intuitive name.

Added a TODO comment regarding the behaviour of simple not translating
callbacks that are not followed by a user data pointer.

The generator parameter_type was moved from "parameters_generator.hh" to
"type_generator.hh" for more consistency and convenience.
2015-01-05 15:52:27 -02:00
Vitor Sousa 2b94d874fe eo_cxx: Fix leakage of eo objects by removing unnecessary "eo_ref"
Removed the call to eo_ref in the conversion from eo::base to the native
Eo* (in "to_c" function) in order to avoid eo objects being leaked.
2015-01-05 15:52:27 -02:00
Vitor Sousa fb5ba0f758 eina_cxx: Fix eina::array cend method recursive calling itself
@fix
2015-01-05 15:52:27 -02:00
Vitor Sousa ee81566ac8 eina_cxx: Fix eina::accessor for C++ Eo wrappers
Created a specialization of the eina::accessor for C++ Eo wrappers.

Created an override of the "accessor" methods in the eina::list specialization
for Eo wrappers (in eina_list.hh). It is necessary to create accessors with the
correct type.

Created specializations of std::is_base_of to avoid compilation errors related
with _Eo_Opaque type.

Added new test cases in "eina_cxx_test_accessor.cc" to test the accessor
specialization.

Added efl::eina::eina_init to the existing test cases to correctly do the
on demand initialization required by the tests.

@fix
2015-01-05 15:52:27 -02:00
Vinícius dos Santos Oliveira 5a2ac0c42f [eina-cxx] fix: wrong parameter type preventing the use of copy ctor
"Eina_Stringshare *" type is interchangeable with "const char *".
The "stealing" constructor from efl::eina::stringshare was incorrectly
using "char *" instead "const char *", preventing it from being used.
2015-01-04 17:56:53 -02:00
Daniel Kolesa 67c693eff1 elua: support is_c_only in lualian 2014-12-03 15:27:38 +00:00
Daniel Kolesa dc081b10e7 elua: update eolian bindings 2014-11-28 12:59:06 +00:00
Jean-Philippe ANDRE 72a3ec3fa0 Eolian lua: Fix typo in function name 2014-11-27 00:46:47 +09:00
Daniel Kolesa 3b59913b9a elua: update eolian bindings 2014-11-20 17:16:04 +00:00
Felipe Magno de Almeida 8240676b01 [eina-cxx] Fixed EFL_CXX_THROW not defined
Fixed errors of EFL_CXX_THROW not defined when #include'ing specific
eina C++ headers.
2014-10-23 18:06:13 -02:00
Felipe Magno de Almeida 7acdf2b1dd [cxx] Fixed eina::value get for string
The get function for string in eina::value wronfully was freeing the
string returned from eina_value_get. Which crashed applications that
used it.
2014-10-23 17:39:12 -02:00
Daniel Kolesa 54d7fed7b6 elua: handle event/property mixins correctly in eo 2014-10-17 16:14:49 +01:00
Daniel Kolesa 9e770c06be elua: complete property handling in eo bindings (getters, setters, keys, vals) 2014-10-17 15:54:47 +01:00
Daniel Kolesa 8414846142 elua: ffi.string in method calls is bad... reduce allocs 2014-10-17 14:56:44 +01:00
Savio S. Machado 0ca819974c eo-cxx: Replace C++ throw with EFL_CXX_THROW. 2014-10-13 07:45:34 -03:00
Daniel Kolesa 1e55e26422 elua: properly hook up gc so that eo objects are unref'd in C when collected 2014-10-10 15:44:49 +01:00
Daniel Kolesa 4c418e61cc elua: fix eo callback return 2014-10-10 14:46:50 +01:00
Daniel Kolesa 2863c51edd elua: very basic event support in eo bindings 2014-10-10 13:58:04 +01:00
Daniel Kolesa 9cb6ccf686 elua: initial, restricted support for property syntax and property/event inheritance 2014-10-10 13:48:25 +01:00
Savio S. Machado 1bea224203 eina-cxx: Replace throws with EFL_CXX_THROW. 2014-10-09 14:13:35 -03:00
Felipe Magno de Almeida 36405c6556 eolian-cxx: Fixed pointer dereferencing for Eolian types and constant propagation for C++ eina list containers
With the addition of pointer types, the eolian C++ generator now has
to dereference to get the base type which might be a complex type.
2014-10-08 22:28:51 -03:00
Savio Sena 1a6013e959 eo-cxx: Add static assert to check boolean size. 2014-10-03 15:05:51 -03:00
Daniel Kolesa 915f3a3424 elua: update eo bindings 2014-10-02 15:04:02 +01:00
Daniel Kolesa 99803b013f elua: generate the object ctor function 2014-10-02 14:55:30 +01:00
Daniel Kolesa 8a9c3a028e eolian: call the methods/properties from constructors directly for now 2014-10-02 14:40:58 +01:00
Daniel Kolesa a2bde0bf96 eolian: new API: eolian_class_c_get_function_name_get
This allows bindings to easily retrieve name of the C function used to
retrieve the Eo_Class. Also, update the Lua Eolian bindings and generator.
2014-10-02 11:00:06 +01:00
Daniel Kolesa 990cf6651a elua: update eo lua API against generated lualian output 2014-10-02 10:41:30 +01:00
Savio Sena ced2163b29 eolian-cxx: Reinterpret cast instead. 2014-09-30 18:53:23 -03:00
Savio Sena 8671a8d8e2 eolian-cxx: Add Eina_Bool* also to C++ interop. 2014-09-30 18:08:06 -03:00
Savio Sena b551593087 eo-cxx: s/eo_add/eo_add_ref/ in efl::eo::inherit. 2014-09-29 15:16:07 -03:00
Savio Sena e9e2344982 eolian-cxx: Replace old eo_add with eo_add_ref.
eo_add_ref behaves like the old eo_add.
2014-09-26 18:56:41 -03:00
Savio Sena 684617cfdc eo-cxx: Get rid of eo_add_custom. 2014-09-25 16:11:03 -03:00
Daniel Kolesa fc40591f11 elua: update eolian bindings and generator 2014-09-25 15:53:42 +01:00
Daniel Kolesa 15d9fec0e0 elua: class unregister + keep track of Eo_Class 2014-09-24 13:49:58 +01:00
Daniel Kolesa 85a135d32e elua: remove the eo_methods stuff, improve class registration 2014-09-24 13:37:26 +01:00
Daniel Kolesa 0061d5a437 elua: Eo metatype with method table redirection 2014-09-24 11:51:27 +01:00
Daniel Kolesa 92d39a9ed9 elua: ad the rest of Eo APIs to ffi cdef 2014-09-24 11:10:08 +01:00
Daniel Kolesa cc1a5149fe elua: add some more eo APIs to ffi cdef 2014-09-24 10:39:47 +01:00
Stefan Schmidt c2eb17325c docs/eina_cxx: Add main landing page for Eina C++ documentation 2014-09-19 15:27:33 +02:00