Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reflection mangling #19

Merged
merged 19 commits into from
Apr 7, 2016
Merged

Reflection mangling #19

merged 19 commits into from
Apr 7, 2016

Conversation

Manu343726
Copy link
Owner

This is a first attempt to implement the basis needed to handle overloads (runtime demangling). The whole reflection parser was rewritten in a more modular way, and the AST processing should be now easily extensible. Also support for annotations on the C++ sourcecode was added, implementing C# attributes on top of them.

@Manu343726
Copy link
Owner Author

Oh, sh.. I missed that "please rework" commit.

@Manu343726
Copy link
Owner Author

Ignore the CI results, the build is broken since I introduced the Boost.Coroutine2 example (I don't know why the binary deps are different, it works on Windows). Also the make run-all-examples command may fail since the reflection example doesn't fulfill the contract (First param is -1, precondition says it should be > 0).

…rsors and rearranges then in the parent as families of Method nodes (Families are identified by the cursor spelling, each family entry by the cursor displayname)
@Manu343726
Copy link
Owner Author

GCC 5.3 ICEs when using ctti::type_id_t's hash as template parameter of Reflection template instead of the reflected type. I changed that from type to type id to be able to get all reflection data at compile-time given the class name.

For a class Class, the code generator writes a cpp::Reflection specialization like:

template<>
class Reflection<ctti::type_id<Class>().hash()>
{
    static cpp::MetaClassData& reflection()
    {
        ... // registration code, etc
    }
};

GCC segfaults when trying to instance the template above.

@Manu343726 Manu343726 force-pushed the reflection-mangling branch 3 times, most recently from 00c09eb to 34b204d Compare April 3, 2016 02:07
…licitly install it maching the installed clang version)
@Manu343726 Manu343726 force-pushed the reflection-mangling branch from 08857b9 to 63d4030 Compare April 3, 2016 02:49
@Manu343726 Manu343726 force-pushed the reflection-mangling branch from 63d4030 to a0ffb65 Compare April 3, 2016 02:58
@Manu343726 Manu343726 force-pushed the reflection-mangling branch 2 times, most recently from f5fdaa7 to 86c7b96 Compare April 3, 2016 23:26
@Manu343726 Manu343726 force-pushed the reflection-mangling branch 7 times, most recently from 3d364c4 to 562a261 Compare April 4, 2016 21:22
@Manu343726 Manu343726 force-pushed the reflection-mangling branch from 562a261 to 2cdb21d Compare April 4, 2016 21:55
@Manu343726 Manu343726 merged commit 2cdb21d into master Apr 7, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant