Replaced Node* with Node_handle

Replaced Item** with Item_iterator
Both types are retrieved from Kd_tree
This commit is contained in:
Andreas Fabri 2003-05-21 21:17:01 +00:00
parent 1e3dec26f1
commit b56bddc0e1
8 changed files with 29 additions and 30 deletions

View File

@ -1,5 +1,5 @@
#include <CGAL/basic.h>
#include <CGAL/Cartesian.h>
#include <CGAL/Simple_cartesian.h>
#include <CGAL/Iso_cuboid_3.h>
#include <CGAL/Kd_tree.h>
#include <CGAL/Kd_tree_traits_point.h>
@ -13,7 +13,7 @@
#include <iostream>
#include <fstream>
typedef CGAL::Cartesian<double> R;
typedef CGAL::Simple_cartesian<double> R;
typedef R::Point_3 Point;
typedef CGAL::Plane_separator<double> Separator;
@ -69,7 +69,7 @@ int main() {
Traits tr(bucket_size, 3.0, true);
typedef CGAL::Kd_tree<Traits> tree;
t.reset(); t.start();
tree d(data_points.begin(), data_points.end(), tr);

View File

@ -70,7 +70,7 @@ int main() {
std::cout << "all points are:" << std::endl;
for (int j1=0; j1 < points_in_tree.size(); ++j1) {
for (unsigned int j1=0; j1 < points_in_tree.size(); ++j1) {
std::cout << points_in_tree[j1] << "d(C,p)=" << sqrt(CGAL::squared_distance(points_in_tree[j1],C)) << std::endl;
}
@ -79,7 +79,7 @@ int main() {
std::cout << "points approximately in spherical range query are:" << std::endl;
for (int j2=0; j2 < points_in_spherical_range_query.size(); ++j2) {
for (unsigned int j2=0; j2 < points_in_spherical_range_query.size(); ++j2) {
std::cout << points_in_spherical_range_query[j2] << std::endl;
}
@ -102,7 +102,7 @@ int main() {
std::cout << "points approximately in rectangular range query [-100,900]^4 are:" << std::endl;
for (int j3=0; j3 < points_in_rectangular_range_query.size(); ++j3) {
for (unsigned int j3=0; j3 < points_in_rectangular_range_query.size(); ++j3) {
std::cout << points_in_rectangular_range_query[j3] << std::endl;
}

View File

@ -39,8 +39,8 @@ public:
typedef typename Tree_traits::Item Item;
typedef typename Tree_traits::NT NT;
typedef Item** Item_iterator;
typedef Kd_tree_node<Tree_traits> Node;
typedef Kd_tree<Tree_traits>::Item_iterator Item_iterator;
typedef Kd_tree<Tree_traits>::Node_handle Node_handle;
typedef Kd_tree<Tree_traits> Tree;
typedef Kd_tree_rectangle<NT> Node_box;
@ -49,19 +49,19 @@ class Cell
private:
Node_box* the_box;
Node* the_node;
Node_handle the_node;
public:
// constructor
Cell (Node_box* Nb, Node* N)
Cell (Node_box* Nb, Node_handle N)
{
the_box = Nb;
the_node = N;
}
Node_box* box() {return the_box;};
Node* node() {return the_node;};
Node_handle node() {return the_node;};
~Cell() {}
@ -406,7 +406,7 @@ class Distance_smaller
while ((!next_neighbour_found) && (!PriorityQueue->empty())) {
Cell_with_distance* The_node_top=PriorityQueue->top();
Node* N= The_node_top->first->node();
Node_handle N= The_node_top->first->node();
Node_box* B= The_node_top->first->box();
PriorityQueue->pop();
delete The_node_top->first;

View File

@ -43,12 +43,12 @@ typedef typename Traits::Item Item;
typedef typename Traits::NT NT;
typedef std::pair<Item*,NT> Item_with_distance;
typedef Kd_tree_node<Traits> Node;
typedef Kd_tree<Traits>::Node_handle Node_handle;
typedef Kd_tree<Traits> Tree;
// private:
typedef Item** Item_iterator;
typedef Kd_tree<Traits>::Item_iterator Item_iterator;
typedef Kd_tree_rectangle<NT> Rectangle;
private:
@ -166,7 +166,7 @@ Distance* distance_instance;
private:
void compute_neighbours_general(Node* N, Kd_tree_rectangle<NT>* r) {
void compute_neighbours_general(Node_handle N, Kd_tree_rectangle<NT>* r) {
if (!(N->is_leaf())) {
number_of_internal_nodes_visited++;

View File

@ -40,10 +40,11 @@ public:
typedef Kd_tree_node<Traits> Node;
typedef Kd_tree<Traits> Tree;
typedef typename Compact_container<Node>::iterator Node_handle;
typedef std::vector<Item*>::iterator Item_iterator;
private:
Compact_container<Node> nodes;
typedef typename Compact_container<Node>::iterator Node_handle;
Node_handle tree_root;
@ -55,7 +56,7 @@ private:
// and we only store an iterator range in the Kd_tree_node.
//
std::vector<Item*> data;
std::vector<Item*>::iterator data_iterator;
Item_iterator data_iterator;
Traits tr;
int the_item_number;

View File

@ -36,15 +36,13 @@ namespace CGAL {
friend class Kd_tree<Traits>;
typedef Kd_tree_node<Traits> Node;
typedef typename Compact_container<Node>::iterator Node_handle;
typedef typename Kd_tree<Traits>::Node_handle Node_handle;
enum Node_type {LEAF, INTERNAL, EXTENDED_INTERNAL};
typedef typename Traits::Item Item;
typedef std::vector<Item*>::iterator Item_iterator;
typedef typename Traits::NT NT;
typedef typename Traits::Separator Separator;
typedef typename Kd_tree<Traits>::Item_iterator Item_iterator;
private:
@ -71,7 +69,7 @@ namespace CGAL {
void * & for_compact_container() { return lower_ch.for_compact_container(); }
// default constructor
Kd_tree_node(): the_node_type() {};
Kd_tree_node() {};
// members for all nodes
inline bool is_leaf() const { return (the_node_type==LEAF);}

View File

@ -38,13 +38,13 @@ public:
typedef typename Traits::Item Item;
typedef typename Traits::NT NT;
typedef Item** Item_iterator;
typedef Kd_tree_node<Traits> Node;
typedef Kd_tree<Traits>::Item_iterator Item_iterator;
typedef Kd_tree<Traits>::Node_handle Node_handle;
typedef Kd_tree<Traits> Tree;
typedef std::pair<Item*,NT> Item_with_distance;
typedef std::pair<Node*,NT> Node_with_distance;
typedef std::pair<Node_handle,NT> Node_with_distance;
@ -378,7 +378,7 @@ class iterator;
// otherwise browse the tree further
while ((!next_neighbour_found) && (!PriorityQueue->empty())) {
Node_with_distance* The_node_top=PriorityQueue->top();
Node* N= The_node_top->first;
Node_handle N= The_node_top->first;
PriorityQueue->pop();
delete The_node_top;

View File

@ -42,12 +42,12 @@ typedef typename Traits::Item Item;
typedef typename Traits::NT NT;
typedef std::pair<Item*,NT> Item_with_distance;
typedef Kd_tree_node<Traits> Node;
typedef Kd_tree<Traits> Tree;
typedef Tree::Node_handle Node_handle;
//private:
typedef Item** Item_iterator;
typedef Kd_tree<Traits>::Item_iterator Item_iterator;
typedef Kd_tree_rectangle<NT> Rectangle;
private:
@ -170,7 +170,7 @@ Distance* distance_instance;
private:
void compute_neighbours_orthogonally(Node* N, NT rd) {
void compute_neighbours_orthogonally(Node_handle N, NT rd) {
if (!(N->is_leaf())) {
number_of_internal_nodes_visited++;