libssrckdtree 1.0.8 C++ Unit Test Coverage |
|
|
|
|
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
|
Copyright © 2017 Savarese Software Research Corporation. All rights reserved