Daniel Kolesa
a03bef4734
eolian: get rid of Eo_Type_Def
2014-07-10 14:44:17 +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
9f17b08dfb
eolian: warning fix
2014-07-04 14:51:05 +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
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
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
2bdba6c850
eolian: type -> typedef
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
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
7c28de0616
eolian: process classes and typedefs in order (preparation for later potential extension)
2014-06-23 15:32:17 +01:00
Daniel Kolesa
efcdfec94f
eolian: more cleanups
2014-06-20 15:31:45 +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
4ef61a1c29
eolian: fix a few casts
2014-06-19 17:28:19 +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
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
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
44afa93503
eolian: Eo_Tokenizer -> Eo_Lexer
2014-06-19 16:04:07 +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
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
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
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
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
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
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