AJA NTV2 SDK  17.5.0.1242
NTV2 SDK 17.5.0.1242
file_io.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: MIT */
8 #ifndef AJA_FILE_IO_H
9 #define AJA_FILE_IO_H
10 
11 #include "ajabase/common/types.h"
12 #include "ajabase/common/public.h"
13 #include "ajabase/system/system.h"
14 #include <vector>
15 #include <string>
16 
17 #if defined(AJA_WINDOWS)
18  const char AJA_PATHSEP = '\\';
19  const wchar_t AJA_PATHSEP_WIDE = L'\\';
20 #else
21  const char AJA_PATHSEP = '/';
22  const wchar_t AJA_PATHSEP_WIDE = L'/';
23 #endif
24 
25 typedef enum
26 {
30 
35 
36 
37 typedef enum
38 {
43 
44 
45 typedef enum
46 {
51 
52 
53 typedef enum
54 {
57 } AJAIOModel;
58 
59 
65 {
66 public:
67  AJAFileIO();
68  ~AJAFileIO();
69 
80  AJAStatus Open(
81  const std::string & fileName,
82  const int flags,
83  const int properties);
84 
85  AJAStatus Open(
86  const std::wstring & fileName,
87  const int flags,
88  const int properties);
89 
96  AJAStatus Close();
97 
103  bool IsOpen();
104 
113  uint32_t Read(uint8_t* pBuffer, const uint32_t length);
114 
123  uint32_t Read(std::string& buffer, const uint32_t length);
124 
133  uint32_t Write(const uint8_t* pBuffer, const uint32_t length) const;
134 
142  uint32_t Write(const std::string& buffer) const;
143 
149  AJAStatus Sync();
150 
158  AJAStatus Truncate(int32_t offset);
159 
165  int64_t Tell();
166 
175  AJAStatus Seek(const int64_t distance, const AJAFileSetFlag flag) const;
176 
186  AJAStatus FileInfo(int64_t& createTime, int64_t& modTime, int64_t& size);
187  AJAStatus FileInfo(int64_t& createTime, int64_t& modTime, int64_t& size, std::string& filePath);
188 
196  static bool FileExists(const std::wstring& fileName);
197  static bool FileExists(const std::string& fileName);
198 
207  static AJAStatus Delete(const std::string& fileName);
208  static AJAStatus Delete(const std::wstring& fileName);
209 
220  static AJAStatus ReadDirectory(
221  const std::string& directory,
222  const std::string& filePattern,
223  std::vector<std::string>& fileContainer);
224 
225  static AJAStatus ReadDirectory(
226  const std::wstring& directory,
227  const std::wstring& filePattern,
228  std::vector<std::wstring>& fileContainer);
229 
239  static AJAStatus DoesDirectoryContain(
240  const std::string& directory,
241  const std::string& filePattern);
242 
243  static AJAStatus DoesDirectoryContain(
244  const std::wstring& directory,
245  const std::wstring& filePattern);
246 
255  static AJAStatus DoesDirectoryExist(const std::string& directory);
256  static AJAStatus DoesDirectoryExist(const std::wstring& directory);
257 
266  static bool DirectoryExists(const std::string& directory);
267  static bool DirectoryExists(const std::wstring& directory);
268 
277  static AJAStatus IsDirectoryEmpty(const std::string& directory);
278  static AJAStatus IsDirectoryEmpty(const std::wstring& directory);
279 
287  static AJAStatus TempDirectory(std::string& directory); // New in SDK 16.0
288  static AJAStatus TempDirectory(std::wstring& directory); // New in SDK 16.0
289 
297  static AJAStatus GetWorkingDirectory(std::string& directory); // New in SDK 16.0
298  static AJAStatus GetWorkingDirectory(std::wstring& directory); // New in SDK 16.0
299 
309  static AJAStatus GetDirectoryName(const std::string& path, std::string& directory); // New in SDK 16.0
310  static AJAStatus GetDirectoryName(const std::wstring& path, std::wstring& directory); // New in SDK 16.0
311 
321  static AJAStatus GetFileName(const std::string& path, std::string& filename); // New in SDK 16.0
322  static AJAStatus GetFileName(const std::wstring& path, std::wstring& filename); // New in SDK 16.0
323 
331  static AJAStatus GetExecutablePath(std::string& path); // New in SDK 16.2
332  static AJAStatus GetExecutablePath(std::wstring& path); // New in SDK 16.2
333 
339  void SetHandle(FILE *fp);
340 
341 #if defined(AJA_WINDOWS)
342  void *GetHandle(void) {return mFileDescriptor;}
343 #else
344  void *GetHandle(void) {return mpFile;}
345 #endif
346 
347 private:
348 
349 #if defined(AJA_WINDOWS)
350  HANDLE mFileDescriptor;
351 #else
352  FILE* mpFile;
353 #endif
354  AJAIOModel mIoModel;
355 };
356 
357 #endif // AJA_FILE_IO_H
HANDLE
short HANDLE
Definition: ajatypes.h:317
eAJASeekEnd
@ eAJASeekEnd
Definition: file_io.h:49
eAJAIoDefault
@ eAJAIoDefault
Definition: file_io.h:55
types.h
Declares common types used in the ajabase library.
AJA_PATHSEP_WIDE
const wchar_t AJA_PATHSEP_WIDE
Definition: file_io.h:22
eAJAWriteOnly
@ eAJAWriteOnly
Definition: file_io.h:32
eAJACreateAlways
@ eAJACreateAlways
Definition: file_io.h:27
AJA_PATHSEP
const char AJA_PATHSEP
Definition: file_io.h:21
AJA_EXPORT
#define AJA_EXPORT
Definition: export.h:34
AJAFileIO::GetHandle
void * GetHandle(void)
Definition: file_io.h:344
eAJAReadOnly
@ eAJAReadOnly
Definition: file_io.h:31
public.h
Master header for the ajabase library.
eAJATruncateExisting
@ eAJATruncateExisting
Definition: file_io.h:29
eAJANoCaching
@ eAJANoCaching
Definition: file_io.h:41
eAJAIoAlternate
@ eAJAIoAlternate
Definition: file_io.h:56
AJAFileSetFlag
AJAFileSetFlag
Definition: file_io.h:45
AJAStatus
AJAStatus
Definition: types.h:378
eAJAUnbuffered
@ eAJAUnbuffered
Definition: file_io.h:40
AJAFileCreationFlags
AJAFileCreationFlags
Definition: file_io.h:25
eAJASeekCurrent
@ eAJASeekCurrent
Definition: file_io.h:48
system.h
System specific functions.
AJAFileProperties
AJAFileProperties
Definition: file_io.h:37
eAJABuffered
@ eAJABuffered
Definition: file_io.h:39
AJAFileIO
Definition: file_io.h:64
eAJASeekSet
@ eAJASeekSet
Definition: file_io.h:47
eAJACreateNew
@ eAJACreateNew
Definition: file_io.h:28
AJAIOModel
AJAIOModel
Definition: file_io.h:53
eAJAReadWrite
@ eAJAReadWrite
Definition: file_io.h:33