objc2-virtualization 0.3.2

Bindings to the Virtualization framework
Documentation
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use core::ffi::*;
use core::ptr::NonNull;
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern_class!(
    /// Virtio Console Port
    ///
    /// A console port is a two-way communication channel between a host VZSerialPortAttachment and a virtual machine console port. One or more console ports are attached to a Virtio console device.
    ///
    /// An optional name may be set for a console port. A console port may also be configured for use as the system console.
    ///
    /// See: VZConsolePortConfiguration
    ///
    /// See: VZVirtualMachineConfiguration.consoleDevices
    ///
    /// See also [Apple's documentation](https://developer.apple.com/documentation/virtualization/vzvirtioconsoleportconfiguration?language=objc)
    #[unsafe(super(VZConsolePortConfiguration, NSObject))]
    #[derive(Debug, PartialEq, Eq, Hash)]
    #[cfg(feature = "VZConsolePortConfiguration")]
    pub struct VZVirtioConsolePortConfiguration;
);

#[cfg(feature = "VZConsolePortConfiguration")]
extern_conformance!(
    unsafe impl NSCopying for VZVirtioConsolePortConfiguration {}
);

#[cfg(feature = "VZConsolePortConfiguration")]
unsafe impl CopyingHelper for VZVirtioConsolePortConfiguration {
    type Result = Self;
}

#[cfg(feature = "VZConsolePortConfiguration")]
extern_conformance!(
    unsafe impl NSObjectProtocol for VZVirtioConsolePortConfiguration {}
);

#[cfg(feature = "VZConsolePortConfiguration")]
impl VZVirtioConsolePortConfiguration {
    extern_methods!(
        #[unsafe(method(init))]
        #[unsafe(method_family = init)]
        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;

        /// The console port's name. The default behavior is to not use a name unless set.
        #[unsafe(method(name))]
        #[unsafe(method_family = none)]
        pub unsafe fn name(&self) -> Option<Retained<NSString>>;

        /// Setter for [`name`][Self::name].
        ///
        /// This is [copied][objc2_foundation::NSCopying::copy] when set.
        #[unsafe(method(setName:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setName(&self, name: Option<&NSString>);

        /// The console port may be marked for use as the system console. The default is false.
        #[unsafe(method(isConsole))]
        #[unsafe(method_family = none)]
        pub unsafe fn isConsole(&self) -> bool;

        /// Setter for [`isConsole`][Self::isConsole].
        #[unsafe(method(setIsConsole:))]
        #[unsafe(method_family = none)]
        pub unsafe fn setIsConsole(&self, is_console: bool);
    );
}

/// Methods declared on superclass `VZConsolePortConfiguration`.
#[cfg(feature = "VZConsolePortConfiguration")]
impl VZVirtioConsolePortConfiguration {
    extern_methods!(
        #[unsafe(method(new))]
        #[unsafe(method_family = new)]
        pub unsafe fn new() -> Retained<Self>;
    );
}