Commit Graph

565 Commits

Author SHA1 Message Date
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