IPSDK  4_1_0_2
IPSDK : Image Processing Software Development Kit
DynamicSplitOperators.h
Go to the documentation of this file.
1 // DynamicSplitOperators.h:
3 // ------------------------
4 //
14 
15 #ifndef __IPSDKBASEPROCESSING_DYNAMICSPLITOPERATORS_H__
16 #define __IPSDKBASEPROCESSING_DYNAMICSPLITOPERATORS_H__
17 
18 #include <IPSDKBaseProcessing/DataSplit/Dynamic/Instances/DynamicNoSplit.h>
19 #include <IPSDKBaseProcessing/DataSplit/Dynamic/Instances/DynamicByCopyResultSplit.h>
20 #include <IPSDKBaseProcessing/DataSplit/Dynamic/Instances/DynamicByCreationResultSplit.h>
21 #include <IPSDKBaseProcessing/DataSplit/Dynamic/Instances/DynamicByRangeDataSplit.h>
22 #include <boost/make_shared.hpp>
23 
24 namespace ipsdk {
25 namespace processor {
26 
29 
31 template <typename TProcessor, typename TAttribute>
32 boost::shared_ptr<DynamicNoSplit<TProcessor, TAttribute> >
33 dynamicNoSplit(const typename TAttribute::StorageType& value)
34 {
35  // create and initialize split operator
37  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
38  pDataSplit->init(value);
39 
40  return pDataSplit;
41 }
42 
45 template <typename TProcessor, typename TAttribute>
46 boost::shared_ptr<DynamicByCreationResultSplit<TProcessor, TAttribute> >
48 {
49  // create used default value
50  typename TAttribute::StorageType pDefaultValue(boost::make_shared<typename TAttribute::StorageType::element_type>());
51 
52  // create and initialize split operator
54  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
55  pDataSplit->init(pResultsColl);
56 
57  return pDataSplit;
58 }
59 template <typename TProcessor, typename TAttribute>
60 boost::shared_ptr<DynamicByCreationResultSplit<TProcessor, TAttribute> >
63 {
64  // create and initialize split operator
66  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
67  pDataSplit->init(pResultsColl, pCreationFun);
68 
69  return pDataSplit;
70 }
71 template <typename TProcessor, typename TAttribute>
72 boost::shared_ptr<DynamicByCopyResultSplit<TProcessor, TAttribute> >
74  const typename TAttribute::StorageType& pDefaultValue)
75 {
76  // create and initialize split operator
78  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
79  pDataSplit->init(pResultsColl, pDefaultValue);
80 
81  return pDataSplit;
82 }
83 template <typename TProcessor, typename TAttribute>
84 boost::shared_ptr<DynamicByCopyResultSplit<TProcessor, TAttribute> >
86  const typename TAttribute::StorageType& pDefaultValue,
88 {
89  // create and initialize split operator
91  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
92  pDataSplit->init(pResultsColl, pDefaultValue, pCopyFunction);
93 
94  return pDataSplit;
95 }
97 
100 template <typename TProcessor, typename TAttribute, typename CollField, typename ValueField>
101 boost::shared_ptr<DynamicByRangeDataSplit<TProcessor, TAttribute, CollField, ValueField> >
102 dynamicByRangeDataSplit(const typename TAttribute::StorageType& pDataItem,
103  const IdxCollMapPtr& pIdxCollMap)
104 {
105  // create and initialize split operator
107  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
108  pDataSplit->init(pDataItem, pIdxCollMap);
109 
110  return pDataSplit;
111 }
112 template <typename TProcessor, typename TAttribute, typename CollField, typename ValueField>
113 boost::shared_ptr<DynamicByRangeDataSplit<TProcessor, TAttribute, CollField, ValueField> >
114 dynamicByRangeDataSplit(const typename TAttribute::StorageType& pDataItem)
115 {
116  // create and initialize split operator
118  boost::shared_ptr<DataSplit> pDataSplit = boost::make_shared<DataSplit>();
119  pDataSplit->init(pDataItem);
120 
121  return pDataSplit;
122 }
124 
127 
128 } // end of namespace processor
129 } // end of namespace ipsdk
130 
131 #endif // __IPSDKBASEPROCESSING_DYNAMICSPLITOPERATORS_H__
boost::function< ParameterType(const ValueType &)> CopyFunType
used copy fonction type
Definition: DynamicByCopyResultSplit.h:63
void init(const ParameterType &value)
object initialization method
Definition: DynamicNoSplit.h:120
Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
void init(const StorageType &pDataItem, const IdxCollMapPtr &pIdxCollMap)
object initialization method
Definition: DynamicByRangeDataSplit.h:142
boost::shared_ptr< ParameterColl > ParameterCollPtr
shared pointer to collection of elements associated to dynamic split
Definition: DynamicByCreationResultSplit.h:60
void init(const ParameterCollPtr &pParameterColl)
object initialization method
Definition: DynamicByCreationResultSplit.h:146
boost::shared_ptr< ParameterColl > ParameterCollPtr
shared pointer to collection of elements associated to dynamic split
Definition: DynamicByCopyResultSplit.h:60
boost::function< ParameterType(const ipUInt64, const ipUInt64)> CreationFunType
used creation fonction type
Definition: DynamicByCreationResultSplit.h:63
boost::shared_ptr< IdxCollMap > IdxCollMapPtr
shared pointer to collections of indices
Definition: DynamicSplitTypes.h:66
boost::shared_ptr< DynamicByRangeDataSplit< TProcessor, TAttribute, CollField, ValueField > > dynamicByRangeDataSplit(const typename TAttribute::StorageType &pDataItem, const IdxCollMapPtr &pIdxCollMap)
create a by range split data operation used for data dispatch
Definition: DynamicSplitOperators.h:102
Template class for results splitted data used for dynamic data dispatch.
Definition: DynamicByCreationResultSplit.h:35
void init(const ParameterCollPtr &pParameterColl, const ParameterType &pDefaultValue)
object initialization method
Definition: DynamicByCopyResultSplit.h:146
Template class for un-splitted data used for dynamic data dispatch.
Definition: DynamicNoSplit.h:27
Template class for results splitted data used for dynamic data dispatch.
Definition: DynamicByCopyResultSplit.h:35
boost::shared_ptr< DynamicByCopyResultSplit< TProcessor, TAttribute > > dynamicByCopyResultSplit(const typename DynamicByCopyResultSplit< TProcessor, TAttribute >::ParameterCollPtr &pResultsColl, const typename TAttribute::StorageType &pDefaultValue)
create a results splitted data operation used for data dispatch
Definition: DynamicSplitOperators.h:73
Template class for split range data used for dynamic data dispatch.
Definition: DynamicByRangeDataSplit.h:33
boost::shared_ptr< DynamicByCreationResultSplit< TProcessor, TAttribute > > dynamicByCreationResultSplit(const typename DynamicByCreationResultSplit< TProcessor, TAttribute >::ParameterCollPtr &pResultsColl)
create a results splitted data operation used for data dispatch
Definition: DynamicSplitOperators.h:47
boost::shared_ptr< DynamicNoSplit< TProcessor, TAttribute > > dynamicNoSplit(const typename TAttribute::StorageType &value)
create an un-splitted data operation used for data dispatch
Definition: DynamicSplitOperators.h:33