1#ifndef art__paperback__carousel__object_model_hxx_
2#define art__paperback__carousel__object_model_hxx_
4#include <art/paperback/types.hxx>
5#include <art/paperback/forward.hxx>
6#include <art/paperback/visitor.hxx>
138 public std::enable_shared_from_this<Container<T>>
141 template<
typename... Args>
143 Container(Args&&... args)
144 : _value{std::forward<Args>(args)...}
159 std::type_info
const&
180 _value = other.get<T>();
186 return _value == other.get<T>();
190 do_accept(Visitor& v)
override
196 do_accept(Visitor& v)
const override
204 return _value.owner();
210 return _value.owner();
216 return _value.attach(
owner);
222 return make_shared<Container<T>>(_value);
240 public std::enable_shared_from_this<Reference>
257 std::type_info
const&
258 type()
const override;
270 owner()
const override;
278 clone()
const override;
346 Owner(shared_ptr<Container_base>);
384 shared_ptr<Container_base> _container;
Represents a COS-format file.
Definition file.hxx:19
virtual Owner const * owner() const =0
Access node owner.
virtual ~Abstract() noexcept
Destructor.
Definition object-model.cxx:14
virtual std::type_info const & type() const =0
Get contained type info.
virtual Owner * owner()=0
Access node owner.
virtual Container_base & container()=0
Get container.
virtual Container_base const & container() const =0
Get container.
virtual shared_ptr< Abstract > clone() const =0
Clone.
Abstract()
Constructor.
Definition object-model.cxx:18
virtual void attach(Owner &)=0
Attach node to owner.
Base class for containers.
Definition object-model.hxx:82
Container_base()
Constructor.
Definition object-model.cxx:29
T const & get() const
Get.
Definition object-model.hxx:101
T & get()
Get.
Definition object-model.hxx:92
~Container_base() noexcept override
Destructor.
Definition object-model.cxx:25
Definition object-model.hxx:139
std::type_info const & type() const override
Get contained type info.
Definition object-model.hxx:160
Owner * owner() override
Access node owner.
Definition object-model.hxx:202
Container_base & container() override
Get container.
Definition object-model.hxx:148
Container_base const & container() const override
Get container.
Definition object-model.hxx:154
Owner const * owner() const override
Access node owner.
Definition object-model.hxx:208
void attach(Owner &owner) override
Attach node to owner.
Definition object-model.hxx:214
shared_ptr< Abstract > clone() const override
Clone.
Definition object-model.hxx:220
Owner of an indirect object.
Definition object-model.hxx:341
bool modified() const
Check if modified.
Definition object-model.cxx:195
void mark_as_modified()
Mark as modified.
Definition object-model.cxx:202
Container_base & container()
Access container.
Definition object-model.cxx:181
Owner(shared_ptr< Container_base >)
Constructor.
Definition object-model.cxx:165
bool _modified
Change tracking.
Definition object-model.hxx:388
void reset()
Reset modification mark.
Definition object-model.cxx:209
~Owner() noexcept
Destructor.
Definition object-model.cxx:176
Identity const & identity() const
Access the identity of this reference.
Definition object-model.cxx:54
std::type_info const & type() const override
Get contained type info.
Definition object-model.cxx:61
Container_base & container() override
Get container.
Definition object-model.cxx:68
shared_ptr< Abstract > clone() const override
Clone.
Definition object-model.cxx:104
Owner * owner() override
Access node owner.
Definition object-model.cxx:82
Reference(File &, Identity)
Constructor.
Definition object-model.cxx:40
File & file() const
Access parent file.
Definition object-model.cxx:47
void attach(Owner &owner) override
Attach node to owner.
Definition object-model.cxx:96
~Value_base()
Destructor.
Definition object-model.cxx:149
void attach(Owner &)
Attach value to owner.
Definition object-model.cxx:116
Value_base()
Constructor.
Definition object-model.cxx:145
Owner * owner()
Access owner, if any.
Definition object-model.cxx:130
virtual void attach_children(Owner &)
Attach any children.
Definition object-model.cxx:156
Virtual base class for visitors.
Definition visitor.hxx:10
COS object model namespace.
Definition object-model.cxx:8
void accept(Object &visitee, Visitor &v)
Accept visitor on object.
Definition object.cxx:312
Represents the identity of an indirect object.
Definition types.hxx:81