189 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			C++
		
	
	
			
		
		
	
	
			189 lines
		
	
	
		
			8.6 KiB
		
	
	
	
		
			C++
		
	
	
| /* ----------------------------------------------------------------------------
 | |
| 
 | |
|  * 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 <gtsam/nonlinear/LieValues-inl.h>
 | |
| #include <gtsam/nonlinear/TupleValues.h>
 | |
| 
 | |
| // TupleValues instantiations for N = 1-6
 | |
| #define INSTANTIATE_TUPLE_CONFIG1(Values1) \
 | |
| 		template class TupleValues1<Values1>;
 | |
| 
 | |
| #define INSTANTIATE_TUPLE_CONFIG2(Values1, Values2) \
 | |
| 		template class TupleValues2<Values1, Values2>;
 | |
| 
 | |
| #define INSTANTIATE_TUPLE_CONFIG3(Values1, Values2, Values3) \
 | |
| 		template class TupleValues3<Values1, Values2, Values3>;
 | |
| 
 | |
| #define INSTANTIATE_TUPLE_CONFIG4(Values1, Values2, Values3, Values4) \
 | |
| 		template class TupleValues4<Values1, Values2, Values3, Values4>;
 | |
| 
 | |
| #define INSTANTIATE_TUPLE_CONFIG5(Values1, Values2, Values3, Values4, Values5) \
 | |
| 		template class TupleValues5<Values1, Values2, Values3, Values4, Values5>;
 | |
| 
 | |
| #define INSTANTIATE_TUPLE_CONFIG6(Values1, Values2, Values3, Values4, Values5, Values6) \
 | |
| 		template class TupleValues6<Values1, Values2, Values3, Values4, Values5, Values6>;
 | |
| 
 | |
| 
 | |
| namespace gtsam {
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValuesN Implementations */
 | |
| /* ************************************************************************* */
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 1 */
 | |
| template<class VALUES1>
 | |
| TupleValues1<VALUES1>::TupleValues1(const TupleValues1<VALUES1>& values) :
 | |
| 		  TupleValuesEnd<VALUES1> (values) {}
 | |
| 
 | |
| template<class VALUES1>
 | |
| TupleValues1<VALUES1>::TupleValues1(const VALUES1& cfg1) :
 | |
| 			  TupleValuesEnd<VALUES1> (cfg1) {}
 | |
| 
 | |
| template<class VALUES1>
 | |
| TupleValues1<VALUES1>::TupleValues1(const TupleValuesEnd<VALUES1>& values) :
 | |
| 	TupleValuesEnd<VALUES1>(values) {}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 2 */
 | |
| template<class VALUES1, class VALUES2>
 | |
| TupleValues2<VALUES1, VALUES2>::TupleValues2(const TupleValues2<VALUES1, VALUES2>& values) :
 | |
| 		  TupleValues<VALUES1, TupleValuesEnd<VALUES2> >(values) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2>
 | |
| TupleValues2<VALUES1, VALUES2>::TupleValues2(const VALUES1& cfg1, const VALUES2& cfg2) :
 | |
| 			  TupleValues<VALUES1, TupleValuesEnd<VALUES2> >(
 | |
| 					  cfg1, TupleValuesEnd<VALUES2>(cfg2)) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2>
 | |
| TupleValues2<VALUES1, VALUES2>::TupleValues2(const TupleValues<VALUES1, TupleValuesEnd<VALUES2> >& values) :
 | |
| 	TupleValues<VALUES1, TupleValuesEnd<VALUES2> >(values) {}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 3 */
 | |
| template<class VALUES1, class VALUES2, class VALUES3>
 | |
| TupleValues3<VALUES1, VALUES2, VALUES3>::TupleValues3(
 | |
| 		const TupleValues3<VALUES1, VALUES2, VALUES3>& values) :
 | |
| 		  TupleValues<VALUES1, TupleValues<VALUES2, TupleValuesEnd<VALUES3> > >(values) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3>
 | |
| TupleValues3<VALUES1, VALUES2, VALUES3>::TupleValues3(
 | |
| 		const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3) :
 | |
| 			  TupleValues<VALUES1, TupleValues<VALUES2, TupleValuesEnd<VALUES3> > >(
 | |
| 					  cfg1, TupleValues<VALUES2, TupleValuesEnd<VALUES3> >(
 | |
| 							  cfg2, TupleValuesEnd<VALUES3>(cfg3))) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3>
 | |
| TupleValues3<VALUES1, VALUES2, VALUES3>::TupleValues3(
 | |
| 		const TupleValues<VALUES1, TupleValues<VALUES2, TupleValuesEnd<VALUES3> > >& values) :
 | |
| 		  TupleValues<VALUES1, TupleValues<VALUES2, TupleValuesEnd<VALUES3> > >(values) {}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 4 */
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4>
 | |
| TupleValues4<VALUES1, VALUES2, VALUES3, VALUES4>::TupleValues4(
 | |
| 		const TupleValues4<VALUES1, VALUES2, VALUES3, VALUES4>& values) :
 | |
| 	TupleValues<VALUES1, TupleValues<VALUES2,
 | |
| 		TupleValues<VALUES3, TupleValuesEnd<VALUES4> > > >(values) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4>
 | |
| TupleValues4<VALUES1, VALUES2, VALUES3, VALUES4>::TupleValues4(
 | |
| 		const VALUES1& cfg1, const VALUES2& cfg2,
 | |
| 		const VALUES3& cfg3,const VALUES4& cfg4) :
 | |
| 		  TupleValues<VALUES1, TupleValues<VALUES2,
 | |
| 			  TupleValues<VALUES3, TupleValuesEnd<VALUES4> > > >(
 | |
| 				  cfg1, TupleValues<VALUES2, TupleValues<VALUES3, TupleValuesEnd<VALUES4> > >(
 | |
| 						  cfg2, TupleValues<VALUES3, TupleValuesEnd<VALUES4> >(
 | |
| 								  cfg3, TupleValuesEnd<VALUES4>(cfg4)))) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4>
 | |
| TupleValues4<VALUES1, VALUES2, VALUES3, VALUES4>::TupleValues4(
 | |
| 		const TupleValues<VALUES1, TupleValues<VALUES2,
 | |
| 				TupleValues<VALUES3, TupleValuesEnd<VALUES4> > > >& values) :
 | |
| 	TupleValues<VALUES1, TupleValues<VALUES2,TupleValues<VALUES3,
 | |
| 		TupleValuesEnd<VALUES4> > > >(values) {}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 5 */
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4, class VALUES5>
 | |
| TupleValues5<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5>::TupleValues5(
 | |
| 		const TupleValues5<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5>& values) :
 | |
| 		  TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 			  TupleValues<VALUES4, TupleValuesEnd<VALUES5> > > > >(values) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4, class VALUES5>
 | |
| TupleValues5<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5>::TupleValues5(
 | |
| 		const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3,
 | |
| 				   const VALUES4& cfg4, const VALUES5& cfg5) :
 | |
| 						   TupleValues<VALUES1, TupleValues<VALUES2,
 | |
| 						   TupleValues<VALUES3, TupleValues<VALUES4,
 | |
| 						   TupleValuesEnd<VALUES5> > > > >(
 | |
| 								   cfg1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 										 TupleValues<VALUES4, TupleValuesEnd<VALUES5> > > >(
 | |
| 										   cfg2, TupleValues<VALUES3, TupleValues<VALUES4, TupleValuesEnd<VALUES5> > >(
 | |
| 												   cfg3, TupleValues<VALUES4, TupleValuesEnd<VALUES5> >(
 | |
| 														   cfg4, TupleValuesEnd<VALUES5>(cfg5))))) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3, class VALUES4, class VALUES5>
 | |
| TupleValues5<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5>::TupleValues5(
 | |
| 		const TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 			  TupleValues<VALUES4, TupleValuesEnd<VALUES5> > > > >& values) :
 | |
| 	TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 	TupleValues<VALUES4, TupleValuesEnd<VALUES5> > > > >(values) {}
 | |
| 
 | |
| /* ************************************************************************* */
 | |
| /** TupleValues 6 */
 | |
| template<class VALUES1, class VALUES2, class VALUES3,
 | |
| 		 class VALUES4, class VALUES5, class VALUES6>
 | |
| TupleValues6<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5, VALUES6>::TupleValues6(
 | |
| 		const TupleValues6<VALUES1, VALUES2, VALUES3,
 | |
| 						   VALUES4, VALUES5, VALUES6>& values) :
 | |
| 			  TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 			  TupleValues<VALUES4, TupleValues<VALUES5,
 | |
| 			  TupleValuesEnd<VALUES6> > > > > >(values) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3,
 | |
| 		 class VALUES4, class VALUES5, class VALUES6>
 | |
| TupleValues6<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5, VALUES6>::TupleValues6(
 | |
| 		const VALUES1& cfg1, const VALUES2& cfg2, const VALUES3& cfg3,
 | |
| 		const VALUES4& cfg4, const VALUES5& cfg5, const VALUES6& cfg6) :
 | |
| 		TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 		TupleValues<VALUES4, TupleValues<VALUES5, TupleValuesEnd<VALUES6> > > > > >(
 | |
| 				cfg1, TupleValues<VALUES2, TupleValues<VALUES3, TupleValues<VALUES4,
 | |
| 				      TupleValues<VALUES5, TupleValuesEnd<VALUES6> > > > >(
 | |
| 						cfg2, TupleValues<VALUES3, TupleValues<VALUES4, TupleValues<VALUES5,
 | |
| 							  TupleValuesEnd<VALUES6> > > >(
 | |
| 								cfg3, TupleValues<VALUES4, TupleValues<VALUES5,
 | |
| 								      TupleValuesEnd<VALUES6> > >(
 | |
| 										cfg4, TupleValues<VALUES5, TupleValuesEnd<VALUES6> >(
 | |
| 												cfg5, TupleValuesEnd<VALUES6>(cfg6)))))) {}
 | |
| 
 | |
| template<class VALUES1, class VALUES2, class VALUES3,
 | |
| 	     class VALUES4, class VALUES5, class VALUES6>
 | |
| TupleValues6<VALUES1, VALUES2, VALUES3, VALUES4, VALUES5, VALUES6>::TupleValues6(
 | |
| 		const TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 		      TupleValues<VALUES4, TupleValues<VALUES5,
 | |
| 		      TupleValuesEnd<VALUES6> > > > > >& values) :
 | |
| 	TupleValues<VALUES1, TupleValues<VALUES2, TupleValues<VALUES3,
 | |
| 	TupleValues<VALUES4, TupleValues<VALUES5,
 | |
| 	TupleValuesEnd<VALUES6> > > > > >(values) {}
 | |
| 
 | |
| }
 |