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