IAddInfoLayout.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/ColumnTypes.hpp"
5 #include "DM/Handle.hpp"
6 #include "DM/ObjectBase.hpp"
7 #include "DM/AutoLink.hpp" //enable autolink
8 
9 
10 DM_NAMESPACE_BEGIN
11 
12 /// \brief AddInfo layouts describe a set of attributes that can be attached to geometry objects
13 /**
14  Managing attributes, layout and views is a core feature of the DM library. Please refer to the
15  \ref dm_attributes section for implementation concepts and to the <a href="examples.html">examples</a>
16  section (attribute handling) for further details.
17 */
18 class DM_API IAddInfoLayout : public ObjectBase
19 {
20 public:
21  /// returns the predefined column name for a specific semantic.
22  static const char* getColumnName(ColumnSemantic semantic);
23  /// returns the column type of a predefined semantic
24  static ColumnType getColumnType(ColumnSemantic semantic);
25 
26  /// find the semantic enumerator based on a given column name
27  /// \return corresponding enumerator of ColumnSemantic::null if the given name isn't a predefined colum name
28  static ColumnSemantic getColumnSemantic(const char* name, bool caseSensitive = true);
29  /// find the type of a predefined column based on a given column name
30  /// \return corresponding enumerator of ColumnType::count if the given name isn't a predefined colum name
31  static ColumnType getColumnType(const char* name, bool caseSensitive = true);
32 
33 
34 protected:
35  virtual ~IAddInfoLayout() {}
36 
37 public:
38  virtual unsigned columns() const = 0;
39 
40  virtual const char* name(unsigned index) const = 0;
41  virtual ColumnType type(unsigned index) const = 0;
42  virtual ColumnSemantic semantic(unsigned index) const = 0;
43  virtual unsigned size(unsigned index) const = 0; ///< returns array size
44 
45  virtual int index(const char*) const = 0;
46  virtual int index(ColumnSemantic) const = 0;
47 };
48 
50 
51 DM_NAMESPACE_END
ColumnSemantic
Pre-defined attributes (attributes with semantic)
Definition: ColumnTypes.hpp:38
AddInfo layouts describe a set of attributes that can be attached to geometry objects.
Definition: IAddInfoLayout.hpp:18
Definition: Handle.hpp:427
ColumnType
Supported attribute type.
Definition: ColumnTypes.hpp:8
Definition: M/c++_api/inc/DM/ObjectBase.hpp:8