16d528ed9Sopenharmony_ci// Copyright 2017 The Chromium Authors. All rights reserved. 26d528ed9Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be 36d528ed9Sopenharmony_ci// found in the LICENSE file. 46d528ed9Sopenharmony_ci 56d528ed9Sopenharmony_ci#ifndef BASE_FILES_PLATFORM_FILE_H_ 66d528ed9Sopenharmony_ci#define BASE_FILES_PLATFORM_FILE_H_ 76d528ed9Sopenharmony_ci 86d528ed9Sopenharmony_ci#include "base/files/scoped_file.h" 96d528ed9Sopenharmony_ci#include "util/build_config.h" 106d528ed9Sopenharmony_ci 116d528ed9Sopenharmony_ci#if defined(OS_WIN) 126d528ed9Sopenharmony_ci#include <windows.h> 136d528ed9Sopenharmony_ci#include "base/win/scoped_handle.h" 146d528ed9Sopenharmony_ci#endif 156d528ed9Sopenharmony_ci 166d528ed9Sopenharmony_ci// This file defines platform-independent types for dealing with 176d528ed9Sopenharmony_ci// platform-dependent files. If possible, use the higher-level base::File class 186d528ed9Sopenharmony_ci// rather than these primitives. 196d528ed9Sopenharmony_ci 206d528ed9Sopenharmony_cinamespace base { 216d528ed9Sopenharmony_ci 226d528ed9Sopenharmony_ci#if defined(OS_WIN) 236d528ed9Sopenharmony_ci 246d528ed9Sopenharmony_ciusing PlatformFile = HANDLE; 256d528ed9Sopenharmony_ciusing ScopedPlatformFile = ::base::win::ScopedHandle; 266d528ed9Sopenharmony_ci 276d528ed9Sopenharmony_ci// It would be nice to make this constexpr but INVALID_HANDLE_VALUE is a 286d528ed9Sopenharmony_ci// ((void*)(-1)) which Clang rejects since reinterpret_cast is technically 296d528ed9Sopenharmony_ci// disallowed in constexpr. Visual Studio accepts this, however. 306d528ed9Sopenharmony_ciconst PlatformFile kInvalidPlatformFile = INVALID_HANDLE_VALUE; 316d528ed9Sopenharmony_ci 326d528ed9Sopenharmony_ci#elif defined(OS_POSIX) || defined(OS_FUCHSIA) 336d528ed9Sopenharmony_ci 346d528ed9Sopenharmony_ciusing PlatformFile = int; 356d528ed9Sopenharmony_ciusing ScopedPlatformFile = ::base::ScopedFD; 366d528ed9Sopenharmony_ci 376d528ed9Sopenharmony_ciconstexpr PlatformFile kInvalidPlatformFile = -1; 386d528ed9Sopenharmony_ci 396d528ed9Sopenharmony_ci#endif 406d528ed9Sopenharmony_ci 416d528ed9Sopenharmony_ci} // namespace base 426d528ed9Sopenharmony_ci 436d528ed9Sopenharmony_ci#endif // BASE_FILES_PLATFORM_FILE_H_ 44