/* * Copyright (c) 2022, Lucas Chollet * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include struct addrinfo; namespace Core::System { class AddressInfoVector { AK_MAKE_NONCOPYABLE(AddressInfoVector); public: AddressInfoVector(Vector addresses, struct addrinfo* ptr); AddressInfoVector(AddressInfoVector&& other); ~AddressInfoVector(); AddressInfoVector& operator=(AddressInfoVector&& other) { AddressInfoVector temporary { move(other) }; swap(temporary); return *this; } ReadonlySpan addresses() const { return m_addresses; } private: void swap(AddressInfoVector& other); Vector m_addresses; struct addrinfo* m_ptr { nullptr }; }; }