#pragma once #include "fs/IStreamSink.h" #include "tl/flag_set2.h" #include "fs/Api.h" namespace fs { class FS_API ISink : public IStreamSink { public: enum class Flag { }; typedef tl::flag_set2 Flags; ISink() = default; ~ISink() override = default; ISink(ISink&&) = default; ISink& operator=(ISink&&) = default; //changes the sink cursor either to an absolute offset or relative one //NOTE!!! if the cursor is moved beyond the sink size, the size is increased to fit it. virtual void seekBeg(uint64_t offset) = 0; virtual void seekRel(int64_t offset) = 0; //returns the sink cursor. Always between 0 and size virtual uint64_t tell() const = 0; }; }