Program Listing for File clustering.h

Return to documentation for file (include/cpphots/interfaces/clustering.h)

#ifndef CPPHOTS_INTERFACES_CLUSTERING_H
#define CPPHOTS_INTERFACES_CLUSTERING_H


#include <vector>

#include "../types.h"
#include "streamable.h"
#include "clonable.h"


namespace cpphots {

namespace interfaces {

class Clusterer : public virtual Streamable, public ClonableBase<Clusterer> {

public:

    ~Clusterer() {}

    virtual uint16_t cluster(const TimeSurfaceType& surface) = 0;

    virtual uint16_t getNumClusters() const = 0;

    virtual void addCentroid(const TimeSurfaceType& centroid) = 0;

    virtual const std::vector<TimeSurfaceType>& getCentroids() const = 0;

    virtual void clearCentroids() = 0;

    virtual bool hasCentroids() const = 0;

    virtual bool isOnline() const = 0;

    virtual bool toggleLearning(bool enable = true) = 0;

    virtual void train(const std::vector<TimeSurfaceType>& tss) = 0;

    virtual std::vector<uint32_t> getHistogram() const = 0;

    virtual void reset() = 0;

};

}


}


#endif