IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
BaseDataItemNode.h
1 // BaseDataItemNode.h:
3 // -------------------
4 //
14 
15 #ifndef __IPSDKBASEDATA_BASEDATAITEMNODE_H__
16 #define __IPSDKBASEDATA_BASEDATAITEMNODE_H__
17 
18 #include <IPSDKBaseData/DataItem/BaseDataItem.h>
19 #include <IPSDKBaseData/ToolTip/BaseToolTip.h>
20 #include <boost/shared_ptr.hpp>
21 
22 namespace ipsdk {
23 
24 class DataItemNodeFactory;
25 
28 
30  public BaseToolTip
31 {
32  // declare serial class
34 
35 // predefined public types
36 public:
39  static const bool g_bIsColl = false;
40  static const bool g_bNode = true;
41  static const bool g_bLeaf = false;
42  static const eDataItemType::domain g_itemType = eDataItemType::eDIT_Node;
44 
45 protected:
48 
49 public:
51  virtual ~BaseDataItemNode() = 0;
52 
53 // methods
54 public:
56  eDataItemType getDataItemType() const;
57 
59  virtual const boost::filesystem::path getHeaderPath() const = 0;
60 
62  virtual const std::string getLibraryName() const = 0;
63 
65  virtual const ItemNames& getItemIds() const = 0;
66 
68  bool existsItem(const std::string& itemId) const;
69 
73  const BaseDataItem& getItem(const std::string& itemId) const;
74 
78  const std::string& getItemName(const std::string& itemId) const;
79 
83  const std::string& getItemToolTip(const std::string& itemId) const;
84 
85 protected:
87  template <typename T>
88  struct NodeAccessor {
89 
91  T _node;
92  };
93 
95  struct ItemInfoStr {
96 
98  ItemInfoStr(const std::string& itemName,
99  const std::string& itemToolTip) :
100  _itemName(itemName),
101  _itemToolTip(itemToolTip)
102  {}
103 
105  const std::string& _itemName;
106 
108  const std::string& _itemToolTip;
109  };
110 
112  struct ItemInfo {
113 
115  ItemInfo(const BaseDataItem& item,
116  const std::string& itemName,
117  const std::string& itemToolTip) :
118  _item(item),
119  _itemName(itemName),
120  _itemToolTip(itemToolTip)
121  {}
122 
125 
127  const std::string& _itemName;
128 
130  const std::string& _itemToolTip;
131  };
132 
134  typedef boost::shared_ptr<ItemInfo> ItemInfoPtr;
135 
138  virtual ItemInfoPtr getItemInfo(const std::string& itemId) const = 0;
139 
140 // attributes
141 protected:
142 
143 };
144 
147 
148 inline eDataItemType
150 {
151  return g_itemType;
152 }
153 
156 
157 } // end of namespace ipsdk
158 
159 #endif // __IPSDKBASEDATA_BASEDATAITEMNODE_H__
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
const BaseDataItem & _item
reference to item object
Definition: BaseDataItemNode.h:124
boost::shared_ptr< ItemInfo > ItemInfoPtr
shared pointer to item informations
Definition: BaseDataItemNode.h:134
static const eDataItemType::domain g_itemType
flags indicating item type
Definition: BaseDataItemNode.h:42
const std::string & _itemName
name of item
Definition: BaseDataItemNode.h:105
const std::string & _itemName
name of item
Definition: BaseDataItemNode.h:127
#define IPSDK_DECLARE_ABSTRACT_SERIAL_WITH_COPY(libraryName, className)
macro enabling serialization on abstract class
Definition: SerializationHdrMacro.h:91
const std::string & _itemToolTip
tooltip associated to item
Definition: BaseDataItemNode.h:130
structure used to access to node data
Definition: BaseDataItemNode.h:88
structure used to retrieve item informations
Definition: BaseDataItemNode.h:112
Base class for data item nodes.
Definition: BaseDataItemNode.h:29
std::set< std::string > ItemNames
collection of names or ids for items
Definition: DataItemTypes.h:143
structure used to retrieve item string informations
Definition: BaseDataItemNode.h:95
ItemInfoStr(const std::string &itemName, const std::string &itemToolTip)
initialization constructor
Definition: BaseDataItemNode.h:98
#define IPSDKBASEDATA_API
Import/Export macro for library IPSDKUtil.
Definition: IPSDKBaseDataExports.h:27
Base class for data items.
Definition: BaseDataItem.h:27
Base class for objects with name and tool tip informations.
Definition: BaseToolTip.h:27
ItemInfo(const BaseDataItem &item, const std::string &itemName, const std::string &itemToolTip)
initialization constructor
Definition: BaseDataItemNode.h:115
eDataItemType getDataItemType() const
retrieve data item type
Definition: BaseDataItemNode.h:149
Data item used to store simple values.
Definition: DataItemTypes.h:47
T _node
node data associated to accessor
Definition: BaseDataItemNode.h:91
eDataItemType
Enumerate describing data items type.
Definition: DataItemTypes.h:43
const std::string & _itemToolTip
tooltip associated to item
Definition: BaseDataItemNode.h:108