path: root/src/bin/eolian (follow)
Commit message (Collapse)AuthorAgeFilesLines
* eolian: silence a potentially uninitialized warningDaniel Kolesa2018-06-111-1/+1
| | | | | | Compiler thinks mname might be used uninitialized, which is never the case, because cl only exists if mname has been set. It still creates an annoying warning though, so fix that.
* eolian gen: remove unused promise variablesDaniel Kolesa2018-05-031-6/+0
* eolian: make doc ref resolution globalDaniel Kolesa2018-04-187-62/+61
| | | | | | | | | | | Doc refs no longer introduce new dependencies into files. Instead, they're parsed globally, and any doc ref lookup is also made globally. This allows unit based dependencies to correspond more to what files actually really need at compile time/runtime, with docs being irrelevant to that; it also simplifies the API. The doc resolution API now takes Eolian_State instead of Eolian_Unit, too.
* eolian gen: enable constness generation on property getter implsDaniel Kolesa2018-04-171-3/+3
| | | | | | | | | | This changes a lot of things all across the EFL. Previously, methods tagged @const had both their external prototype and internal impl generated with const on object, while property getters only had const on the external API. This is now changed and it all has const everywhere. Ref T6859.
* eolian: event/function_get_by_name -> by_name_getDaniel Kolesa2018-03-161-2/+2
* eolian: update type/var name APIsDaniel Kolesa2018-03-122-8/+8
* eolian: update class name APIsDaniel Kolesa2018-03-125-6/+6
* eolian gen: switch from decl api to object apiDaniel Kolesa2018-03-083-21/+23
* eolian: get rid of old APIs for typedecl retrievalDaniel Kolesa2018-03-071-2/+2
* eolian: remove old class retrieval APIsDaniel Kolesa2018-03-074-14/+14
* eolian*: replace various directory_scan/file_parseDaniel Kolesa2018-03-021-3/+3
* eolian: eolian_* -> eolian_state_*, Eolian -> Eolian_StateDaniel Kolesa2018-02-271-5/+5
* eolian: do not require unit when stringifying typesDaniel Kolesa2018-01-168-61/+55
| | | | | | As it is no longer necessary to pass unit when evaluating exprs, it is not necessary to pass it here either. Convert all the APIs to the new style and update all instances in our tree.
* eolian: do not require unit for expr eval APIsDaniel Kolesa2018-01-162-5/+5
| | | | | | | The necessary information is now stored directly in the expr during database validation. Also enable expr validation for params.
* eolian: aliased_base_get funcs don't need unitDaniel Kolesa2018-01-121-1/+1
* eolian: type_typedecl_get doesn't need a unitDaniel Kolesa2018-01-122-4/+4
* eolian: remove remaining global state (+ modify APIs accordingly)Daniel Kolesa2017-12-155-40/+43
* eolian: make declaration APIs use unitsDaniel Kolesa2017-12-154-19/+19
* eolian: pass state where necessaryDaniel Kolesa2017-12-051-3/+6
| | | | | | This modifies the API so that global state removal is made possible. It's still used internally for now but externally the state is contained.
* eolian: Add inarray and inlist to source generationFelipe Magno de Almeida2017-12-041-2/+26
* eolian: scan system dir by defaultDaniel Kolesa2017-11-141-10/+36
| | | | | The '-S' option lets you reverse that. But by default, most people will want the prefix to be scanned for eo files.
* eolian: more intuitive generation options and mrge impls into .cDaniel Kolesa2017-11-101-21/+58
| | | | | | | | | | Previously the output base name used to include extension, now you don't need to specify an extension and it's determined from the input file name instead. Also, implementation boilerplate used to merge with .eo.c before, which made no sense. Now it's merged with .c instead when it exists or makes a new .c file when it doesn't.
* eolian: make inherits_get return a list of classes, not stringsDaniel Kolesa2017-10-251-3/+2
| | | | | | | | Most of the time you need to retrieve the class from the string anyway, so remove this relic of old Eolian and gain some small performance benefits and extra convenience. Subtly breaks API but everything should be updated.
* eolian: fix setter generation for @auto functionsDaniel Kolesa2017-10-131-1/+1
| | | | | | | Because of a typo in generator source (and overlooked error in tests) we were previously generating incorrect code for setters with the @auto qualifier. This was brought up in D5306 and is now fixed.
* eolian gen: generate documentation for first object param if presentDaniel Kolesa2017-10-131-0/+11
| | | | | | This prevents doxygen from emitting warnings. Fixes T6186.
* eolian-bin: Free previously allocated eina_strbufChris Michael2017-10-051-0/+2
| | | | | | | | | | | Coverity reports that the eina_strbuf 'param_call' leaks when it goes out of scope here, so fix the leak by freeing the strbuf Fixes CID1381502 @fix Signed-off-by: Chris Michael <cp.michael@samsung.com>
* eolian gen: simplify generate_normal_free a bitDaniel Kolesa2017-09-291-35/+6
* eolian: generate free function for owned parametersMarcel Hollerbach2017-09-291-0/+204
| | | | | With this commit owned parameters are freed if the object function cannot be called, this means bla(NULL,param) will not leak anymore
* eolian: remove static_array and terminated_arrayDaniel Kolesa2017-09-221-16/+4
| | | | | | | These types are of questionable value and the API was not entirely thought out - remove for now, and if a legitimate use is found later, they may be readded (with a better API), but typically it seems best to redesign the bad APIs around safe containers...
* efl: Introduce Eina.Rect and switch EO APIs to itJean-Philippe Andre2017-09-181-1/+4
| | | | | | | | | | | | | | | | | | It's a complex struct but defined in EO as a simple struct. ABI-wise it's equivalent to Eina_Rectangle. Some macros that use Eina_Rectangle also work on Eina_Rect out of the box, most of the code dealing with x,y,w,h will require no modifications either. But Eina_Rect provides direct access to a size or position 2d component, as well as the usual x,y,w,h. The field "rect" is provided as a convenience for code dealing with both Eina_Rectangle and Eina_Rect. We may or may not require it. Note: Size2D could use unsigned values but I have spotted a few places in the code that actually use -1 to indicate invalid size (as opposed to 0x0). @feature
* eolian: always implicitly validate database and remove its APIDaniel Kolesa2017-09-131-6/+0
* eolian: clean up and fix function pointer generationDaniel Kolesa2017-08-303-26/+12
| | | | Out/inout params are now correctly handled.
* eolian gen: clean up param genDaniel Kolesa2017-08-301-80/+54
* eolian: change C type serialization API to account for returnsDaniel Kolesa2017-08-104-17/+18
| | | | This will allow proper handling of const.
* eolian: always generate a class initializerDaniel Kolesa2017-07-171-18/+5
| | | | | | | | | Because there might be hidden C implements defined, we need to always generate the appropriate class initializer. This does not hurt anything as the contents would have been called automatically by Eo anyway. @fix T5736
* eolian: function pointersLauro Moura2017-06-183-0/+118
| | | | | | | | | | | | | | First steps toward explicit function pointer support in eolian. To declare a function pointer type, use the following syntax, similar to a regular eolian method declaration. function FunctionName { params { ... } return: Return type }
* eolian: use unit in typedecl c_type_getDaniel Kolesa2017-05-301-1/+1
* eolian: expr eval APIs now take unitsDaniel Kolesa2017-05-302-17/+17
* eolian: pass unit to enum get by nameDaniel Kolesa2017-05-301-1/+1
* eolian: pass unit to struct get by nameDaniel Kolesa2017-05-301-1/+1
* eolian: pass unit to class get_by_name/fileDaniel Kolesa2017-05-306-62/+68
* eolian gen: pass the unit aroundDaniel Kolesa2017-05-307-31/+40
* eolian: help and version shall not cause an error exit statusJean Guyomarc'h2017-05-061-0/+2
| | | | | eolian_gen called with --help or --version is a valid action. It shall terminates with the 0 exit status.
* eolian: allow extending eolian-generated classes from within CDaniel Kolesa2017-04-131-18/+33
| | | | | | | | | | | If you define either the macro MY_CLASS_EXTRA_OPS for normal methods/properties or MY_CLASS_EXTRA_CLASS_OPS for class methods or properties, which contains a comma-delimited list of ops defs (i.e. EFL_OBJECT_OP_FUNC(...), ...) right before including the generated my_class.eo.c file, the definitions from these will be included in the actual class. This can be used to override certain things in a class internally without exposing it to Eolian, or for testing/debugging.
* eolian: fix incorrect function prototypes in legacy headersDaniel Kolesa2017-03-311-0/+4
| | | | | C functions that take no arguments need to have void in the arg list. Otherwise, it would mean taking any number of arguments.
* eolian gen: imply -gT if -o T:f is specifiedDaniel Kolesa2017-01-271-3/+13
| | | | | | | | If you specify type-explicit output filename, this automatically adds it so that it's generated even without specifying -gT. This is meant to help user friendliness. Also add a note about this to help listing.
* build: add eolianMarcel Hollerbach2017-01-231-0/+19
* eolian: rmeove dependency on basename/libgen.h/evilDaniel Kolesa2017-01-211-1/+0
* eolian: move base function doc API into implementsDaniel Kolesa2017-01-192-5/+9
| | | | | | | | This allows us to unify retrieval of docs for both regular and overridden funcs without having two separate APIs. It's currently missing validation and docgen is still not adjusted properly for it either, but at least there's this. Enables retrieval of docs for overridden funcs by default as well.
* eolian: remove/add APIs and clean up implements systemDaniel Kolesa2017-01-161-9/+9
| | | | | | | | | | | | | | | | | | | As there is no need to have separate is_auto, is_empty and is_pure_virtual for functions and implements (each function has its own base implement by default) I removed the function ones. Instead, I added a way to retrieve a function's base implement so that you can instead do the checks on the implement even when you only have the function. I also moved base implement build directly into the parser instead of the database filler. That allows for significant cleanup. I also removed distinction of implement pointers in Eolian_Function for get and set as implements now always contain an entire thing so the pointer was always the same anyway. Things should still behave more or less the same, but ordering of generated functions has changed because ordering of implements has changed.