Program Listing for File time_surface.h
↰ Return to documentation for file (include/cpphots/interfaces/time_surface.h)
#ifndef CPPHOTS_INTERFACES_TIME_SURFACE_H
#define CPPHOTS_INTERFACES_TIME_SURFACE_H
#include <ostream>
#include <istream>
#include <memory>
#include "../types.h"
#include "streamable.h"
#include "clonable.h"
namespace cpphots {
namespace interfaces {
class TimeSurfaceCalculator : public virtual interfaces::Streamable, public ClonableBase<TimeSurfaceCalculator> {
public:
virtual ~TimeSurfaceCalculator() {}
virtual void update(uint64_t t, uint16_t x, uint16_t y) = 0;
virtual void update(const event& ev) = 0;
virtual std::pair<TimeSurfaceType, bool> compute(uint64_t t, uint16_t x, uint16_t y) const = 0;
virtual std::pair<TimeSurfaceType, bool> compute(const event& ev) const = 0;
virtual std::pair<TimeSurfaceType, bool> updateAndCompute(uint64_t t, uint16_t x, uint16_t y) = 0;
virtual std::pair<TimeSurfaceType, bool> updateAndCompute(const event& ev) = 0;
virtual const TimeSurfaceType& getFullContext() const = 0;
virtual TimeSurfaceType getContext() const = 0;
virtual TimeSurfaceType sampleContext(uint64_t t) const = 0;
virtual void reset() = 0;
virtual std::pair<uint16_t, uint16_t> getSize() const = 0;
virtual uint16_t getWx() const = 0;
virtual uint16_t getWy() const = 0;
};
}
using TimeSurfacePtr = interfaces::TimeSurfaceCalculator*;
namespace interfaces {
class TimeSurfacePoolCalculator : public virtual interfaces::Streamable, public ClonableBase<TimeSurfacePoolCalculator> {
public:
virtual ~TimeSurfacePoolCalculator() {}
virtual void update(uint64_t t, uint16_t x, uint16_t y, uint16_t p) = 0;
virtual void update(const event& ev) = 0;
virtual std::pair<TimeSurfaceType, bool> compute(uint64_t t, uint16_t x, uint16_t y, uint16_t p) const = 0;
virtual std::pair<TimeSurfaceType, bool> compute(const event& ev) const = 0;
virtual std::pair<TimeSurfaceType, bool> updateAndCompute(uint64_t t, uint16_t x, uint16_t y, uint16_t p) = 0;
virtual std::pair<TimeSurfaceType, bool> updateAndCompute(const event& ev) = 0;
virtual std::pair<uint16_t, uint16_t> getSize() const = 0;
virtual void reset() = 0;
virtual TimeSurfacePtr& getSurface(size_t idx) = 0;
virtual const TimeSurfacePtr& getSurface(size_t idx) const = 0;
virtual std::vector<TimeSurfaceType> sampleContexts(uint64_t t) = 0;
virtual size_t getNumSurfaces() const = 0;
};
}
}
#endif