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