path: root/src/bin/eolian (follow)
AgeCommit message (Collapse)Author
2019-11-05eolian: Imply @no_unused if @move in return.Lauro Moura
Summary: This makes sure the user is warned if it ignores a return value that could potentially be a memory leak. This also makes possible to use `value {}` blocks with `@move` instead of value-less properties with `@no_unused`. Also removed the `@move` from canvas_text_async_layout as it is ignored in the only place it is used. Reviewers: q66 Reviewed By: q66 Subscribers: #reviewers, #committers, bu5hm4n, felipealmeida, cedric, segfaultxavi Tags: #efl Differential Revision:
2019-10-09eolian: Leave default text for libeolian usersLauro Moura
Summary: Instead of setting the default text at the library level, keep the summary empty if nothing is provided. The libeolian users them are free to check if the summary was actually empty or a placeholder text was added. ref T8309 Test Plan: Run attached tests Reviewers: q66, segfaultxavi Subscribers: cedric, brunobelo, #reviewers, felipealmeida, #committers Tags: #efl Maniphest Tasks: T8309 Differential Revision:
2019-09-26eolian: rename param direction enum and fields for consistencyDaniel Kolesa
2019-09-24eolian: remove support for globalsDaniel Kolesa
This was meant to happen but did not previously happen. It is not ideal to do it now but better do it while we still can. In short, this removes one half of the variables API (keeps constants as they are) and repurposes the API to be only for constants. This is also better for consistency to match errors.
2019-09-24eolian: always allow implementation for eot filesDaniel Kolesa
This is so the build system can unconditionally generate .eot.c without worrying whether there's something to generate.
2019-09-20eolian: rename any_value_ptr -> any_value_ref for consistencyDaniel Kolesa
2019-09-13eolian: support complex monospace syntax $[...]Daniel Kolesa
This is to allow monospace bits with periods, commas and other non-alphabetical characters. Newlines are not supported (they end the block) and escapes are supported (for ]). Fixes T8213.
2019-09-10eolian: fix default value handling for @by_ref typesDaniel Kolesa
We must check all pointerness first, and append NULL as default when that applies, because @by_ref is not carried in the typedecl info. Therefore, it would result in a false positive and try to make a zeroed struct, which we don't want.
2019-09-09eolian: remove second parameter for eolian_type_c_type_getDaniel Kolesa
This has been replaced by newer APIs.
2019-09-06eolian_gen: make errors compile/workDaniel Kolesa
This is not thread safe, but I don't see any better way out for now. We'd probably need a different error API for that. Ref T6890
2019-09-05eolian: update C generator to respect by_ref as well as testsDaniel Kolesa
2019-09-04eolian: remove the expression eval_type APIDaniel Kolesa
This is unnecessary because for all contexts where type is relevant the validator already makes sure the type and expression match correctly, so you don't ever need to re-validate it. If you are doing a generic case and are not sure, just use MASK_ALL.
2019-09-03eolian_gen: do not generate reflection for ref-returnsDaniel Kolesa
2019-09-02eolian_gen: use new is_move APIs to check ownership transfersDaniel Kolesa
2019-08-16eolian: rename is_class api for functions to is_staticDaniel Kolesa
Still needs restriction to classes only etc to be done later. Ref Ref
2019-07-30eolian_gen: generate freefuncs for strbuf/binbufDaniel Kolesa
2019-07-23eolian: start to express ownership transfereMarcel Hollerbach
before @owned was not even expressed in the api definitions of the generated APIs, this adds support for it. @owned is now expressed with EFL_TRANSFER_OWNERSHIP in a arguments. And that preprocessor directive is documented. Reviewed-by: Daniel Kolesa <> Differential Revision:
2019-07-08eolian: remove API to get freefunc of typeDaniel Kolesa
This is not supported anymore. For now, the syntax is kept around because of broken C++ tests, but afterwards it will also be removed.
2019-07-08eolian_gen: remove reliance on builtin freefuncsDaniel Kolesa
2019-07-08eolian_gen: introduce C generation support for error typesDaniel Kolesa
ref T6890
2019-05-26eolian: rename @warn_unused and its associated APIDaniel Kolesa
@warn_unused in syntax is now called @no_unused - this is because "warning about unused" is a C thing (or rather, an extension to C) and various languages might want to use stricter behavior for this. Its associated API does the reverse now - it lets you query whether being unused is allowed at all. This is to match future behavior of Eolian (once it supports versioning) that will likely reverse it. @feature
2019-05-26eolian: remove param @nonullDaniel Kolesa
This has been deprecated for a while and is not strictly necessary - as a part of an effort to stabilize Eolian, remove this. Eolian will eventually gain support for versioning and use a reversed behavior (i.e. no NULL by default), but the API it wlll use for that will be very different. Features can always be added, it's much harder to drop them. @feature
2019-05-16eolian: rename eolian_event_c_name_getDaniel Kolesa
This is for consistency with the new eolian_class_c_macro_get as well as for better clarity, as c_name_get is already provided by Object and refers to something else.
2019-05-16eolian: rename eolian_typedecl_enum_field_c_name_getDaniel Kolesa
This is to allow for better object oriented APIs, as the `c_name` field would be inherited from Object. This also makes it more clear in C.
2019-05-16eolian: add API to retrieve the C name of an objectDaniel Kolesa
This is to prepare for type/class renaming support. This adds the necessary API to retrieve C-specific names. Other refactoring is necessary elsewhere for now. This also renames the old API eolian_class_c_name_get to eolian_class_c_macro_get to avoid conflict as well as clarify the intention.
2019-05-03eolian: refactor parsing API and path handlingDaniel Kolesa
This splits the eolian_file_parse API into two, one for parsing files already present in the database (always by filename) and one for parsing paths. It fixes several bugs/leaks on the way (incorrect use of stringshare etc.) as well as adds checking for whether there are no conflicting filenames at scan time, for free. That means it is now no longer possible to scan two paths which have an eo or eot file of the same name in them. It should also be faster now. It also fixes T7820. @fix
2019-05-03replace strndup with eina_strndup, remove strndup definition in evil and ↵Vincent Torri
elm_test_dnd Test Plan: compilation Reviewers: cedric, zmike, raster Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-04-18eolian_gen: remove support for legacy header file generationDaniel Kolesa
2019-03-12eolian: Fix resource leakChristopher Michael
Summary: Small patch to fix a resource leak detected by Coverity. Coverity reports that 'refls' going out of scope leaks the storage it points to, so let's free it before we leave the function. Fixes Coverity CID1399099 Depends on D8309 Reviewers: raster, cedric, q66, zmike, bu5hm4n, stefan Reviewed By: q66 Subscribers: #reviewers, #committers Tags: #efl Differential Revision:
2019-03-09efl: ensure legacy is only relying on stable typesMarcel Hollerbach
Summary: This commit changes the beta ness of a few types, those types are looking quite stable. Edje types will likely not change. The Efl.Gfx.Join types are actaully already stable since the last release, since evas_vg was stable back then and those enums have been in there. The elementary stuff looks a bit unthought, and we have the chance to change the API in the backend, so maybe we want to not declare it stable, but rather reintroduce the legacy types. With this we can enable eolian generation of beta tags for types. ref T7726 Depends on D8276 Reviewers: cedric, segfaultxavi, zmike, stefan_schmidt, q66 Reviewed By: segfaultxavi, q66 Subscribers: #reviewers, #committers Tags: #efl Maniphest Tasks: T7726 Differential Revision:
2019-03-08eo: make reflection getter const function.Cedric BAIL
Getter are usually not modifying there object. This is going to put a strong limit on what a getter property for MVVM is, as it will prevent any side effect on getting a property from a View. Reviewed-by: Xavi Artigas <> Differential Revision:
2019-03-08eolian: remove legacy handling API and most of generationDaniel Kolesa
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:
2019-03-08eolian: add support for marking type declarations betaDaniel Kolesa
Summary: This also simplifies the beta checking API by unifying it under objects (makes much more sense that way) and reworks the validator to have betaness support within its context state, allowing checks to be done easily in any place. The betaness checks are disabled for types for the time being, because otherwise there are too many errors (types are assumed to be stable as they are not tagged beta, but they reference beta classes all over the place). Set EOLIAN_TYPEDECL_BETA_WARN to 1 in your environment to force enable the checks. Reviewers: zmike, bu5hm4n, stefan_schmidt, lauromoura, cedric Reviewed By: zmike Subscribers: #reviewers, #committers Tags: #efl, #eolian Differential Revision:
2019-02-28eolian: remove support for inlist/inarrayDaniel Kolesa
This feature was kind of ill-conceived and never worked properly. Since there isn't enough time to make it work right at this point and there are no users of it in the API, remove it for now. It might get added in the next release cycle, in a proper form. @feature
2019-02-28eolian_gen: fix generation of legacy class functionsMarcel Hollerbach
we forgot to generate the legacy function. This no now added back. ref D8029 Reviewed-by: YeongJong Lee <> Differential Revision:
2019-02-21eo: make reflection setter able to return an error code in case of failure.Cedric BAIL
Reviewed-by: Marcel Hollerbach <> Differential Revision:
2019-02-21eolian gen: generate a separate file with legacy implementationsDaniel Kolesa
If legacy implementations are generated, eolian_gen now creates a separate file for them and includes it. The file name convention for that is <.c file name without ext>.legacy.<.c file name ext> or <.c file name>.legacy.c if it has no ext, so for example foo.eo.c becomes foo.eo.legacy.c and foo becomes foo.legacy.c. The file is generated assuming there are any legacy APIs contained inside the .eo file.
2019-02-21eolian gen: emit doxygen references to constants in uppercaseDaniel Kolesa
Since these are made into macros in C, they get uppercase names. Reflect this in documentation generation. Fixes T7691.
2019-02-15eolian gen: initial support for reflection apiDaniel Kolesa
This adds support for generating reflection functions for properties. This support is basic for now, supporting only primitive types and string(shares), it will be expanded later as required. @feature
2019-02-13eolian: allow tagging complete classes as BETAXavi Artigas
Summary: This allows using the @beta tag in classes, like this: class @beta Efl.Foo extends Efl.Bar { ... } This will surround the class definition in the .eo.h file with an EFL_BETA_API_SUPPORT #define, equivalent to tag every method and event with @beta. Test Plan: Nothing changes since no class uses this tag yet Reviewers: q66, bu5hm4n, zmike Reviewed By: q66 Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-02-13Remove individual class BETA guardsXavi Artigas
Summary: Eolian adds a per-class BETA guard (like EFL_UI_WIN_BETA) to any method tagged as @beta. This means that any app (and the EFL code) wanting to use BETA features has to enable them class by class, which is cumbersome. This commit replaces the individual guards with the global EFL_BETA_API_SUPPORT guard, so apps only need to define one symbol to access BETA features. Any usage of the per-class guards has been removed from the EFL code and examples. When building EFL the global guard is defined by configure, so all EFL methods already have access to BETA API. Efl_Core.h and Efl_Ui.h no longer define EFL_BETA_API_SUPPORT. Apps wanting to use BETA API have to define this symbol before including any EFL header (It has been added to the examples requiring it). Test Plan: make && make check && make examples still work, but there's a lot less #defines in the code Reviewers: zmike, bu5hm4n, q66 Reviewed By: q66 Subscribers: cedric, #reviewers, #committers Tags: #efl Maniphest Tasks: T6788 Differential Revision:
2019-02-13eo: remove class functions from eoMarcel Hollerbach
As in the previous commit explained, we want to get rid of class functions in eo, and make them just c functions right away. This commit removes the class parameter from the eo_class_function_set call, and adjusts the tests to not depend on class functions anymore. Class functions are now not tested anymore, tests that used them as a way to test *things* are adjusted to test them now with object functions, tests that just tested the working of class functions are dropped. This fixes T7675. Reviewed-by: Cedric BAIL <> Differential Revision:
2019-02-13eolian: drop class function overridingMarcel Hollerbach
Until this commit eo did class functions as part of the vtable, which enabled those functions to be overwritten in classes inheriting another class. However in task T7675 we decided that this is not really good for bindings, as most OOP languages do not support this sort of feature. After this commit eolian realizes class function completly outside of the vtable, the c-symbol that is the class funciton is now just directly redirecting to a implementation, without the involvement of the vtable. This also means a change to the syntax created by eo: Calling before: class_function(CLASS_A); Calling after: class_function(); Implementation before: class_function(const Eo *obj, void *pd) { ... } Implementation after: class_function(void) { ... } This fixes T7675. Co-authored-by: lauromauro <> Reviewed-by: Daniel Kolesa <> Differential Revision:
2019-02-07eo: change API call of efl_class_functions_setMarcel Hollerbach
The next commit will bring support for something like reflection. This commit prepares the whole tree for getting another argument in efl_class_functions_set. ref T7681 Differential Revision:
2019-02-06eolian_gen: add support for header-only depfilesDaniel Kolesa
By default, dependency files are now generated only for headers. This makes sense for the C generator and our dependency tracking needs. If full dependencies are needed, there is now the 'D' output, which has the old behavior.
2019-01-23eolian: add support for the container arrayMarcel Hollerbach
this fixes a lot of different warnings in the efl_mono test generation. Reviewed-by: Daniel Kolesa <> Differential Revision:
2019-01-16eolian_gen: void out keys depending on how they are settedMarcel Hollerbach
this avoid warings about keys not beeing used in the fallback function. Reviewed-by: Daniel Kolesa <> Differential Revision:
2018-12-20cmake: remove!Marcel Hollerbach
This build was never complete and also was not maintained probebly. It is also dropped in favour of meson which is cool, merged, works & is fast. Differential Revision:
2018-12-07meson: enable cross compilingMarcel Hollerbach
the inital work for this commit was coming from `Mark van der Putten`. In order to not have more options for this, the idea came up to use mesons autodetection using PATH. If a cross file is specified, the binaries are used from the system, rather than from the intree. (Which means --cross-file has the dependency of efl on the buildsystem) Differential Revision:
2018-12-03meson: use eolian_gen with -SMarcel Hollerbach
this ensures that eolian does not parse installed .eo files Differential Revision: