Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef BASE_FILES_FILE_H_ | 5 #ifndef BASE_FILES_FILE_H_ |
| 6 #define BASE_FILES_FILE_H_ | 6 #define BASE_FILES_FILE_H_ |
| 7 | 7 |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
| 10 #include <windows.h> | 10 #include <windows.h> |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 // Note that this class does not provide any support for asynchronous IO, other | 46 // Note that this class does not provide any support for asynchronous IO, other |
| 47 // than the ability to create asynchronous handles on Windows. | 47 // than the ability to create asynchronous handles on Windows. |
| 48 // | 48 // |
| 49 // Note about const: this class does not attempt to determine if the underlying | 49 // Note about const: this class does not attempt to determine if the underlying |
| 50 // file system object is affected by a particular method in order to consider | 50 // file system object is affected by a particular method in order to consider |
| 51 // that method const or not. Only methods that deal with member variables in an | 51 // that method const or not. Only methods that deal with member variables in an |
| 52 // obvious non-modifying way are marked as const. Any method that forward calls | 52 // obvious non-modifying way are marked as const. Any method that forward calls |
| 53 // to the OS is not considered const, even if there is no apparent change to | 53 // to the OS is not considered const, even if there is no apparent change to |
| 54 // member variables. | 54 // member variables. |
| 55 class BASE_EXPORT File { | 55 class BASE_EXPORT File { |
| 56 MOVE_ONLY_TYPE_FOR_CPP_03(File, RValue) | 56 MOVE_ONLY_TYPE_FOR_CPP_03(File) |
| 57 | 57 |
| 58 public: | 58 public: |
| 59 // FLAG_(OPEN|CREATE).* are mutually exclusive. You should specify exactly one | 59 // FLAG_(OPEN|CREATE).* are mutually exclusive. You should specify exactly one |
| 60 // of the five (possibly combining with other flags) when opening or creating | 60 // of the five (possibly combining with other flags) when opening or creating |
| 61 // a file. | 61 // a file. |
| 62 // FLAG_(WRITE|APPEND) are mutually exclusive. This is so that APPEND behavior | 62 // FLAG_(WRITE|APPEND) are mutually exclusive. This is so that APPEND behavior |
| 63 // will be consistent with O_APPEND on POSIX. | 63 // will be consistent with O_APPEND on POSIX. |
| 64 // FLAG_EXCLUSIVE_(READ|WRITE) only grant exclusive access to the file on | 64 // FLAG_EXCLUSIVE_(READ|WRITE) only grant exclusive access to the file on |
| 65 // creation on POSIX; for existing files, consider using Lock(). | 65 // creation on POSIX; for existing files, consider using Lock(). |
| 66 enum Flags { | 66 enum Flags { |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 161 // Creates or opens the given file. This will fail with 'access denied' if the | 161 // Creates or opens the given file. This will fail with 'access denied' if the |
| 162 // |path| contains path traversal ('..') components. | 162 // |path| contains path traversal ('..') components. |
| 163 File(const FilePath& path, uint32 flags); | 163 File(const FilePath& path, uint32 flags); |
| 164 | 164 |
| 165 // Takes ownership of |platform_file|. | 165 // Takes ownership of |platform_file|. |
| 166 explicit File(PlatformFile platform_file); | 166 explicit File(PlatformFile platform_file); |
| 167 | 167 |
| 168 // Creates an object with a specific error_details code. | 168 // Creates an object with a specific error_details code. |
| 169 explicit File(Error error_details); | 169 explicit File(Error error_details); |
| 170 | 170 |
| 171 // Move constructor for C++03 move emulation of this type. | 171 File(File&& other); |
|
dcheng
2015/10/13 21:03:09
I opted to remove the comments of this form, since
danakj
2015/10/15 23:35:06
sgtm
| |
| 172 File(RValue other); | |
| 173 | 172 |
| 174 ~File(); | 173 ~File(); |
| 175 | 174 |
| 176 // Takes ownership of |platform_file|. | 175 // Takes ownership of |platform_file|. |
| 177 static File CreateForAsyncHandle(PlatformFile platform_file); | 176 static File CreateForAsyncHandle(PlatformFile platform_file); |
| 178 | 177 |
| 179 // Move operator= for C++03 move emulation of this type. | 178 File& operator=(File&& other); |
| 180 File& operator=(RValue other); | |
| 181 | 179 |
| 182 // Creates or opens the given file. | 180 // Creates or opens the given file. |
| 183 void Initialize(const FilePath& path, uint32 flags); | 181 void Initialize(const FilePath& path, uint32 flags); |
| 184 | 182 |
| 185 bool IsValid() const; | 183 bool IsValid() const; |
| 186 | 184 |
| 187 // Returns true if a new file was created (or an old one truncated to zero | 185 // Returns true if a new file was created (or an old one truncated to zero |
| 188 // length to simulate a new file, which can happen with | 186 // length to simulate a new file, which can happen with |
| 189 // FLAG_CREATE_ALWAYS), and false otherwise. | 187 // FLAG_CREATE_ALWAYS), and false otherwise. |
| 190 bool created() const { return created_; } | 188 bool created() const { return created_; } |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 330 | 328 |
| 331 Error error_details_; | 329 Error error_details_; |
| 332 bool created_; | 330 bool created_; |
| 333 bool async_; | 331 bool async_; |
| 334 }; | 332 }; |
| 335 | 333 |
| 336 } // namespace base | 334 } // namespace base |
| 337 | 335 |
| 338 #endif // BASE_FILES_FILE_H_ | 336 #endif // BASE_FILES_FILE_H_ |
| 339 | 337 |
| OLD | NEW |