/* * TupleConfig-inl.h * * Created on: Jan 14, 2010 * Author: richard */ #pragma once #include "LieConfig-inl.h" #include "TupleConfig.h" #define INSTANTIATE_PAIR_CONFIG(J1,X1,J2,X2) \ /*INSTANTIATE_LIE_CONFIG(J1,X1);*/ \ /*INSTANTIATE_LIE_CONFIG(J2,X2);*/ \ template class PairConfig; \ /*template void PairConfig::print(const std::string&) const;*/ \ template PairConfig expmap(PairConfig, const VectorConfig&); namespace gtsam { /** PairConfig implementations */ /* ************************************************************************* */ template void PairConfig::print(const std::string& s) const { std::cout << "TupleConfig " << s << ", size " << size_ << "\n"; first().print(s + "Config1: "); second().print(s + "Config2: "); } /* ************************************************************************* */ template void PairConfig::insert(const PairConfig& config) { for (typename Config1::const_iterator it = config.first().begin(); it!=config.first().end(); it++) { insert(it->first, it->second); } for (typename Config2::const_iterator it = config.second().begin(); it!=config.second().end(); it++) { insert(it->first, it->second); } } /** TupleConfigN Implementations */ /* ************************************************************************* */ template TupleConfig2::TupleConfig2(const TupleConfig2& config) : TupleConfig >(config) {} template TupleConfig2::TupleConfig2(const Config1& cfg1, const Config2& cfg2) : TupleConfig >( cfg1, TupleConfigEnd(cfg2)) {} template TupleConfig3::TupleConfig3(const TupleConfig3& config) : TupleConfig > >(config) {} template TupleConfig3::TupleConfig3(const Config1& cfg1, const Config2& cfg2, const Config3& cfg3) : TupleConfig > >( cfg1, TupleConfig >( cfg2, TupleConfigEnd(cfg3))) {} template TupleConfig4::TupleConfig4(const TupleConfig4& config) : TupleConfig > > >(config) {} template TupleConfig4::TupleConfig4(const Config1& cfg1, const Config2& cfg2, const Config3& cfg3,const Config4& cfg4) : TupleConfig > > >( cfg1, TupleConfig > >( cfg2, TupleConfig >( cfg3, TupleConfigEnd(cfg4)))) {} template TupleConfig5::TupleConfig5(const TupleConfig5& config) : TupleConfig > > > >(config) {} template TupleConfig5::TupleConfig5(const Config1& cfg1, const Config2& cfg2, const Config3& cfg3, const Config4& cfg4, const Config5& cfg5) : TupleConfig > > > >( cfg1, TupleConfig > > >( cfg2, TupleConfig > >( cfg3, TupleConfig >( cfg4, TupleConfigEnd(cfg5))))) {} template TupleConfig6::TupleConfig6(const TupleConfig6& config) : TupleConfig > > > > >(config) {} template TupleConfig6::TupleConfig6(const Config1& cfg1, const Config2& cfg2, const Config3& cfg3, const Config4& cfg4, const Config5& cfg5, const Config6& cfg6) : TupleConfig > > > > >( cfg1, TupleConfig > > > >( cfg2, TupleConfig > > >( cfg3, TupleConfig > >( cfg4, TupleConfig >( cfg5, TupleConfigEnd(cfg6)))))) {} }