oo_bindgen/model/structs/
callback_argument_struct.rs1use crate::model::*;
2
3#[non_exhaustive]
5#[derive(Clone, Debug)]
6pub enum CallbackArgStructField {
7 Basic(BasicType),
8 String(StringType),
9 Iterator(AbstractIteratorHandle),
10 Struct(UniversalOr<CallbackArgStructField>),
11}
12
13pub type CallbackArgStructHandle = Handle<Struct<CallbackArgStructField, Unvalidated>>;
14
15impl StructFieldType for CallbackArgStructField {
16 fn create_struct_type(
17 v: Handle<Struct<CallbackArgStructField, Unvalidated>>,
18 ) -> StructType<Unvalidated> {
19 StructType::CallbackArg(v)
20 }
21}
22
23impl InitializerValidator for CallbackArgStructField {
24 fn validate_default_value(
25 &self,
26 value: &InitializerDefault,
27 ) -> BindResult<ValidatedDefaultValue> {
28 match self {
29 CallbackArgStructField::Basic(x) => x.validate_default_value(value),
30 CallbackArgStructField::Iterator(x) => x.validate_default_value(value),
31 CallbackArgStructField::Struct(x) => match x {
32 UniversalOr::Specific(x) => x.validate_default_value(value),
33 UniversalOr::Universal(x) => x.validate_default_value(value),
34 },
35 CallbackArgStructField::String(x) => x.validate_default_value(value),
36 }
37 }
38}
39
40impl From<Primitive> for CallbackArgStructField {
41 fn from(x: Primitive) -> Self {
42 Self::Basic(x.into())
43 }
44}
45
46impl From<BasicType> for CallbackArgStructField {
47 fn from(x: BasicType) -> Self {
48 CallbackArgStructField::Basic(x)
49 }
50}
51
52impl From<StringType> for CallbackArgStructField {
53 fn from(x: StringType) -> Self {
54 Self::String(x)
55 }
56}
57
58impl From<Handle<Enum<Unvalidated>>> for CallbackArgStructField {
59 fn from(x: Handle<Enum<Unvalidated>>) -> Self {
60 CallbackArgStructField::Basic(BasicType::Enum(x))
61 }
62}
63
64impl From<DurationType> for CallbackArgStructField {
65 fn from(x: DurationType) -> Self {
66 CallbackArgStructField::Basic(BasicType::Duration(x))
67 }
68}
69
70impl From<AbstractIteratorHandle> for CallbackArgStructField {
71 fn from(x: AbstractIteratorHandle) -> Self {
72 CallbackArgStructField::Iterator(x)
73 }
74}
75
76impl From<CallbackArgStructHandle> for CallbackArgStructField {
77 fn from(x: CallbackArgStructHandle) -> Self {
78 CallbackArgStructField::Struct(x.into())
79 }
80}