PoDoFo 1.2.0
Loading...
Searching...
No Matches
StreamDeviceBase.h
1// SPDX-FileCopyrightText: 2006 Dominik Seichter <domseichter@web.de>
2// SPDX-FileCopyrightText: 2020 Francesco Pretto <ceztko@gmail.com>
3// SPDX-License-Identifier: LGPL-2.0-or-later OR MPL-2.0
4
5#ifndef AUX_STREAM_DEVICE_BASE_H
6#define AUX_STREAM_DEVICE_BASE_H
7
8#include "basedefs.h"
9#include <cstdint>
10#include "EnumFlags.h"
11
12namespace PoDoFo {
13
14enum class DeviceAccess : uint8_t
15{
16 Read = 1,
17 Write = 2,
18 ReadWrite = Read | Write
19};
20
21enum class SeekDirection : uint8_t
22{
23 Begin = 0,
24 Current,
25 End
26};
27
28class PODOFO_API StreamDeviceBase
29{
30protected:
31 StreamDeviceBase();
32
33public:
36 void Seek(size_t offset);
37
43 void Seek(ssize_t offset, SeekDirection direction);
44
45 void Close();
46
47public:
48 DeviceAccess GetAccess() const { return m_Access; }
49
51 virtual bool Eof() const = 0;
52
57 virtual size_t GetLength() const = 0;
58
61 virtual size_t GetPosition() const = 0;
62
63 virtual bool CanSeek() const;
64
65protected:
66 void EnsureAccess(DeviceAccess access) const;
67 void SetAccess(DeviceAccess access) { m_Access = access; }
68
69 virtual void seek(ssize_t offset, SeekDirection direction);
70 virtual void close();
71
72private:
73 DeviceAccess m_Access;
74};
75
76}
77
78ENABLE_BITMASK_OPERATORS(PoDoFo::DeviceAccess);
79
80#endif // AUX_STREAM_DEVICE_BASE_H
All classes, functions, types and enums of PoDoFo are members of these namespace.
Definition basetypes.h:13