2 #ifndef OPENGM_SPARSE_FUNCTION
3 #define OPENGM_SPARSE_FUNCTION
13 template<
class T,
class I,
class L,
class C>
14 struct FunctionRegistration<opengm::SparseFunction<T,I,L,C> > {
21 template<
class T,
class I,
class L,
class C>
22 class FunctionSerialization< opengm::SparseFunction<T,I,L,C> > {
28 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR >
30 template<
class INDEX_INPUT_ITERATOR ,
class VALUE_INPUT_ITERATOR>
35 template<
class T,
class I,
class L,
class C>
37 FunctionSerialization<opengm::SparseFunction<T,I,L,C> >::indexSequenceSize
44 template<
class T,
class I,
class L,
class C>
46 FunctionSerialization<opengm::SparseFunction<T,I,L,C> >::valueSequenceSize
54 template<
class T,
class I,
class L,
class C>
55 template<
class INDEX_OUTPUT_ITERATOR,
class VALUE_OUTPUT_ITERATOR >
57 FunctionSerialization<opengm::SparseFunction<T,I,L,C> >::serialize
60 INDEX_OUTPUT_ITERATOR indexOutIterator,
61 VALUE_OUTPUT_ITERATOR valueOutIterator
66 *indexOutIterator=src.
shape(i);
77 for(
size_t i=0;i<src.
container().size();++i) {
78 *indexOutIterator=srcIter->first;
79 *valueOutIterator=srcIter->second;
86 template<
class T,
class I,
class L,
class C>
87 template<
class INDEX_INPUT_ITERATOR,
class VALUE_INPUT_ITERATOR >
89 FunctionSerialization<opengm::SparseFunction<T,I,L,C> >::deserialize
91 INDEX_INPUT_ITERATOR indexOutIterator,
92 VALUE_INPUT_ITERATOR valueOutIterator,
96 const size_t dim=*indexOutIterator;
97 std::vector<size_t> shape(dim);
99 for(
size_t i=0;i<dim;++i) {
100 shape[i]=*indexOutIterator;
105 const size_t nNonDefault=*indexOutIterator;
108 for(
size_t i=0;i<nNonDefault;++i) {
110 dst.
container().insert(KeyValPairType(*indexOutIterator,*valueOutIterator));
119 #endif // OPENGM_SPARSE_FUNCTION
const size_t dimension() const
const ContainerType & container() const
const LabelType shape(const IndexType i) const
std::pair< KeyType, MappedType > KeyValPairType
const size_t FUNCTION_TYPE_ID_OFFSET
User-defined function have ids smaller than FUNCTION_TYPE_ID_OFFSET.
ValueType defaultValue() const