Intermediate commit while converting to the new architecture
* Converted Filtration into StaticPersistence and DynamicPersistenceTrails
(both right now work with the underlying std::vector rather than std::list order)
* Filtration is now just an auxilliary glue (a map between Complex and Persistence)
* Whether chains are vectors or lists can be interchanged
* Added PersistenceDiagram with a simple bottleneck_distance() function
* Converted triangle, alphashapes3d, and cech-complex examples
* Lots of organizational changes
(factoring utilities out into containers.h, indirect.h, property-maps.h)
* Trying to document along the way with NaturalDocs-type comments
#ifndef __CYCLES_H__
#define __CYCLES_H__
#include "chain.h"
#include <vector>
#include "utilities/circular_list.h"
template<class OrderIndex_ = int>
struct VectorChains
{
typedef OrderIndex_ OrderIndex;
typedef ChainWrapper<std::vector<OrderIndex> > Chain;
typedef Chain Cycle;
Cycle cycle;
VectorChains() {}
VectorChains(Cycle z): cycle(z) {}
bool sign() const { return cycle.empty(); }
template<class U> struct rebind
{ typedef VectorChains<U> other; };
};
template<class OrderIndex_ = int>
struct ListChains
{
typedef OrderIndex_ OrderIndex;
typedef ChainWrapper<List<OrderIndex> > Chain;
typedef Chain Cycle;
Cycle cycle;
ListChains() {}
ListChains(Cycle z): cycle(z) {}
bool sign() const { return cycle.empty(); }
template<class U> struct rebind
{ typedef ListChains<U> other; };
};
#endif // __CYCLES_H__