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