/* WinRT Windows.Networking.Hostname Implementation * * Copyright (C) 2023 Mohamad Al-Jaf * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #ifndef __WINE_WINDOWS_NETWORKING_HOSTNAME_PRIVATE_H #define __WINE_WINDOWS_NETWORKING_HOSTNAME_PRIVATE_H #include #define COBJMACROS #include "windef.h" #include "winbase.h" #include "winstring.h" #include "activation.h" #define WIDL_using_Windows_Foundation #define WIDL_using_Windows_Foundation_Collections #include "windows.foundation.h" #define WIDL_using_Windows_Networking #define WIDL_using_Windows_Networking_Connectivity #include "windows.networking.h" extern IActivationFactory *hostname_factory; #define DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from, iface_mem, expr ) \ static inline impl_type *impl_from( iface_type *iface ) \ { \ return CONTAINING_RECORD( iface, impl_type, iface_mem ); \ } \ static HRESULT WINAPI pfx##_QueryInterface( iface_type *iface, REFIID iid, void **out ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_QueryInterface( (IInspectable *)(expr), iid, out ); \ } \ static ULONG WINAPI pfx##_AddRef( iface_type *iface ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_AddRef( (IInspectable *)(expr) ); \ } \ static ULONG WINAPI pfx##_Release( iface_type *iface ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_Release( (IInspectable *)(expr) ); \ } \ static HRESULT WINAPI pfx##_GetIids( iface_type *iface, ULONG *iid_count, IID **iids ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_GetIids( (IInspectable *)(expr), iid_count, iids ); \ } \ static HRESULT WINAPI pfx##_GetRuntimeClassName( iface_type *iface, HSTRING *class_name ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_GetRuntimeClassName( (IInspectable *)(expr), class_name ); \ } \ static HRESULT WINAPI pfx##_GetTrustLevel( iface_type *iface, TrustLevel *trust_level ) \ { \ impl_type *impl = impl_from( iface ); \ return IInspectable_GetTrustLevel( (IInspectable *)(expr), trust_level ); \ } #define DEFINE_IINSPECTABLE( pfx, iface_type, impl_type, base_iface ) \ DEFINE_IINSPECTABLE_( pfx, iface_type, impl_type, impl_from_##iface_type, iface_type##_iface, &impl->base_iface ) #endif