40#ifndef GEOGRAM_BASIC_PERMUTATION 
   41#define GEOGRAM_BASIC_PERMUTATION 
   57    namespace Permutation {
 
   71            std::vector<bool> visited(permutation.
size(), 
false);
 
   73                if(permutation[i] >= permutation.
size()) {
 
   76                if(visited[permutation[i]]) {
 
   79                visited[permutation[i]] = 
true;
 
 
  173                mark(permutation, k);
 
  176                        pdata + i * elemsize, pdata + j * elemsize, elemsize
 
  179                    mark(permutation, j);
 
 
  225                mark(permutation, k);
 
  229                    mark(permutation, j);
 
 
  264                    mark(permutation, j);
 
  269                mark(permutation, j);
 
 
  291                invert[permutation[i]] = i;
 
 
 
#define geo_debug_assert(x)
Verifies that a condition is met.
 
Vector with aligned memory allocation.
 
index_t size() const
Gets the number of elements.
 
Common include file, providing basic definitions. Should be included before anything else by all head...
 
Types and functions for memory manipulation.
 
unsigned char byte
Unsigned byte type.
 
byte * pointer
Pointer to unsigned byte(s)
 
void copy(void *to, const void *from, size_t size)
Copies a memory block.
 
bool is_marked(const vector< index_t > &permutation, index_t i)
Checks if a permutation element has been visited.
 
void unmark(vector< index_t > &permutation, index_t i)
Unmarks a permutation element.
 
void mark(vector< index_t > &permutation, index_t i)
Marks a permutation element as visited.
 
void invert(vector< index_t > &permutation)
Inverts a permutation in-place.
 
bool is_valid(const vector< index_t > &permutation)
Checks whether a vector is a valid permutation.
 
void apply(void *data, const vector< index_t > &permutation_in, size_t elemsize)
Applies a permutation in-place. Permutes the first N elements of size elemsize in array data using pe...
 
Global Vorpaline namespace.
 
geo_signed_index_t signed_index_t
The type for storing and manipulating indices differences.
 
geo_index_t index_t
The type for storing and manipulating indices.
 
Types and functions for numbers manipulation.