1//
2// File_UNIX.h
3//
4// Library: Foundation
5// Package: Filesystem
6// Module: File
7//
8// Definition of the FileImpl class for Unix.
9//
10// Copyright (c) 2004-2006, Applied Informatics Software Engineering GmbH.
11// and Contributors.
12//
13// SPDX-License-Identifier: BSL-1.0
14//
15
16
17#ifndef Foundation_File_UNIX_INCLUDED
18#define Foundation_File_UNIX_INCLUDED
19
20
21#include "Poco/Foundation.h"
22#include "Poco/Timestamp.h"
23
24
25namespace Poco {
26
27
28class FileImpl
29{
30protected:
31 typedef UInt64 FileSizeImpl;
32
33 FileImpl();
34 FileImpl(const std::string& path);
35 virtual ~FileImpl();
36 void swapImpl(FileImpl& file);
37 void setPathImpl(const std::string& path);
38 const std::string& getPathImpl() const;
39 bool existsImpl() const;
40 bool canReadImpl() const;
41 bool canWriteImpl() const;
42 bool canExecuteImpl() const;
43 bool isFileImpl() const;
44 bool isDirectoryImpl() const;
45 bool isLinkImpl() const;
46 bool isDeviceImpl() const;
47 bool isHiddenImpl() const;
48 Timestamp createdImpl() const;
49 Timestamp getLastModifiedImpl() const;
50 void setLastModifiedImpl(const Timestamp& ts);
51 FileSizeImpl getSizeImpl() const;
52 void setSizeImpl(FileSizeImpl size);
53 void setWriteableImpl(bool flag = true);
54 void setExecutableImpl(bool flag = true);
55 void copyToImpl(const std::string& path) const;
56 void renameToImpl(const std::string& path);
57 void linkToImpl(const std::string& path, int type) const;
58 void removeImpl();
59 bool createFileImpl();
60 bool createDirectoryImpl();
61 FileSizeImpl totalSpaceImpl() const;
62 FileSizeImpl usableSpaceImpl() const;
63 FileSizeImpl freeSpaceImpl() const;
64 static void handleLastErrorImpl(const std::string& path);
65
66private:
67 std::string _path;
68
69 friend class DirectoryIteratorImpl;
70 friend class LinuxDirectoryWatcherStrategy;
71 friend class BSDDirectoryWatcherStrategy;
72};
73
74
75//
76// inlines
77//
78inline const std::string& FileImpl::getPathImpl() const
79{
80 return _path;
81}
82
83
84} // namespace Poco
85
86
87#endif // Foundation_File_UNIX_INCLUDED
88