libssrckdtree 1.0.8 C++ Unit Test Coverage
Current view: top level - ssrc/spatial/detail - kd_tree_node.h (source / functions) Hit Total Coverage
Test: libssrckdtree 1.0.8 C++ Unit Tests Lines: 15 15 100.0 %
Date: 2011-06-03 Functions: 18 18 100.0 %
Branches: 12 12 100.0 %

           Branch data     Line data    Source code
       1                 :            : /*
       2                 :            :  * Copyright 2003-2005 Daniel F. Savarese
       3                 :            :  * Copyright 2006-2009 Savarese Software Research Corporation
       4                 :            :  *
       5                 :            :  * Licensed under the Apache License, Version 2.0 (the "License");
       6                 :            :  * you may not use this file except in compliance with the License.
       7                 :            :  * You may obtain a copy of the License at
       8                 :            :  *
       9                 :            :  *     https://www.savarese.com/software/ApacheLicense-2.0
      10                 :            :  *
      11                 :            :  * Unless required by applicable law or agreed to in writing, software
      12                 :            :  * distributed under the License is distributed on an "AS IS" BASIS,
      13                 :            :  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
      14                 :            :  * See the License for the specific language governing permissions and
      15                 :            :  * limitations under the License.
      16                 :            :  */
      17                 :            : 
      18                 :            : #ifndef __SSRC_SPATIAL_DETAIL_KDTREE_NODE_H
      19                 :            : #define __SSRC_SPATIAL_DETAIL_KDTREE_NODE_H
      20                 :            : 
      21                 :            : #include <ssrc/libssrckdtree-packages.h>
      22                 :            : 
      23                 :            : __BEGIN_NS_SSRC_SPATIAL
      24                 :            : 
      25                 :            : namespace detail {
      26                 :            : 
      27                 :            :   template<typename TreeTraits>
      28                 :            :   class kd_tree_node {
      29                 :            :   public:
      30                 :            :     typedef TreeTraits traits;
      31                 :            :     typedef typename traits::key_type key_type;
      32                 :            :     typedef typename traits::mapped_type mapped_type;
      33                 :            :     typedef typename traits::value_type value_type;
      34                 :            :     typedef typename traits::pointer pointer;
      35                 :            :     typedef typename traits::const_pointer const_pointer;
      36                 :            :     typedef typename traits::reference reference;
      37                 :            :     typedef typename traits::const_reference const_reference;
      38                 :            :     typedef typename traits::discriminator_type discriminator_type;
      39                 :            :     typedef typename traits::node_type node_type;
      40                 :            : 
      41                 :            :     discriminator_type discriminator;
      42                 :            :     // Convention we use is that values < discriminator are in low
      43                 :            :     // subtree and those >= are in high subtree.
      44                 :            :     node_type *child_low;
      45                 :            :     node_type *child_high;
      46                 :            : 
      47                 :            :   private:
      48                 :            :     value_type _pair;
      49                 :            : 
      50                 :            :   public:
      51                 :            : 
      52                 :    1179681 :     kd_tree_node(const discriminator_type discriminator,
      53                 :            :                  const key_type & point, const mapped_type & value) :
      54                 :            :       discriminator(discriminator), child_low(0), child_high(0),
      55                 :    1179681 :       _pair(point,value)
      56                 :    1179681 :     { }
      57                 :            : 
      58                 :    1179681 :     ~kd_tree_node() {
      59 [ +  + ][ +  + ]:    1179681 :       delete child_low;
                 [ +  + ]
      60 [ +  + ][ +  + ]:    1179681 :       delete child_high;
                 [ +  + ]
      61                 :    1179681 :     }
      62                 :            : 
      63                 :  142464191 :     const key_type & point() const {
      64                 :  142464191 :       return _pair.first;
      65                 :            :     }
      66                 :            : 
      67                 :    1032210 :     mapped_type & value() {
      68                 :    1032210 :       return _pair.second;
      69                 :            :     }
      70                 :            : 
      71                 :     245763 :     const mapped_type & value() const {
      72                 :     245763 :       return _pair.second;
      73                 :            :     }
      74                 :            : 
      75                 :    1327619 :     reference pair() {
      76                 :    1327619 :       return _pair;
      77                 :            :     }
      78                 :            : 
      79                 :            :     const_reference pair() const {
      80                 :            :       return _pair;
      81                 :            :     }
      82                 :            :   };
      83                 :            : 
      84                 :            : }
      85                 :            : 
      86                 :            : __END_NS_SSRC_SPATIAL
      87                 :            : 
      88                 :            : #endif