Files
fluxengine/lib/fluxsink/fluxsink.h
Jeff Epler 6e817e2d7c Add a2r as a flux sink
a2r is preferred for apple2 disk archiving and should have a pathway
to emulation via passport.py (woz and dsk conversion)
2022-03-23 14:06:01 -05:00

47 lines
1.3 KiB
C++

#ifndef FLUXSINK_H
#define FLUXSINK_H
#include "flags.h"
#include <ostream>
class Fluxmap;
class FluxSinkProto;
class HardwareFluxSinkProto;
class AuFluxSinkProto;
class A2RFluxSinkProto;
class VcdFluxSinkProto;
class ScpFluxSinkProto;
class Fl2FluxSinkProto;
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(const FluxSinkProto& config);
static void updateConfigForFilename(FluxSinkProto* proto, const std::string& filename);
public:
virtual void writeFlux(int track, int side, const Fluxmap& fluxmap) = 0;
virtual operator std::string () const = 0;
};
inline std::ostream& operator << (std::ostream& stream, FluxSink& flushSink)
{
stream << (std::string)flushSink;
return stream;
}
#endif