1 /* 2 * Software License Agreement (BSD License) 3 * 4 * Point Cloud Library (PCL) - www.pointclouds.org 5 * Copyright (c) 2010-2011, Willow Garage, Inc. 6 * 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 13 * * Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * * Redistributions in binary form must reproduce the above 16 * copyright notice, this list of conditions and the following 17 * disclaimer in the documentation and/or other materials provided 18 * with the distribution. 19 * * Neither the name of Willow Garage, Inc. nor the names of its 20 * contributors may be used to endorse or promote products derived 21 * from this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 26 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 27 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 28 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 29 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 30 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 31 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 32 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 33 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 34 * POSSIBILITY OF SUCH DAMAGE. 35 * 36 */ 37 38 #pragma once 39 40 #include <pcl/common/common.h> 41 42 #include <istream> 43 #include <ostream> 44 45 namespace pcl { 46 47 /** Class representing a decision tree. */ 48 template <class NodeType> 49 class PCL_EXPORTS DecisionTree { 50 public: 51 /** Constructor. */ DecisionTree()52 DecisionTree() : root_() {} 53 54 /** Destructor. */ ~DecisionTree()55 virtual ~DecisionTree() {} 56 57 /** Sets the root node of the tree. 58 * 59 * \param[in] root the root node 60 */ 61 void setRoot(const NodeType & root)62 setRoot(const NodeType& root) 63 { 64 root_ = root; 65 } 66 67 /** Returns the root node of the tree. */ 68 NodeType& getRoot()69 getRoot() 70 { 71 return root_; 72 } 73 74 /** Serializes the decision tree. 75 * 76 * \param[out] stream the destination for the serialization 77 */ 78 void serialize(::std::ostream & stream)79 serialize(::std::ostream& stream) const 80 { 81 root_.serialize(stream); 82 } 83 84 /** Deserializes the decision tree. 85 * 86 * \param[in] stream the source for the deserialization 87 */ 88 void deserialize(::std::istream & stream)89 deserialize(::std::istream& stream) 90 { 91 root_.deserialize(stream); 92 } 93 94 private: 95 /** The root node of the decision tree. */ 96 NodeType root_; 97 }; 98 99 } // namespace pcl 100