Commit Graph

56915 Commits

Author SHA1 Message Date
Jean-Philippe Andre 5d6a5343b7 cxx: Include definition header in impl header
Good for IDE's. Not extremely useful considering how unreadable those
files are.
2017-12-05 15:01:43 +09:00
Jean-Philippe Andre cb7f2d0dd5 cxx: Add header guards for manual definitions
This will be used for things like efl_del

efl_part was a lucky case where the entire class was to be implemented
manually, thus the global header guard was sufficient.
2017-12-05 10:17:46 +09:00
Jean-Philippe Andre 9d14b4cfe8 cxx: Give ref to returned objects
This should give a ref to obj in the following scenario:

  auto obj = other.function();

Where obj is an eo object.
2017-12-05 10:17:02 +09:00
Jean-Philippe Andre 6653b9e2b1 cxx: Implement support for @class static functions 2017-12-05 10:17:02 +09:00
Jean-Philippe Andre 0f812f1584 cxx: Fix indentation of ifdef guard 2017-12-05 10:15:40 +09:00
Jean-Philippe Andre c372e5e6c7 win: Allow unref until deletion
This is for bindings. I wish I could actually distinguish the use case
more (between efl_add() from C and instantiation from C++).
2017-12-05 10:15:40 +09:00
Jean-Philippe Andre 5901b4601e cxx: Implement support for parts
This generates methods like this:

  Part_Class part_name() const;

Which can then be used like:

  slider.indicator().format_string_set("%1.1f");
2017-12-05 10:15:40 +09:00
Jean-Philippe Andre f47bb54f4f cxx: Fix evas compile test and Evas.hh
The c++ header was checking the wrong header guard. Fixing that would
break the compilation test, as it was doing the wrong thing. Also I
think config.h should not be included for compilation tests. This should
make things slightly better.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre e738c5e869 cxx: Fix bg examples
One uses the Bg widget and the other one uses the part.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 63725d71fd cxx: Implement proper part support (wrt. refs)
It's VERY hacky, but works as expected: no leak, no extra unref. This is
a lucky case of simply overriding efl_part() implementation in C++,
without having to modify the declaration.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 0f5d40e6d4 cxx: Add header guards to .impl.hh
Those are included headers after all, even if they're only included once
from Elementary.hh (or whatever Efl_Header.hh).
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre b4e3d4d8a4 cxx: Avoid pedantic warning with -Wold-style-cast
This affects the generated headers.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 03af836332 cxx: Use set for forward classes
This avoids duplication. Not very important as there are FWD_GUARD
macros anyway.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 4fdc5fd0b2 cxx: Fix some pedantic warnings from clang
Shadow variables, 0 used as nullptr.
clang still complains that usage() is not declared as noreturn.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre d887c4de52 cxx: Add implicit conversion to Eo* pointer
This is part of the experimental stuff.

Allows calling C functions without using ._eo_ptr() explicitly. Probably
not super useful, assuming the interfaces are done :)
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre a787c3cc07 cxx: Only use eo_cxx:: for methods
Add an experimental (disabled) macro to only generate functions inside
the eo_cxx equivalent of a class, instead of inside both the eo_cxx and
the normal class definition.

I guess the duplicated definition had something to do with doxygen, but
I'm not sure this is quite necessary as doc will be generated with
custom scripts.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 12d50cbe19 cxx: No instantiate ctors for non-regular classes
Only regular classes can be instantiated, this should be reflected in
the C++ binding as well.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 753304c69d cxx: Add define EFL_CXXPERIMENTAL for testing
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-05 10:14:03 +09:00
Jean-Philippe Andre 425d8db90f cxx: Showcase function pointer in calendar example
This is just a work-in-progress example.
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre 5425baa906 cxx: Add support for function pointers
This was tested on the function pointer Efl.Ui.Format_Func_Cb
2017-12-05 10:14:03 +09:00
Jean-Philippe Andre a597084db7 cxx: Add strbuf to the list of recognized builtins 2017-12-05 10:09:58 +09:00
Jean-Philippe Andre 488c29febd cxx: Add FIXME note in eina_value.hh
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-05 10:09:58 +09:00
Jean-Philippe Andre 22919b2050 format: Use strbuf builtin type instead of ptr() 2017-12-05 10:09:58 +09:00
Jean-Philippe Andre 43a6fddf1f eolian: Add builtin type "strbuf"
Refers to Eina_Strbuf*
2017-12-05 10:09:58 +09:00
Jean-Philippe Andre cfb3365060 cxx: Add strbuf support
Comes in two fashions:
 - strbuf_view (read-only)
 - strbuf (read/write)
2017-12-05 10:09:58 +09:00
Jean-Philippe Andre be267a071e cxx: No need to declare the current class twice
This avoids double _FWD_GUARD for the current class in a .eo.hh header.
2017-12-05 10:09:58 +09:00
Jean-Philippe Andre 1997e1b3d0 cxx: Some code style in examples
Use the common form
  Class a(instantiate);
instead of
  auto a = Class(instantiate);

Also modify bg example to not use an policy.
2017-12-05 10:09:58 +09:00
Jean-Philippe Andre 258a214e0f cxx: Add event_cb_add functions to events
This enables a syntax like:

  button.clicked_event_cb_add([]() { std::cout << "Hello" << std::endl; });

I could not manage to pass the std::placeholders inside the template,
depending on whether the lambda has arguments or not. Not sure if
that's even possible.
2017-12-05 10:09:58 +09:00
Jean-Philippe Andre db8227a34a cxx: Add alternative form to instantiate object
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-12-05 10:09:58 +09:00
Felipe Magno de Almeida 66eb8ddfeb eolian: Add inarray and inlist to source generation 2017-12-04 20:34:47 -02:00
Vitor Sousa e7803cc429 efl_mono: fix switched reference to generated and non-generated source file in build system 2017-12-04 18:02:36 -02:00
Lauro Moura 80bbc4b1f9 eolian_mono: Add evas_table_mirrored_get/set to bl
Clashing with efl_ui_mirrored/get/set
2017-12-04 15:48:04 -03:00
Lauro Moura e19465bc35 eolian_mono: Generate placeholder fields for empty structs
Mono's JIT fails to generate function pointer for delegates with empty
structs in the signature, leading to those mini-amd64.c crashes on empty
fields.

This commit generates a placeholder IntPtr field in empty structs.
2017-12-04 15:47:53 -03:00
Lauro Moura 3c5efa1e8d efl_mono: Fix eina_value_set.
Instead of messing around with varargs, create individual wrappers for
each type supported.

The va_list approach was getting problems with float/double on Windows.
2017-12-04 15:47:52 -03:00
Lauro Moura c316a2ef37 ecore: Fix compilation for GCC 4
Summary:
GCC4 support compound literals for static initializers only in C89. This
commit reverts to the previous behavior when using this version.

Currently we are using it to build on Windows.

Reviewers: felipealmeida, cedric, barbieri

Subscribers: jpeg

Differential Revision: https://phab.enlightenment.org/D5518
2017-12-04 15:47:52 -03:00
Lauro Moura 09221f8516 elm: Move legacy enums to elm_general.eot.
efl_ui_text and friends uses some enums currently defined in
elm_entry.eo. The latter is exported outside the elm public eolian eos
and never generated.

This commit moves the enums to the "transition" file elm_general.eot.
2017-12-04 15:47:52 -03:00
Lauro Moura b97d3438eb efl_mono: Add buildystem integration.
The C# bindings are built using the --enable-csharp-bindings (disabled
by default).
2017-12-04 15:47:51 -03:00
Lauro Moura 41c073b2e6 efl_mono: Add examples code.
Buildsystem support will be enabled in a future commit
2017-12-04 15:47:51 -03:00
Lauro Moura 8b1a72e972 efl_mono: Add native support library
Buildsystem integration will come in a future commit
2017-12-04 15:47:51 -03:00
Lauro Moura aff896d9eb efl_mono: Add msbuild file generator
Buildsystem integration will come in a future commit.
2017-12-04 15:47:51 -03:00
Lauro Moura 345336c46d efl_mono: Added test files for the C# bindings.
Buildsystem integration will come in a future commit.
2017-12-04 15:47:50 -03:00
Lauro Moura d93e9ff286 eolian_mono: Added code for eolian_mono generator
Based on the eolian_cxx library generators. Buildsystem files will come
in a future commmit.
2017-12-04 15:47:50 -03:00
Lauro Moura 9391407319 efl_mono: Adding support code for the C# binding
This is the C# manual code for the binding. Buildsystem integration will
come in a future commit.
2017-12-04 15:47:49 -03:00
Lauro Moura e6dd831f7e eolian_cxx: Many changes for the C# bindings
- Added helper function to get all methods of a given class (local and
  inherited methods)
- Add filename information to klass
- Added new defs: enum, value (currently only integers), struct
- Generator refactoring
- Eolian C compatibility
2017-12-04 15:47:49 -03:00
Lauro Moura 0931696a4f eolian: Add inarray and inlist 2017-12-04 15:47:48 -03:00
Stefan Schmidt 2631fabcac docs: fill in missing docs for efl_animation_ eo classes 2017-12-04 16:43:12 +01:00
Stefan Schmidt 9cefba4e90 docs: fill in missing docs for efl_ui_calendar_item eo class 2017-12-04 16:34:23 +01:00
Stefan Schmidt c13e2f2be0 docs: fill in missing docs for efl_animation eo class 2017-12-04 16:33:57 +01:00
Stefan Schmidt 0d0e677431 docs: fill in missing docs for efl_ui_popup_alert eo class 2017-12-04 15:42:36 +01:00
Stefan Schmidt 5ee90bcd04 docs: fill in mising docs for efl_ui_popup_anchor class 2017-12-04 15:32:48 +01:00