/usr/include/singular/gfanlib/gfanlib_traversal.h is in libsingular4-dev-common 1:4.1.0-p3+ds-2build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #ifndef GFANLIB_TRAVERSAL_H_INCLUDED
#define GFANLIB_TRAVERSAL_H_INCLUDED
#include "gfanlib_zfan.h"
namespace gfan{
/*
This file contains the generic algorithm for traversing a connected component of a pure fan up to symmetry.
*/
class FanTraverser
{
public:
/**
* Go to the cone which is connected to the current facet through the ridge in direction ray.
* The "ridge" is a relative interior point of the ridge.
*/
virtual void changeCone(ZVector const &ridgeVector, ZVector const &rayVector)=0;
/**
* Compute the link of the fan in the ridge given by the vector ridge IS THIS A FACET NORMAL OR AN INTERIOR POINT?
* This gives a list of symmetry invariant points under the actions keeping the link fixed.
*/
virtual std::list<ZVector> link(ZVector const &ridgeVector)=0;
virtual ZCone & refToPolyhedralCone()=0;
/**
* If there is no cone state data for the traverser, half of the changeCone() calls can be avoided.
* That this is a valid of optimization for the ConeTraverser is indicated returning true in the following function.
*/
virtual bool hasNoState()const;
};
class Target
{
public:
virtual bool process(FanTraverser &traverser)=0;
};
class FanBuilder : public Target
{
ZFan coneCollection;
public:
ZFan const &getFanRef(){return coneCollection;}
FanBuilder(int n, SymmetryGroup const &sym);
bool process(FanTraverser &Traverser);
};
void traverse(FanTraverser &traverser, Target &target, SymmetryGroup const *sym=0);
};
#endif
|