mirror of
https://github.com/davidgiven/fluxengine.git
synced 2025-10-31 11:17:01 -07:00
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#ifndef FLUXSINK_H
|
|
#define FLUXSINK_H
|
|
|
|
#include "lib/config/flags.h"
|
|
#include <ostream>
|
|
|
|
class Fluxmap;
|
|
class FluxSinkProto;
|
|
class HardwareFluxSinkProto;
|
|
class AuFluxSinkProto;
|
|
class A2RFluxSinkProto;
|
|
class VcdFluxSinkProto;
|
|
class ScpFluxSinkProto;
|
|
class Fl2FluxSinkProto;
|
|
class Config;
|
|
|
|
class FluxSink
|
|
{
|
|
public:
|
|
virtual ~FluxSink() {}
|
|
|
|
static std::unique_ptr<FluxSink> createHardwareFluxSink(
|
|
const HardwareFluxSinkProto& config);
|
|
static std::unique_ptr<FluxSink> createAuFluxSink(
|
|
const AuFluxSinkProto& config);
|
|
static std::unique_ptr<FluxSink> createA2RFluxSink(
|
|
const A2RFluxSinkProto& config);
|
|
static std::unique_ptr<FluxSink> createVcdFluxSink(
|
|
const VcdFluxSinkProto& config);
|
|
static std::unique_ptr<FluxSink> createScpFluxSink(
|
|
const ScpFluxSinkProto& config);
|
|
static std::unique_ptr<FluxSink> createFl2FluxSink(
|
|
const Fl2FluxSinkProto& config);
|
|
|
|
static std::unique_ptr<FluxSink> createFl2FluxSink(
|
|
const std::string& filename);
|
|
|
|
static std::unique_ptr<FluxSink> create(Config& config);
|
|
static std::unique_ptr<FluxSink> create(const FluxSinkProto& config);
|
|
|
|
public:
|
|
/* Writes a fluxmap to a track and side. */
|
|
|
|
virtual void writeFlux(int track, int side, const Fluxmap& fluxmap) = 0;
|
|
|
|
/* Returns whether this is writing to real hardware or not. */
|
|
|
|
virtual bool isHardware() const
|
|
{
|
|
return false;
|
|
}
|
|
|
|
virtual operator std::string() const = 0;
|
|
};
|
|
|
|
inline std::ostream& operator<<(std::ostream& stream, FluxSink& flushSink)
|
|
{
|
|
stream << (std::string)flushSink;
|
|
return stream;
|
|
}
|
|
|
|
#endif
|