Commit Graph

774 Commits

Author SHA1 Message Date
Daniel Kolesa efb419fd74 eolian: prevent unnecessary hash table allocs 2017-12-22 15:36:31 +01:00
Daniel Kolesa 65ea735fd7 eolian: remove the toplevel information 2017-12-22 15:36:31 +01:00
Daniel Kolesa 7da6675c34 eolian: perform partial class validation every time
This makes sure that duplicate method/part/etc checks are done on
every database update, removing the need for clunky toplevel
checks and improving reliability. It also sacrifices some
performance but it shouldn't be too bad (if a class is already
validated, some checks are avoided to speed things up).
2017-12-22 15:36:31 +01:00
Daniel Kolesa 30c5753172 eolian: deferred parsing of type deps 2017-12-22 15:36:31 +01:00
Daniel Kolesa e1bcd61bdf eolian: move inherit type checking to validation 2017-12-22 15:36:31 +01:00
Daniel Kolesa 03e77ea361 eolian: fix use-after-free in eo_parser
Thanks @netstar for finding this.

Fixes T6523.
2017-12-19 00:20:40 +01:00
Daniel Kolesa 373392d56e eolian: remove now unused database init/shutdown 2017-12-15 17:11:11 +01:00
Daniel Kolesa 18e18ca74c eolian: remove remaining global state (+ modify APIs accordingly) 2017-12-15 17:11:11 +01:00
Daniel Kolesa d624464ab4 eolian: filename retrieval APIs are read only 2017-12-15 17:11:11 +01:00
Daniel Kolesa c8aa30e698 eolian: make declaration APIs use units 2017-12-15 17:11:11 +01:00
Daniel Kolesa 9aaa5cf839 eolian: remove _cunit and prepare for returning actual units 2017-12-14 17:31:21 +01:00
Daniel Kolesa 2259b6f16f eolian: remove parent info from units (actually doesn't make sense) 2017-12-14 16:45:13 +01:00
Daniel Kolesa f9868b541e eolian: store unit inside lexer 2017-12-14 16:38:35 +01:00
Daniel Kolesa 535fa0e8f1 eolian: no need to init eina in db 2017-12-07 19:11:58 +01:00
Daniel Kolesa 3ebd1f1506 eolian: store units in state 2017-12-07 19:11:58 +01:00
Daniel Kolesa 8653d8cd73 eolian: properly free all hashes in state free 2017-12-07 19:11:58 +01:00
Daniel Kolesa e7bf69fc04 eolian: make deferred parsing map non-global 2017-12-07 19:11:58 +01:00
Daniel Kolesa 2343e6cc54 eolian: make parsing/parsed files mapping non-global 2017-12-07 19:11:58 +01:00
Daniel Kolesa 9a5c3cfbe2 eolian: remove internal state struct (rely on external Eolian state) 2017-12-06 15:07:31 +01:00
Daniel Kolesa a39d2e8fe5 eolian: move filenames hashes to state 2017-12-06 15:07:31 +01:00
Daniel Kolesa a25327c62e eolian: move constants to temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 21db23f702 eolian: move global vars to temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 7491f9353f eolian: move enums to temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 51ec796497 eolian: move structs to temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 8428eaa663 eolian: store aliases in temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 9fb3abc662 eolian: store classes in temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 14cd25a8d3 eolian: create an internal temporary state 2017-12-06 15:07:31 +01:00
Daniel Kolesa 8a1f93f698 eolian: pass state where necessary
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.
2017-12-05 16:41:42 +01:00
Daniel Kolesa 67e1c2ab88 eolian: add initial refcounting for database objects
This will be necessary once the unit system is in (it will be used
to keep track of multiple references to objects across units).
2017-12-05 16:41:42 +01:00
Daniel Kolesa 2a0f873c84 eolian: pass unit within validation engine 2017-12-05 16:41:42 +01:00
Daniel Kolesa e83e089765 eolian: contain master state in a larger structure 2017-12-05 16:41:42 +01:00
Daniel Kolesa 53aa99550d eolian: add API for master unit creation 2017-12-05 16:41:42 +01:00
Daniel Kolesa 6abb24b717 eolian: create an actual unit structure for files
Units now form an actual tree stored in their own hash. This will
later replace all global state of Eolian, by introducing a master
unit that you will pass around.
2017-12-05 16:41:42 +01:00
Jean-Philippe Andre 43a6fddf1f eolian: Add builtin type "strbuf"
Refers to Eina_Strbuf*
2017-12-05 10:09:58 +09:00
Lauro Moura 0931696a4f eolian: Add inarray and inlist 2017-12-04 15:47:48 -03:00
Jean-Philippe Andre aef05c26d6 eolian: Warn less on duplicate beta APIs
The check was only done on one of the two functions, resulting in some
unwanted warnings.

EOLIAN_WARN_FUNC_DUPLICATES=1 will show non-beta warnings.
EOLIAN_WARN_FUNC_DUPLICATES=2 will still show all warnings.
2017-11-30 10:48:24 +09:00
Jean-Philippe Andre d49c544e81 eolian: Add API's for part enumeration
@feature
2017-11-23 15:14:41 +09:00
Pawel Aksiutowicz 319f497a72 eolian: Removed warning of unused var from eo_parser
Reviewers: stanluk, lukasz.stanislawski

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D5502
2017-11-21 11:12:27 +09:00
Jean-Philippe Andre 8f2e491573 eolian: Fix odd syntax (remove EINA_UNUSED) 2017-11-14 13:40:19 +09:00
Daniel Kolesa 70ee11af84 eolian: enable cyclic imports of eo files 2017-11-08 16:46:14 +01:00
Daniel Kolesa 5c2611d93a eolian: simplify dependency parsing and cut down on hash lookups 2017-11-08 16:12:40 +01:00
Daniel Kolesa 0dbbb18171 eolian: disallow ptr() on things that are already pointer-like
This disallows deeply nested pointers, you can only explicitly
ptr() on types that are strictly value types.

For a few cases where it was necessary to override this behavior,
you can use legacy(ptr(x)) as a temporary measure.
2017-11-03 15:30:10 +01:00
Daniel Kolesa cf63573e73 eolian: only allow reference (ownable) types in containers 2017-11-02 13:51:02 +01:00
Daniel Kolesa f851fa511e eolian: add part validation (including dup check with funcs) 2017-11-01 13:19:33 +01:00
Daniel Kolesa eab6f009e2 eolian: add @cref as alternative to @in
This is a "pass by reference to const" equivalent. There is no explicit pointer
and currently it's the same as ptr(const(x)) on the type. However, it is also
usable on properties.
2017-11-01 12:40:39 +01:00
Daniel Kolesa c8e7ad530e eolian: properly free parts 2017-10-31 12:15:23 +01:00
Daniel Kolesa 0a92c0c61f eolian: fill parts into db 2017-10-31 12:15:23 +01:00
Jean-Philippe Andre c1d21cef89 eolian: Add some color to those warning messages
Note: This is not using eina_log, not entirely sure why, but this
doesn't prevent us from adding some color.
2017-10-31 14:52:34 +09:00
Jean-Philippe Andre 1adb93b3e5 eolian: Skip @beta APIs for duplicate warnings
No warnings:
export EOLIAN_WARN_FUNC_DUPLICATES=0

No beta warnings:
export EOLIAN_WARN_FUNC_DUPLICATES=1

All warnings including beta:
export EOLIAN_WARN_FUNC_DUPLICATES=2

EOLIAN_WARN_FUNC_DUPLICATES is not an API and may change in the future
as we improve the tool :)
2017-10-31 14:52:34 +09:00
Daniel Kolesa 4f8a9b50f4 eolian: make inherits_get return a list of classes, not strings
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.
2017-10-25 16:25:41 +02:00