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
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
68b8d63e42
eolian: remove unnecessary function
2015-05-21 16:37:30 +01:00
Daniel Kolesa
1c5d8d14e8
eolian: remove unused variable
2015-05-20 17:07:09 +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
72dcd2da03
eolian: add a functional "import" statement
2015-05-19 15:26:53 +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 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
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
Mike Blumenkrantz
5375e154fe
fix config.h inclusion across the tree
2014-09-23 15:56:46 -04: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
f8cef784a8
eolian: less messy initialization checks
2014-09-12 14:20:52 +01:00
Daniel Kolesa
21530bd5d8
eolian: preliminary support for new constructors section
2014-09-01 15:35:50 +01: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
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
4103f3daaf
eolian: NULL the hashes after shutdown
2014-08-21 09:26:05 +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
be68f9e1fa
eolian: initial parsing code and API declarations for enums
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
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
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
fd0210f30e
eolian: list_get -> get, find_by -> get_by
2014-07-23 14:13:21 +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
89ca97aceb
eolian: new API: eolian_type_structs/aliases_get_by_file
2014-07-22 13:14:44 +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
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
7b9438e76e
eolian: refactoring: remove Eo_Type_Def
2014-07-10 15:10:24 +01:00
Daniel Kolesa
441455259e
eolian: refactoring: more consistent naming
2014-07-10 14:19:06 +01:00
Daniel Kolesa
37bc20298c
eolian: refactoring: split up eolian_database into individual files
2014-07-10 12:15:29 +01:00
Daniel Kolesa
a26546bc6b
eolian: the entire API is now const correct
2014-07-09 21:31:03 +01:00
Daniel Kolesa
133607936d
eolian: const correctness
2014-07-09 21:07:15 +01:00
Daniel Kolesa
580aea04cd
eolian: refactoring step six
...
Move Eolian_Function as well, plus fix const correctness of several API funcs.
2014-07-09 20:59:31 +01:00
Daniel Kolesa
accdd50f50
eolian: refactoring step five
...
Move from all instances of Eolian_Type to Eolian_Type*.
2014-07-09 17:18:02 +01:00
Daniel Kolesa
1a4f87d365
eolian: refactoring step four
...
Move from all isntances of Eolian_Function_Parameter to Eolian_Function_Parameter* plus const fixes.
2014-07-09 17:01:19 +01:00
Daniel Kolesa
c9119b0c88
eolian: refactoring step three
...
Move from all instances of Eolian_Event and Eolian_Implement to Eolian_Event* and Eolian_Implement*.
2014-07-09 16:45:58 +01:00
Daniel Kolesa
96eaaaf074
eolian: refactoring step two
...
Move from all instances of Eolian_Class to Eolian_Class*.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
ca82befa8a
eolian: refactoring step one
...
Rename the public Eolian types to use a consistent naing scheme.
2014-07-09 16:33:19 +01:00
Daniel Kolesa
8f14930d68
eolian: function dump now uses the actual syntax
2014-07-09 13:49:21 +01:00
Daniel Kolesa
60bf9fcaef
eolian: reduce code duplication
2014-07-09 13:26:20 +01:00
Daniel Kolesa
7b4f4af873
eolian: support for structs in eolian_show
2014-07-09 13:06:46 +01:00
Daniel Kolesa
881a8754ab
eolian: new API: eolian_type_struct_description_get
2014-07-09 12:48:16 +01:00
Daniel Kolesa
295f1f4847
eolian: new API: eolian_type_struct_field_description_get
2014-07-09 12:05:56 +01:00