PoDoFo 1.0.0-dev
Loading...
Searching...
No Matches
StreamDeviceBase.h
1
7#ifndef AUX_STREAM_DEVICE_BASE_H
8#define AUX_STREAM_DEVICE_BASE_H
9
10#include "basedefs.h"
11#include <cstdint>
12#include "EnumFlags.h"
13
14namespace PoDoFo {
15
16enum class DeviceAccess : uint8_t
17{
18 Read = 1,
19 Write = 2,
20 ReadWrite = Read | Write
21};
22
23enum class SeekDirection : uint8_t
24{
25 Begin = 0,
26 Current,
27 End
28};
29
30class PODOFO_API StreamDeviceBase
31{
32protected:
33 StreamDeviceBase();
34
35public:
39 void Seek(size_t offset);
40
47 void Seek(ssize_t offset, SeekDirection direction);
48
49 void Close();
50
51public:
52 DeviceAccess GetAccess() const { return m_Access; }
53
57 virtual bool Eof() const = 0;
58
64 virtual size_t GetLength() const = 0;
65
69 virtual size_t GetPosition() const = 0;
70
71 virtual bool CanSeek() const;
72
73protected:
74 void EnsureAccess(DeviceAccess access) const;
75 void SetAccess(DeviceAccess access) { m_Access = access; }
76
77 virtual void seek(ssize_t offset, SeekDirection direction);
78 virtual void close();
79
80private:
81 DeviceAccess m_Access;
82};
83
84}
85
86ENABLE_BITMASK_OPERATORS(PoDoFo::DeviceAccess);
87
88#endif // AUX_STREAM_DEVICE_BASE_H
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16