path: root/src/lib/eolian (follow)
AgeCommit message (Collapse)Author
2019-09-10eolian: consider @by_ref marked elements ownableDaniel Kolesa
2019-09-10eolian: add an optional warning for ptr() usage in stable APIDaniel Kolesa
2019-09-09eolian: remove second parameter for eolian_type_c_type_getDaniel Kolesa
This has been replaced by newer APIs.
2019-09-06eolian: remove @owned keywordDaniel Kolesa
2019-09-06eolian: disallow duplicate entries in requires/composite sectionsDaniel Kolesa
2019-09-06eolian: change composite syntax from block to inheritance sectionDaniel Kolesa
This makes more sense as these are related to inheritance tree. Therefore, change while we still can. Fixes T8183
2019-09-04eolian: make sure to include by_ref in validation of expressionsDaniel Kolesa
2019-09-04eolian: remove the expression eval_type APIDaniel Kolesa
This is unnecessary because for all contexts where type is relevant the validator already makes sure the type and expression match correctly, so you don't ever need to re-validate it. If you are doing a generic case and are not sure, just use MASK_ALL.
2019-09-04eolian: proper error message for @by_ref on pointer typesDaniel Kolesa
2019-09-04eolian: add APIs to get full C types of parameters/returns/fieldsDaniel Kolesa
These are needed because the type itself does not carry all the information it needs to carry (particularly by_ref).
2019-09-03eolian: add support for function pointers in utility APIsDaniel Kolesa
2019-09-03eolian: fix typos in function_return_is_by_refDaniel Kolesa
2019-09-02eolian: move all tests to use the new @move syntax and APIDaniel Kolesa
2019-08-31eolian: fix validation of ownability with hashesDaniel Kolesa
2019-08-31eolian: properly handle non-beta restriction of __undefined_typeDaniel Kolesa
2019-08-31eolian: always validate inner types of complex types for @moveDaniel Kolesa
2019-08-31eolian: add API to check if an inner type of complex type is @moveDaniel Kolesa
This complements the equivalent APIs of parameters and so on. It is not the same as the older type_is_owned API, which applied to everything.
2019-08-31eolian: refactor ownability validation to accommodate new syntaxDaniel Kolesa
This refactors ownability checks so that they're only performed in contexts where @move can be specified, which both helps with performance and enables later removal of ownability info from types themselves.
2019-08-31eolian: validate @by_ref correctnessDaniel Kolesa
The @by_ref qualifier can only be used with value types, to guarantee exactly one level of pointers.
2019-08-30eolian: add API to expose the new @move and @by_ref tagsDaniel Kolesa
2019-08-30eolian: add parsing for @move and @by_refDaniel Kolesa
The @by_ref qualifier is now allowed on parameters, returns and struct fields in the usual qualifier section. It will mean that this type is passed around by reference, and will only be allowed on types that are not already pointer-like. The @move qualifier will replace @owned as one with a clearer meaning. It means "transfer of ownership". It has the same semantics as the current @owned, i.e. on return values it transfers ownership of the value to the caller, on parameters it transfers ownership to the callee (the inverse is the default when not specified). On struct fields, it means the field will transfer together with the struct that contains it.
2019-08-29eolian: disallow legacy keyword in enums in stable apiDaniel Kolesa
This also marks a bunch of users of that as beta, as they were effectively beta.
2019-08-29eolian: reverse keywords '@transfer' and '@by_ref'Daniel Kolesa
The '@transfer' keyword is a clearer replacement for '@owned'. It will be specified on params/returns/... to specify that ownership will be transferred between caller/callee.
2019-08-29eolian: drop @crefDaniel Kolesa
In the end this was just a failed experiment that didn't turn out to be practical. For now, revert back to ptr(const(T)) until a proper replacement for pointer syntax is added.
2019-08-28eolian_aux: this must be recursiveMarcel Hollerbach
Summary: in order to get all callables, this must be recursive, otherwise deeper callables are forgotten. Reviewers: q66 Reviewed By: q66 Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-08-16eolian: rename is_class api for functions to is_staticDaniel Kolesa
Still needs restriction to classes only etc to be done later. Ref Ref
2019-08-16eolian: rename @class on methods to @staticDaniel Kolesa
Ref Ref
2019-08-16eolian: fix function pointer leak as reported by asanDaniel Kolesa
Ref T8140.
2019-08-09eolian: add an envvar to warn about unimplemented beta funcsDaniel Kolesa
This changes the behavior of the existing env var to only check unimplemented functions in stable APIs by default. Beta checks can be enabled with an additional environment var, so use EOLIAN_CLASS_UNIMPLEMENTED_WARN for stable and EOLIAN_CLASS_UNIMPLEMENTED_BETA_WARN for extra beta checks.
2019-08-05eolian: fix use after free in eolian_databaseDaniel Kolesa
'toscan' is actually a view to 'mpath' memory, so freeing it first would result in use-after-free. This is obviously only in the error branch so it usually does not happen, but fix anyway. CID1403022
2019-08-05eolian: fix false positive use-after-free in parserDaniel Kolesa
The catch here is that check_match results in a long jump under that condition. The static analyzer doesn't know this, so declare intent. CID1402703
2019-08-05eolian: silence return checking in lexerDaniel Kolesa
Coverity CID1396970.
2019-08-05eolian: refactor "dead" codeDaniel Kolesa
This has no functional change but should stop coverity from complaining. CID1382214
2019-08-05eolian: attempt to silence coverity overlapping assignment errorsDaniel Kolesa
While the previous code was I believe correct, coverity still complains about it. Split it into two statements also to declare intent. CID 1402603..1402724
2019-08-01eolian: remove __builtin_free_cbDaniel Kolesa
This has long been unused. If we need to replace this eventually, it should be done correctly.
2019-08-01eolian: disallow ptr() in containers in stable APIDaniel Kolesa
2019-07-30eolian: make strbuf ownableDaniel Kolesa
2019-07-26eolian: allow value types in owning containers (list/array/etc)Daniel Kolesa
2019-07-26eolian: also ban underscore prefixed builtins in stable APIDaniel Kolesa
2019-07-26eolian: ban void_ptr in stable APIsDaniel Kolesa
This required some refactoring in eldbus and tests but otherwise seems good to go.
2019-07-17eolian: remove support for old free() syntaxDaniel Kolesa
Now freefuncs can only be specified on type declarations but not on types themselves. Also remove transitiveness of freefuncs.
2019-07-17eolian: allow binbufs to be ownedDaniel Kolesa
2019-07-17eolian: add builtin binbuf and event typesDaniel Kolesa
Binbuf is like strbuf and allows not using the Eina opaque wrapper now, which will remove some ptr(). And event translates to Efl.Event because otherwise there would be no way to get rid of void_ptr.
2019-07-08eolian: fix leak in eolian_state_file_path_parseMike Blumenkrantz
Summary: this fixes a trivial leak where a string is leaked at the end of the function. it is not significant, but it still appears in leak detections. Reviewers: q66 Reviewed By: q66 Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision:
2019-07-08eolian: remove API to get freefunc of typeDaniel Kolesa
This is not supported anymore. For now, the syntax is kept around because of broken C++ tests, but afterwards it will also be removed.
2019-07-08eolian: remove builtin freefuncsDaniel Kolesa
For now this does not alter API behavior, so freefuncs are still transitive to aliases etc., this will get removed later.
2019-06-26eolian: allow value types in view containers (iterators etc.)Daniel Kolesa
This restricts disallowing value types to containers that can own them. It also disallows usage of @owned on those view-only containers, as that makes no sense.
2019-06-24eolian: add library support for declaring and using errorsDaniel Kolesa
You can now declare errors like this: error Foo = "message"; [[documentation]] Then you can use them as types like this: foo { return: error(Error1, Error2, ...); } They have a separate type category and storage. They are checked for redefinitions the same as anything else though. This does not add any generator support nor it adds any advanced checking. Ref T6890
2019-05-30eolian: use c_name when building complex C symbol namesDaniel Kolesa
2019-05-30eolian: allow complete symbol renaming for CDaniel Kolesa
This adds a new unified syntax for giving declarations C names. Classes: class @c_name(Foo) Foo ... Types: type @c_name(Foo) Foo: Bar ... Structs: struct @c_name(Foo) Foo ... and so on. Type instances properly inherit those. This also cleans up some other parts of the source code. Fixes T6716.