mirror of
https://github.com/boostorg/geometry.git
synced 2026-02-12 12:12:10 +00:00
corrected: gcc compile errors, wrong assert in remove; + minor changes
[SVN r71764]
This commit is contained in:
@@ -16,6 +16,9 @@ struct linear_tag {};
|
||||
|
||||
}}} // namespace boost::geometry::index
|
||||
|
||||
//TEST
|
||||
// TODO
|
||||
|
||||
#include <boost/geometry/extensions/index/rtree/linear/redistribute_elements.hpp>
|
||||
|
||||
#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_LINEAR_LINEAR_HPP
|
||||
|
||||
@@ -281,9 +281,6 @@ struct redistribute_elements<Value, Translator, Box, linear_tag>
|
||||
--remaining;
|
||||
}
|
||||
}
|
||||
|
||||
assert(min_elems <= elements1.size() && elements1.size() <= max_elems);
|
||||
assert(min_elems <= elements2.size() && elements2.size() <= max_elems);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -143,7 +143,7 @@ struct redistribute_elements<Value, Translator, Box, quadratic_tag>
|
||||
// redistribute the rest of the elements
|
||||
while ( !elements_copy.empty() )
|
||||
{
|
||||
elements_type::reverse_iterator el_it = elements_copy.rbegin();
|
||||
typename elements_type::reverse_iterator el_it = elements_copy.rbegin();
|
||||
bool insert_into_group1 = false;
|
||||
|
||||
size_t elements1_count = elements1.size();
|
||||
@@ -204,9 +204,6 @@ struct redistribute_elements<Value, Translator, Box, quadratic_tag>
|
||||
assert(0 < remaining);
|
||||
--remaining;
|
||||
}
|
||||
|
||||
assert(min_elems <= elements1.size() && elements1.size() <= max_elems);
|
||||
assert(min_elems <= elements2.size() && elements2.size() <= max_elems);
|
||||
}
|
||||
|
||||
// sprawdzic szukanie najmniejszego powiekszenia wezla dla grupy1 i grupy2
|
||||
|
||||
@@ -96,11 +96,16 @@ struct split
|
||||
Translator const& tr)
|
||||
{
|
||||
node * second_node = rtree::create_node(Node());
|
||||
Node & n2 = boost::get<Node>(*second_node);
|
||||
|
||||
// redistribute elements
|
||||
Box box1, box2;
|
||||
redistribute_elements<Value, Translator, Box, Tag>::
|
||||
apply(n, boost::get<Node>(*second_node), box1, box2, min_elems, max_elems, tr);
|
||||
apply(n, n2, box1, box2, min_elems, max_elems, tr);
|
||||
|
||||
// check numbers of elements
|
||||
assert(min_elems <= rtree::elements_get(n).size() && rtree::elements_get(n).size() <= max_elems);
|
||||
assert(min_elems <= rtree::elements_get(n2).size() && rtree::elements_get(n2).size() <= max_elems);
|
||||
|
||||
// node is not the root
|
||||
if ( parent != 0 )
|
||||
|
||||
@@ -84,12 +84,13 @@ public:
|
||||
m_is_underflow = elements.size() < m_min_elems_per_node;
|
||||
}
|
||||
|
||||
// test - underflow state should be ok here
|
||||
assert(elements.size() < m_min_elems_per_node == m_is_underflow);
|
||||
|
||||
// n is not root - adjust aabb
|
||||
if ( 0 != m_parent )
|
||||
{
|
||||
// test underflow state should be ok here
|
||||
// note that there may be less than min_elems elements in root
|
||||
assert((elements.size() < m_min_elems_per_node) == m_is_underflow);
|
||||
|
||||
rtree::elements_get(*m_parent)[m_current_child_index].first
|
||||
= rtree::elements_box<Box>(elements.begin(), elements.end(), m_tr);
|
||||
}
|
||||
@@ -104,7 +105,7 @@ public:
|
||||
|
||||
// reinsert elements from removed nodes
|
||||
// begin with levels closer to the root
|
||||
for ( std::vector< std::pair<size_t, node*> >::reverse_iterator it = m_underflowed_nodes.rbegin();
|
||||
for ( typename std::vector< std::pair<size_t, node*> >::reverse_iterator it = m_underflowed_nodes.rbegin();
|
||||
it != m_underflowed_nodes.rend() ; ++it )
|
||||
{
|
||||
if ( boost::apply_visitor(is_leaf<Value, Box, Tag>(), *it->second) )
|
||||
@@ -128,7 +129,7 @@ public:
|
||||
elements_type & elements = rtree::elements_get(n);
|
||||
|
||||
// find value and remove it
|
||||
for ( elements_type::iterator it = elements.begin() ; it != elements.end() ; ++it )
|
||||
for ( typename elements_type::iterator it = elements.begin() ; it != elements.end() ; ++it )
|
||||
{
|
||||
if ( m_tr.equals(*it, m_value) )
|
||||
{
|
||||
@@ -182,7 +183,7 @@ private:
|
||||
for ( typename elements_type::iterator it = elements.begin();
|
||||
it != elements.end() ; ++it )
|
||||
{
|
||||
visitors::insert<elements_type::value_type, Value, Translator, Box, Tag> insert_v(
|
||||
visitors::insert<typename elements_type::value_type, Value, Translator, Box, Tag> insert_v(
|
||||
m_root_node,
|
||||
*it,
|
||||
m_min_elems_per_node,
|
||||
|
||||
@@ -29,7 +29,7 @@ struct save<
|
||||
>,
|
||||
size_t
|
||||
>,
|
||||
typename Translator,
|
||||
Translator,
|
||||
Box,
|
||||
Tag
|
||||
>
|
||||
|
||||
@@ -17,8 +17,8 @@ int main()
|
||||
|
||||
typedef bg::model::point<float, 2, bg::cs::cartesian> P;
|
||||
typedef bg::model::box<P> B;
|
||||
//typedef bgi::rtree<std::pair<B, size_t>, bgi::default_parameter, bgi::linear_tag> RT;
|
||||
typedef bgi::rtree<std::pair<B, size_t>, bgi::default_parameter, bgi::quadratic_tag> RT;
|
||||
typedef bgi::rtree<std::pair<B, size_t>, bgi::default_parameter, bgi::linear_tag> RT;
|
||||
//typedef bgi::rtree<std::pair<B, size_t>, bgi::default_parameter, bgi::quadratic_tag> RT;
|
||||
|
||||
std::ifstream file_cfg("config.txt");
|
||||
size_t max_elems = 4;
|
||||
|
||||
Reference in New Issue
Block a user