Skip to content

gongminmin/NanoRtti

Repository files navigation

NanoRtti

License Build Status

The NanoRtti library provides customized run-time type information (RTTI) support. It can provide the RTTI ability on specific classes when the compiler one is turned off. It's cross platform, doesn't have 3rd party dependency. And the core method it uses is stable across the binary modules.

Example

Add the NANO_RTTI_REGISTER_RUNTIME_CLASS to the public section of classes that need RTTI. Its parameters are base classes. Here is an example.

    class Base
    {
    public:
        NANO_RTTI_REGISTER_RUNTIME_CLASS();
    
        virtual ~Base(){};
    };

    class Derived : public Base
    {
    public:
        NANO_RTTI_REGISTER_RUNTIME_CLASS(Base);
    };

Now you can use DynCast as a drop-in replacement of dynamic_cast, or TypeId() to get the type info of a type.

    Base* pb = new Derived;
    Derived* pd = DynCast<Derived*>(pb);
    ...

    TypeInfo ty = TypeId<Derived>();
    ...

License

NanoRtti is distributed under the terms of MIT license. See LICENSE for details.

Releases

No releases published

Packages

No packages published