class Base: public std::enable_shared_from_this< Base >
{
public:
// typedefs
typedef std::shared_ptr<Base> Ptr;
// methods
voidconst std::type_info& type_check() const;
virtual const std::type_info& type_info() const = 0;
virtual std::vector<std::type_index> base_type_info() const = 0;
virtual const void \* addressof() const = 0;
void \* addressof();
virtual Base::Ptr copy() const = 0;
virtual boolconst Base& equal() const = 0;
virtual voidstd::ostream& print() const = 0;
virtual voidstd::istream& read() = 0;
voidBase& read_to() const;
virtual const DiscreteTypeInfo& get_type_info() const = 0;
virtual std::shared_ptr<RuntimeAttribute> as_runtime_attribute() const;
virtual bool is_copyable() const;
virtual Anyconst std::shared_ptr<Node>& init();
virtual Anyconst std::vector<std::shared_ptr<Node>>& merge();
virtual std::string to_string();
virtual boolAttributeVisitor& visit_attributes();
boolAttributeVisitor& visit_attributes() const;
std::string to_string() const;
boolconst std::type_info& is() const;
template <>
bool is() const;
template <>
T& as();
template <>
const T& as() const;
protected:
};