#ifndef _RIVE_BACKBOARD_BASE_HPP_
#define _RIVE_BACKBOARD_BASE_HPP_
#include "rive/core.hpp"
namespace rive {
class BackboardBase : public Core {
protected:
    typedef Core Super;

public:
    static const uint16_t typeKey = 23;

    /// Helper to quickly determine if a core object extends another without RTTI
    /// at runtime.
    bool isTypeOf(uint16_t typeKey) const override {
        switch (typeKey) {
            case BackboardBase::typeKey: return true;
            default: return false;
        }
    }

    uint16_t coreType() const override { return typeKey; }

    Core* clone() const override;
    void copy(const BackboardBase& object) {}

    bool deserialize(uint16_t propertyKey, BinaryReader& reader) override { return false; }

protected:
};
} // namespace rive

#endif