/* ---------------------------------------------------------------------------- * GTSAM Copyright 2010, Georgia Tech Research Corporation, * Atlanta, Georgia 30332-0415 * All Rights Reserved * Authors: Frank Dellaert, et al. (see THANKS for the full author list) * See LICENSE for the license information * -------------------------------------------------------------------------- */ /** * @file TupleValues-inl.h * @author Richard Roberts * @author Manohar Paluri * @author Alex Cunningham */ #pragma once #include #include // TupleValues instantiations for N = 1-6 #define INSTANTIATE_TUPLE_CONFIG1(Values1) \ template class TupleValues1; #define INSTANTIATE_TUPLE_CONFIG2(Values1, Values2) \ template class TupleValues2; #define INSTANTIATE_TUPLE_CONFIG3(Values1, Values2, Values3) \ template class TupleValues3; #define INSTANTIATE_TUPLE_CONFIG4(Values1, Values2, Values3, Values4) \ template class TupleValues4; #define INSTANTIATE_TUPLE_CONFIG5(Values1, Values2, Values3, Values4, Values5) \ template class TupleValues5; #define INSTANTIATE_TUPLE_CONFIG6(Values1, Values2, Values3, Values4, Values5, Values6) \ template class TupleValues6; namespace gtsam { /* ************************************************************************* */ /** TupleValuesN Implementations */ /* ************************************************************************* */ /* ************************************************************************* */ /** TupleValues 1 */ template TupleValues1::TupleValues1(const TupleValues1& values) : TupleValuesEnd (values) {} template TupleValues1::TupleValues1(const VALUES1& cfg1) : TupleValuesEnd (cfg1) {} template TupleValues1::TupleValues1(const TupleValuesEnd& values) : TupleValuesEnd(values) {} /* ************************************************************************* */ /** TupleValues 2 */ template TupleValues2::TupleValues2(const TupleValues2& values) : TupleValues >(values) {} template TupleValues2::TupleValues2(const VALUES1& cfg1, const VALUES2& cfg2) : TupleValues >( cfg1, TupleValuesEnd(cfg2)) {} template TupleValues2::TupleValues2(const TupleValues >& values) : TupleValues >(values) {} /* ************************************************************************* */ /** TupleValues 3 */ template TupleValues3::TupleValues3( const TupleValues3& values) : TupleValues > >(values) {} template TupleValues3::TupleValues3( const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3) : TupleValues > >( cfg1, TupleValues >( cfg2, TupleValuesEnd(cfg3))) {} template TupleValues3::TupleValues3( const TupleValues > >& values) : TupleValues > >(values) {} /* ************************************************************************* */ /** TupleValues 4 */ template TupleValues4::TupleValues4( const TupleValues4& values) : TupleValues > > >(values) {} template TupleValues4::TupleValues4( const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3,const VALUES4& cfg4) : TupleValues > > >( cfg1, TupleValues > >( cfg2, TupleValues >( cfg3, TupleValuesEnd(cfg4)))) {} template TupleValues4::TupleValues4( const TupleValues > > >& values) : TupleValues > > >(values) {} /* ************************************************************************* */ /** TupleValues 5 */ template TupleValues5::TupleValues5( const TupleValues5& values) : TupleValues > > > >(values) {} template TupleValues5::TupleValues5( const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3, const VALUES4& cfg4, const VALUES5& cfg5) : TupleValues > > > >( cfg1, TupleValues > > >( cfg2, TupleValues > >( cfg3, TupleValues >( cfg4, TupleValuesEnd(cfg5))))) {} template TupleValues5::TupleValues5( const TupleValues > > > >& values) : TupleValues > > > >(values) {} /* ************************************************************************* */ /** TupleValues 6 */ template TupleValues6::TupleValues6( const TupleValues6& values) : TupleValues > > > > >(values) {} template TupleValues6::TupleValues6( const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3, const VALUES4& cfg4, const VALUES5& cfg5, const VALUES6& cfg6) : TupleValues > > > > >( cfg1, TupleValues > > > >( cfg2, TupleValues > > >( cfg3, TupleValues > >( cfg4, TupleValues >( cfg5, TupleValuesEnd(cfg6)))))) {} template TupleValues6::TupleValues6( const TupleValues > > > > >& values) : TupleValues > > > > >(values) {} }