Daniel Kolesa
cbd54f4de0
eolian: include file info in redef errors when different file
2014-07-22 15:01:09 +01:00
Daniel Kolesa
f487d44011
eolian: structs and aliases now contain line/column info for better error messages
2014-07-22 14:48:08 +01:00
Daniel Kolesa
89ca97aceb
eolian: new API: eolian_type_structs/aliases_get_by_file
2014-07-22 13:14:44 +01:00
Daniel Kolesa
b0788a546b
eolian: support for typedefs in c_type_get
2014-07-22 12:11:45 +01:00
Daniel Kolesa
ccf157aa57
eolian: prevent freeing of full named structures that are inside of typedefs and fix a memory leak
2014-07-22 10:39:54 +01:00
Daniel Kolesa
71ae2f2c2e
eolian: another leak fix
2014-07-22 10:22:21 +01:00
Daniel Kolesa
c03a0a2a39
eolian: memory leak fix
2014-07-22 10:15:56 +01:00
Daniel Kolesa
b81e05def5
eolian: new API: eolian_type_alias_find_by_name, remove the old APIs that take an alias name, update tests
2014-07-21 17:12:35 +01:00
Daniel Kolesa
058a3c314c
eolian: rename _types to _aliases
2014-07-21 16:58:12 +01:00
Daniel Kolesa
e797e40478
eolian: remove Eolian_Typedef, use Eolian_Type instead; allow eolian_type_base_type_get on aliases
2014-07-21 16:53:25 +01:00
Daniel Kolesa
6079270c96
eolian: database_type_to_str now respects namespaces (and thus the to-C-type conversion API does too)
2014-07-21 16:08:06 +01:00
Daniel Kolesa
ac7f5d0f79
eolian: fill in full_name and namespaces properly, and allow parsing dots in type names
2014-07-21 15:17:59 +01:00
Daniel Kolesa
460cfd9e34
eolian: type_struct_description, type_struct_file -> type_description, type_file
2014-07-21 14:39:14 +01:00
Daniel Kolesa
7117aad879
eolian: new APIs: eolian_type_full_name_get, eolian_type_naespaces_list_get
2014-07-21 14:27:23 +01:00
Daniel Kolesa
197034bfd7
eolian: type_struct_is_extern -> type_is_extern
2014-07-21 14:14:22 +01:00
Daniel Kolesa
6f9c8779c0
eolian: initial code and struct layout for revamped alias API
2014-07-21 14:10:42 +01:00
Daniel Kolesa
d4a0e41724
eolian: typo fix
2014-07-21 12:28:25 +01:00
Daniel Kolesa
c4fd68f08a
eolian: add API to retrieve filename for each typedef and struct
2014-07-21 12:26:44 +01:00
Daniel Kolesa
6caf41e288
eolian: only check redef on actual named structs
2014-07-21 11:47:35 +01:00
Daniel Kolesa
5d1cd61c92
eolian: put structs and typedefs right in the respective hashmaps without going through nodes
2014-07-21 11:42:05 +01:00
Daniel Kolesa
6f805a9998
eolian: check redefinitions in the parser instead (provides line info)
2014-07-21 11:34:14 +01:00
Daniel Kolesa
9262a82ed3
eolian: check for typedef and struct redefinitions
2014-07-21 11:22:49 +01:00
q66
9f0bcdf707
eolian: ouch... fix a major bug, *spanks self*
2014-07-19 13:00:44 +01:00
Daniel Kolesa
fa3e433f6e
eolian: disallow the data field in interfaces; it's always null
2014-07-18 17:29:35 +01:00
Daniel Kolesa
6c268d98e5
eolian: lexing of string literals (including support for escape sequences etc.)
2014-07-17 14:17:19 +01:00
Daniel Kolesa
e9e38b553b
eolian: lexing of number literals (integer and floating point, decimal and hex, no octal)
2014-07-17 13:07:39 +01:00
Daniel Kolesa
80165034ed
eolian: preliminary number constant stuff in eo_lexer
2014-07-16 16:18:13 +01:00
Daniel Kolesa
c636882158
eolian: remove TOK_EOF, replace with -1
2014-07-16 16:06:04 +01:00
Daniel Kolesa
226f417005
eolian: remove eo_lexer_get_until and allow just single-word value in the data: field of a class
2014-07-16 15:33:11 +01:00
Daniel Kolesa
9b2680ad6f
eolian: simplify the lexer (remove custom ident chars)
2014-07-16 14:46:38 +01:00
Daniel Kolesa
e2bab9ed2c
eolian: parse events without get_ident
2014-07-16 14:43:40 +01:00
Daniel Kolesa
198a61c37d
eolian: fix memory leak
2014-07-16 00:30:48 +01:00
Daniel Kolesa
ae3eb2b942
eolian: make event type syntax consistent
2014-07-15 23:50:34 +01:00
Daniel Kolesa
8716112a43
eolian: warning fix
2014-07-15 20:00:59 +01:00
Daniel Kolesa
d0e0576f0b
eolian: parser cleanup - structs no longer have to lookahead, making our grammar effectively LL(1)
2014-07-15 17:06:47 +01:00
Daniel Kolesa
0d0f6e3743
eolian: support for extern structs and typedefs (including API)
2014-07-15 15:33:22 +01:00
Daniel Kolesa
5c3cc82bdd
eolian: comment eo_lexer.h
2014-07-15 10:10:12 +01:00
Daniel Kolesa
831ade54fa
eolian: also make time_t a builtin
2014-07-14 17:02:58 +01:00
Daniel Kolesa
3be0dce99d
eolian: builtin types size, ssize, intptr, uintptr, ptrdiff
2014-07-14 16:51:38 +01:00
Daniel Kolesa
f510b6de72
eolian: schar and uchar are now called byte and ubyte, char stays
...
Here, 'char' represents an actual character and is meant to be treated as so by generators.
The byte types represent a numerical value and should be treated numerically.
2014-07-14 16:25:26 +01:00
Daniel Kolesa
17a6bb122b
eolian: add tests for struct types plus fix a double free and name storage on the way
2014-07-14 12:11:48 +01:00
Daniel Kolesa
c9744596de
eolian: builtin bool type, and change the eo files to use that
2014-07-11 14:40:49 +01:00
Daniel Kolesa
5d4cc031f9
eolian: s/dflt/default/g
2014-07-11 14:30:22 +01:00
Daniel Kolesa
888dc3b6fe
eolian: remove eolian_show and replace it with variants for class/struct/typedef/all.
2014-07-11 13:10:04 +01:00
Daniel Kolesa
9e3417aad8
eolian: fix type print
2014-07-11 12:26:33 +01:00
Daniel Kolesa
35ada5afff
eolian: update print code (it made some obsolete assumptions before)
2014-07-11 12:22:36 +01:00
Daniel Kolesa
a13d8a6020
eolian: fix a segfault
2014-07-11 12:02:02 +01:00
Daniel Kolesa
883c4ca7df
eolian: events now use Eolian_Type* instead of stringshare
2014-07-11 11:47:37 +01:00
Daniel Kolesa
a9171a89f9
eolian: remove parser dump for now (doesn't include all info, when it's needed again it can be re-added)
2014-07-11 11:33:26 +01:00
Daniel Kolesa
d7ce4332fe
eolian: separate database fill stuff from the parser
2014-07-11 11:31:48 +01:00
Daniel Kolesa
8bbd79badc
eolian: split db fill func into multiple funcs
2014-07-11 10:57:28 +01:00
Daniel Kolesa
4b427d6c16
eolian: remove redundant enum
2014-07-10 15:40:58 +01:00
Daniel Kolesa
78bc58813e
eolian: remove unused enum and field
2014-07-10 15:36:18 +01:00
Daniel Kolesa
144fd1e2ae
eolian: refactoring: get rid of Eo_Event_Def
2014-07-10 15:31:01 +01:00
Daniel Kolesa
239e7524dc
eolian: refactoring: get rid of Eo_Implement_Def
2014-07-10 15:23:06 +01:00
Daniel Kolesa
7b9438e76e
eolian: refactoring: remove Eo_Type_Def
2014-07-10 15:10:24 +01:00
Daniel Kolesa
a03bef4734
eolian: get rid of Eo_Type_Def
2014-07-10 14:44:17 +01:00
Daniel Kolesa
7cff1fda3e
eolian: refactoring: refactor eolian_database.h
2014-07-10 14:30:34 +01:00
Daniel Kolesa
441455259e
eolian: refactoring: more consistent naming
2014-07-10 14:19:06 +01:00
Daniel Kolesa
1293dce967
eolian: API refactoring
2014-07-10 14:04:13 +01:00
Daniel Kolesa
1772ab8a1c
eolian: separate database API and internals into different source files
2014-07-10 13:13:46 +01:00
Daniel Kolesa
37bc20298c
eolian: refactoring: split up eolian_database into individual files
2014-07-10 12:15:29 +01:00
Daniel Kolesa
2ababe8a89
eolian: const fixes
2014-07-10 11:06:20 +01:00
Daniel Kolesa
a26546bc6b
eolian: the entire API is now const correct
2014-07-09 21:31:03 +01:00
Daniel Kolesa
133607936d
eolian: const correctness
2014-07-09 21:07:15 +01:00
Daniel Kolesa
580aea04cd
eolian: refactoring step six
...
Move Eolian_Function as well, plus fix const correctness of several API funcs.
2014-07-09 20:59:31 +01:00
Daniel Kolesa
accdd50f50
eolian: refactoring step five
...
Move from all instances of Eolian_Type to Eolian_Type*.
2014-07-09 17:18:02 +01:00
Daniel Kolesa
1a4f87d365
eolian: refactoring step four
...
Move from all isntances of Eolian_Function_Parameter to Eolian_Function_Parameter* plus const fixes.
2014-07-09 17:01:19 +01:00
Daniel Kolesa
c9119b0c88
eolian: refactoring step three
...
Move from all instances of Eolian_Event and Eolian_Implement to Eolian_Event* and Eolian_Implement*.
2014-07-09 16:45:58 +01:00
Daniel Kolesa
96eaaaf074
eolian: refactoring step two
...
Move from all instances of Eolian_Class to Eolian_Class*.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
ca82befa8a
eolian: refactoring step one
...
Rename the public Eolian types to use a consistent naing scheme.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
8f14930d68
eolian: function dump now uses the actual syntax
2014-07-09 13:49:21 +01:00
Daniel Kolesa
60bf9fcaef
eolian: reduce code duplication
2014-07-09 13:26:20 +01:00
Daniel Kolesa
7b4f4af873
eolian: support for structs in eolian_show
2014-07-09 13:06:46 +01:00
Daniel Kolesa
3bffb5fa1d
eolian: support for structs in eo_parser_dump
2014-07-09 13:01:53 +01:00
Daniel Kolesa
881a8754ab
eolian: new API: eolian_type_struct_description_get
2014-07-09 12:48:16 +01:00
Daniel Kolesa
295f1f4847
eolian: new API: eolian_type_struct_field_description_get
2014-07-09 12:05:56 +01:00
Daniel Kolesa
dda93f467e
eolian: proper resource management for types/structs
...
Because types can have other types in each other, we need a stack of a sort to keep track of
the types for error handling. Doing it otherwise would result in potential resource leaks.
2014-07-09 11:18:21 +01:00
Daniel Kolesa
cc387bd621
eolian: add EOLIAN_TYPE_REGULAR_STRUCT rather than including the struct keyword in name field
2014-07-09 10:49:52 +01:00
Daniel Kolesa
892c5cba5f
eolian: fix coverity defects
2014-07-09 10:19:42 +01:00
Jean-Philippe Andre
5933d9d4a3
Eolian: Add missing break in switch
...
Fixes CID 1224763.
2014-07-09 09:31:49 +09:00
Daniel Kolesa
f6c7242609
eolian: fix base_type_get (only allow for pointers)
2014-07-08 16:56:13 +01:00
Daniel Kolesa
16da25bca2
eolian: support for structs in c_type_get
2014-07-08 16:54:22 +01:00
Daniel Kolesa
6bd0e0ab7f
eolian: better struct support including an API for by-name lookup
2014-07-08 16:42:33 +01:00
Daniel Kolesa
b2db8d3ffa
eolian: new API for struct types
...
This commit adds new Eolian API and proper parsing support for struct types.
Structs can be named (allowed in global context, like typedefs, and in typedefs)
and unnamed (allowed as fields of other structs). This extends the existing type
API to support structs. This is incomplete for now - I still gotta add a way to
query global structs besides other things.
@feature
2014-07-08 16:17:44 +01:00
Daniel Kolesa
46827bf022
eolian: initial struct parsing
2014-07-08 15:44:42 +01:00
Daniel Kolesa
d60a47e2dd
eolian: check struct name properly
2014-07-08 15:11:46 +01:00
Daniel Kolesa
ee97c4cf58
eolian: preparation for struct support
2014-07-08 15:02:36 +01:00
Daniel Kolesa
826f85675c
eolian: @own -> own
2014-07-08 13:34:25 +01:00
Daniel Kolesa
5168297fdb
eolian: new API: eolian_system_directory_scan, use it
2014-07-07 16:48:54 +01:00
Daniel Kolesa
58a6895e41
eolian: do not use string for attrs
2014-07-07 15:14:21 +01:00
Daniel Kolesa
8e8dbc322e
eolian: scan directories recursively
2014-07-07 14:25:57 +01:00
Daniel Kolesa
9f17b08dfb
eolian: warning fix
2014-07-04 14:51:05 +01:00
Daniel Kolesa
84451db638
eolian: have eolian_all_classes_list_get instead of eolian_class_names_list_get
2014-07-03 22:12:31 +01:00
Daniel Kolesa
8c80b1a7f4
eolian: rename the log domain
2014-07-03 01:50:47 +01:00
Daniel Kolesa
a621692fdd
eolian: use eina logging for error messages
2014-07-03 01:48:00 +01:00
Daniel Kolesa
61da74bc42
eolian: print error line with a caret
2014-07-03 00:30:39 +01:00
Daniel Kolesa
8d902a4820
eolian: keep track of column better
2014-07-03 00:14:28 +01:00
Daniel Kolesa
55e5e71593
eolian: use eina API
2014-07-03 00:05:16 +01:00
Daniel Kolesa
08a669f08b
eolian: show column information when matching balanced braces
2014-07-03 00:05:16 +01:00
Daniel Kolesa
7d46c921cb
eolian: column information in error messages
2014-07-02 23:39:44 +01:00
Daniel Kolesa
f12b36e1c1
eolian: some dirty janitoring
2014-07-01 18:25:17 +01:00
Daniel Kolesa
8c44810525
eolian: keep the struct keyword in the regular type name
2014-07-01 18:03:20 +01:00
Daniel Kolesa
0cc319a5b2
eolian: restrict own() for pointers only
2014-07-01 17:55:34 +01:00
Daniel Kolesa
e5e6d8f1f2
eolian: also allow void in @out params
2014-06-30 23:21:36 +01:00
Daniel Kolesa
8d0649ef0b
eolian: remove superfluous macros
2014-06-30 23:17:05 +01:00
Daniel Kolesa
154a407bf2
eolian: allow void return in getter accessors (to force the return to be an out param)
2014-06-30 23:13:04 +01:00
Daniel Kolesa
39aad55991
eolian: support for void as separate type type
2014-06-30 23:07:32 +01:00
Daniel Kolesa
d5f4af5e61
eolian: different syntax for functions (func ret_type (arg_types))
2014-06-30 22:07:13 +01:00
Daniel Kolesa
d2fb3c5cb0
eolian: function type parsing
2014-06-30 21:52:57 +01:00
Daniel Kolesa
c8e2e8d48a
eolian: @own -> own
2014-06-30 18:10:29 +01:00
Daniel Kolesa
e84275cc37
eolian: make tests pass
2014-06-30 17:20:39 +01:00
Daniel Kolesa
7b54a0101c
eolian: new type API
...
This new API supports function pointer types, multiple type subtypes, const attribute without parsing
the name string, own attribute for any partial type and more. This commit also updates the C and C++
generators so that they compile and generate correct code.
@feature
2014-06-30 17:20:39 +01:00
Daniel Kolesa
70347cb7d7
eolian: preparation for new type API
2014-06-30 17:20:39 +01:00
Daniel Kolesa
2bdba6c850
eolian: type -> typedef
2014-06-30 17:20:39 +01:00
Daniel Kolesa
74d0cbf29b
eolian: allow multiple subtypes by reorganizing the type structure - preparation for new API
2014-06-30 17:20:39 +01:00
Daniel Kolesa
275103e1b0
eolian/lexer: new keyword (func) plus new token (->) - for function pointer types
2014-06-30 17:20:39 +01:00
Daniel Kolesa
ec057a089a
eolian: builtin fixed size integer types, floating point types and void
2014-06-30 17:20:39 +01:00
Daniel Kolesa
4f4eba4fe4
eolian: support for C type translation in eo lexer
2014-06-30 17:20:39 +01:00
Daniel Kolesa
4e79b27977
eolian: handle new type syntax in parser
2014-06-30 17:20:39 +01:00
Daniel Kolesa
c0576cee73
eolian: new API: eolian_function_full_c_name_get - reduces duplication of code
2014-06-30 17:20:06 +01:00
Daniel Kolesa
1674d967d2
eolian: free the iterator
2014-06-30 17:20:06 +01:00
Daniel Kolesa
7a8ef6d02a
eolian: introducing support for .eot files
...
.eot files are similar to .eo, but they can't contain classes; all .eot files found in include paths
are parsed and information is added into the database. They're there for typedefs and eventually also
enums, structs and constants.
@feature
2014-06-30 17:20:06 +01:00
Daniel Kolesa
18c6f486f6
eolian: process classes and typedefs in order
2014-06-30 17:20:06 +01:00
Daniel Kolesa
0f4bb89492
Revert "eolian: process classes and typedefs in order (preparation for later potential extension)"
...
This reverts commit 7c28de0616
.
2014-06-23 18:44:11 +01:00
Daniel Kolesa
af9b338dee
Revert "eolian: generalized node append"
...
This reverts commit 98d25243aa
.
Reason: accidentally got into master... I'm tired.
2014-06-23 18:43:23 +01:00
Daniel Kolesa
98d25243aa
eolian: generalized node append
2014-06-23 15:38:23 +01:00
Daniel Kolesa
7c28de0616
eolian: process classes and typedefs in order (preparation for later potential extension)
2014-06-23 15:32:17 +01:00
Daniel Kolesa
4dcd45b010
eolian: less code repeating
2014-06-20 15:46:00 +01:00
Daniel Kolesa
efcdfec94f
eolian: more cleanups
2014-06-20 15:31:45 +01:00
Daniel Kolesa
eb3a7cf6d0
eolian: some less repeated code
2014-06-20 15:07:25 +01:00
Daniel Kolesa
15704a7454
eolian: small cleanup
2014-06-20 14:38:57 +01:00
Daniel Kolesa
3acbdaa8c7
eolian: mark all methods/properties in interfaces as virtual by default and disallow everything but class.(con|de)structor in their implements
2014-06-20 12:24:10 +01:00
Daniel Kolesa
ded5623c86
eolian: simplify the parser a bit (unify 3 funcs into one)
2014-06-20 11:33:25 +01:00
Daniel Kolesa
e9f4890747
eolian: fix end-of-file checking, move namespaces from :: to .
2014-06-20 10:46:04 +01:00
Daniel Kolesa
ee24425ab5
eolian: remove semicolon termination of classes
2014-06-20 00:01:56 +01:00
Daniel Kolesa
4ef61a1c29
eolian: fix a few casts
2014-06-19 17:28:19 +01:00
Daniel Kolesa
fc72ca590d
eolian: allow omitting of () in class with no inherits, fix up tests
2014-06-19 16:30:18 +01:00
Daniel Kolesa
78c1e92722
eolian: stricten the allowed characters in values, and values starting with @ must be keywords - we no longer need all the arbitrary characters beacuse of lex_balanced and lex_until
2014-06-19 16:04:08 +01:00
Daniel Kolesa
ee053aa840
eolian: fix double free
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9c2fcf5d4e
eolian: lex_until and lex_balanced
2014-06-19 16:04:08 +01:00
Daniel Kolesa
74181192ad
eolian: fix error handling and memory leaks
2014-06-19 16:04:08 +01:00
Daniel Kolesa
07dcaadb97
eolian: simpler type parsing
2014-06-19 16:04:08 +01:00
Daniel Kolesa
b39b37d732
eolian: cleanup
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9d48e256dc
eolian: remove the ugly old type extractor, instead build the inlist during parsing
2014-06-19 16:04:08 +01:00
Daniel Kolesa
3c621045cd
eolian: complex non-pointer types
2014-06-19 16:04:08 +01:00
Daniel Kolesa
077e9bc46c
eolian: strip leading whitespace from doc comments + trim the resulting buffer
2014-06-19 16:04:08 +01:00
Daniel Kolesa
9b833f1dbd
eolian: introducing a new lexer/parser
...
This handwritten lexer/parser is more strict and cleaner than the previous Ragel based one,
as well as faster and doesn't leak memory (or shouldn't). It's a recursive descent style
parser with separate lexer part (unlike the previous effort) which is run at the same
stage as the parser (so it doesn't pre-lex).
@feature
2014-06-19 16:04:08 +01:00
Daniel Kolesa
2056b99e85
eolian: add some stuff into eo_definitions needed for the new parser and temporarily adjust the lexer for it
2014-06-19 16:04:08 +01:00
Daniel Kolesa
0d417e6ebf
eolian: remove the ragel file plus support for ragel from the build system
2014-06-19 16:04:07 +01:00
Daniel Kolesa
44afa93503
eolian: Eo_Tokenizer -> Eo_Lexer
2014-06-19 16:04:07 +01:00
Tom Hacohen
8a4849b1eb
Eolian: Improve support (still incomplete) for namespaces.
2014-06-19 15:57:27 +01:00
Daniel Zaoui
d56359c74b
Eolian: set default value when no set/get is defined on a property.
...
If no set/get is defined in a property, the type will be set as
EOLIAN_PROPERTY, meaning set and get.
2014-06-08 12:40:42 +03:00
Kai Huuhko
9ace7f17b2
Eolian: Add a few missing @ingroup fields for doxygen
2014-06-05 19:11:24 +03:00
Tom Hacohen
329400e1c2
Eolian: Re-generate the ragel file, but this time from the right place.
2014-06-05 16:32:36 +01:00
Daniel Zaoui
e7faaf9fc5
Eolian/Generator: Fix Windows issue during string manipulation.
...
For Windows, it is simpler to replace all the \r\n with \n after having
read the file.
2014-06-05 11:34:44 +03:00
Daniel Zaoui
f3ce7031e2
Eolian: Fix class look up.
...
If a class (e.g Evas_Object) is expected as a base class but is not
present in the existing expected file (e.g evas_object.eo), it will not
fail.
This patch fixes it by checking the existence of the class into the
database after the parsing of the file.
@fix
2014-06-02 17:13:34 +03:00
Daniel Zaoui
dc3178404f
Eolian: modify 'implement' API parameters.
...
The function eolian_implement_information_get was returning strings for
the class and the function. It was written in this way at the beginning
because it was not needed to verify the correctness of the class and
the function.
Now that we have the namespace feature, this function must check it,
meaning that the class and the function are now known.
So we can return them instead of returning the strings.
The generators had to find the class from the classname. It is no more
needed.
The C++ generator has been adapted to this new API.
2014-05-29 14:48:05 +03:00
Daniel Zaoui
70f530e2d6
Eolian: fix issue for Windows.
...
On Windows, '\' are used to separate the names of a path. It was not
supported.
This patch fixes that. Thanks to Vincent Torri for catching it (and good
luck in Windows ;-))
2014-05-28 09:36:30 +03:00
Daniel Zaoui
b10a1b11f1
Eolian: fix coverity issues.
...
CID 1216274
CID 1216275
CID 1216276
CID 1216277
CID 1216278
CID 1216279
CID 1216280
2014-05-27 08:22:40 +03:00
Daniel Zaoui
8e4700ce65
Eolian: add support of namespaces.
...
It is now possible to define a class in a .eo file as e.g:
Elm::Widgets::Button.
Elm and Widgets will be the namespaces of the class Button.
@feature
2014-05-26 13:56:06 +03:00
Daniel Zaoui
eb58e70ce9
Eolian: remove unused structures.
...
These structs were belonging to a feature that has been removed cause
not considered as needed.
2014-05-26 13:56:06 +03:00
Daniel Zaoui
5b2ce095a3
Eolian/Tests: add test for events.
2014-05-26 13:56:06 +03:00
Daniel Zaoui
62082548bc
Eolian: modify API to allow future scalability
...
Until now, the functions giving access to class information were taking
the class name as parameter.
Except the fact that we needed to search into a hash table for the internal
class structure, no flexibility is possible.
This change consists in modifying most of the APIs using the class name
with a new Eolian_Class type and adapt the code of the C and C++
generators accordingly.
2014-05-26 13:56:06 +03:00
Daniel Zaoui
e4444d2518
Eolian: add support for typedefs.
...
It includes parser updates, database fill and tests on basic and complex
types.
One can define types in this way:
type Evas_Coord: int; /* Simple type definition */
type List_Objects: Eina_List * <Eo *>;
@feature
2014-05-26 13:56:05 +03:00
Daniel Zaoui
e1abaf7c37
Eolian: fix class lookup during parsing.
...
If classes A and B are stored in a same file, when A inherits from B,
and A needs to be generated, the generator, even if B is parsed, will
not search the class in the database but will look for some b.eo.
This patch fixes that issue by checking the existence of the classes
into the database before looking for a corresponding file.
2014-05-21 15:55:28 +03:00
Daniel Zaoui
23b97bd30d
Eolian/Lexer: fix support of const parameters.
...
The syntax to define a parameter of a property as const is as following:
set {
data: const;
}
When no space was present between ':' and "const", a syntax error was
occurring.
2014-05-18 14:25:25 +03:00
Jérémy Zurcher
f8c2c57406
do not use EINA_FALSE instead of NULL
2014-05-07 17:45:11 +02:00
Daniel Zaoui
56fd4ef704
Eolian: fix type resolving for implement functions.
...
The type of the virtual functions implemented in a class was let unresolved
and led to inconsistency when working with them.
In fact, the type can be resolved easily after all the classes that the
specific class inherits from are parsed and stored in the database.
Fix T1228
2014-05-07 09:13:11 +03:00
Daniel Zaoui
05963f4052
Eolian: Fix support of virtual constructors.
2014-05-04 09:36:02 +03:00
Daniel Zaoui
0fdd06c73b
Eolian: fix prints
2014-04-30 14:07:09 +03:00
Daniel Zaoui
183ecab18b
Eolian: add API to retrieve the file name of a class
2014-04-28 08:46:19 +03:00
Daniel Zaoui
fea029a0a3
Eolian: add API to parse all the .eo files.
2014-04-27 16:25:23 +03:00
Daniel Zaoui
1c19d274d8
Eolian: Valgrind fixes.
2014-04-27 10:57:50 +03:00
Daniel Zaoui
7f90088232
Eolian/Generator: only requests .eo files parsing when needed.
...
Before this change, all the .eo files of the directories given with -I
option were parsed. Most of this information was not necessary at all,
since only the classes belonging to the inheritance of the class given
as parameter were needed.
Now, during the parsing of the given class, the inherits classes are
searched and parsed.
A condition is needed to make it work well. To find a filename for a
class, we consider the lowercase of the class name as the filename we
have to parse.
e.g, Elm_Button -> elm_button -> elm_button.eo
It considerably reduces the generation time.
A fix in the tests was needed.
2014-04-27 10:03:39 +03:00
Daniel Zaoui
6797e12bc3
Eolian/Tests: add test for complex type.
...
It includes too fixes for the complex type. If I had listened to Tasn,
I would have detected them a long time ago.
But he didn't insist enough. He just said:
"Write your tests, ?#@*&%! french!"
2014-04-25 16:26:05 +03:00
Daniel Zaoui
64e947512a
Eolian: Remove support of legacy into implement section.
...
It has been decided that this support is not needed.
2014-04-24 16:51:04 +03:00
Daniel Zaoui
cc84a36734
Eolian: Removal of the support for custom destructors.
...
For no reason, I added it a long time ago.
2014-04-24 16:30:40 +03:00
Daniel Zaoui
0dda45961f
Eolian/Tests: Clean makefile + add return comment tests.
2014-04-24 14:20:21 +03:00
Daniel Zaoui
f36fac8ec6
Eolian: Remove useless functions.
...
Default ctor/dtor are considered as implemented functions and no more as
special functions.
2014-04-23 16:28:33 +03:00
Jérémy Zurcher
010ae10d60
Eolian: fix properties and methods scope support
...
define scope keywords 'protected' and 'public'
disallow scope keywords as property or method name
use move_ts action to move token start after scope modifier if found
use end_property_scope and end_method_scope actions to handle it
2014-04-22 20:24:27 +02:00
Daniel Zaoui
a046f34590
Eolian/Lexer: Fix coverity issues.
...
Fix CID 1203411
Fix CID 1203412
2014-04-18 09:21:35 +03:00
Daniel Zaoui
438452d67e
Eolian/Lexer: fix when function name is composed of only one letter.
2014-04-18 09:05:20 +03:00
Daniel Zaoui
7aab226a81
Eolian/Lexer: support of complex types
...
Complex types are now supported in .eo files:
Eina_List * @own <Eo *>
The parser is in charge of creating a list of formatted basic types.
2014-04-17 15:15:17 +03:00
Daniel Zaoui
b3bc687f6c
Eolian/Lexer: disable INFO and DEBUG.
...
They are not needed on normal build. Two flags have been added to
enable/disable INF and DBG.
Two warnings have been removed since they are not printing interesting
and relevant information.
2014-04-14 07:56:45 +03:00
Daniel Zaoui
87776ff0fa
Eolian: add support for functions scope.
...
This patch adds support for protected functions.
In the .eo file, the scope (public by default) has to be added before
the function name e.g:
protected foo ...
To access the protected APIs, #define (CLASS)_PROTECTED is needed e.g:
#define ELM_BUTTON_PROTECTED
2014-04-10 05:55:16 +03:00
Daniel Zaoui
1d89978c5b
Eolian: clean API.
...
defines used as keys for internal hash tables are now replaced by
functions giving access to the internal data.
2014-04-08 04:27:01 +03:00
Daniel Zaoui
912409df3c
Eolian: rename enums.
...
Add the EOLIAN namespace to the function types.
2014-04-08 04:27:01 +03:00
Daniel Zaoui
0eb092d157
Eolian/Lexer: support data type for events.
2014-04-02 14:27:12 +03:00
Jérémy Zurcher
c68ba35169
updates to eo_lexer.c missing from 3a0e160
2014-03-31 10:32:16 +02:00
zmike
3a4ffad811
Revert "eolian gitignore"
...
This reverts commit 8d13f9384c
.
2014-03-30 00:07:25 -04:00
zmike
ae504c0f4a
Revert "eolian stop tracking your generated files in git plz"
...
This reverts commit 65fa5e3d25
.
2014-03-30 00:07:19 -04:00
zmike
8d13f9384c
eolian gitignore
2014-03-29 16:15:56 -04:00
zmike
65fa5e3d25
eolian stop tracking your generated files in git plz
2014-03-29 16:12:23 -04:00
zmike
3a0e160869
eolian stop failing on single character tokens plz
...
regexes are hrrd. "token1+" + "token2+" does not match a single character string.
2014-03-29 16:10:49 -04:00
Daniel Zaoui
fd25b44cab
Eolian: extend const attributes for parameters to 'set' properties.
...
When const is used for parameters into 'set' properties, the generator
doesn't prepend 'const'.
This fixes this bad behavior.
2014-03-27 15:19:22 +02:00
Daniel Zaoui
eb65cac12d
Eolian/Generator: enable forcing return type as void.
...
For get properties, if only one parameter is given, the generator sets this one as return type.
There are cases where this parameter must stay a parameter (legacy API).
For example, elm_thumb_compress_get must be like:
void elm_thumb_compress_get(const Eo *obj, int *compress).
Eolian was generating the function as:
int elm_thumb_compress_get(const Eo *obj);
By setting "return void;" in the .eo file, you force the function to
return void.
2014-03-27 13:15:02 +02:00
Daniel Zaoui
5f497750f6
Eolian/Lexer: fix function names parsing.
...
Properties and methods names should be able to begin with a number.
@fix
2014-03-27 08:52:53 +02:00
Daniel Zaoui
c863154a79
Eolian: fix virtual pure support.
...
When a property needs be defined as virtual pure, its type could not be
given.
It means that, even it was explicit that e.g only the get property if
virtual pure, both (set and get) were considered as virtual pure.
@fix
2014-03-27 08:52:53 +02:00
Daniel Zaoui
149509249b
Eolian: move the beta API ifdef to cover all the H types and functions.
...
@fix
2014-03-27 08:52:53 +02:00
Daniel Zaoui
bfbcc47d44
Eolian/Lexer: fix parsing of parameters direction.
...
strncmp bytes number was not correct. A problem in the generation was
occurring when the parameter is @inout, as it is considered as @in and
the type was "out ...".
2014-03-20 10:22:20 +02:00
Daniel Zaoui
9b0a502562
Eolian/Lexer: increase buffer length for .eo files
...
@fix
2014-03-19 07:04:28 +02:00
Daniel Zaoui
6fd341a449
Eolian: Fix ctor/dtor generation
2014-03-19 07:04:28 +02:00
Daniel Zaoui
a94ea3a8b2
Eolian/Lexer: Fix warnings
2014-03-16 15:58:14 +02:00
Daniel Zaoui
b467fa9cd6
Eolian/Lexer: fix Windows compilation.
...
strndup is not supported.
2014-03-16 09:40:06 +02:00
Daniel Zaoui
c203df0b5d
Eolian: Support default return values from .eo file.
...
Now, it is possible to assign a default return value for a
method/property.
It will be used in case the function invocation makes issues, e.g eo_do
failing to find the function...
2014-03-16 08:37:23 +02:00
Daniel Zaoui
66e1cc29bc
Eolian/Lexer: support of @own tag on parameter and return values.
...
This tag indicates that the ownership of the parameter/return
value changes.
It is needed by generators (C++/LUA...) to determine if it has to be
freed or not, if it can be used as is or need to be copied...
2014-03-14 13:21:51 +02:00
Daniel Zaoui
6f2657c3fb
Eolian/Lexer: support of legacy overriding for properties.
2014-03-11 15:20:54 +02:00
Jérémy Zurcher
c69b28dac0
eolian: regroup buffer allocation and read checks
2014-03-11 14:00:32 +01:00
Jérémy Zurcher
1e2f00e654
eolian: silence uninitialized var warning
2014-03-11 14:00:32 +01:00
Daniel Zaoui
0f80ed9008
Eolian/Lexer: fix EOF issue.
...
When a new line was added before the last } in a .eo file, the parsing
was resulting in an error. It was due to the fact that some pointer
indicating the eof was not set when the parsing was done from memory.
2014-03-11 11:22:06 +02:00
Daniel Zaoui
4e33fd16e2
Eolian: add support of eo_prefix and data.
...
You can add in the .eo file the eo_prefix:... and data:... in case
you want to override respectively the Eo prefix and the data type.
If "data: null" is used, no data type will be added.
2014-03-10 15:07:05 +02:00
Daniel Zaoui
b013815bfd
Eolian/Lexer: error handling
...
Print and return error if no class has been parsed in the given file.
2014-03-09 13:19:07 +02:00
Daniel Zaoui
a660bbe966
Eolian: fix warnings
2014-03-07 18:02:44 +02:00
Daniel Zaoui
a78f779486
Eolian: Fixes into generated files.
...
- Added Doxygen description to parameters and return
- Added default description for parameters
- Return type needs to be after all the other parameters
- Better handling of stars for pointers: try to figure if a space is
needed between the type and the variable (e.g int *a / int a)
2014-03-07 17:42:41 +02:00
Daniel Zaoui
bb8af681f9
Eolian: Coverity fixes
2014-03-07 17:42:41 +02:00
Daniel Zaoui
445059e706
Eolian/Lexer: parse from memory
2014-03-07 17:42:13 +02:00
Daniel Zaoui
a9748e6445
Eolian/Lexer: fix parsing for functions description.
...
If the first character of the description was not an alphanumeric, it was
not finalizing the parsing of the description and was not inserting it
in the database.
It was occurring when "@since" was the first word in the description of
the function.
2014-03-06 15:12:51 +02:00
Daniel Zaoui
2e0b5742e3
Eolian: Fix build for Windows
...
The definition of EAPI was missing in Eolian.h.
Spank on you, Tom! I expect you to be perfect and to tell me those
things before I push all the stuff ;-)
2014-03-04 11:40:46 +02:00
Daniel Zaoui
49822ec28d
Eolian: remove Ecore_File dependency
2014-03-03 18:14:14 +02:00
Daniel Zaoui
87f661e08e
Eolian: support non null parameters.
...
The generation is only needed in legacy headers.
2014-03-03 14:09:57 +02:00
Daniel Zaoui
10d7bffc4a
Eolian: support warn_unused variables.
2014-03-03 14:09:56 +02:00
Daniel Zaoui
2db3cdb5e3
Eolian: Valgrind cleaning
2014-03-03 14:09:56 +02:00
Daniel Zaoui
7b42be92d5
Eolian/Library: oops, use INF before log domain creation
2014-03-03 14:09:56 +02:00
Daniel Zaoui
748a01c47f
Eolian/Library: add log domain and NULL checks
2014-03-03 14:09:56 +02:00
Daniel Zaoui
920c035c57
Eolian: Support of virtual pure functions.
...
Virtual pure can be defined in Eolian format by adding in the section
implements virtual::class_name::func_name[::func_type].
2014-03-03 14:09:55 +02:00
Daniel Zaoui
4d7e908e49
Eolian/Lexer: support class::constructor/destructor
2014-03-03 14:09:55 +02:00
Daniel Zaoui
5ae7cc962f
Eolian: Format changes
...
- Support keys/values for properties instead of params
- Direction for parameters syntax changed from in to @in...
- obj:const changed to const in .eo
2014-03-03 14:09:55 +02:00
Daniel Zaoui
ba2cdd723d
Eolian/Lexer: fix bug occuring during generation.
...
A string set by the lexer and used by the generator was set to NULL
instead of "constructor"/"destructor".
2014-03-03 14:09:55 +02:00
Daniel Zaoui
b8cc668a9f
Eolian/Lexer: inherits now is specified near the class name.
...
No more section inherits is supported.
2014-03-03 14:09:55 +02:00
Daniel Zaoui
857bdca899
Eolian/Lexer: remove default ctor/dtor.
...
They are now supported inside the section implements.
2014-03-03 14:09:55 +02:00
Daniel Zaoui
2f34bcac4b
Eolian/Lexer: support of class types.
...
Now, .eo format has to supply the class type class, abstract, mixin or
interface.
Example: class Elm_Button {...
2014-03-03 14:09:55 +02:00
Daniel Zaoui
9add4c695c
Eolian: remove --class option.
...
Now, the .eo file needs to be supplied instead of the class.
2014-03-03 14:09:54 +02:00
Yossi Kantor
17abdbdd43
Eolian: Code review fixes
...
1) API defined under EFL_BETA_API_SUPPORT
2) Init counters for init and shutdown
3) void for no-parameters functions
2014-03-03 14:09:54 +02:00
Daniel Zaoui
4ec1ae2d0f
Eolian/Lexer: the ';' is now optional after '}'.
2014-03-03 14:09:54 +02:00
Daniel Zaoui
8de58b9757
Eolian/Lexer: rename signals to events.
2014-03-03 14:09:54 +02:00
Tom Hacohen
036e3eeaa3
Eolian: Add EAPI to API calls.
2014-03-03 14:09:53 +02:00
Daniel Zaoui
5dea8ee0a8
Eolian: first import.
...
Imported by Tom, from the eolian repo which was written by:
Daniel Zaoui <daniel.zaoui@samsung.com>
Yakov Goldberg <yakov.g@samsung.com>
Yossi Kantor <yossi.kantor@samsung.com>
Savio Sena <savio@expertisesolutions.com.br>
Jérémy Zurcher <jeremy@asynk.ch>
Signed-off-by: Tom Hacohen <tom@stosb.com>
2014-03-03 14:09:53 +02:00