IAddInfoContainer.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/IAddInfo.hpp"
5 
6 DM_NAMESPACE_BEGIN
7 
8 /// \brief Interface of an add info container object (used by geometry objects)
9 /**
10  Managing attributes, layout and views is a core feature of the DM library. Please refer to the
11  \ref dm_attributes section for implementation concepts and to the <a href="examples.html">examples</a>
12  section (attribute handling) for further details.
13 */
14 class DM_API IAddInfoContainer
15 {
16 public:
17  virtual ~IAddInfoContainer() {}
18 
19  virtual bool hasInfo() const = 0;
20  virtual const IAddInfo &info() const = 0;
21  virtual IAddInfo &info() = 0;
22 
23  virtual AddInfoHandle getAddInfo() const = 0;
24  virtual void setAddInfo(const AddInfoHandle &) = 0;
25 
26  /// \brief applies a certain layout view onto the current addinfo object
27  /**
28  for further details see IAddInfo::setView
29  @param[in] layout view layout that should be set
30  @param[in] readOnly flag if the layout of storage object should be changed, in case the view layout is not a true subset of the storage layout
31  */
32  virtual void setAddInfoView(const AddInfoLayoutHandle &layout, bool readOnly) = 0;
33  /// \brief removes any view layout and sets the true storage layout as (internal) layout
34  virtual void restoreAddInfoFullLayout() = 0;
35 
36  /// \brief internal creates a new addinfo object with the provide view layout that refers to the same storage object
37  /**
38  for further details see IAddInfo::cloneView
39  @param[in] layout view layout that should be set
40  @param[in] readOnly flag if the layout of storage object should be changed, in case the view layout is not a true subset of the storage layout
41  */
42  virtual void cloneAddInfoView(const AddInfoLayoutHandle &layout, bool readOnly) const = 0;
43  /// \brief internal creates a new addinfo object with the provide view layout and secures that the storage object contains the dataLayout
44  /**
45  for further details see IAddInfo::cloneView
46  @param[in] viewLayout view layout that should be set
47  @param[in] dataLayout defines columns that have to exist in the storage object
48  */
49  virtual void cloneAddInfoView(const AddInfoLayoutHandle &viewLayout, const AddInfoLayoutHandle &dataLayout) const = 0;
50  /// \brief internal creates a new addinfo object using the true storage layout that referring to the same storage object
51  virtual void cloneAddInfoFullLayout() const = 0;
52 
53  ///optimised variante to access a view column
54  /// \return true is value is not null otherwise false
55  virtual bool getAsDoubleByView(const AddInfoLayoutHandle &, unsigned index, double &value) const = 0;
56  virtual bool getAsInt64ByView(const AddInfoLayoutHandle &, unsigned index, int64_t &value) const = 0;
57 
58  /// removes the specified attributs from current object
59  virtual void eraseLayout(const AddInfoLayoutHandle &) = 0;
60 
61 };
62 
63 DM_NAMESPACE_END
AddInfo objects store a set of attributes.
Definition: M/c++_api/inc/DM/IAddInfo.hpp:14
Definition: Handle.hpp:427
Interface of an add info container object (used by geometry objects)
Definition: IAddInfoContainer.hpp:14
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75