Manu343726 / siplasplas

A library for C++ reflection and introspection
https://manu343726.github.io/siplasplas
MIT License
195 stars 27 forks source link

Any class #54

Closed Manu343726 closed 7 years ago

Manu343726 commented 7 years ago

Any must extend SimpleAny functionality by adding support for runtime-injectable methods and properties.

An example:

class MyClass
{
public:
    void f();
};

MyOherClass
{
public:
    void g(int i);
    int i = 42;
};

Any createObject(const MyClass& myClass)
{
    Any any{myClass};

    any("f") = &MyClass::f;

    return any;
}

Any createObject(const MyOtherClass& myOtherClass)
{
    Any any{myOtherClass};

    any("g") = &MyOtherClass::g;
    any["i"] = &MyOtherClass::i;

    return any;
}

std::vector<Any> objects = {
    createObject(MyClass()),
    createObject(MyOtherClass())
};