Commit Graph

738 Commits

Author SHA1 Message Date
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
Daniel Kolesa a4c96ceb73 eolian: add part definition 2017-10-25 16:25:41 +02:00
Daniel Kolesa c46f9bec2d eolian: enable duplicate validation but only warn for now
Use the EOLIAN_WARN_FUNC_DUPLICATES environment variable to enable
those warnings.
2017-10-25 13:03:20 +02:00
Daniel Kolesa bd90fff392 eolian: only check for validation where really necessary 2017-10-24 23:41:59 +02:00
Daniel Kolesa 88083b0f14 eolian: check for inheritance tree function conflicts
Now a class cannot define a method/property of some name if there
already is something of the same name within the inheritance tree.
2017-10-24 23:39:14 +02:00
Daniel Kolesa 05b395be47 eolian: validate classes in a recursive manner
This allows for proper order of validation which will improve our
performance when also validating for name duplicates.
2017-10-24 23:21:24 +02:00
Daniel Kolesa 903fd9065c eolian: keep track of which objects are validated 2017-10-24 17:49:21 +02:00
Daniel Kolesa 62e46e70ef eolian: initial parsing for parts in eo files 2017-10-24 17:33:07 +02:00
Cedric BAIL c0b2ae2cc8 eolian: there should be nothing depending on efl config in our public header. 2017-10-19 15:29:35 -07:00
Daniel Kolesa 7c7e5ec423 eolian: validate inner types of complex types
This makes sure the inner types are all correctly defined and
that freefuncs are actually correctly filled.
2017-09-28 23:22:05 +02:00
Daniel Kolesa 5e788e3a5c elua: bind new eolian type builtin API 2017-09-22 21:03:23 +02:00
Daniel Kolesa c146d6f877 eolian: add a way to query the builtin type of a type 2017-09-22 21:01:12 +02:00
Daniel Kolesa 9009d3dae4 eolian: add any_value_ptr
Because pointer Eina_Values and value Eina_Values have slightly
different semantics (when it comes to resource management) it's
better to split them.
2017-09-22 20:25:31 +02:00
Daniel Kolesa 3d8081d085 eolian: rename generic_value to any_value 2017-09-22 20:16:06 +02:00
Daniel Kolesa a6e5caba10 eolian: remove leftover code 2017-09-22 18:08:36 +02:00
Daniel Kolesa 1577c576e6 eolian: remove static_array and terminated_array
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...
2017-09-22 18:01:15 +02:00
Daniel Kolesa 4bae2a7385 eolian: merge REGULAR and COMPLEX types 2017-09-22 17:46:02 +02:00
Daniel Kolesa f36e5bd543 eolian: add mstring
This is a new type representing a mutable string (no const).
Regular strings cannot be made mutable with @owned because
they might be hidden behind typedefs.
2017-09-22 17:10:42 +02:00
Daniel Kolesa fdd27cadf8 eo: make more freefuncs implicit 2017-09-22 16:17:19 +02:00
Daniel Kolesa 9da5cf20aa eolian: remove old ownership system 2017-09-15 17:52:55 +02:00
Daniel Kolesa 1afd3c215f eolian: correctness fixes in tests and eo files 2017-09-15 17:48:28 +02:00
Daniel Kolesa 21213802e4 eolian: switch validation to new ownership system 2017-09-15 16:37:26 +02:00
Daniel Kolesa 4b27fe6571 eolian: add API to check for @owned 2017-09-15 16:33:57 +02:00
Daniel Kolesa 010650663b eolian: store ownership info in types
Even though ownership info belongs to params/returns/etc at syntax
level, we can still store it in the type and turn several API funcs
into one this way.
2017-09-15 16:30:52 +02:00
Daniel Kolesa 792855a1fa eolian: parsing of new @owned syntax for complex types 2017-09-15 16:24:46 +02:00
Daniel Kolesa 4c4c641c4b eolian: disallow parsing of warn_unused/owned for funcptrs 2017-09-15 15:54:48 +02:00
Daniel Kolesa 11ad2b94ff eolian: initial parsing for @owned
This is the new ownership system for Eolian, working on params,
returns, struct fields or events directly rather than specifying
ownership at type level. As the new system will evolve it will
gain missing features and necessary checks.
2017-09-15 15:51:25 +02:00
Daniel Kolesa 518ca72d06 eolian: default free funcs for builtin types 2017-09-14 15:53:30 +02:00
Daniel Kolesa a9aed90fde eolian: more relaxed rules on what is actually ownable
For example, aliases to ownable types are now also ownable,
which wasn't possible in the previous version, where you could
only own actual expanded ownable types.
2017-09-14 00:34:06 +02:00
Daniel Kolesa 59347d4c4b eolian: include terminatable checks in ownable check 2017-09-14 00:28:32 +02:00
Daniel Kolesa 8ff2bf35fe eolian: inherit freefunc between types/typedecls 2017-09-14 00:12:46 +02:00
Daniel Kolesa e55ab81835 eolian: always implicitly validate database and remove its API 2017-09-13 23:58:47 +02:00
Daniel Kolesa 2a9be1f5be eolian: move terminated_array typecheck to validate pass 2017-09-13 23:58:47 +02:00
Daniel Kolesa a0adca9cb9 eolian: move ownable checks to validation stage 2017-09-13 23:58:47 +02:00
Daniel Kolesa 0af3254020 eolian: fix float parsing with locales with ',' decpoint 2017-09-01 16:08:10 +02:00
Daniel Kolesa 10fd3c32e8 eolian: remove c_only
Unused and of questionable value.
2017-08-30 19:46:41 +02:00
Daniel Kolesa 4a16e1d862 eolian: @extern for function pointers 2017-08-30 16:02:30 +02:00