Daniel Kolesa
977d4fe1a6
eolian: better handling of @virtual implements
...
Now they're registered correctly. Also, add new API, eolian_implement_is_virtual.
Also, deal with get/set properly (when filling in additional implements)
2014-09-05 16:05:04 +01:00
Daniel Kolesa
00192bd15e
eolian: update docs on implements
2014-09-05 12:01:37 +01:00
Daniel Kolesa
dff8d56475
eolian: use implements only to retrieve functions list
...
This also changes the implements list so that it also includes virtual functions.
2014-09-05 11:54:29 +01:00
Daniel Kolesa
99b03d4f3c
eolian: skip UTF-8 BOM if present
2014-09-05 10:04:11 +01:00
Daniel Kolesa
0c0d639693
eolian: cache function in implements where possible to get O(1) lookup
2014-09-04 15:15:38 +01:00
Daniel Kolesa
8d9bae1172
eolian: generate implements for every method/property
2014-09-04 15:03:00 +01:00
Daniel Kolesa
e75ded5e3f
eolian: prepare for implements list expansion
...
As the implements list will soon contain all methods and properties,
do some preparations. The Eolian library now fills in class field in
implements early on when the implement is local. The Eolian C generator
now checks for local implements and skips them (so that things don't break).
2014-09-04 15:03:00 +01:00
Daniel Kolesa
e67b52c514
eolian: fix auto/empty parsing/fill and add tests
2014-09-04 11:07:00 +01:00
Daniel Kolesa
0d6b4fad8f
eolian: wrong condition fix
2014-09-03 14:44:23 +01:00
Daniel Kolesa
5827486c3d
eolian: APIs to check auto/empty on a function
2014-09-03 14:26:09 +01:00
Daniel Zaoui
12b0550301
Eolian/Parser: fix wrong type allocation.
...
fix CID 1234600
2014-09-03 11:28:05 +03:00
Daniel Kolesa
0998f2af5c
eolian: new APIs for expression analysis
...
This adds a few new APIs to retrieve the type of an expression, operators
for binary and unary expressions, lhs/rhs for binary expressions, expr for
unary expressions and value for other expressions.
2014-09-02 13:33:04 +01:00
Daniel Kolesa
9ffe700aac
eolian: simplify expr serialize and fix null/bool case
2014-09-02 13:07:16 +01:00
Daniel Kolesa
231b2f3044
eolian: enum validation fix
2014-09-02 12:39:58 +01:00
Daniel Kolesa
b13bafabba
eolian: support for default param values where applicable + API
2014-09-02 10:47:55 +01:00
Daniel Kolesa
d2702a4fad
eolian: remove @constructor syntax
2014-09-01 16:02:40 +01:00
Daniel Kolesa
46715c3574
eolian: move efl eo files over to the new ctor syntax
2014-09-01 15:53:35 +01:00
Daniel Kolesa
21530bd5d8
eolian: preliminary support for new constructors section
2014-09-01 15:35:50 +01:00
Daniel Kolesa
4785353baf
eolian: APIs to check if an implement references get/set
2014-08-29 15:30:51 +01:00
Daniel Kolesa
b05f738675
eolian: APIs to check for @empty/@auto on implements
2014-08-29 15:22:14 +01:00
Daniel Kolesa
42446e1461
eolian: remove the silly appending of .get/.set in implements
2014-08-29 15:06:48 +01:00
Daniel Kolesa
9f232da400
eolian: parsing for @auto and @empty
2014-08-29 14:33:56 +01:00
Daniel Kolesa
616b58dd39
eolian: prepare for more tags in implements
2014-08-29 14:14:21 +01:00
Daniel Kolesa
84a6b654f6
eolian: shouldn't have gotten in
2014-08-29 11:41:19 +01:00
Daniel Kolesa
3e5da03f7d
eolian: update virtual to the new syntax (as per wiki)
2014-08-29 11:40:29 +01:00
Daniel Kolesa
6c7e5b0a86
eolian: require both set and get to be specified when whole property is in impls
2014-08-29 10:18:26 +01:00
Daniel Kolesa
b69b90832f
eolian: remove constructors section cruft
2014-08-27 15:43:47 +01:00
Carsten Haitzler
875bf96d19
eolian - fix parser with missing break in hanling open bracket
...
fixes CID 1232732
2014-08-27 11:32:17 +09:00
Daniel Kolesa
1bf49ea8e7
eolian: no need to expose _deplist_free
2014-08-26 15:12:09 +01:00
Daniel Kolesa
49e5d4ffb9
eolian: flatten dependencies of a file before parsing them (remove cycles)
2014-08-26 11:06:54 +01:00
Cedric BAIL
2889a6f4c5
eolian: if the if was not taken random value would end up in exp.
2014-08-25 15:25:58 +02:00
Daniel Kolesa
230758a858
eolian: do not free insides of field_list
...
After field_list was migrated from stringshare to struct,
I forgot to change this.
2014-08-24 14:22:42 +01:00
Daniel Kolesa
b75014a024
eolian: refactor the struct/enum field APIs
2014-08-22 16:56:41 +01:00
Daniel Kolesa
894c9a42db
eolian: field_names is now field_list (prepare for API changes)
2014-08-22 16:17:50 +01:00
Daniel Kolesa
19d8209266
eolian: clean up type generation + fix function pointers
2014-08-22 14:04:22 +01:00
Daniel Kolesa
4fa161fffa
eolian: yet another validator fix (expression validation)
2014-08-22 13:54:24 +01:00
Daniel Kolesa
189bc4512d
eolian: fix type generation for function pointers
2014-08-22 13:45:20 +01:00
Daniel Kolesa
8b6eadcb3c
eolian: fix segfault in validator + fill in line info properly
2014-08-22 13:28:29 +01:00
Daniel Kolesa
8f7d325b30
eolian: mark function types as function types
2014-08-22 13:18:17 +01:00
Daniel Kolesa
26e1ec3e32
eolian: fully working database validation
2014-08-22 13:10:29 +01:00
Daniel Kolesa
d043c84492
eolian: more validation code (alias/struct/enum/constant/global)
2014-08-22 11:17:31 +01:00
Jérémy Zurcher
68020daf19
Eolian: fix typo
2014-08-22 09:20:53 +02:00
Daniel Kolesa
e99f7876a6
eolian: some initial validation traversal
2014-08-21 16:53:41 +01:00
Daniel Kolesa
cdd4860520
eolian: turn db validation into separate API
2014-08-21 16:35:59 +01:00
Daniel Kolesa
c1afa1b6b5
eolian: add entry point for database validation stage
2014-08-21 16:23:37 +01:00
Daniel Kolesa
fce1e61ff5
eolian: fix shadow warnings
2014-08-21 09:26:06 +01:00
Daniel Kolesa
4103f3daaf
eolian: NULL the hashes after shutdown
2014-08-21 09:26:05 +01:00
Daniel Kolesa
58a2025c25
eolian: new API: eolian_function_is_constructing
2014-08-21 09:26:05 +01:00
Daniel Kolesa
7372ac3ffb
eolian: prevent potential on-error memory leaks
2014-08-21 09:26:05 +01:00
Daniel Kolesa
ef380c56b6
eolian: support for setting a free function to values in eo files
2014-08-21 09:26:05 +01:00
Daniel Kolesa
d788986fd8
eolian: reduce code duplication
2014-08-21 09:26:05 +01:00
Daniel Kolesa
452497eac5
eolian: remove a bunch of pointless stringshare refs + fix in lua
2014-08-21 09:26:05 +01:00
Daniel Kolesa
33c39282b1
eolian: support "eo: null;" for legacy only functions/properties
2014-08-21 09:26:05 +01:00
Daniel Kolesa
e6954d143d
eolian: drop Eina_Value
...
Because of Eina_Value being less than optimal in our usage, we're dropping it in Eolian.
This simplifies the code and makes it easier to bind to other languages, which
will aid new generators. Also, we're dropping long double support from eo files
and expressions as it causes an ABI breakage in gcc 4.4.
2014-08-21 09:26:05 +01:00
Daniel Kolesa
dbf48c0ecc
eolian: remove the remaining superfluous database_ functions
2014-08-21 09:26:05 +01:00
Daniel Kolesa
97d9bf37fa
eolian: first batch of database_ functions removal (simplifies code)
2014-08-21 09:26:05 +01:00
Daniel Kolesa
913e0f09fa
eolian: get rid of the data hash in Eolian_Function
2014-08-21 09:26:05 +01:00
Daniel Kolesa
60f0450bac
eolian: prevent potential memory leakage on error
2014-08-21 09:26:05 +01:00
Daniel Kolesa
24f618947e
eolian: don't need this one
2014-08-21 09:26:05 +01:00
Daniel Kolesa
1688749ce9
eolian: add support for opaque struct types (+ tests)
2014-08-21 09:26:05 +01:00
Daniel Kolesa
93726c86a3
eolian: get rid of eolian_parameter_information_get
2014-08-21 09:26:04 +01:00
Daniel Kolesa
ad3dbe834b
eolian: API refactoring
...
Remove eolian_implement_information_get. Also, fix some nasty lookup problems.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
057e01d67f
eolian: API refactoring
...
Start getting rid of the terrible _information_get APIs, starting with events.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
ffbf149da1
eolian: new API: eolian_class_event_scope_get
2014-08-21 09:26:04 +01:00
Daniel Kolesa
a5964f0252
eolian: add comments containing original expressions to generated enum fields
...
This required a new API, eolian_expression_serialize.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
18c2b5082e
eolian: allow usage of stack Eina_Value in expr API
2014-08-21 09:26:04 +01:00
Daniel Kolesa
732e3f417e
eolian: new API: eolian_type_enum_legacy_prefix_set + generator changes
...
This change adds a new API to retrieve the legacy prefix for enum members
and also adds support for generating enums into the C generator. Besides that,
it prevents generation of entire struct contents when the .eo file declares
a named struct inside of a typedef - as the struct itself gets generated later on.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
2e3887b994
eolian: struct/enum fixes and initial test for enums
2014-08-21 09:26:04 +01:00
Daniel Kolesa
abca650617
eolian: new APIs
...
This adds eolian_show_enum, eolian_show_global, eolian_show_constant.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
d2205e58f8
eolian: order fields in structs and enums properly
...
I don't know what I was thinking, struct and enum fields need to be ordered
so now we keep a separate list around containing the field names in correct order.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
cf8da3790e
eolian: add missing pieces of minor infra for enum
2014-08-21 09:26:04 +01:00
Daniel Kolesa
e2fb43b7b5
eolian: enum API implementation
...
This implements the previously declared APIs to manipulate enum types. Also,
it implements the appropriate lookups in expression evaluation so that you
can refer to constants and enums inside constant expressions.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
75ee3b031d
eolian: allow namespaces when referring to constants in exprs
2014-08-21 09:26:04 +01:00
Daniel Kolesa
be68f9e1fa
eolian: initial parsing code and API declarations for enums
2014-08-21 09:26:04 +01:00
Daniel Kolesa
d4031a21bf
eolian: test for constants/globals
...
Also added API to retrieve value of a variable (forgot about that one)
and made it impossible to create extern constants (doesn't make sense)
as well as made it impossible to give extern globals values.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
65332eb3ca
eolian: var parsing (global and constant)
...
This makes the API effectively functional. Also, I added new API
eolian_variable_is_extern to match structs and typedefs.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
cc1988fddd
eolian: expose new variable API
2014-08-21 09:26:04 +01:00
Daniel Kolesa
70bf1eac24
eolian: add infrastructure for globals and constants
...
Nothing parses yet, and no API is exposed. Also, move the remaining instances of file
inside of existing structures to Eolian_Object and parse basename only once.
2014-08-21 09:26:04 +01:00
Daniel Kolesa
a57c729b10
eolian: consume private/protected modifier on events
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1cb8318991
eolian: support for single-line doc comments
2014-08-21 09:26:04 +01:00
Daniel Kolesa
1be7656af6
eolian: expression mode for lexer
...
This way we can only lex expr related tokens (operators etc.) when actually
about to parse an expression. That allows stuff like nested complex types
without the lexer treating the endings as right shift.
2014-08-21 09:26:03 +01:00
Tom Hacohen
a0c419aa4a
Eolian parser: Allow tagging properties with @constructor.
...
Thanks to Quaker for the exact directions.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
d3aedb5506
eolian: consume the comment token in properties
...
This is to add syntax for later combined get/set property docs functionality.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
459638c2b9
eolian: more consistent syntax
...
"legacy foo" is now "legacy: foo" and "return foo" is now "return: foo".
2014-08-21 09:26:03 +01:00
Daniel Kolesa
7ef5c78792
eolian: fix null serialization
2014-08-21 09:26:03 +01:00
Daniel Kolesa
bcf5f1b1dd
eolian: better doc
2014-08-21 09:26:03 +01:00
Daniel Kolesa
788386c86c
eolian: eolian_type_name_get now returns the eo name, not c name
...
so instead of "unsigned int" you get "uint". This is important for handling of
expressions and cross-language interoperability. You can use c_type_get on the
base type to get the C name. Also, append the appropriate suffix to number literals
when calling eolian_expression_value_to_literal.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
eab668bb0f
eolian: expression improvements
...
Character literals now allow escape sequences. Strings created by
eolian_expression_value_to_literal are now fully escaped.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
8c1b9ed3e2
eolian: initial API for expression evaluation
...
This commit also does several side (related) changes. Particularly, it updates
the Eolian C generator to use the new API, it adds missing expr types (null, char)
and masks, updates the API dealing with default return values to use expressions
instead of strings and does several fixes (mainly in lexer) around the place.
It also disallows single quoted strings as those are reserved for characters.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
90e17acd15
eolian: initial eval function with Eina_Value return
2014-08-21 09:26:03 +01:00
Daniel Kolesa
d7ca6dc1c3
eolian: initial support for expression evaluation
...
There are now functions that let you evaluate Eolian_Expression. They're not exposed
yet. Further improvements will come as well as public API.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
96f360a7d1
eolian: lexing of multichar binary operators
2014-08-21 09:26:03 +01:00
Daniel Kolesa
62541ce484
eolian: rename public enum members to a namespaced form
2014-08-21 09:26:03 +01:00
Daniel Kolesa
436a37f0b9
eolian: initial support for expression parsing
2014-08-21 09:26:03 +01:00
Daniel Kolesa
e3192796b6
eolian: actually fill in the line/column info in the handles
2014-08-21 09:26:03 +01:00
Daniel Kolesa
2aa4cbc89c
eolian: provide line info structure in each eolian handle
2014-08-21 09:26:03 +01:00
Daniel Kolesa
bb24b60638
eolian: generate implicit typedef for each class
...
And use these typedefs instead of just Eo in API.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
8d74261a30
eolian: fix a bug that caused wrong comparisons of class and file name
...
This also renames ecore_poll files to ecore_poller so that the class name matches.
2014-08-21 09:26:03 +01:00
Daniel Kolesa
5da69ddbf7
eolian: support for class type in c_type_get
2014-08-21 09:26:02 +01:00
Daniel Kolesa
6aa99c0026
eolian: better error information + fix tests
...
This provides better location info when failing to resolve EOLIAN_TYPE_CLASS.
Also fixes tests I forgot to push before.
2014-08-21 09:26:02 +01:00