1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
//! This file has been automatically generated by `objc2`'s `header-translator`.
//! DO NOT EDIT
use objc2::__framework_prelude::*;
use objc2_foundation::*;

use crate::*;

extern "C" {
    pub static MPLanguageOptionCharacteristicIsMainProgramContent: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicIsAuxiliaryContent: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicContainsOnlyForcedSubtitles: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicTranscribesSpokenDialog: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicDescribesMusicAndSound: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicEasyToRead: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicDescribesVideo: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicLanguageTranslation: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicDubbedTranslation: &'static NSString;
}

extern "C" {
    pub static MPLanguageOptionCharacteristicVoiceOverTranslation: &'static NSString;
}

// NS_ENUM
#[repr(transparent)]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct MPNowPlayingInfoLanguageOptionType(pub NSUInteger);
impl MPNowPlayingInfoLanguageOptionType {
    #[doc(alias = "MPNowPlayingInfoLanguageOptionTypeAudible")]
    pub const Audible: Self = Self(0);
    #[doc(alias = "MPNowPlayingInfoLanguageOptionTypeLegible")]
    pub const Legible: Self = Self(1);
}

unsafe impl Encode for MPNowPlayingInfoLanguageOptionType {
    const ENCODING: Encoding = NSUInteger::ENCODING;
}

unsafe impl RefEncode for MPNowPlayingInfoLanguageOptionType {
    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
}

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPNowPlayingInfoLanguageOption;

    unsafe impl ClassType for MPNowPlayingInfoLanguageOption {
        type Super = NSObject;
        type Mutability = InteriorMutable;
    }
);

unsafe impl NSObjectProtocol for MPNowPlayingInfoLanguageOption {}

extern_methods!(
    unsafe impl MPNowPlayingInfoLanguageOption {
        #[method_id(@__retain_semantics Init initWithType:languageTag:characteristics:displayName:identifier:)]
        pub unsafe fn initWithType_languageTag_characteristics_displayName_identifier(
            this: Allocated<Self>,
            language_option_type: MPNowPlayingInfoLanguageOptionType,
            language_tag: &NSString,
            language_option_characteristics: Option<&NSArray<NSString>>,
            display_name: &NSString,
            identifier: &NSString,
        ) -> Id<Self>;

        #[method(isAutomaticLegibleLanguageOption)]
        pub unsafe fn isAutomaticLegibleLanguageOption(&self) -> bool;

        #[method(isAutomaticAudibleLanguageOption)]
        pub unsafe fn isAutomaticAudibleLanguageOption(&self) -> bool;

        #[method(languageOptionType)]
        pub unsafe fn languageOptionType(&self) -> MPNowPlayingInfoLanguageOptionType;

        #[method_id(@__retain_semantics Other languageTag)]
        pub unsafe fn languageTag(&self) -> Option<Id<NSString>>;

        #[method_id(@__retain_semantics Other languageOptionCharacteristics)]
        pub unsafe fn languageOptionCharacteristics(&self) -> Option<Id<NSArray<NSString>>>;

        #[method_id(@__retain_semantics Other displayName)]
        pub unsafe fn displayName(&self) -> Option<Id<NSString>>;

        #[method_id(@__retain_semantics Other identifier)]
        pub unsafe fn identifier(&self) -> Option<Id<NSString>>;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl MPNowPlayingInfoLanguageOption {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);

extern_class!(
    #[derive(Debug, PartialEq, Eq, Hash)]
    pub struct MPNowPlayingInfoLanguageOptionGroup;

    unsafe impl ClassType for MPNowPlayingInfoLanguageOptionGroup {
        type Super = NSObject;
        type Mutability = InteriorMutable;
    }
);

unsafe impl NSObjectProtocol for MPNowPlayingInfoLanguageOptionGroup {}

extern_methods!(
    unsafe impl MPNowPlayingInfoLanguageOptionGroup {
        #[method_id(@__retain_semantics Init initWithLanguageOptions:defaultLanguageOption:allowEmptySelection:)]
        pub unsafe fn initWithLanguageOptions_defaultLanguageOption_allowEmptySelection(
            this: Allocated<Self>,
            language_options: &NSArray<MPNowPlayingInfoLanguageOption>,
            default_language_option: Option<&MPNowPlayingInfoLanguageOption>,
            allow_empty_selection: bool,
        ) -> Id<Self>;

        #[method_id(@__retain_semantics Other languageOptions)]
        pub unsafe fn languageOptions(&self) -> Id<NSArray<MPNowPlayingInfoLanguageOption>>;

        #[method_id(@__retain_semantics Other defaultLanguageOption)]
        pub unsafe fn defaultLanguageOption(&self) -> Option<Id<MPNowPlayingInfoLanguageOption>>;

        #[method(allowEmptySelection)]
        pub unsafe fn allowEmptySelection(&self) -> bool;
    }
);

extern_methods!(
    /// Methods declared on superclass `NSObject`
    unsafe impl MPNowPlayingInfoLanguageOptionGroup {
        #[method_id(@__retain_semantics Init init)]
        pub unsafe fn init(this: Allocated<Self>) -> Id<Self>;

        #[method_id(@__retain_semantics New new)]
        pub unsafe fn new() -> Id<Self>;
    }
);