Infinity Engine v0.6.20
C++ API Documentation
Loading...
Searching...
No Matches
Base.hpp
1// INFINITY_API_PUBLIC
2
3#pragma once
4
5#include <Infinity/api.h>
6#include <Infinity/Types/TypeID.hpp>
7#include <Infinity/Types/Core/IOStreamLegible.hpp>
8
9#include <memory>
10
12{
42 class INFINITY_API_PUBLIC Base : public IOStreamLegible
43 {
44 public:
52 virtual ~Base();
53
73 virtual const Infinity::Types::TypeID& typeId() const;
74
75 virtual std::unique_ptr<Base> clone() const;
76
109 virtual std::istream& legibleDataRead(std::istream& in) override;
110
141 virtual std::ostream& legibleDataWrite(std::ostream& out) const override;
142
159 friend std::istream& operator>>(std::istream& in, Base& obj)
160 {
161 return obj.legibleDataRead(in);
162 }
163
179 friend std::ostream& operator<<(std::ostream& out, const Base& obj)
180 {
181 return obj.legibleDataWrite(out);
182 }
183 };
184
197 inline std::ostream& operator<<(std::ostream& out, const Infinity::Types::Core::Base*& v) { return out; }
198
211 inline std::istream& operator>>(std::istream& in, Infinity::Types::Core::Base*& v) { return in; }
212}
213
214// Register Base type in the type system
215INFINITY_TYPE(Infinity::Types::Core::Base)
Abstract base class for all Infinity Engine data types.
Definition Base.hpp:43
friend std::istream & operator>>(std::istream &in, Base &obj)
Stream extraction operator for single-line text input.
Definition Base.hpp:159
virtual ~Base()
Virtual destructor.
virtual std::istream & legibleDataRead(std::istream &in) override
Deserializes the object from a single-line text representation.
virtual const Infinity::Types::TypeID & typeId() const
Gets the runtime type identifier for this object.
virtual std::ostream & legibleDataWrite(std::ostream &out) const override
Serializes the object to a single-line text representation.
virtual std::unique_ptr< Base > clone() const
friend std::ostream & operator<<(std::ostream &out, const Base &obj)
Stream insertion operator for single-line text output.
Definition Base.hpp:179
Interface for types that support single-line text representation.
Definition IOStreamLegible.hpp:68
Definition Base.hpp:12
std::ostream & operator<<(std::ostream &out, const Infinity::Types::Core::Base *&v)
Stream insertion operator for Base pointers.
Definition Base.hpp:197
std::istream & operator>>(std::istream &in, Infinity::Types::Core::Base *&v)
Stream extraction operator for Base pointers.
Definition Base.hpp:211
Runtime type identifier for the Infinity type system.
Definition TypeID.hpp:71