remove export, typo
							parent
							
								
									eb4309d264
								
							
						
					
					
						commit
						deae4499a1
					
				|  | @ -604,7 +604,7 @@ namespace gtsam { | ||||||
|     using MXChoice = typename DecisionTree<M, X>::Choice; |     using MXChoice = typename DecisionTree<M, X>::Choice; | ||||||
|     auto choice = boost::dynamic_pointer_cast<const MXChoice>(f); |     auto choice = boost::dynamic_pointer_cast<const MXChoice>(f); | ||||||
|     if (!choice) throw std::invalid_argument( |     if (!choice) throw std::invalid_argument( | ||||||
|         "DecisionTree::Convert: Invalid NodePtr"); |         "DecisionTree::convertFrom: Invalid NodePtr"); | ||||||
| 
 | 
 | ||||||
|     // get new label
 |     // get new label
 | ||||||
|     const M oldLabel = choice->label(); |     const M oldLabel = choice->label(); | ||||||
|  | @ -634,6 +634,8 @@ namespace gtsam { | ||||||
| 
 | 
 | ||||||
|       using Choice = typename DecisionTree<L, Y>::Choice; |       using Choice = typename DecisionTree<L, Y>::Choice; | ||||||
|       auto choice = boost::dynamic_pointer_cast<const Choice>(node); |       auto choice = boost::dynamic_pointer_cast<const Choice>(node); | ||||||
|  |       if (!choice) | ||||||
|  |         throw std::invalid_argument("DecisionTree::Visit: Invalid NodePtr"); | ||||||
|       for (auto&& branch : choice->branches()) (*this)(branch);  // recurse!
 |       for (auto&& branch : choice->branches()) (*this)(branch);  // recurse!
 | ||||||
|     } |     } | ||||||
|   }; |   }; | ||||||
|  | @ -663,6 +665,8 @@ namespace gtsam { | ||||||
| 
 | 
 | ||||||
|       using Choice = typename DecisionTree<L, Y>::Choice; |       using Choice = typename DecisionTree<L, Y>::Choice; | ||||||
|       auto choice = boost::dynamic_pointer_cast<const Choice>(node); |       auto choice = boost::dynamic_pointer_cast<const Choice>(node); | ||||||
|  |       if (!choice) | ||||||
|  |         throw std::invalid_argument("DecisionTree::VisitWith: Invalid NodePtr"); | ||||||
|       for (size_t i = 0; i < choice->nrChoices(); i++) { |       for (size_t i = 0; i < choice->nrChoices(); i++) { | ||||||
|         choices[choice->label()] = i;    // Set assignment for label to i
 |         choices[choice->label()] = i;    // Set assignment for label to i
 | ||||||
|         (*this)(choice->branches()[i]);  // recurse!
 |         (*this)(choice->branches()[i]);  // recurse!
 | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ namespace gtsam { | ||||||
|    * Y = function range (any algebra), e.g., bool, int, double |    * Y = function range (any algebra), e.g., bool, int, double | ||||||
|    */ |    */ | ||||||
|   template<typename L, typename Y> |   template<typename L, typename Y> | ||||||
|   class GTSAM_EXPORT DecisionTree { |   class DecisionTree { | ||||||
| 
 | 
 | ||||||
|    protected: |    protected: | ||||||
|     /// Default method for comparison of two objects of type Y.
 |     /// Default method for comparison of two objects of type Y.
 | ||||||
|  | @ -340,4 +340,11 @@ namespace gtsam { | ||||||
|     return f.apply(g, op); |     return f.apply(g, op); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  |   /// unzip a DecisionTree if its leaves are `std::pair`
 | ||||||
|  |   template<typename L, typename T1, typename T2> | ||||||
|  |   std::pair<DecisionTree<L, T1>, DecisionTree<L, T2> > unzip(const DecisionTree<L, std::pair<T1, T2> > &input) { | ||||||
|  |     return std::make_pair(DecisionTree<L, T1>(input, [](std::pair<T1, T2> i) { return i.first; }), | ||||||
|  |                           DecisionTree<L, T2>(input, [](std::pair<T1, T2> i) { return i.second; })); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
| } // namespace gtsam
 | } // namespace gtsam
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue