This class represents a set of points in R^n with integer coordinates. More...
#include <pointset.h>
Public Member Functions | |
tPointset (int_t initialsize=0, int bequiet=1) | |
Default constructor for a set of points with the initial size of the set defined here if an upper bound for the size of the set is known and thus it is smart to allocate less memory. | |
tPointset (const tPointset< coordtype > &p) | |
The copy constructor. | |
tPointset & | operator= (const tPointset< coordtype > &p) |
The assignment operator. | |
~tPointset () | |
The destructor. | |
int | dimension (int d) |
Sets the dimension of points. | |
int | dimension () const |
Returns the dimension of points. | |
double * | gridsize (double *g=0) |
Gets or sets the size of the grid in R^n. | |
double * | gridsize (double g) |
Sets the grid size (if the same in all the directions). | |
double * | gridsize (int direction, double g) |
Sets the grid size in one particular direction. | |
const coordtype * | wrapspace (const coordtype *w=NULL) |
const coordtype * | wrapspace (coordtype w) |
const coordtype * | wrapspace (int direction, coordtype w) |
int | check (int_t n) const |
int | check (const coordtype *c) const |
int | check (const double *c) const |
int_t | getnumber (const coordtype *c) const |
int_t | getnumber (const double *c) const |
coordtype * | operator[] (int_t n) const |
coordtype * | getpoint (int_t n) const |
coordtype * | getpoint (coordtype *c) const |
coordtype * | getpoint (double *c) const |
coordtype * | getpoint (int_t n, double *c) const |
int_t | add (const coordtype *c) |
int_t | add (double *c) |
tPointset & | add (const tPointset< coordtype > &p) |
int | remove (int_t n) |
int | remove (const coordtype *c) |
int | remove (const double *c) |
int | remove (const tPointset< coordtype > &p) |
int_t | size () const |
Returns the number of points in the set. | |
bool | empty () const |
Returns true if and only if the set of points is empty. | |
int_t | gethashsize () const |
Static Public Member Functions | |
static int | defaultdimension (int d=0) |
Sets or gets the default dimension of points. | |
Public Attributes | |
int | quiet |
Returns the number of points by simply projecting the set onto an integer number. | |
psethashstat * | stat |
coordtype * | minimal |
coordtype * | maximal |
int | wereremoved |
Protected Member Functions | |
void | initialize (int_t initialsize, int bequiet) |
void | deallocate () |
int_t | hashfindpoint (const coordtype *c, int_t *addposition=NULL, int wrapped=0) const |
void | rehash (int_t newsize=0) |
Protected Attributes | |
int | dim |
int_t | npoints |
int_t | ntables |
int | tablepoints |
coordtype ** | tables |
double * | grid |
coordtype * | wrap |
coordtype * | temp |
int_t | hashsize |
int_t | hashcleared |
int_t * | hashtable |
unsigned | initsize |
Static Protected Attributes | |
static int | defaultdim = 0 |
static double * | defaultgrid = NULL |
static coordtype * | defaultwrap = NULL |
This class represents a set of points in R^n with integer coordinates.
Definition at line 467 of file pointset.h.
chomp::homology::tPointset< coordtype >::tPointset | ( | int_t | initialsize = 0 , |
|
int | bequiet = 1 | |||
) | [inline] |
Default constructor for a set of points with the initial size of the set defined here if an upper bound for the size of the set is known and thus it is smart to allocate less memory.
If dimension, grid size and space wrapping was defined for any pointset, these values are automatically copied to all the pointsets created further (until changed).
Definition at line 1180 of file pointset.h.
References chomp::homology::tPointset< coordtype >::initialize().
{ initialize (initialsize, bequiet); return; } /* tPointset::tPointset */
chomp::homology::tPointset< coordtype >::tPointset | ( | const tPointset< coordtype > & | p | ) | [inline] |
The copy constructor.
Definition at line 1187 of file pointset.h.
References chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::quiet, and chomp::homology::tPointset< coordtype >::size().
{ initialize (p. size (), p. quiet); add (p); return; } /* tPointset::tPointset */
chomp::homology::tPointset< coordtype >::~tPointset< coordtype > | ( | ) | [inline] |
The destructor.
int_t chomp::homology::tPointset< coordtype >::add | ( | const coordtype * | c | ) | [inline] |
Definition at line 1004 of file pointset.h.
References chomp::homology::copycoord(), chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::hashcleared, chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::hashsize, chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::maximal, chomp::homology::tPointset< coordtype >::minimal, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::ntables, chomp::homology::tPointset< coordtype >::rehash(), chomp::homology::tPointset< coordtype >::tablepoints, chomp::homology::tPointset< coordtype >::tables, chomp::homology::tPointset< coordtype >::temp, chomp::homology::tPointset< coordtype >::wrap, and chomp::homology::wrapcoord().
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::hashfindpoint(), and chomp::homology::tPointset< coordtype >::tPointset().
{ // prevent from adding a 'NULL' point if (!c) return -1; // check if the dimension of the point is known if (!dim) throw "Trying to add a point of unknown dimension."; // wrap the point's coordinates if needed if (wrap) { if (!temp) temp = allocatepoint<coordtype> (dim); wrapcoord (temp, c, wrap, dim); c = temp; } // increase the size of the hashing table if needed if (hashsize - hashcleared <= npoints + npoints / 5) rehash (); // find a place for the new point int_t addpos = -1; int_t pos = hashfindpoint (c, &addpos, 1); // if the point is already in the set, return its number if (hashtable [pos] >= 0) return hashtable [pos]; // update the range of coordinates for statistical purposes if (minimal) { for (int i = 0; i < dim; ++ i) if (minimal [i] > c [i]) minimal [i] = c [i]; } else { minimal = allocatepoint<coordtype> (dim); copycoord (minimal, c, dim); } if (maximal) { for (int i = 0; i < dim; ++ i) if (maximal [i] < c [i]) maximal [i] = c [i]; } else { maximal = allocatepoint<coordtype> (dim); copycoord (maximal, c, dim); } // write the point's number into the hashing table if (addpos >= 0) { pos = addpos; if (hashtable [pos] == -2) -- hashcleared; } hashtable [pos] = npoints; // compute the number of the table in which the point's coordinates // should be stored int_t tablenumber = npoints / tablepoints; // if there are not enough tables, add some if (tablenumber >= ntables) { int_t moretables = (ntables << 1) + 13; coordtype **newtables = new coordtype * [moretables]; if (!newtables) throw "Unable to alloc a table for tables."; for (int_t i = 0; i < moretables; ++ i) newtables [i] = (i < ntables) ? (tables [i]) : (coordtype *) NULL; if (tables) delete [] tables; tables = newtables; ntables = moretables; } // if the appropriate table has not been allocate yet, allocate it if (tables [tablenumber] == NULL) { tables [tablenumber] = new coordtype [tablepoints * dim]; if (!tables [tablenumber]) throw "Unable to alloc a table for coords."; } // copy the point's coordinates into the table copycoord (tables [tablenumber] + ((npoints % tablepoints) * dim), c, dim); // return the point's number and increase the number of points // in the set return (npoints ++); } /* tPointset::add */
int_t chomp::homology::tPointset< coordtype >::add | ( | double * | c | ) | [inline] |
tPointset< coordtype > & chomp::homology::tPointset< coordtype >::add | ( | const tPointset< coordtype > & | p | ) | [inline] |
int chomp::homology::tPointset< coordtype >::check | ( | int_t | n | ) | const [inline] |
Definition at line 1276 of file pointset.h.
References chomp::homology::tPointset< coordtype >::npoints.
{ return ((n >= 0) && (n < npoints)); } /* tPointset::check */
int chomp::homology::tPointset< coordtype >::check | ( | const coordtype * | c | ) | const [inline] |
Definition at line 1282 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return (getnumber (c) != -1); } /* tPointset::check */
int chomp::homology::tPointset< coordtype >::check | ( | const double * | c | ) | const [inline] |
Definition at line 1288 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return (getnumber (c) != -1); } /* tPointset::check */
void chomp::homology::tPointset< coordtype >::deallocate | ( | ) | [inline, protected] |
Definition at line 1195 of file pointset.h.
References chomp::homology::tPointset< coordtype >::grid, chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::maximal, chomp::homology::tPointset< coordtype >::minimal, chomp::homology::tPointset< coordtype >::ntables, chomp::homology::tPointset< coordtype >::stat, chomp::homology::tPointset< coordtype >::tables, chomp::homology::tPointset< coordtype >::temp, and chomp::homology::tPointset< coordtype >::wrap.
{ // free the point tables for (int_t i = 0; i < ntables; ++ i) { if (tables [i]) delete [] (tables [i]); } if (tables) delete [] tables; // remove the grid and wrap tables if (grid) delete [] grid; if (wrap) delete [] wrap; // remove the temporary point table if (temp) delete [] temp; // remove the minimal and maximal coordinates if (minimal) delete [] minimal; if (maximal) delete [] maximal; // turn off hashing if (hashtable) delete [] hashtable; if (stat) delete stat; return; } /* tPointset::deallocate */
int chomp::homology::tPointset< coordtype >::defaultdimension | ( | int | d = 0 |
) | [inline, static] |
Sets or gets the default dimension of points.
Definition at line 681 of file pointset.h.
References chomp::homology::tPointset< coordtype >::defaultdim, chomp::homology::tPointset< coordtype >::defaultgrid, and chomp::homology::tPointset< coordtype >::defaultwrap.
Referenced by chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::gridsize(), and chomp::homology::tPointset< coordtype >::initialize().
{ // set the default dimension if needed if (d > 0) { // remove the two tables if the new dimension is higher if (d > defaultdim) { if (defaultgrid) delete [] defaultgrid; defaultgrid = NULL; if (defaultwrap) delete [] defaultwrap; defaultwrap = NULL; } // store the default dimension in the global variable defaultdim = d; } // return the default dimension of points return defaultdim; } /* tPointset::defaultdimension */
int chomp::homology::tPointset< coordtype >::dimension | ( | int | d | ) | [inline] |
Sets the dimension of points.
Definition at line 839 of file pointset.h.
References chomp::homology::tPointset< coordtype >::defaultdimension(), chomp::homology::tPointset< coordtype >::defaultgrid, chomp::homology::tPointset< coordtype >::defaultwrap, chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::grid, chomp::homology::tPointset< coordtype >::gridsize(), chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::temp, chomp::homology::tPointset< coordtype >::wrap, and chomp::homology::tPointset< coordtype >::wrapspace().
{ // set the default dimension if needed if (d > 0) defaultdimension (d); // change the dimension if the set is empty and not a subset if (!npoints && (d > 0)) { // remove allocated tables if the new dimension is higher if (d > dim) { if (grid) delete [] grid; grid = NULL; gridsize (defaultgrid); if (wrap) delete [] wrap; wrap = NULL; wrapspace (defaultwrap); if (temp) delete [] temp; temp = NULL; } // store the dimension in the structure dim = d; } // return the dimension of points return dim; } /* tPointset::dimension */
int chomp::homology::tPointset< coordtype >::dimension | ( | ) | const [inline] |
Returns the dimension of points.
Definition at line 873 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim.
Referenced by chomp::homology::tPointset< coordtype >::initialize().
{ return dim; } /* tPointset::dimension */
bool chomp::homology::tPointset< coordtype >::empty | ( | ) | const [inline] |
Returns true if and only if the set of points is empty.
Definition at line 885 of file pointset.h.
References chomp::homology::tPointset< coordtype >::npoints.
{ return !npoints; } /* tPointset::empty */
int_t chomp::homology::tPointset< coordtype >::gethashsize | ( | ) | const [inline] |
Definition at line 1390 of file pointset.h.
References chomp::homology::tPointset< coordtype >::hashsize.
{ return hashsize; } /* tPointset::gethashsize */
int_t chomp::homology::tPointset< coordtype >::getnumber | ( | const double * | c | ) | const [inline] |
Definition at line 1264 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::grid, chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::roundpoint(), and chomp::homology::tPointset< coordtype >::temp.
{ if (!npoints) return -1; if (!temp) throw "Cannot round point's coordinates."; roundpoint (c, temp, grid, dim); int_t pos = hashfindpoint (temp); return ((pos >= 0) ? hashtable [pos] : static_cast<int_t> (-1)); } /* tPointset::getnumber */
int_t chomp::homology::tPointset< coordtype >::getnumber | ( | const coordtype * | c | ) | const [inline] |
Definition at line 1250 of file pointset.h.
References chomp::homology::tPointset< coordtype >::hashfindpoint(), and chomp::homology::tPointset< coordtype >::hashtable.
Referenced by chomp::homology::tPointset< coordtype >::check(), chomp::homology::tPointset< coordtype >::getpoint(), and chomp::homology::tPointset< coordtype >::remove().
{ // prevent from looking for a 'NULL' point if (!c) return -1; // find the position corresponding to this point in the hashing table int_t pos = hashfindpoint (c); // return the point's number found in the table return ((pos >= 0) ? hashtable [pos] : static_cast<int_t> (-1)); } /* tPointset::getnumber */
coordtype * chomp::homology::tPointset< coordtype >::getpoint | ( | int_t | n | ) | const [inline] |
Definition at line 1294 of file pointset.h.
{ return (*this) [n]; } /* tPointset::getpoint */
coordtype * chomp::homology::tPointset< coordtype >::getpoint | ( | coordtype * | c | ) | const [inline] |
Definition at line 1300 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return (*this) [getnumber (c)]; } /* tPointset::getpoint */
coordtype * chomp::homology::tPointset< coordtype >::getpoint | ( | double * | c | ) | const [inline] |
Definition at line 1306 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return (*this) [getnumber (c)]; } /* tPointset::getpoint */
coordtype * chomp::homology::tPointset< coordtype >::getpoint | ( | int_t | n, | |
double * | c | |||
) | const [inline] |
Definition at line 1312 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, and chomp::homology::tPointset< coordtype >::grid.
double * chomp::homology::tPointset< coordtype >::gridsize | ( | int | direction, | |
double | g | |||
) | [inline] |
Sets the grid size in one particular direction.
Definition at line 706 of file pointset.h.
References chomp::homology::tPointset< coordtype >::defaultdim, chomp::homology::tPointset< coordtype >::defaultdimension(), chomp::homology::tPointset< coordtype >::defaultgrid, chomp::homology::tPointset< coordtype >::dim, and chomp::homology::tPointset< coordtype >::grid.
{ // if this is a question or wrong parameters are given, // return the grid if ((direction < 0) || (direction >= dim) || !dim || (g <= 0)) return grid; // allocate memory for a new grid table if needed if (!grid) { grid = new double [dim]; if (!grid) throw "Can't allocate memory for the grid."; for (int i = 0; i < dim; ++ i) grid [i] = 1.0; } // update the dimension if it was different if (dim != defaultdim) defaultdimension (dim); // create a new default grid table if needed if (!defaultgrid) { defaultgrid = new double [dim]; if (!defaultgrid) throw "Can't alloc mem for the default grid."; for (int i = 0; i < dim; ++ i) defaultgrid [i] = grid [i]; } // set the grid and the default grid coordinates grid [direction] = g; defaultgrid [direction] = g; // return the new grid return grid; } /* point::gridsize */
double * chomp::homology::tPointset< coordtype >::gridsize | ( | double * | g = 0 |
) | [inline] |
Gets or sets the size of the grid in R^n.
Definition at line 757 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, and chomp::homology::tPointset< coordtype >::grid.
Referenced by chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::gridsize(), and chomp::homology::tPointset< coordtype >::initialize().
double * chomp::homology::tPointset< coordtype >::gridsize | ( | double | g | ) | [inline] |
Sets the grid size (if the same in all the directions).
Definition at line 746 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::grid, and chomp::homology::tPointset< coordtype >::gridsize().
int_t chomp::homology::tPointset< coordtype >::hashfindpoint | ( | const coordtype * | c, | |
int_t * | addposition = NULL , |
|||
int | wrapped = 0 | |||
) | const [inline, protected] |
Definition at line 906 of file pointset.h.
References chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::hashsize, chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::pointhashadd(), chomp::homology::pointhashkey(), chomp::homology::tPointset< coordtype >::stat, chomp::homology::tPointset< coordtype >::temp, chomp::homology::thesame(), chomp::homology::tPointset< coordtype >::wrap, and chomp::homology::wrapcoord().
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::rehash(), and chomp::homology::tPointset< coordtype >::remove().
{ // if there are no points or there is no hashing table, return NULL if (!hashsize) return -1; // wrap coordinates if needed if (!wrapped && wrap) { if (!temp) throw "Unable to wrap point's coordinates."; wrapcoord (temp, c, wrap, dim); c = temp; } // prepare hashing keys int_t pos = pointhashkey (c, dim, hashsize); int_t add = 0; // start updating hashing statistics ++ (stat -> hashhits); // find the position of the point in the hashing table int_t number; while ((number = hashtable [pos]) != -1) { if ((number >= 0) && thesame ((*this) [number], c, dim)) return (pos); if (addpos && (*addpos < 0) && (number == -2)) *addpos = pos; if (!add) add = pointhashadd (c, dim, hashsize); pos = (pos + add) % hashsize; ++ (stat -> hashmisses); } // return the position in the hashing table return (pos); } /* hashfindpoint */
void chomp::homology::tPointset< coordtype >::initialize | ( | int_t | initialsize, | |
int | bequiet | |||
) | [inline, protected] |
Definition at line 1132 of file pointset.h.
References chomp::homology::tPointset< coordtype >::defaultdimension(), chomp::homology::tPointset< coordtype >::defaultgrid, chomp::homology::tPointset< coordtype >::defaultwrap, chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::grid, chomp::homology::tPointset< coordtype >::gridsize(), chomp::homology::tPointset< coordtype >::hashcleared, chomp::homology::tPointset< coordtype >::hashsize, chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::initsize, chomp::homology::tPointset< coordtype >::maximal, chomp::homology::tPointset< coordtype >::minimal, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::ntables, chomp::homology::tPointset< coordtype >::quiet, chomp::homology::tPointset< coordtype >::stat, chomp::homology::tPointset< coordtype >::tablepoints, chomp::homology::tPointset< coordtype >::tables, chomp::homology::tPointset< coordtype >::temp, chomp::homology::tPointset< coordtype >::wereremoved, chomp::homology::tPointset< coordtype >::wrap, and chomp::homology::tPointset< coordtype >::wrapspace().
Referenced by chomp::homology::tPointset< coordtype >::tPointset().
{ // set the 'quiet' variable quiet = bequiet; // correct the initial size if wrong if (initialsize < 0) initialsize = 0; // initialize the point tables npoints = 0; ntables = 0; if (initialsize <= 0) tablepoints = 3000; else if (initialsize > 10000) tablepoints = 10000; else tablepoints = static_cast<int> (initialsize); tables = NULL; // initialize default parameters dim = 0; grid = NULL; wrap = NULL; temp = NULL; wereremoved = 0; dimension (defaultdimension ()); gridsize (defaultgrid); wrapspace (defaultwrap); // initialize hashing hashsize = 0; hashcleared = 0; hashtable = NULL; if (initialsize) initsize = initialsize + initialsize / 5 + 3; else initsize = 0; // optional statistic data stat = new psethashstat; minimal = NULL; maximal = NULL; return; } /* tPointset::initialize */
tPointset< coordtype > & chomp::homology::tPointset< coordtype >::operator= | ( | const tPointset< coordtype > & | p | ) | [inline] |
The assignment operator.
Definition at line 1234 of file pointset.h.
{ deallocate (); initialize (p. size (), p. quiet); add (p); return *this; } /* tPointset::operator = */
coordtype * chomp::homology::tPointset< coordtype >::operator[] | ( | int_t | n | ) | const [inline] |
Definition at line 897 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::tablepoints, and chomp::homology::tPointset< coordtype >::tables.
{ if ((n < 0) || (n >= npoints)) return NULL; return (tables [n / tablepoints] + (n % tablepoints) * dim); } /* tPointset::operator [] */
void chomp::homology::tPointset< coordtype >::rehash | ( | int_t | newsize = 0 |
) | [inline, protected] |
Definition at line 948 of file pointset.h.
References chomp::homology::ceilprimenumber(), chomp::homology::tPointset< coordtype >::hashcleared, chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::hashsize, chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::initsize, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::quiet, chomp::homology::sout, and chomp::homology::tPointset< coordtype >::stat.
Referenced by chomp::homology::tPointset< coordtype >::add(), and chomp::homology::tPointset< coordtype >::remove().
{ // adjust the size of the hashing table if needed if (newsize) newsize = ceilprimenumber (newsize); else if (!npoints && initsize && !hashsize) newsize = ceilprimenumber (initsize); // if the new size is too small, make it bigger if (newsize <= npoints + npoints / 5) { // compute an optimal new size for adding points newsize = ceilprimenumber ((npoints << 1) + 131); // check if it is not too large for 16-bit programs int x = 0xFFFF; if ((x < 0) && (newsize >= 16384)) throw "Pointset too large for a 16-bit prog."; } // show a message if needed if (hashsize && !quiet) sout << "(Changing the hashing table from " << hashsize << " to " << newsize << " at " << npoints << " points) "; else if (!quiet) sout << "(Using a hashing table for " << newsize << " "; // remove the old hashing table and allocate a new one hashsize = newsize; if (hashtable) delete [] hashtable; hashtable = new int_t [hashsize]; if (!hashtable) throw "Can't allocate memory for a hashing table."; for (int_t i = 0; i < hashsize; ++ i) hashtable [i] = -1; hashcleared = 0; // build a new hashing table for (int_t j = 0; j < npoints; ++ j) { int_t n = hashfindpoint ((*this) [j], NULL, 1); if (hashtable [n] != -1) throw "A repeated point found in the hashing table."; hashtable [n] = j; } ++ (stat -> rehashcount); if (!quiet) sout << "points.)\n"; return; } /* tPointset::rehash */
int chomp::homology::tPointset< coordtype >::remove | ( | const coordtype * | c | ) | [inline] |
Definition at line 1369 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return remove (getnumber (c)); } /* tPointset::remove */
int chomp::homology::tPointset< coordtype >::remove | ( | const tPointset< coordtype > & | p | ) | [inline] |
Definition at line 1381 of file pointset.h.
References chomp::homology::tPointset< coordtype >::size().
int chomp::homology::tPointset< coordtype >::remove | ( | int_t | n | ) | [inline] |
Definition at line 1325 of file pointset.h.
References chomp::homology::copycoord(), chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::hashcleared, chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::hashtable, chomp::homology::tPointset< coordtype >::npoints, chomp::homology::tPointset< coordtype >::ntables, chomp::homology::tPointset< coordtype >::rehash(), chomp::homology::tPointset< coordtype >::tablepoints, chomp::homology::tPointset< coordtype >::tables, and chomp::homology::tPointset< coordtype >::wereremoved.
{ if ((n < 0) || (n >= npoints)) return -1; wereremoved = 1; // find the point's place in the hashing table coordtype *coord = (*this) [n]; int_t pos = hashfindpoint (coord); // fill in this entry in the hashing table with -2 (cleared) hashtable [pos] = -2; // copy the last point in the set to replace the point being removed if (n != npoints - 1) { coordtype *lastcoord = (*this) [npoints - 1]; int_t lastpos = hashfindpoint (lastcoord); hashtable [lastpos] = n; copycoord (coord, lastcoord, dim); } // free an unused table with points' coordinates if it is sensible int_t tablenumber = npoints / tablepoints; if ((tablenumber + 2 < ntables) && tables [tablenumber + 2]) { delete [] (tables [tablenumber + 2]); tables [tablenumber + 2] = NULL; } // decrease the number of points in the set -- npoints; // update the number of cleared entries in the hashing table ++ hashcleared; // rehash if recommended if (hashcleared > npoints + 13) rehash (13); return (0); } /* tPointset::remove */
int chomp::homology::tPointset< coordtype >::remove | ( | const double * | c | ) | [inline] |
Definition at line 1375 of file pointset.h.
References chomp::homology::tPointset< coordtype >::getnumber().
{ return remove (getnumber (c)); } /* tPointset::remove */
int_t chomp::homology::tPointset< coordtype >::size | ( | ) | const [inline] |
Returns the number of points in the set.
Definition at line 879 of file pointset.h.
References chomp::homology::tPointset< coordtype >::npoints.
Referenced by chomp::homology::tPointset< coordtype >::remove(), and chomp::homology::tPointset< coordtype >::tPointset().
{ return npoints; } /* tPointset::size */
const coordtype * chomp::homology::tPointset< coordtype >::wrapspace | ( | coordtype | w | ) | [inline] |
Definition at line 813 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, chomp::homology::tPointset< coordtype >::wrap, and chomp::homology::tPointset< coordtype >::wrapspace().
const coordtype * chomp::homology::tPointset< coordtype >::wrapspace | ( | int | direction, | |
coordtype | w | |||
) | [inline] |
Definition at line 773 of file pointset.h.
{ // if this is a question or wrong parameters are given, // return the wrap table if ((direction < 0) || (direction >= dim) || !dim || (w < 0)) return wrap; // allocate memory for a new wrap table if needed if (!wrap) { wrap = new coordtype [dim]; if (!wrap) throw "Can't alloc mem for the wrap table."; for (int i = 0; i < dim; ++ i) wrap [i] = 0; } // update the dimension if it was different if (dim != defaultdim) defaultdimension (dim); // create a new default wrap table if needed if (!defaultwrap) { defaultwrap = new coordtype [dim]; if (!defaultwrap) throw "Can't alloc mem for the def. WrapTab."; for (int i = 0; i < dim; ++ i) defaultwrap [i] = wrap [i]; } // set the wrap and the default wrap coordinates wrap [direction] = w; defaultwrap [direction] = w; // return the new wrap table return wrap; } /* point::wrapspace */
const coordtype * chomp::homology::tPointset< coordtype >::wrapspace | ( | const coordtype * | w = NULL |
) | [inline] |
Definition at line 824 of file pointset.h.
References chomp::homology::tPointset< coordtype >::dim, and chomp::homology::tPointset< coordtype >::wrap.
Referenced by chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::wrapspace().
int chomp::homology::tPointset< coordtype >::defaultdim = 0 [static, protected] |
Definition at line 630 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::defaultdimension(), and chomp::homology::tPointset< coordtype >::gridsize().
double * chomp::homology::tPointset< coordtype >::defaultgrid = NULL [static, protected] |
coordtype * chomp::homology::tPointset< coordtype >::defaultwrap = NULL [static, protected] |
Definition at line 632 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::defaultdimension(), chomp::homology::tPointset< coordtype >::dimension(), and chomp::homology::tPointset< coordtype >::initialize().
int chomp::homology::tPointset< coordtype >::dim [protected] |
Definition at line 604 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::getpoint(), chomp::homology::tPointset< coordtype >::gridsize(), chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::operator[](), chomp::homology::tPointset< coordtype >::remove(), and chomp::homology::tPointset< coordtype >::wrapspace().
double* chomp::homology::tPointset< coordtype >::grid [protected] |
Definition at line 620 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::getpoint(), chomp::homology::tPointset< coordtype >::gridsize(), and chomp::homology::tPointset< coordtype >::initialize().
int_t chomp::homology::tPointset< coordtype >::hashcleared [protected] |
Definition at line 645 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::rehash(), and chomp::homology::tPointset< coordtype >::remove().
int_t chomp::homology::tPointset< coordtype >::hashsize [protected] |
Definition at line 642 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::gethashsize(), chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::rehash().
int_t* chomp::homology::tPointset< coordtype >::hashtable [protected] |
Definition at line 648 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::rehash(), and chomp::homology::tPointset< coordtype >::remove().
unsigned chomp::homology::tPointset< coordtype >::initsize [protected] |
Definition at line 651 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::rehash().
coordtype * chomp::homology::tPointset< coordtype >::maximal |
Definition at line 590 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), and chomp::homology::tPointset< coordtype >::initialize().
coordtype* chomp::homology::tPointset< coordtype >::minimal |
Definition at line 590 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), and chomp::homology::tPointset< coordtype >::initialize().
int_t chomp::homology::tPointset< coordtype >::npoints [protected] |
Definition at line 607 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::check(), chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::empty(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::operator[](), chomp::homology::tPointset< coordtype >::rehash(), chomp::homology::tPointset< coordtype >::remove(), and chomp::homology::tPointset< coordtype >::size().
int_t chomp::homology::tPointset< coordtype >::ntables [protected] |
Definition at line 610 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::remove().
int chomp::homology::tPointset< coordtype >::quiet |
Returns the number of points by simply projecting the set onto an integer number.
WARNING: This function is DEPRECATED! Use the functions "size" and "empty" instead.
Definition at line 577 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::rehash(), and chomp::homology::tPointset< coordtype >::tPointset().
psethashstat* chomp::homology::tPointset< coordtype >::stat |
int chomp::homology::tPointset< coordtype >::tablepoints [protected] |
Definition at line 613 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::operator[](), and chomp::homology::tPointset< coordtype >::remove().
coordtype** chomp::homology::tPointset< coordtype >::tables [protected] |
Definition at line 617 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::initialize(), chomp::homology::tPointset< coordtype >::operator[](), and chomp::homology::tPointset< coordtype >::remove().
coordtype* chomp::homology::tPointset< coordtype >::temp [protected] |
Definition at line 627 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::getnumber(), chomp::homology::tPointset< coordtype >::hashfindpoint(), and chomp::homology::tPointset< coordtype >::initialize().
int chomp::homology::tPointset< coordtype >::wereremoved |
Definition at line 596 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::remove().
coordtype* chomp::homology::tPointset< coordtype >::wrap [protected] |
Definition at line 623 of file pointset.h.
Referenced by chomp::homology::tPointset< coordtype >::add(), chomp::homology::tPointset< coordtype >::deallocate(), chomp::homology::tPointset< coordtype >::dimension(), chomp::homology::tPointset< coordtype >::hashfindpoint(), chomp::homology::tPointset< coordtype >::initialize(), and chomp::homology::tPointset< coordtype >::wrapspace().