Tag Parser 12.4.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
basicfileinfo.h
Go to the documentation of this file.
1#ifndef TAG_PARSER_BASICFILEINFO_H
2#define TAG_PARSER_BASICFILEINFO_H
3
4#include "./global.h"
5
6#include <c++utilities/conversion/stringconversion.h>
7#include <c++utilities/io/nativefilestream.h>
8
9#include <cstdint>
10#include <string>
11
12namespace TagParser {
13
15public:
16 // constructor, destructor
17 explicit BasicFileInfo();
18 explicit BasicFileInfo(std::string &&path);
19 explicit BasicFileInfo(std::string_view path);
20 BasicFileInfo(const BasicFileInfo &) = delete;
22 virtual ~BasicFileInfo();
23
24 // methods to control associated file stream
25 void open(bool readOnly = false);
26 void reopen(bool readOnly = false);
27 bool isOpen() const;
28 bool isReadOnly() const;
29 void close();
30 void invalidate();
31 CppUtilities::NativeFileStream &stream();
32 const CppUtilities::NativeFileStream &stream() const;
33
34 // methods to get, set path (components)
35 const std::string &path() const;
36 void setPath(std::string_view path);
37 void setPath(std::string &&path);
38 static std::string fileName(std::string_view path, bool cutExtension = false);
39 std::string fileName(bool cutExtension = false) const;
40 static std::string extension(std::string_view path);
41 std::string extension() const;
42 static std::string pathWithoutExtension(std::string_view fullPath);
43 std::string pathWithoutExtension() const;
44 static std::string containingDirectory(std::string_view path);
45 std::string containingDirectory() const;
46 static std::string_view pathForOpen(std::string_view url);
47
48 // methods to get, set the file size
49 std::uint64_t size() const;
50 void reportSizeChanged(std::uint64_t newSize);
51 void reportPathChanged(std::string_view newPath);
52 void reportPathChanged(std::string &&newPath);
53
54protected:
55 virtual void invalidated();
56
57private:
58 std::string m_path;
59 CppUtilities::NativeFileStream m_file;
60 std::uint64_t m_size;
61 bool m_readOnly;
62};
63
69inline bool BasicFileInfo::isOpen() const
70{
71 return m_file.is_open();
72}
73
77inline bool BasicFileInfo::isReadOnly() const
78{
79 return m_readOnly;
80}
81
85inline CppUtilities::NativeFileStream &BasicFileInfo::stream()
86{
87 return m_file;
88}
89
93inline const CppUtilities::NativeFileStream &BasicFileInfo::stream() const
94{
95 return m_file;
96}
97
103inline const std::string &BasicFileInfo::path() const
104{
105 return m_path;
106}
107
115inline std::uint64_t BasicFileInfo::size() const
116{
117 return m_size;
118}
119
124inline void BasicFileInfo::reportSizeChanged(std::uint64_t newSize)
125{
126 m_size = newSize;
127}
128
133inline void BasicFileInfo::reportPathChanged(std::string_view newPath)
134{
135 m_path = newPath;
136}
137
142inline void BasicFileInfo::reportPathChanged(std::string &&newPath)
143{
144 m_path = std::move(newPath);
145}
146
153inline std::string_view BasicFileInfo::pathForOpen(std::string_view url)
154{
155 return CppUtilities::startsWith(url, "file:/") ? url.data() + 6 : url.data();
156}
157
158} // namespace TagParser
159
160#endif // TAG_PARSER_BASICFILEINFO_H
The BasicFileInfo class provides basic file information such as file name, extension,...
void reportPathChanged(std::string_view newPath)
Call this function to report that the path changed.
const std::string & path() const
Returns the path of the current file.
bool isReadOnly() const
Indicates whether the last open()/reopen() call was read-only.
std::uint64_t size() const
Returns size of the current file in bytes.
CppUtilities::NativeFileStream & stream()
Returns the std::fstream for the current instance.
BasicFileInfo(const BasicFileInfo &)=delete
static std::string_view pathForOpen(std::string_view url)
Returns removes the "file:/" prefix from url to be able to pass it to functions like open(),...
void reportSizeChanged(std::uint64_t newSize)
Call this function to report that the size changed.
BasicFileInfo & operator=(const BasicFileInfo &)=delete
bool isOpen() const
Indicates whether a std::fstream is open for the current file.
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
Definition global.h:14
Contains all classes and functions of the TagInfo library.
Definition aaccodebook.h:10