Program Listing for File Distance.h
↰ Return to documentation for file (include/gwmodelpp/spatialweight/Distance.h
)
#ifndef DISTANCE_H
#define DISTANCE_H
#include <memory>
#include <string>
#include <unordered_map>
#include <armadillo>
#include <variant>
namespace gwm
{
typedef std::variant<arma::mat, arma::vec, arma::uword> DistParamVariant;
class Distance
{
public:
struct Parameter
{
arma::uword total;
Parameter(): total(0) {}
};
enum DistanceType
{
CRSDistance,
MinkwoskiDistance,
DMatDistance,
OneDimDistance,
};
static std::unordered_map<DistanceType, std::string> TypeNameMapper;
public:
virtual ~Distance() {};
virtual Distance* clone() = 0;
virtual DistanceType type() = 0;
virtual Parameter* parameter() const = delete;
public:
virtual void makeParameter(std::initializer_list<DistParamVariant> plist) = 0;
virtual arma::vec distance(arma::uword focus) = 0;
virtual double maxDistance() = 0;
virtual double minDistance() = 0;
};
}
#endif // DISTANCE_H