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