Commit Graph

98 Commits

Author SHA1 Message Date
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
Daniel Kolesa cc387bd621 eolian: add EOLIAN_TYPE_REGULAR_STRUCT rather than including the struct keyword in name field 2014-07-09 10:49:52 +01:00
Daniel Kolesa 892c5cba5f eolian: fix coverity defects 2014-07-09 10:19:42 +01:00
Daniel Kolesa f6c7242609 eolian: fix base_type_get (only allow for pointers) 2014-07-08 16:56:13 +01:00
Daniel Kolesa 16da25bca2 eolian: support for structs in c_type_get 2014-07-08 16:54:22 +01:00
Daniel Kolesa 6bd0e0ab7f eolian: better struct support including an API for by-name lookup 2014-07-08 16:42:33 +01:00
Daniel Kolesa b2db8d3ffa eolian: new API for struct types
This commit adds new Eolian API and proper parsing support for struct types.
Structs can be named (allowed in global context, like typedefs, and in typedefs)
and unnamed (allowed as fields of other structs). This extends the existing type
API to support structs. This is incomplete for now - I still gotta add a way to
query global structs besides other things.

@feature
2014-07-08 16:17:44 +01:00
Daniel Kolesa 826f85675c eolian: @own -> own 2014-07-08 13:34:25 +01:00
Daniel Kolesa 5168297fdb eolian: new API: eolian_system_directory_scan, use it 2014-07-07 16:48:54 +01:00
Daniel Kolesa 8e8dbc322e eolian: scan directories recursively 2014-07-07 14:25:57 +01:00
Daniel Kolesa 84451db638 eolian: have eolian_all_classes_list_get instead of eolian_class_names_list_get 2014-07-03 22:12:31 +01:00
Daniel Kolesa f12b36e1c1 eolian: some dirty janitoring 2014-07-01 18:25:17 +01:00
Daniel Kolesa 8c44810525 eolian: keep the struct keyword in the regular type name 2014-07-01 18:03:20 +01:00
Daniel Kolesa 39aad55991 eolian: support for void as separate type type 2014-06-30 23:07:32 +01:00
Daniel Kolesa e84275cc37 eolian: make tests pass 2014-06-30 17:20:39 +01:00
Daniel Kolesa 7b54a0101c eolian: new type API
This new API supports function pointer types, multiple type subtypes, const attribute without parsing
the name string, own attribute for any partial type and more. This commit also updates the C and C++
generators so that they compile and generate correct code.

@feature
2014-06-30 17:20:39 +01:00
Daniel Kolesa 74d0cbf29b eolian: allow multiple subtypes by reorganizing the type structure - preparation for new API 2014-06-30 17:20:39 +01:00
Daniel Kolesa c0576cee73 eolian: new API: eolian_function_full_c_name_get - reduces duplication of code 2014-06-30 17:20:06 +01:00
Daniel Kolesa 1674d967d2 eolian: free the iterator 2014-06-30 17:20:06 +01:00
Daniel Kolesa 7a8ef6d02a eolian: introducing support for .eot files
.eot files are similar to .eo, but they can't contain classes; all .eot files found in include paths
are parsed and information is added into the database. They're there for typedefs and eventually also
enums, structs and constants.

@feature
2014-06-30 17:20:06 +01:00
Daniel Kolesa e9f4890747 eolian: fix end-of-file checking, move namespaces from :: to . 2014-06-20 10:46:04 +01:00