Daniel Kolesa
33c147f6d4
eolian: remove the unnecessary subtypes API
...
Inner type can now be retrieved as a base type of the type.
If the type has two inner types or more, there is a new API that allows you to
get the second inner type by calling it on the first one (same would apply to
getting third via second etc.).
This API is simpler to use and doesn't require an iterator.
2016-06-10 14:28:19 +01:00
Daniel Kolesa
375179b47f
eolian: support @protected for accessors (get/set)
...
Previously it was only possible to set it for the whole property.
@feature
2016-06-09 16:55:24 +01:00
Daniel Kolesa
b87c4f6de8
eolian: refine the ref system to suit more cases
...
Now references are first class (but still restricted to one level). Unlike
pointers they only mark the type instead of introducing a whole new type.
2016-06-08 15:49:09 +01:00
Daniel Kolesa
1637c21a76
eolian: support @ref on returns
...
This adds basic support for @ref on return types.
2016-06-07 15:26:09 +01:00
Daniel Kolesa
1a0928eb14
eolian: we don't support unnamed structs/enums, so don't check
2016-06-06 16:15:14 +01:00
Daniel Kolesa
7cf7cba88e
eolian: remove the c_type_named_get APIs
...
These have inconsistent behavior and are generally unnecessary, so I'm
removing them. Use the c_type_get funcs instead.
2016-06-06 15:50:15 +01:00
Daniel Kolesa
9752c44a48
eolian: add a new references system to help replace pointers
...
It's now possible to mark struct fields and function params as "references",
which causes them to become pointers in C (in bindings, they become whatever
is necessary). They're not a part of the type and are much more restricted
than pointers, allowing bindings to be easier. This system will be gradually
utilized and expanded as required.
@feature
2016-06-06 15:28:10 +01:00
Daniel Kolesa
4844034a1a
eolian: add core infra to support builtin strings and void pointers
2016-05-26 14:36:41 +01:00
Daniel Kolesa
2781680b51
eolian: put ownable checks into its own func
2016-05-26 14:17:07 +01:00
Daniel Kolesa
39b9c7564a
eolian: add support for warning when pointer type is found (with env var)
2016-05-24 11:48:44 +01:00
Felipe Magno de Almeida
b613d6f1d9
eolian: Allow promises to have a second type
...
Promises can have a second type, which is the progress type
2016-05-23 15:58:11 -03:00
Daniel Kolesa
e984e5a11a
eolian: remove pointers from complex and class types
...
Complex types (i.e. list, array, hash, accessor etc.) now do not require
pointers with them anymore (the pointer is implied) and the same goes for
class handles. Eolian now explicitly disallows creating pointers to these
as well. This is the first part of the work to remove pointers from Eolian
completely, with the goal of simplifying the DSL (higher level) and therefore
making it easier for bindings (as well as easier API usage).
@feature
2016-05-23 15:58:33 +01:00
Daniel Kolesa
4bdb1f73b8
eolian: handle invalid keywords correctly
...
Before this Eolian segfaulted when an invalid keyword was used.
Fixes T3672.
2016-05-23 10:49:42 +01:00
Daniel Kolesa
9be179d740
eolian: add warnings for class/complex types with pointers (with env var)
2016-05-20 17:15:20 +01:00
Daniel Kolesa
7344417306
eolian: enable incorrect property doc warnings with env var
...
This adds env var EOLIAN_PROPERTY_DOC_WARN which enables extra
warnings for properties that don't have a general doc but have
getter/setter doc. This will eventually become an error and
will be enabled by default. For now it's too verbose.
2016-05-19 16:57:12 +01:00
Daniel Kolesa
7782c0bcb9
eolian: add event_prefix and have classes follow that or eo_prefix by default
...
Previously events used to use class name as a prefix and ignored eo_prefix
when specified. This is no longer the case. Events follow eo_prefix by default
now. In order to get around this for classes where this is undesirable, a new
field event_prefix was added which takes priority over eo_prefix. If neither
is specified, class name is used like previously.
@feature
2016-05-17 17:50:43 +01:00
Daniel Kolesa
1a0566452f
eolian: do not generate legacy without explicit class legacy_prefix
2016-05-12 17:27:34 +01:00
Daniel Kolesa
7e94eb22b4
eolian: mark pure virtual funcs outside of implements
...
This is a better syntax and should've been like this in the first place.
2016-05-12 16:15:24 +01:00
Daniel Kolesa
4126b7faba
eolian: fix C type serialization (handle undefined)
2016-05-10 18:06:56 +01:00
Daniel Kolesa
8df2686d90
eolian: lift restriction on namespace/class name conflicts in library
...
This will allow us to name classes the same as namespaces.
2016-05-06 12:57:01 +01:00
Cedric BAIL
842a020e1f
eolian: add support for restartable event.
2016-04-20 15:53:16 -07:00
Tom Hacohen
cfd7b57006
Eolian: Turn on strict type checking.
...
Thanks to q66 for the code.
I'm stealing credit here because:
1. I'm lazy.
2. He's lazy and doesn't deserve it.
2016-04-19 17:15:28 +01:00
Felipe Magno de Almeida
dc954d8dba
eolian: add Eolian support for Eina Promises
...
Add a promise object to allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.
The usage is like this in a .eo file:
class Foo {
methods {
bar {
params {
@inout promise: Promise<int>;
}
}
}
}
Which will create the following API interface:
void foo_bar(Eo* obj, Eina_Promise** promise);
and a Eina_Promise_Owner for the implementation, like this:
void _foo_bar(Eo* obj, Private_Data* pdata, Eina_Promise_Owner* promise);
Signed-off-by: Cedric Bail <cedric@osg.samsung.com>
2016-04-06 14:34:15 -07:00
Daniel Kolesa
9b845e7135
eolian: add APIs to get all things of each type
2016-03-29 15:01:17 +01:00
Daniel Kolesa
22875f066c
eolian: builtin support for event callback signature
2016-03-14 17:16:41 +00:00
Daniel Kolesa
c420cbe9f0
eolian: refactor database_typedecl_to_str to remove dead code
...
After the type system transition there was some unnecessary dead code.
Fixes CID 1352512.
2016-03-11 13:04:41 +00:00
Tom Hacohen
7d8cd6c40f
Revert "ecore: Create Promises"
...
Reverting this at Felipe's request following my email. There are many
things I strongly object to in this commit. I've touched the surface of
those on the ML (which doesn't work at the moment), though we need to
better discuss it.
The gist:
1. dlsym is a really bad hack that is not even needed.
2. I don't see why eo should even be aware of promises. It's not aware
of list, hash and etc.
3. The eolian changes were done wrong.
This should have been discussed and consulted before done, even if only
because of the amount of hacks it includes and the cross-domain (ecore,
eo and eolian) nature of it.
This reverts commit f9ba80ab33
.
2016-03-08 14:23:57 +00:00
Daniel Kolesa
bf2c0c3405
eolian: validate eo/legacy prefix to be [a-z_][a-z0-9_]*
2016-03-07 15:01:19 +00:00
Felipe Magno de Almeida
f9ba80ab33
ecore: Create Promises
...
Add a promise object that allows Eolian interface to include promises
as a way to have asynchronous value return and composibility.
The usage is like this in a .eo file:
class Foo {
methods {
bar {
params {
promise: Promise<int>;
}
}
}
}
Which will create the following API interface:
void foo_bar(Ecore_Promise** promise);
and the equivalent declaration for implementation.
However, the API function will instantiate the Promise for the
user and the implementer of the class.
2016-03-06 17:55:33 -03:00
Daniel Kolesa
32e0b60bb4
eolian: type documentation and other cleanups
2016-03-03 18:58:11 +00:00
Daniel Kolesa
e061d49aac
eolian: completely clean up the type system
2016-03-03 18:58:11 +00:00
Daniel Kolesa
1f58ccb49f
eolian: clean up some temporary hashes
2016-03-03 18:58:11 +00:00
Daniel Kolesa
c3a33653f3
eolian: separate type_to_str for decls
2016-03-03 18:58:11 +00:00
Daniel Kolesa
5401c775ec
eolian: remove database_type_print (unused)
2016-03-03 18:58:11 +00:00
Daniel Kolesa
4c4fbfae0b
eolian: remove most of the old type APIs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
863212f84a
eolian: more old type api removals
2016-03-03 18:58:11 +00:00
Daniel Kolesa
4e40b60f06
eolian: remove retrieval funcs for type-style enums/aliases/structs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
cb42da514b
eolian: initial conversion of C gen and tests to new type APIs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
8514c1846f
eolian: add api to deal with typedecl free funcs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
c0287a2752
eolian: add some missing typedecl APIs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
cf9dbaa7da
eolian: add matching APIs to get typedecls by file
2016-03-03 18:58:11 +00:00
Daniel Kolesa
6e2497bc01
eolian: add wrappers for most of typedecl APIs
2016-03-03 18:58:11 +00:00
Daniel Kolesa
2be79061fd
eolian: remove unneeded hashes
2016-03-03 18:58:11 +00:00
Daniel Kolesa
1425523bd4
eolian: actually generate typedecls as necessary
2016-03-03 18:58:11 +00:00
Daniel Kolesa
06c246ee27
eolian: free the hashes (prevent leaks)
2016-03-03 18:58:11 +00:00
Daniel Kolesa
8944cc44c1
eolian: add typedecl delete func and init hashes correctly
2016-03-03 18:58:11 +00:00
Daniel Kolesa
67f17f1068
eolian: rename typedef to typedecl to clear name confusion
2016-03-03 18:58:11 +00:00
Daniel Kolesa
87c763ac8b
eolian: add a structure + hashes representing type decls
2016-03-03 18:58:11 +00:00
Daniel Kolesa
ff7e2b5b6b
eolian: always define the first enum value for consistency
2016-03-03 18:58:11 +00:00
Daniel Kolesa
0d291ac43e
eolian: add typedef enumeration for type definitions
2016-03-03 18:58:11 +00:00
Daniel Kolesa
eee5cc4fdc
eolian: re-enable strict validation
2016-02-18 10:14:41 +00:00
Cedric BAIL
56a21ab5f2
Revert "eolian: strict validation for EFL (errors by default)"
...
This reverts commit 21a2a8007d
.
Please run make check from time to time.
2016-02-17 14:37:42 -08:00
Daniel Kolesa
21a2a8007d
eolian: strict validation for EFL (errors by default)
2016-02-17 13:00:41 +00:00
Daniel Kolesa
2998da56e3
eolian: verbose type warnings for EFL by default
2016-02-16 15:13:02 +00:00
Daniel Kolesa
30bc1d285b
eolian: allow silencing of type errors in validation
...
This allows generators to silence type errors in validation in order
to reduce duplicate error messages when generating multiple files.
Also adjusted the C generator to only emit type errors when generating
Eo header files.
@feature
2016-02-10 16:05:07 +00:00
Daniel Kolesa
c95350016d
eolian: add parsing and generation of hot events
...
Unfreezable events can now be marked @hot.
@feature
2016-02-02 17:55:01 +00:00
Stefan Schmidt
1d34318938
eolian: use void to force empty function parameters
...
We have to use void in a function declaration if we want no function
parameters. Using just empty parenthesis means the function takes an
unspecified number of parameters.
We had it correct for most declarations and this series fixes it for
the rest.
2015-11-26 17:25:06 +01:00
Daniel Kolesa
55be91afc9
eolian: more relaxed safety in types API
...
This changes the checks in eolian type API so that you can use the various
type funcs on incompatible types, getting a NULL in return; this allows
simplified generator logic, with error handling done on generator side,
without getting annoying messages from the Eolian lib.
2015-11-19 15:29:11 +00:00
Daniel Kolesa
b3867ce395
eolian: turn "undefined type" into its own EOLIAN_TYPE
2015-11-19 14:05:16 +00:00
Daniel Kolesa
e089908545
eolian: add eolian_type_aliased_base_get
...
This adds a new API function that is there mainly for convenience (see doc).
Also added/updated tests as necessary.
@feature
2015-11-18 16:02:15 +00:00
Daniel Kolesa
4ce59a4f08
eolian: fix function parameter memory leak with value
2015-11-03 13:40:17 +00:00
Daniel Kolesa
cc0476041f
eolian: fix out-of-bounds indexing on tokens
...
Fixes CID 1324818 @fix
2015-10-04 14:54:21 +01:00
Daniel Kolesa
17b4622f1b
eolian: enable doc dependency parsing code
2015-09-24 14:12:07 +01:00
Daniel Kolesa
c4b0ae8a90
eolian: no need to double-sanitize paths, only do it when needed
2015-09-24 14:09:03 +01:00
Daniel Kolesa
940209b8b5
eolian: use fully sanitized path names everywhere
2015-09-24 14:04:05 +01:00
Daniel Kolesa
c0d82ba900
eolian: preliminary doc dependency detection for external files
...
This doesn't quite work yet as path sanitization needs to be done for it to
work correctly. For now this code path is disabled and will be enabled once
all paths are correctly sanitized.
2015-09-23 17:17:50 +01:00
Daniel Kolesa
2bf46034b2
eolian: split tokens/keywords for cleaner indexing
2015-09-21 15:26:41 +01:00
Daniel Kolesa
3f1d29f1ec
eolian: remove support for old style docs completely
2015-09-03 15:42:01 +01:00
Daniel Kolesa
7ae6781451
eolian: disable parsing of old style docs
2015-09-03 15:08:08 +01:00
Stefan Schmidt
4f42f9a08a
eolian: add eolian group as link to main page to find API docs
...
Fixes T2541
2015-08-11 14:04:51 +02:00
Daniel Kolesa
1701ba6a06
eolian: class members now inherit their class's since tag
2015-08-11 10:31:42 +01:00
Daniel Kolesa
26d0053a0f
eolian: do not treat @since specially in validation (not needed)
2015-08-06 17:04:06 +01:00
Daniel Kolesa
aa65c7ef5b
eolian: @since no longer needs to be its own paragraph in docs
...
However, it still terminates the doc.
2015-08-06 16:53:41 +01:00
Daniel Kolesa
b2bfd64f26
eolian: different error for validating @since
2015-07-31 15:55:24 +01:00
Daniel Kolesa
099bdd7819
eolian: do not use an invalid pointer after updating buffer
...
Replacing decimal point in buffer resulted in invalidation of the original
string pointer. On Linux, this issue was for some reason not caught, but
it was wrong anyway. Use the updated string correctly now.
@fix
2015-07-15 15:32:53 +01:00
Daniel Kolesa
e805dcd370
eolian: enable the new doc validator
...
This will make Eolian error when the input documentation
is in a wrong format.
2015-07-08 15:51:29 +01:00
Daniel Kolesa
69cccd043a
eolian: print more detailed location info for doc validation
2015-07-08 14:47:09 +01:00
Daniel Kolesa
b5141e6291
eolian: correct documentation ref validation (disabled for now)
2015-07-08 13:39:46 +01:00
Daniel Kolesa
825349c7b8
eolian: improve function_full_c_name_get API
...
It's now generalized to work properly with legacy functions
as well as correctly append suffixes. Thus, it can be easily
used with the documentation generator and in other places.
@feature
2015-07-08 12:10:20 +01:00
Daniel Kolesa
70b7043731
eolian: initial work on doc syntax validation (disabled for now)
2015-07-07 15:21:45 +01:00
Daniel Kolesa
cd7a78f2a5
eolian: add API: eolian_declaration_get_by_name
...
Sorry for last minute new API, but this one is necessary to implement
proper verification of references in docs, which I would like to have
in 1.15. It allows you to retrieve any kind of declaration by full
namespace, so that you can check for an existence of an Eolian decl,
rather than checking every type individually.
@feature
2015-07-07 10:57:24 +01:00
Daniel Kolesa
e9a0904768
eolian: allow trailing comma on last enum item (just like C)
2015-07-03 15:19:12 +01:00
Daniel Kolesa
9a01ab5dd7
eolian: try replacing '.' with locale specific decimal point
...
This fixes parsing of floating point number with locales that use
a comma as decimal separator, as strtof/strtod follows locale
specific conventions.
@fix
2015-06-25 10:44:01 +01:00
Daniel Kolesa
71a8b9d119
eolian: relax doc parsing a little (no need to check if @since is allowed)
2015-06-23 16:44:17 +01:00
Daniel Kolesa
0fe4d4aa37
eolian: simplify doc parsing logic a bit
2015-06-23 16:37:37 +01:00
Daniel Kolesa
c26134df7a
eolian: new doc token lexer/parser
...
This should allow us to more easily extend the format if desired
and overall makes the doc syntax parsing more readable and simpler.
2015-06-23 15:28:46 +01:00
Daniel Kolesa
51f49642b4
eolian: remove the outdated and ugly database printer (needs rework)
2015-06-17 14:26:07 +01:00
Daniel Kolesa
f800e8a3bf
eolian: check for C type keyword before trying to append as C type keyword
...
This fixes a segv when non-type Eolian keyword is used.
@fix
2015-06-17 10:29:37 +01:00
Daniel Kolesa
950322fd12
eolian: remove support for old event doc syntax
2015-06-11 17:14:51 +01:00
Daniel Kolesa
cd12f938af
eolian: remove support for old doc style on types and vars
2015-06-11 16:52:45 +01:00
Daniel Kolesa
3c3e52440b
eolian: fix a bug in expr serializer with wrong sign insertion
2015-06-11 16:41:32 +01:00
Daniel Kolesa
660e23fd75
eolian: add new __undefined_type builtin to silence warnings
2015-06-10 16:56:37 +01:00
Daniel Kolesa
7ea7f0b68a
eolian: fix wrong type keyword check
2015-06-10 16:42:18 +01:00
Daniel Kolesa
6692319c78
eolian: pass rbuf to doc_error
...
This allows us to correctly free the buffer in error scenarios.
Fixes CID 1304728.
@fix
2015-06-09 13:43:36 +01:00
Daniel Kolesa
7a38f8ec21
eolian: support for @since tag in new doc comments
...
This is kind of ugly, but I didn't see a better way to do it without turning
this into a much more complicated parser. So this will have to do unless we
find something else to add, in which case a new doc parser will be required.
@feature
2015-06-08 15:57:15 +01:00
Daniel Kolesa
5813dbffe8
eolian: silence static analysis
...
Add some unreachable returns to fix CID 1304557.
2015-06-08 10:43:20 +01:00
Daniel Kolesa
e94fdac885
eolian: remove support for short doc comments (//@)
2015-06-05 16:10:12 +01:00
Daniel Kolesa
af2bcfa9d1
eolian: double newline ends summary, not single
...
This allows you to split the summary on multiple lines
if necessary (for example to satisfy line limit)
@fix
2015-06-04 15:41:52 +01:00
Daniel Kolesa
5892fc630c
eolian: remove prototype of non-existent API
2015-06-03 16:47:24 +01:00
Daniel Kolesa
ba033a4cfc
eolian: add documentation handling API
...
This adds new APIs that deal with the new documentation syntax
provided by Eolian. The old doc comment APIs are considered
deprecated from now on and will be removed.
@feature
2015-06-03 16:46:47 +01:00
Daniel Kolesa
b2c47737b1
eolian: properly fill and free all doc fields
2015-06-03 15:35:20 +01:00
Daniel Kolesa
4bdacafaf1
eolian: start exposing Eolian_Documentation
2015-06-03 15:35:20 +01:00
Daniel Kolesa
5084938c04
eolian: enums can't be opaque, check properly
2015-06-03 12:01:21 +01:00
Daniel Kolesa
a6fbe7b6a5
eolian: preliminary parsing of doc syntax
2015-06-03 11:11:12 +01:00
Daniel Kolesa
a4485484f1
eolian: Eolian_Object for docs
2015-06-02 18:27:46 +01:00
Daniel Kolesa
0703cc0f5e
eolian: initial lexing of documentation
2015-06-02 18:12:09 +01:00
Daniel Kolesa
e58da1faa0
eolian: add actual useful declaration APIs
2015-06-01 14:48:50 +01:00
Daniel Kolesa
522c021a36
eolian: initial exposed declaration API - not yet very useful
...
This API allows you to retrieve a list of declarations in the file
(classes, types, vars) in the order they were declared in.
@feature
2015-06-01 14:32:45 +01:00
Daniel Kolesa
5cdf202ee4
eolian: more advanced comment parsing (properly skip asterisks etc)
2015-05-29 16:10:40 +01:00
Daniel Kolesa
1a48c31f81
eolian: "generic_value" builtin type
2015-05-29 12:03:57 +01:00
Daniel Kolesa
cab1391471
eolian: restrict the complex-type condition
2015-05-29 11:38:54 +01:00
Daniel Kolesa
3efca75615
eolian: reserve __builtin_event_cb
2015-05-29 11:19:27 +01:00
Daniel Kolesa
742d7c394c
eolian: allow a filename (rather than path) to be given to eolian_file_parse
2015-05-27 14:32:24 +01:00
Daniel Kolesa
80000e993e
eolian: better error reporting (include correct token info)
2015-05-27 11:30:51 +01:00
Daniel Kolesa
0e2dee5b2e
eolian: make sure CLASS/COMPLEX type is always pointer backed
2015-05-27 11:00:31 +01:00
Daniel Kolesa
a7dea04b26
eolian: merge eo_file_parse and eot_file_parse
2015-05-22 17:32:21 +01:00
Daniel Kolesa
d559952117
eolian: reuse the parsed eot hash for eo too (simplify code)
2015-05-22 17:14:38 +01:00
Daniel Kolesa
5d5b60b026
eolian: use eo_parser_database_fill for import
2015-05-22 17:09:14 +01:00
Daniel Kolesa
1ffdcda292
eolian: simplify eolian_eo_file_parse
...
This also moves the ctor stuff into database_fill,
saving some loops when a class is already parsed.
2015-05-22 16:53:21 +01:00
Daniel Kolesa
b339313e4b
eolian: remove obsolete code dealing with multiple classes per file
2015-05-22 16:46:07 +01:00
Daniel Kolesa
9bbc224f96
eolian: initial support for importing eo files
2015-05-22 16:34:48 +01:00
Daniel Kolesa
9214fa3db9
eolian: disallow cyclic dependencies between .eo files
...
Eo files will now fail to compile if a cycle is detected.
This required some temporary changes in existing eo files
(we had 2 cycles) for which I added a FIXME (they do not
affect C generation).
@feature
2015-05-22 15:03:38 +01:00
Daniel Kolesa
adf445e3bd
eolian: silence static analysis false positive
...
Fixes CID 1299412.
2015-05-22 11:26:28 +01:00
Daniel Kolesa
68b8d63e42
eolian: remove unnecessary function
2015-05-21 16:37:30 +01:00
Daniel Kolesa
370f406d2f
eolian: properly handle errors in database_fill
...
Fixes CID 1299294.
@fix
2015-05-20 18:11:02 +01:00
Daniel Kolesa
54974b074b
eolian: remove const_get/const_set support
...
This was made obsolete by per-accessor values. It was
also hacky and i've wanted to remove it for a while.
2015-05-20 18:05:45 +01:00
Daniel Kolesa
6b91b1bd12
eolian: allow keys/values in property get/set
...
Sometimes it is necessary to specify a different set of values for a
getter or a setter. This commit allows such specializations. This also
renders @const_get and @const_set useless (soon to be removed).
To function correctly, this required adjustment of several public APIs
as well as deprecation of eolian_function_parameter_get_by_name.
This function was not used in any generator and was pretty much
useless in the first place, so it was removed.
@fix
2015-05-20 17:42:44 +01:00
Daniel Kolesa
1c5d8d14e8
eolian: remove unused variable
2015-05-20 17:07:09 +01:00
Daniel Kolesa
5c199857c9
eolian: distinguish between get/set for property keys/values retrieval
2015-05-20 17:03:37 +01:00
Daniel Kolesa
dfbb777bf1
eolian: keep track of all currently parsing files
2015-05-20 15:41:07 +01:00
Daniel Kolesa
dc4c0c64f8
eolian: unify inherits and dependencies for parsing purposes
2015-05-20 15:23:33 +01:00
Daniel Kolesa
5ca43e58c0
eolian: test for possible duplicates in deps list
2015-05-20 14:46:01 +01:00
Daniel Kolesa
30515bc946
eolian: cleaner cyclic import checks
2015-05-19 15:44:33 +01:00
Daniel Kolesa
72dcd2da03
eolian: add a functional "import" statement
2015-05-19 15:26:53 +01:00
Daniel Kolesa
8834f8e02d
eolian: initial lex/parse for import statement
2015-05-19 14:25:45 +01:00
Daniel Kolesa
12fa5f5349
eolian: fix eolian_type_enum_field_c_name_get for namespaced enums
2015-05-18 16:37:42 +01:00
Daniel Kolesa
058a9c9d88
eolian: new syntax for params/values/keys
...
Instead of "@in type name;" we now use "@in name: type;". This change
is done because of consistency with the rest of Eolian; pretty much
every other part of Eolian syntax uses the latter form.
This is a big breaking change in the .eo format, so please update your
.eo files accordingly and compile Elementary together with the EFL.
@feature
2015-05-18 16:14:31 +01:00
Daniel Kolesa
338aa7d10b
eolian: use the new decl storage to retrieve REGULAR base types
2015-05-15 15:16:48 +01:00
Daniel Kolesa
8ec7d1cc48
eolian: much better and stricter redefinition checking
...
We can now check redefinitions between different types of declarations,
such as redefinition of struct as variable etc.
@feature
2015-05-15 15:11:10 +01:00
Daniel Kolesa
e0fe487856
eolian: use fprintf(stderr) rather than eina_log for compile errors
2015-05-14 16:33:42 +01:00
Daniel Kolesa
8c774a1b90
eolian: force specification of inner type for all complex types
2015-05-14 11:27:00 +01:00
Daniel Kolesa
957a89168b
eolian: precompute all enum field values (faster runtime, constness)
2015-05-13 18:10:02 +01:00
Daniel Kolesa
d2365e6267
eolian: allow forced retrieval of enum field values
2015-05-13 17:57:03 +01:00
Daniel Kolesa
e90e3af8b5
eolian: fix evaluation of "undefined" enum fields
2015-05-13 17:15:45 +01:00
Daniel Kolesa
44d37bb368
eolian: do not check alias/struct/enum base for builtin types
2015-05-12 17:24:17 +01:00
Daniel Kolesa
96d16eabb4
eolian: remove unused variables
2015-05-12 17:07:26 +01:00
Daniel Kolesa
211b650c4b
eolian: new API eolian_type_enum_field_c_name_get
...
This API allows you to retrieve the C name of an arbitrary enum field,
respecting the legacy prefix and properly uppercasing the name.
2015-05-12 17:04:54 +01:00
Daniel Kolesa
ed58165b50
eolian: butts
2015-05-12 16:25:52 +01:00
Daniel Kolesa
5f32c178e9
eolian: update eolian_type_base_type_get for REGULAR types
2015-05-12 14:27:24 +01:00
Daniel Kolesa
a5ce9e5d75
eolian: API and tests for beta events
2015-05-08 14:37:02 +01:00
Daniel Kolesa
c8b0b06971
eolian: parsing for beta events
2015-05-08 14:22:32 +01:00
Daniel Kolesa
0c07b9bea4
eolian: is_beta API plus tests
2015-05-08 14:12:27 +01:00
Daniel Kolesa
b33e2b21a1
eolian: parse the @beta qualifier
2015-05-08 14:00:07 +01:00
Daniel Kolesa
b5a7a9b556
eolian: remove old property syntax support
2015-05-07 17:35:33 +01:00
Daniel Kolesa
e126911ba0
eolian: allow the new property syntax
2015-05-07 14:58:03 +01:00
Daniel Kolesa
95a79d5f3b
eolian: reserve @beta and @property
2015-05-07 11:35:14 +01:00
Cedric BAIL
c4cb972a83
eolian: remove the need to order the header correctly for Windows.
2015-05-07 09:53:11 +02:00
Daniel Zaoui
2c5ec0b132
Eolian: Add API to retrieve an event of a class by its name
...
@feature
2015-05-07 09:57:15 +03:00
Daniel Kolesa
9b167d953c
eolian: fix lexer assertion failure
...
The function was missing an "else", so a wrong branch was always
executed with errors at EOF. This fixes that.
@fix
2015-05-01 11:58:05 +01:00
Daniel Kolesa
a74000a65c
eolian: specialize tmp free for typedef (avoid double free issue)
...
@fix
2015-05-01 11:48:41 +01:00
Jean-Philippe Andre
92a844fd36
Eolian: Fix clang warnings
...
Return proper type (NULL, not bool)
2015-04-21 20:11:01 +09:00
Daniel Zaoui
b191379d1d
Eolian: add API to determine if a function is implemented.
...
This is needed in Erigo to determine if a virtual pure function can be
invoked via eo_do, as we don't want error messages to be displayed in
case of a non implementation in the Eo object.
This function works with non virtual functions too.
Tests have been provided.
@feature
2015-03-19 12:37:38 +02:00
Daniel Zaoui
d7d9317da4
Eolian: add filename to error message
2015-03-17 09:32:54 +02:00
Daniel Zaoui
57a4cae33b
Eolian: add API to return the class from a function.
...
@feature
2015-03-16 17:32:30 +02:00
Daniel Kolesa
42912e6e44
eolian: convenience macro to fill base structures in parser
2015-02-18 15:41:50 +00:00
Daniel Zaoui
024c9dc858
Eolian: improve the class searching.
...
If the class is not found, we retrieve its full path if it has already
been scanned.
This patch is needed by Espion so Eolian can find the full path of a
class by its name. Espion has no way to determine it by itself.
2015-02-12 15:58:50 +02:00
Daniel Zaoui
2349e1ac41
Eolian: store the class filenames with the extensions.
...
This change is needed to give Espion a way to request the parsing of a
class when a eo_add happens and the class is not known by Eolian.
2015-02-12 15:58:50 +02:00
Daniel Kolesa
a2dd62e510
eolian: remove unneeded code
2015-02-12 13:31:42 +00:00
Daniel Kolesa
4301690535
eolian: add APIs for nullable/optional (+ lua bindings)
2015-02-12 13:24:06 +00:00
Daniel Kolesa
5b8f3a083b
eolian: write the new parameters into the database
2015-02-12 11:32:34 +00:00
Daniel Kolesa
fff83acef3
eolian: check the other boolean rather than itself
2015-02-12 11:19:24 +00:00
Daniel Kolesa
be6415d662
eolian: parsing of @nullable and @optional args on func params
2015-02-12 11:14:45 +00:00
Daniel Kolesa
4a14bbd0f5
eolian: fix unary expression parsing (correctly consume tokens)
...
Also disable typed expression validation for now. The interfaces are not
finished yet so some things will fail validation because of unexistent
type definitions.
Fixes T2064.
@fix
2015-01-29 11:12:41 +00:00
Daniel Kolesa
49aebd063e
eolian: add eolian_function_is_c_only
...
This function allows us to mark functions that are not bindable.
Also remove some obsolete code.
2014-12-03 14:59:24 +00:00
Daniel Kolesa
e39686b077
eolian: new APIs for filenames
...
Adds 4 new APIs for getting .eo and .eot file names and file paths.
2014-11-28 12:59:06 +00:00
Daniel Kolesa
5b9ece9c85
eolian: remove support for function types
...
These won't be needed because of Eo callbacks. They're also difficult
to handle in bindings, so this will relieve bindings of some effort.
2014-11-27 17:20:21 +00:00
Daniel Kolesa
3a8e08f747
eolian: one func for filling in namespaces
2014-11-21 14:12:40 +00:00
Daniel Kolesa
423629f817
eolian: get rid of the PARSE_SECTION macro nonsense
2014-11-21 13:59:42 +00:00
Daniel Kolesa
6448803ab0
eolian: forgot to add prototype to header
2014-11-20 17:13:12 +00:00
Daniel Kolesa
d26152391f
eolian: add support for @optional ctor tag
...
This implements task T1804.
@feature
2014-11-20 15:21:55 +00:00
Daniel Zaoui
af513b6af3
Eolian: add support for property descriptions.
...
For properties, set and get descriptions were supported but common
comment was not.
2014-10-19 13:25:06 +03:00
Daniel Kolesa
df0b8e3d2f
eolian: free a buffer properly (fixes CID 1243233)
2014-10-03 09:26:27 +01:00
Daniel Kolesa
a2bde0bf96
eolian: new API: eolian_class_c_get_function_name_get
...
This allows bindings to easily retrieve name of the C function used to
retrieve the Eo_Class. Also, update the Lua Eolian bindings and generator.
2014-10-02 11:00:06 +01:00
Daniel Kolesa
7cbac89ec3
eolian: fix a nasty segfault (forgot to update some old code during refactoring)
2014-10-01 14:34:33 +01:00
Daniel Kolesa
8631212e45
eolian: remove the need to pass prefix to eolian_function_full_c_name_get
2014-09-25 15:37:18 +01:00
Daniel Kolesa
13a9650491
eolian: properly replace commas in event_c_name_get and cleanup generator
2014-09-25 15:09:36 +01:00
Daniel Kolesa
a1552fe6a9
eolian: new API: eolian_event_c_name_get
2014-09-25 14:58:53 +01:00
Mike Blumenkrantz
5375e154fe
fix config.h inclusion across the tree
2014-09-23 15:56:46 -04:00
Daniel Kolesa
99c56369f2
eolian: stringshare del note in 2 more functions
2014-09-22 13:19:50 +01:00
Daniel Kolesa
4ffc6d92c0
eolian: update docs
2014-09-22 13:16:57 +01:00
Daniel Kolesa
0be3aefdc7
eolian: remove some unused funcs
2014-09-22 12:47:30 +01:00
Stefan Schmidt
eebeca2900
docs/eolian: Add main landing page for Eolian documentation
2014-09-19 15:27:33 +02:00
Daniel Kolesa
bcff50fb72
eolian: initialize property type correctly
2014-09-16 17:12:52 +03:00
Kai Huuhko
d0ee1bd142
Eolian: Fix a c&p mistake in doc
2014-09-15 14:38:12 +03:00
Kai Huuhko
09d6592260
Eolian: Fix a few warnings
...
"function declaration isn't a prototype"
void was forgotten from empty params list
2014-09-15 14:34:33 +03:00
Savio Sena
2d39b359fb
eolian: Added eolian_function_is_constructor().
...
This patch adds a list of strings called 'ctor_of' to
_Eolian_Function. This list will contain all classes in which this
function is a constructing function.
ctor_of is filled in two moments:
* When filling the constructors of a class, class->full_name is inserted
in the 'ctor_of' of each constructor's function.
* When filling the implements of a class, if the function is a
constructor of its superclass it also becomes a constructor of the
current class, so class->full_name is also inserted in the 'ctor_of'
of each implement's function.
eolian_function_is_constructor gets a func and klass arguments. It goes
through ctor_of of func and returns EINA_TRUE if klass->full_name is
found, otherwise it returns EINA_FALSE.
2014-09-12 16:51:37 -03:00
Daniel Kolesa
3d8069f226
eolian: remove str_items from temps
2014-09-12 15:04:18 +01:00
Daniel Kolesa
87559458f2
eolian: get rid of a list
2014-09-12 15:01:10 +01:00
Daniel Kolesa
f8cef784a8
eolian: less messy initialization checks
2014-09-12 14:20:52 +01:00
Daniel Kolesa
a1646ff61d
eolian: remove eo_definitions
2014-09-12 13:42:53 +01:00
Daniel Kolesa
dd6f167795
eolian: more temp cleanups
2014-09-12 13:35:48 +01:00
Daniel Kolesa
212d500016
eolian: remove some more temps
2014-09-12 13:30:24 +01:00
Daniel Kolesa
25d57a4b44
eolian: remove some unnecessary temps
2014-09-12 13:25:26 +01:00
Daniel Kolesa
6fc1b18e1b
eolian: more helpful error reporting
2014-09-11 13:55:42 +01:00
Daniel Kolesa
44cecb6a87
eolian: simplify more fill code
2014-09-11 11:48:46 +01:00
Daniel Kolesa
2358e63d60
eolian: remove most of class fill
2014-09-11 11:29:54 +01:00
Daniel Kolesa
9915b0da55
eolian: remove more parts of fill
2014-09-11 11:21:04 +01:00
Daniel Kolesa
d85a3f6015
eolian: cleanup class fill
2014-09-11 11:02:51 +01:00
Daniel Kolesa
f55572d79e
eolian: remove Eo_Class_Def (fill bits still remaining)
2014-09-11 10:50:48 +01:00
Daniel Kolesa
88327c1d9d
eolian: remove leftover code
2014-09-11 10:37:41 +01:00
Daniel Kolesa
12ce49db01
eolian: remove Eo_Method_Def
2014-09-11 10:29:48 +01:00
Daniel Kolesa
2219c0329d
eolian: remove Eo_Property_Def
2014-09-10 17:15:31 +01:00
Daniel Kolesa
588f2dd9db
eolian: property cleanup
2014-09-10 16:46:34 +01:00
Daniel Kolesa
10843dc0e2
eolian: remove Eo_Ret_Def
2014-09-10 16:41:02 +01:00
Daniel Kolesa
ffb8e79034
eolian: remove accessor structures
2014-09-10 15:53:38 +01:00
Daniel Kolesa
faa24705c8
eolian: we can only have 2 accessors
2014-09-10 15:22:04 +01:00
Daniel Kolesa
f86c2d4e5a
eolian: remove accessor params feature
...
Temporarily replace it with @const_get and @const_set tags in values section.
2014-09-10 15:06:43 +01:00
Daniel Kolesa
9aff324457
eolian: remove Eo_Param_Def, reduce allocations, simplify code
2014-09-10 14:24:41 +01:00
Daniel Kolesa
7786b96359
eolian: builtin complex types
...
From now on, there are 5 builtin complex types, particularly accessor, array,
iterator, hash and list. All other types are simple - they can't have a complex
part. Also, the <> now binds to the type itself, not the pointer. More builtin
complex types will be added as needed.
2014-09-08 14:53:13 +01:00
Daniel Kolesa
d74eb93580
eolian: remove bool returns from some cases that cannot fail
2014-09-05 16:30:56 +01:00
Daniel Kolesa
b7c55642fa
eolian: cleanup
2014-09-05 16:21:39 +01:00
Daniel Kolesa
7ba2dbe238
eolian: remove some ifs in database_fill
2014-09-05 16:19:56 +01:00
Daniel Kolesa
70469cb44d
eolian: some minor refactoring
2014-09-05 16:18:47 +01:00
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
Daniel Kolesa
c88c0d9347
eolian: fix tests and fix class name comparison in parser
...
This fixes the Eolian testsuite as well as adds a better way to compare where a class
comes from, allowing us to guess EOLIAN_TYPE_CLASS correctly.
2014-08-21 09:26:02 +01:00
Daniel Kolesa
0e4860f215
eolian: add support for referencing classes as types
...
For this purpose, several other changes were made. There can now only be 1 class per file
and the class name has to match the file name. Also, I replaced the list of classes with
a hash, allowing for fast indexing (crucial for parser performance - otherwise it was
very slow).
This also adds a new API, eolian_type_class_get.
2014-08-21 09:26:02 +01:00
Daniel Kolesa
444b62c51c
eolian: fix: remove unused function
2014-07-30 13:33:52 +01:00
Daniel Kolesa
5a603c00b6
eolian: remove irrelevant comments
...
This functionality was already done previously.
2014-07-29 10:05:06 +01:00
Daniel Kolesa
5cc18bfd5a
eolian: fix: remove leftover keywords
2014-07-28 11:57:37 +01:00
Daniel Kolesa
ae1ff34dd6
eolian: fix type parsing
...
I reorganized what's allowed and what is not a bit, particularly, strictened the
rules for named structs and loosened the rules for anonymous structs, and refined
them for void types. It should be all correct now.
2014-07-25 14:51:13 +01:00
Daniel Kolesa
5bdbf4dbb5
eolian: doc typo fix
2014-07-25 14:31:39 +01:00
Daniel Kolesa
bb7f657f90
eolian: clarify documentation
2014-07-25 14:25:45 +01:00
Daniel Kolesa
e2c51100c7
eolian: add test for class methods/properties
...
This also fixes a bug in the Eolian parser that handles class properties.
2014-07-24 14:02:46 +01:00
Daniel Kolesa
94404b403c
eolian: parser support for constructor qualifier
...
This will be needed when the constructors {} section goes away.
2014-07-24 13:01:47 +01:00
Daniel Kolesa
214cfac378
eolian: protected ctors
2014-07-24 12:58:29 +01:00
Daniel Kolesa
a5ad792780
eolian: add support for class functions
2014-07-24 12:05:12 +01:00
Daniel Kolesa
a3182948ad
eolian: use libgen.h basename
2014-07-23 19:37:03 +01:00
Daniel Kolesa
315d5de11d
eolian: use just filename (not path) for eolian_class_get_by_file
2014-07-23 17:15:00 +01:00
Daniel Kolesa
572b7aa92f
eolian: eolian_function_parameter_get -> eolian_function_parameter_get_by_name
2014-07-23 14:22:25 +01:00
Daniel Kolesa
88cc1167e9
eolian: eolian_parameters_get -> eolian_function_parameters_get
2014-07-23 14:17:19 +01:00
Daniel Kolesa
fd0210f30e
eolian: list_get -> get, find_by -> get_by
2014-07-23 14:13:21 +01:00
Daniel Kolesa
e26be1aca6
eolian: fix NULL checks in APIs that return iterators + fix tests
2014-07-23 13:45:25 +01:00
Daniel Zaoui
0efeeaf1c0
Eolian: modify APIs to return iterators instead of lists.
...
The change affects the C and the C++ generators.
2014-07-23 13:45:25 +01:00
Daniel Kolesa
a8c0504ce2
eolian: add comment parsing for typedefs
2014-07-23 10:57:23 +01:00
Daniel Kolesa
77ad5e3297
eolian: fix coverity defects
...
Fixes CID 1228630 and 1228631.
2014-07-23 00:48:27 +01:00
Daniel Kolesa
d8e54e2636
eolian: use new syntax for const methods as per wiki
2014-07-22 17:13:24 +01:00
Daniel Kolesa
ab8fe63afa
eolian: use @protected syntax as per wiki
2014-07-22 16:35:54 +01:00
Daniel Kolesa
4f1f182a89
eolian: lexer line context push/pop/restore/clear
2014-07-22 15:44:23 +01:00
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