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
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
1425523bd4
eolian: actually generate typedecls as necessary
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
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
cd12f938af
eolian: remove support for old doc style on types and vars
2015-06-11 16:52:45 +01:00
Daniel Kolesa
b2c47737b1
eolian: properly fill and free all doc fields
2015-06-03 15:35:20 +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
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
ed58165b50
eolian: butts
2015-05-12 16:25:52 +01: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
7cbac89ec3
eolian: fix a nasty segfault (forgot to update some old code during refactoring)
2014-10-01 14:34:33 +01:00
Mike Blumenkrantz
5375e154fe
fix config.h inclusion across the tree
2014-09-23 15:56:46 -04:00
Daniel Kolesa
f8cef784a8
eolian: less messy initialization checks
2014-09-12 14:20:52 +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
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
189bc4512d
eolian: fix type generation for function pointers
2014-08-22 13:45:20 +01:00
Daniel Kolesa
fce1e61ff5
eolian: fix shadow warnings
2014-08-21 09:26:06 +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
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
1688749ce9
eolian: add support for opaque struct types (+ tests)
2014-08-21 09:26:05 +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
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
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
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
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
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
5da69ddbf7
eolian: support for class type in c_type_get
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
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
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
6f9c8779c0
eolian: initial code and struct layout for revamped alias API
2014-07-21 14:10:42 +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
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
Daniel Kolesa
8716112a43
eolian: warning fix
2014-07-15 20:00:59 +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
9e3417aad8
eolian: fix type print
2014-07-11 12:26:33 +01:00
Daniel Kolesa
7b9438e76e
eolian: refactoring: remove Eo_Type_Def
2014-07-10 15:10:24 +01:00
Daniel Kolesa
a03bef4734
eolian: get rid of Eo_Type_Def
2014-07-10 14:44:17 +01:00
Daniel Kolesa
441455259e
eolian: refactoring: more consistent naming
2014-07-10 14:19:06 +01:00
Daniel Kolesa
1772ab8a1c
eolian: separate database API and internals into different source files
2014-07-10 13:13:46 +01:00
Daniel Kolesa
37bc20298c
eolian: refactoring: split up eolian_database into individual files
2014-07-10 12:15:29 +01:00