Tag Parser  9.1.0
C++ library for reading and writing MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska tags
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 
12 namespace TagParser {
13 
15 public:
16  // constructor, destructor
17  BasicFileInfo(const std::string &path = std::string());
18  BasicFileInfo(const BasicFileInfo &) = delete;
19  BasicFileInfo &operator=(const BasicFileInfo &) = delete;
20  virtual ~BasicFileInfo();
21 
22  // methods to control associated file stream
23  void open(bool readOnly = false);
24  void reopen(bool readOnly = false);
25  bool isOpen() const;
26  bool isReadOnly() const;
27  void close();
28  void invalidate();
29  CppUtilities::NativeFileStream &stream();
30  const CppUtilities::NativeFileStream &stream() const;
31 
32  // methods to get, set path (components)
33  const std::string &path() const;
34  void setPath(const std::string &path);
35  static std::string fileName(const std::string &path, bool cutExtension = false);
36  std::string fileName(bool cutExtension = false) const;
37  static std::string extension(const std::string &path);
38  std::string extension() const;
39  static std::string pathWithoutExtension(const std::string &fullPath);
40  std::string pathWithoutExtension() const;
41  static std::string containingDirectory(const std::string &path);
42  std::string containingDirectory() const;
43  static const char *pathForOpen(const std::string &url);
44 
45  // methods to get, set the file size
46  std::uint64_t size() const;
47  void reportSizeChanged(std::uint64_t newSize);
48  void reportPathChanged(const std::string &newPath);
49 
50 protected:
51  virtual void invalidated();
52 
53 private:
54  std::string m_path;
55  CppUtilities::NativeFileStream m_file;
56  std::uint64_t m_size;
57  bool m_readOnly;
58 };
59 
65 inline bool BasicFileInfo::isOpen() const
66 {
67  return m_file.is_open();
68 }
69 
73 inline bool BasicFileInfo::isReadOnly() const
74 {
75  return m_readOnly;
76 }
77 
81 inline CppUtilities::NativeFileStream &BasicFileInfo::stream()
82 {
83  return m_file;
84 }
85 
89 inline const CppUtilities::NativeFileStream &BasicFileInfo::stream() const
90 {
91  return m_file;
92 }
93 
99 inline const std::string &BasicFileInfo::path() const
100 {
101  return m_path;
102 }
103 
111 inline std::uint64_t BasicFileInfo::size() const
112 {
113  return m_size;
114 }
115 
120 inline void BasicFileInfo::reportSizeChanged(std::uint64_t newSize)
121 {
122  m_size = newSize;
123 }
124 
129 inline void BasicFileInfo::reportPathChanged(const std::string &newPath)
130 {
131  m_path = newPath;
132 }
133 
140 inline const char *BasicFileInfo::pathForOpen(const std::string &url)
141 {
142  return CppUtilities::startsWith(url, "file:/") ? url.data() + 6 : url.data();
143 }
144 
145 } // namespace TagParser
146 
147 #endif // TAG_PARSER_BASICFILEINFO_H
global.h
TagParser::BasicFileInfo::pathForOpen
static const char * pathForOpen(const std::string &url)
Returns removes the "file:/" prefix from url to be able to pass it to functions like open(),...
Definition: basicfileinfo.h:140
TagParser
Contains all classes and functions of the TagInfo library.
Definition: aaccodebook.h:10
TagParser::MatroskaTagIds::url
constexpr const TAG_PARSER_EXPORT char * url()
Definition: matroskatagid.h:48
TagParser::BasicFileInfo::reportPathChanged
void reportPathChanged(const std::string &newPath)
Call this function to report that the path changed.
Definition: basicfileinfo.h:129
TagParser::BasicFileInfo::isReadOnly
bool isReadOnly() const
Indicates whether the last open()/reopen() call was read-only.
Definition: basicfileinfo.h:73
TagParser::BasicFileInfo
The BasicFileInfo class provides basic file information such as file name, extension,...
Definition: basicfileinfo.h:14
TagParser::BasicFileInfo::isOpen
bool isOpen() const
Indicates whether a std::fstream is open for the current file.
Definition: basicfileinfo.h:65
TagParser::BasicFileInfo::reportSizeChanged
void reportSizeChanged(std::uint64_t newSize)
Call this function to report that the size changed.
Definition: basicfileinfo.h:120
TagParser::BasicFileInfo::size
std::uint64_t size() const
Returns size of the current file in bytes.
Definition: basicfileinfo.h:111
TAG_PARSER_EXPORT
#define TAG_PARSER_EXPORT
Marks the symbol to be exported by the tagparser library.
TagParser::BasicFileInfo::stream
CppUtilities::NativeFileStream & stream()
Returns the std::fstream for the current instance.
Definition: basicfileinfo.h:81
TagParser::BasicFileInfo::path
const std::string & path() const
Returns the path of the current file.
Definition: basicfileinfo.h:99