blob: 9f723e54c19fd926ffc4a7307a399c47c59a40d2 [file] [log] [blame]
// Copyright (C) 2020 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#pragma once
#include "dctv.h"
#include <unistd.h>
namespace dctv {
void xclose(int fd) noexcept;
struct UniqueFd {
constexpr UniqueFd() noexcept = default;
explicit inline UniqueFd(int fd) noexcept;
inline UniqueFd(UniqueFd&& other) noexcept;
inline UniqueFd& operator=(UniqueFd&& other) noexcept;
inline UniqueFd(const UniqueFd& other) = delete;
inline UniqueFd& operator=(const UniqueFd& other) = delete;
inline ~UniqueFd() noexcept;
inline int get() const noexcept;
explicit inline operator bool() const noexcept;
inline void reset() noexcept;
private:
int fd = -1;
};
} // namespace dctv
#include "unique_fd-inl.h"