Commit Graph

59 Commits

Author SHA1 Message Date
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 60bf9fcaef eolian: reduce code duplication 2014-07-09 13:26:20 +01:00
Daniel Kolesa 3bffb5fa1d eolian: support for structs in eo_parser_dump 2014-07-09 13:01:53 +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 dda93f467e eolian: proper resource management for types/structs
Because types can have other types in each other, we need a stack of a sort to keep track of
the types for error handling. Doing it otherwise would result in potential resource leaks.
2014-07-09 11:18:21 +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
Jean-Philippe Andre 5933d9d4a3 Eolian: Add missing break in switch
Fixes CID 1224763.
2014-07-09 09:31:49 +09: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 46827bf022 eolian: initial struct parsing 2014-07-08 15:44:42 +01:00
Daniel Kolesa d60a47e2dd eolian: check struct name properly 2014-07-08 15:11:46 +01:00
Daniel Kolesa ee97c4cf58 eolian: preparation for struct support 2014-07-08 15:02:36 +01:00
Daniel Kolesa 826f85675c eolian: @own -> own 2014-07-08 13:34:25 +01:00
Daniel Kolesa 58a6895e41 eolian: do not use string for attrs 2014-07-07 15:14:21 +01:00
Daniel Kolesa a621692fdd eolian: use eina logging for error messages 2014-07-03 01:48:00 +01:00
Daniel Kolesa 61da74bc42 eolian: print error line with a caret 2014-07-03 00:30:39 +01:00
Daniel Kolesa 08a669f08b eolian: show column information when matching balanced braces 2014-07-03 00:05:16 +01:00
Daniel Kolesa 7d46c921cb eolian: column information in error messages 2014-07-02 23:39:44 +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 0cc319a5b2 eolian: restrict own() for pointers only 2014-07-01 17:55:34 +01:00
Daniel Kolesa e5e6d8f1f2 eolian: also allow void in @out params 2014-06-30 23:21:36 +01:00
Daniel Kolesa 8d0649ef0b eolian: remove superfluous macros 2014-06-30 23:17:05 +01:00
Daniel Kolesa 154a407bf2 eolian: allow void return in getter accessors (to force the return to be an out param) 2014-06-30 23:13:04 +01:00
Daniel Kolesa 39aad55991 eolian: support for void as separate type type 2014-06-30 23:07:32 +01:00
Daniel Kolesa d5f4af5e61 eolian: different syntax for functions (func ret_type (arg_types)) 2014-06-30 22:07:13 +01:00
Daniel Kolesa d2fb3c5cb0 eolian: function type parsing 2014-06-30 21:52:57 +01:00
Daniel Kolesa c8e2e8d48a eolian: @own -> own 2014-06-30 18:10:29 +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 2bdba6c850 eolian: type -> typedef 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 4f4eba4fe4 eolian: support for C type translation in eo lexer 2014-06-30 17:20:39 +01:00
Daniel Kolesa 4e79b27977 eolian: handle new type syntax in parser 2014-06-30 17:20:39 +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 18c6f486f6 eolian: process classes and typedefs in order 2014-06-30 17:20:06 +01:00
Daniel Kolesa 0f4bb89492 Revert "eolian: process classes and typedefs in order (preparation for later potential extension)"
This reverts commit 7c28de0616.
2014-06-23 18:44:11 +01:00
Daniel Kolesa af9b338dee Revert "eolian: generalized node append"
This reverts commit 98d25243aa.

Reason: accidentally got into master... I'm tired.
2014-06-23 18:43:23 +01:00
Daniel Kolesa 98d25243aa eolian: generalized node append 2014-06-23 15:38:23 +01:00
Daniel Kolesa 7c28de0616 eolian: process classes and typedefs in order (preparation for later potential extension) 2014-06-23 15:32:17 +01:00
Daniel Kolesa 4dcd45b010 eolian: less code repeating 2014-06-20 15:46:00 +01:00
Daniel Kolesa efcdfec94f eolian: more cleanups 2014-06-20 15:31:45 +01:00
Daniel Kolesa eb3a7cf6d0 eolian: some less repeated code 2014-06-20 15:07:25 +01:00
Daniel Kolesa 15704a7454 eolian: small cleanup 2014-06-20 14:38:57 +01:00
Daniel Kolesa 3acbdaa8c7 eolian: mark all methods/properties in interfaces as virtual by default and disallow everything but class.(con|de)structor in their implements 2014-06-20 12:24:10 +01:00
Daniel Kolesa ded5623c86 eolian: simplify the parser a bit (unify 3 funcs into one) 2014-06-20 11:33:25 +01:00
Daniel Kolesa e9f4890747 eolian: fix end-of-file checking, move namespaces from :: to . 2014-06-20 10:46:04 +01:00
Daniel Kolesa ee24425ab5 eolian: remove semicolon termination of classes 2014-06-20 00:01:56 +01:00
Daniel Kolesa fc72ca590d eolian: allow omitting of () in class with no inherits, fix up tests 2014-06-19 16:30:18 +01:00