cobia\cape_open_1_2/
mod.rs

1// This file was generated by cidl2rs
2use crate::*;
3use crate::cape_smart_pointer::CapeSmartPointer;
4use std::marker::PhantomData;
5use std::fmt;
6
7//library ID
8pub const LIBRARY_ID:CapeUUID=CapeUUID::from_slice(&[0x8du8,0x1du8,0x72u8,0x4fu8,0xabu8,0x15u8,0x48u8,0xe5u8,0x80u8,0xe4u8,0xa6u8,0x12u8,0x46u8,0x8eu8,0x68u8,0xd4u8]);
9
10//Category IDs
11pub const CATEGORYID_COMPONENT_1_2:CapeUUID=CapeUUID::from_slice(&[0x37u8,0xe0u8,0x30u8,0x33u8,0x63u8,0xb9u8,0x4fu8,0x55u8,0xb5u8,0xc4u8,0x80u8,0x7bu8,0xedu8,0xe0u8,0x3du8,0xebu8]);
12
13//Interface IDs
14pub const ICAPEIDENTIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x12u8,0xebu8,0xf1u8,0x84u8,0xf4u8,0x7au8,0x44u8,0x07u8,0xb5u8,0x2au8,0x7fu8,0xccu8,0x0au8,0x70u8,0x45u8,0x1cu8]);
15pub const ICAPECOLLECTION_UUID:CapeUUID=CapeUUID::from_slice(&[0xb1u8,0x35u8,0xa4u8,0x43u8,0x2eu8,0xd8u8,0x45u8,0xefu8,0xbbu8,0x2du8,0xe6u8,0x8du8,0x2eu8,0x63u8,0x1cu8,0x31u8]);
16pub const ICAPEPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xdbu8,0xa6u8,0x93u8,0x1fu8,0x39u8,0x0cu8,0x42u8,0x29u8,0x9bu8,0x36u8,0xd6u8,0x59u8,0x79u8,0xdbu8,0xd0u8,0xc0u8]);
17pub const ICAPEREALPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xd2u8,0x75u8,0xb8u8,0x5eu8,0x94u8,0xe4u8,0x4cu8,0xa2u8,0x84u8,0xdeu8,0xd0u8,0x7fu8,0x72u8,0x9fu8,0x55u8,0x8au8]);
18pub const ICAPEINTEGERPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xa9u8,0x7au8,0xc0u8,0x97u8,0x0fu8,0xd0u8,0x42u8,0x26u8,0x99u8,0xbau8,0xd1u8,0xc9u8,0xaeu8,0x41u8,0xbdu8,0xddu8]);
19pub const ICAPESTRINGPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xf2u8,0x6cu8,0xe5u8,0x27u8,0x32u8,0x77u8,0x44u8,0x24u8,0xa6u8,0x29u8,0x7fu8,0x93u8,0x08u8,0xdbu8,0xa7u8,0xd3u8]);
20pub const ICAPEBOOLEANPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0x33u8,0xbeu8,0xf4u8,0x2du8,0x73u8,0x48u8,0x41u8,0x41u8,0xb6u8,0xd7u8,0xe2u8,0xefu8,0xb3u8,0x71u8,0x46u8,0x67u8]);
21pub const ICAPEARRAYPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xaeu8,0xebu8,0x1du8,0x66u8,0x82u8,0x27u8,0x48u8,0xbdu8,0x9au8,0x05u8,0x31u8,0x50u8,0xd0u8,0xdfu8,0x4eu8,0x5du8]);
22pub const ICAPEARRAYREALPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0x96u8,0x18u8,0x66u8,0xf0u8,0xb1u8,0x96u8,0x45u8,0x54u8,0xb9u8,0x50u8,0x55u8,0x99u8,0xadu8,0xe2u8,0x60u8,0xd5u8]);
23pub const ICAPEARRAYINTEGERPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0x22u8,0x10u8,0x3au8,0x3bu8,0xfbu8,0x08u8,0x43u8,0xd1u8,0x83u8,0xebu8,0x56u8,0x98u8,0x2au8,0x2eu8,0xa8u8,0xbau8]);
24pub const ICAPEARRAYSTRINGPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0x03u8,0x77u8,0x51u8,0xf9u8,0x37u8,0xe7u8,0x4fu8,0x61u8,0xb7u8,0x0au8,0x5bu8,0xf5u8,0x75u8,0x1cu8,0xc3u8,0x4au8]);
25pub const ICAPEARRAYBOOLEANPARAMETER_UUID:CapeUUID=CapeUUID::from_slice(&[0xbbu8,0x6bu8,0xf3u8,0x34u8,0xf5u8,0xb4u8,0x4eu8,0x08u8,0x9fu8,0xebu8,0x13u8,0x5du8,0xe8u8,0x21u8,0xb9u8,0x2fu8]);
26pub const ICAPEPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x72u8,0xe7u8,0xe2u8,0xaeu8,0x9fu8,0x00u8,0x40u8,0xbau8,0x86u8,0x12u8,0xbfu8,0xf2u8,0x33u8,0x08u8,0x5eu8,0xfdu8]);
27pub const ICAPEREALPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0xf0u8,0x56u8,0x53u8,0x3cu8,0x9fu8,0x56u8,0x44u8,0x87u8,0x8fu8,0xc9u8,0x00u8,0x47u8,0xa5u8,0x7au8,0xebu8,0x53u8]);
28pub const ICAPEINTEGERPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x72u8,0x05u8,0x95u8,0x85u8,0x38u8,0x58u8,0x43u8,0xcau8,0x99u8,0x32u8,0xe3u8,0xa8u8,0xa8u8,0xc8u8,0x07u8,0x48u8]);
29pub const ICAPESTRINGPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x7du8,0xa3u8,0x53u8,0x0au8,0x82u8,0x43u8,0x41u8,0x60u8,0x82u8,0x55u8,0xdfu8,0xb8u8,0x9au8,0x0au8,0xdau8,0x2au8]);
30pub const ICAPEBOOLEANPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x03u8,0x60u8,0x43u8,0xd9u8,0x61u8,0x8fu8,0x45u8,0xd3u8,0xa6u8,0x4fu8,0x45u8,0x68u8,0x67u8,0x52u8,0x6au8,0xb7u8]);
31pub const ICAPEARRAYPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x10u8,0x06u8,0x51u8,0x70u8,0x0cu8,0xb9u8,0x49u8,0x97u8,0x9fu8,0x19u8,0x38u8,0x95u8,0x7eu8,0x01u8,0x84u8,0xd6u8]);
32pub const ICAPEARRAYREALPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0xf1u8,0x27u8,0xf8u8,0x98u8,0xa7u8,0xc3u8,0x41u8,0xa1u8,0xa7u8,0xf5u8,0x58u8,0xcbu8,0x35u8,0x99u8,0x5bu8,0x44u8]);
33pub const ICAPEARRAYINTEGERPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x7bu8,0x51u8,0xd2u8,0xb9u8,0x14u8,0xadu8,0x4fu8,0xa8u8,0xb2u8,0x6eu8,0x8fu8,0x63u8,0x27u8,0x76u8,0xc8u8,0x02u8]);
34pub const ICAPEARRAYSTRINGPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x43u8,0xafu8,0x3bu8,0xa8u8,0x22u8,0x06u8,0x4au8,0xb0u8,0xb4u8,0x64u8,0x51u8,0x3fu8,0x01u8,0x66u8,0x3au8,0x12u8]);
35pub const ICAPEARRAYBOOLEANPARAMETERSPECIFICATION_UUID:CapeUUID=CapeUUID::from_slice(&[0x38u8,0x79u8,0x2cu8,0xa7u8,0x35u8,0x45u8,0x4au8,0x1bu8,0x9eu8,0x87u8,0xcdu8,0x85u8,0x56u8,0x12u8,0x7du8,0xe9u8]);
36pub const ICAPEUTILITIES_UUID:CapeUUID=CapeUUID::from_slice(&[0x27u8,0x5cu8,0xb0u8,0x83u8,0x4fu8,0x4fu8,0x41u8,0xa8u8,0xbau8,0x08u8,0x52u8,0x11u8,0xb8u8,0xd4u8,0x8au8,0xe8u8]);
37pub const ICAPESIMULATIONCONTEXT_UUID:CapeUUID=CapeUUID::from_slice(&[0x48u8,0xb2u8,0x11u8,0xc4u8,0xa1u8,0x58u8,0x46u8,0xc2u8,0x89u8,0x82u8,0xf8u8,0xbbu8,0xa6u8,0x44u8,0x10u8,0xbau8]);
38pub const ICAPEDIAGNOSTIC_UUID:CapeUUID=CapeUUID::from_slice(&[0xd3u8,0x03u8,0x58u8,0x46u8,0xbeu8,0xaau8,0x4du8,0xacu8,0xafu8,0x98u8,0x74u8,0xf0u8,0x9au8,0xa1u8,0x7fu8,0x35u8]);
39pub const ICAPEMATERIALMANAGER_UUID:CapeUUID=CapeUUID::from_slice(&[0xb7u8,0x5au8,0x64u8,0x37u8,0x07u8,0xfeu8,0x4eu8,0xf0u8,0xa1u8,0x67u8,0xefu8,0xcau8,0x0bu8,0xe5u8,0x2cu8,0xd8u8]);
40pub const ICAPECOSEUTILITIES_UUID:CapeUUID=CapeUUID::from_slice(&[0x73u8,0x45u8,0x3eu8,0x94u8,0x64u8,0x18u8,0x4fu8,0x6au8,0xabu8,0x31u8,0xd2u8,0x8au8,0x69u8,0x16u8,0x95u8,0x53u8]);
41pub const ICAPETHERMOMATERIAL_UUID:CapeUUID=CapeUUID::from_slice(&[0xf7u8,0xe3u8,0x51u8,0x7au8,0x49u8,0x22u8,0x4du8,0x55u8,0xa2u8,0x14u8,0xbbu8,0x53u8,0x75u8,0x5eu8,0x7du8,0x01u8]);
42pub const ICAPETHERMOMATERIALCONTEXT_UUID:CapeUUID=CapeUUID::from_slice(&[0x6du8,0xaau8,0xc2u8,0x36u8,0x88u8,0x5cu8,0x47u8,0x0au8,0x82u8,0x86u8,0x36u8,0x80u8,0x5bu8,0xedu8,0x43u8,0x61u8]);
43pub const ICAPETHERMOCOMPOUNDS_UUID:CapeUUID=CapeUUID::from_slice(&[0x30u8,0x9du8,0xc5u8,0x15u8,0xaeu8,0x97u8,0x4fu8,0xbeu8,0x8au8,0xa1u8,0xa0u8,0x8eu8,0x13u8,0x59u8,0xffu8,0x69u8]);
44pub const ICAPETHERMOPHASES_UUID:CapeUUID=CapeUUID::from_slice(&[0xd8u8,0x09u8,0x01u8,0xa2u8,0x59u8,0xa2u8,0x43u8,0xb4u8,0x80u8,0x94u8,0xfeu8,0xacu8,0x64u8,0xf3u8,0xc7u8,0xe0u8]);
45pub const ICAPETHERMOPROPERTYROUTINE_UUID:CapeUUID=CapeUUID::from_slice(&[0x82u8,0xf6u8,0xa4u8,0x58u8,0x2cu8,0xd7u8,0x4du8,0x5du8,0x8du8,0x6fu8,0xb8u8,0x02u8,0x78u8,0xdau8,0x3eu8,0xdbu8]);
46pub const ICAPETHERMOEQUILIBRIUMROUTINE_UUID:CapeUUID=CapeUUID::from_slice(&[0x33u8,0x54u8,0x3fu8,0x96u8,0x97u8,0x08u8,0x4eu8,0xf3u8,0x92u8,0x27u8,0x3fu8,0x8du8,0x37u8,0x5fu8,0x6eu8,0xb5u8]);
47pub const ICAPETHERMOUNIVERSALCONSTANT_UUID:CapeUUID=CapeUUID::from_slice(&[0xbeu8,0x14u8,0x7du8,0xcfu8,0x11u8,0xe0u8,0x4eu8,0xdeu8,0x96u8,0x4au8,0xa4u8,0x3fu8,0xa5u8,0x53u8,0xa9u8,0x90u8]);
48pub const ICAPETHERMOPROPERTYPACKAGEMANAGER_UUID:CapeUUID=CapeUUID::from_slice(&[0xa3u8,0xa9u8,0x4fu8,0x1eu8,0x32u8,0xf1u8,0x47u8,0xe3u8,0xb0u8,0x19u8,0x57u8,0x18u8,0xfau8,0x56u8,0x07u8,0x57u8]);
49pub const ICAPEUNIT_UUID:CapeUUID=CapeUUID::from_slice(&[0xafu8,0x5cu8,0x2cu8,0x3fu8,0x57u8,0xe1u8,0x47u8,0x85u8,0x83u8,0x7fu8,0x7au8,0x93u8,0xdbu8,0xcdu8,0x03u8,0xfbu8]);
50pub const ICAPEUNITPORT_UUID:CapeUUID=CapeUUID::from_slice(&[0xa6u8,0x0du8,0x7au8,0x23u8,0x50u8,0x4du8,0x4au8,0xdau8,0xb6u8,0xcbu8,0x09u8,0xd6u8,0xd9u8,0x4du8,0x31u8,0x9eu8]);
51pub const ICAPEPERSISTWRITER_UUID:CapeUUID=CapeUUID::from_slice(&[0xa8u8,0xc7u8,0x92u8,0x8au8,0xe2u8,0x88u8,0x4eu8,0x83u8,0xadu8,0xbdu8,0x0au8,0xbbu8,0x39u8,0x4au8,0xe5u8,0xa6u8]);
52pub const ICAPEPERSISTREADER_UUID:CapeUUID=CapeUUID::from_slice(&[0x82u8,0x74u8,0x18u8,0xa6u8,0x65u8,0x15u8,0x40u8,0xcfu8,0x81u8,0xa7u8,0xdau8,0xb8u8,0xcfu8,0x8fu8,0xa1u8,0x76u8]);
53pub const ICAPEPERSIST_UUID:CapeUUID=CapeUUID::from_slice(&[0xabu8,0xa6u8,0x5du8,0xc8u8,0x93u8,0xf9u8,0x49u8,0x53u8,0x89u8,0x7du8,0xa8u8,0xfau8,0x8eu8,0xa4u8,0xeeu8,0xaeu8]);
54pub const ICAPEREPORT_UUID:CapeUUID=CapeUUID::from_slice(&[0x99u8,0xd2u8,0x06u8,0x68u8,0xcau8,0x44u8,0x42u8,0x37u8,0x8bu8,0x13u8,0x8du8,0x51u8,0x35u8,0xf4u8,0xd1u8,0x65u8]);
55pub const ICAPEFLOWSHEETMONITORINGCOMPONENT_UUID:CapeUUID=CapeUUID::from_slice(&[0x35u8,0xb5u8,0x78u8,0x15u8,0xfcu8,0x6du8,0x4cu8,0x03u8,0xabu8,0xbbu8,0xe2u8,0xf5u8,0xdau8,0x76u8,0x77u8,0xb0u8]);
56pub const ICAPESTREAM_UUID:CapeUUID=CapeUUID::from_slice(&[0xacu8,0x5fu8,0x88u8,0x16u8,0xbdu8,0x51u8,0x4bu8,0x3du8,0xb7u8,0xa4u8,0x05u8,0xffu8,0xddu8,0xdeu8,0xf1u8,0xc3u8]);
57pub const ICAPEFLOWSHEETMONITORINGEVENTSINK_UUID:CapeUUID=CapeUUID::from_slice(&[0xebu8,0x4eu8,0x3bu8,0x42u8,0x77u8,0xfeu8,0x41u8,0xc5u8,0x81u8,0x48u8,0x47u8,0x60u8,0x82u8,0xccu8,0x02u8,0x53u8]);
58pub const ICAPEFLOWSHEETMONITORING_UUID:CapeUUID=CapeUUID::from_slice(&[0x6bu8,0x1cu8,0xf4u8,0xa3u8,0xa3u8,0xe3u8,0x4eu8,0x96u8,0x9au8,0x10u8,0x73u8,0x75u8,0x00u8,0x63u8,0x72u8,0xf5u8]);
59pub const ICAPETHERMOMATERIALCUSTOMDATA_UUID:CapeUUID=CapeUUID::from_slice(&[0x82u8,0xb7u8,0xdau8,0xbcu8,0x66u8,0xd2u8,0x4fu8,0xefu8,0x9au8,0x21u8,0x95u8,0xa7u8,0x44u8,0x00u8,0xb2u8,0xb2u8]);
60pub const ICAPECUSTOMDATASOURCE_UUID:CapeUUID=CapeUUID::from_slice(&[0x97u8,0xc8u8,0x0au8,0xb8u8,0x95u8,0xd7u8,0x46u8,0xd8u8,0x90u8,0x29u8,0x5cu8,0x16u8,0x72u8,0xd2u8,0x36u8,0xc9u8]);
61pub const ICAPETHERMOPETROLEUMFRACTIONS_UUID:CapeUUID=CapeUUID::from_slice(&[0x1eu8,0xbau8,0xd1u8,0x72u8,0x2bu8,0xe9u8,0x4au8,0x9eu8,0x95u8,0x49u8,0x03u8,0x07u8,0xe0u8,0x90u8,0xb0u8,0x28u8]);
62
63//Enumerations
64
65///CapeParamType
66///
67///CapeParamType enumeration
68///
69#[repr(i32)]
70#[derive(Debug,PartialEq,Eq,Clone,Copy)]
71pub enum CapeParamType {
72	CapeParameterReal = 0,
73	CapeParameterInteger = 1,
74	CapeParameterString = 2,
75	CapeParameterBoolean = 3,
76	CapeParameterArrayReal = 4,
77	CapeParameterArrayInteger = 5,
78	CapeParameterArrayString = 6,
79	CapeParameterArrayBoolean = 7,
80}
81
82impl CapeParamType {
83	/// Convert from i32 to CapeParamType
84	///
85	/// # Arguments
86	///
87	/// * `value` - i32 value to be converted to CapeParamType
88	///
89	/// # Examples
90	///
91	/// ```
92	///use cobia::*;
93	///use cape_open_1_2::CapeParamType;
94	///let v0=CapeParamType::from(0);
95	///assert_eq!(v0.unwrap(),CapeParamType::CapeParameterReal);
96	///let v1=CapeParamType::from(1);
97	///assert_eq!(v1.unwrap(),CapeParamType::CapeParameterInteger);
98	///let v2=CapeParamType::from(2);
99	///assert_eq!(v2.unwrap(),CapeParamType::CapeParameterString);
100	///let v3=CapeParamType::from(3);
101	///assert_eq!(v3.unwrap(),CapeParamType::CapeParameterBoolean);
102	///let v4=CapeParamType::from(4);
103	///assert_eq!(v4.unwrap(),CapeParamType::CapeParameterArrayReal);
104	///let v5=CapeParamType::from(5);
105	///assert_eq!(v5.unwrap(),CapeParamType::CapeParameterArrayInteger);
106	///let v6=CapeParamType::from(6);
107	///assert_eq!(v6.unwrap(),CapeParamType::CapeParameterArrayString);
108	///let v7=CapeParamType::from(7);
109	///assert_eq!(v7.unwrap(),CapeParamType::CapeParameterArrayBoolean);
110	/// ```
111	pub fn from(value: i32) -> Option<CapeParamType> {
112		match value {
113			0 => Some(CapeParamType::CapeParameterReal),
114			1 => Some(CapeParamType::CapeParameterInteger),
115			2 => Some(CapeParamType::CapeParameterString),
116			3 => Some(CapeParamType::CapeParameterBoolean),
117			4 => Some(CapeParamType::CapeParameterArrayReal),
118			5 => Some(CapeParamType::CapeParameterArrayInteger),
119			6 => Some(CapeParamType::CapeParameterArrayString),
120			7 => Some(CapeParamType::CapeParameterArrayBoolean),
121			_ => None,
122		}
123	}
124	/// Convert to string
125	pub fn as_string(&self) -> &str {
126		match self {
127			Self::CapeParameterReal => "CapeParameterReal",
128			Self::CapeParameterInteger => "CapeParameterInteger",
129			Self::CapeParameterString => "CapeParameterString",
130			Self::CapeParameterBoolean => "CapeParameterBoolean",
131			Self::CapeParameterArrayReal => "CapeParameterArrayReal",
132			Self::CapeParameterArrayInteger => "CapeParameterArrayInteger",
133			Self::CapeParameterArrayString => "CapeParameterArrayString",
134			Self::CapeParameterArrayBoolean => "CapeParameterArrayBoolean",
135		}
136	}
137	///get an iterator
138	///
139	/// # Examples
140	///
141	/// ```
142	/// use cobia::*;
143	/// use cape_open_1_2::CapeParamType;
144	/// for capeParamType in CapeParamType::iter() {
145	///     println!("{}={}",capeParamType,capeParamType as i32);
146	/// }
147	/// ```
148	pub fn iter() -> CapeParamTypeIterator {
149		CapeParamTypeIterator { current: 0 }
150	}
151}
152
153/// CapeParamType iterator
154///
155/// Iterates over all CapeParamType values
156///
157/// # Examples
158///
159/// ```
160/// use cobia::*;
161/// use cape_open_1_2::CapeParamType;
162/// for capeParamType in CapeParamType::iter() {
163///     println!("{}={}",capeParamType,capeParamType as i32);
164/// }
165/// ```
166pub struct CapeParamTypeIterator {
167	current: i32,
168}
169impl Iterator for CapeParamTypeIterator {
170	type Item = CapeParamType;
171	fn next(&mut self) -> Option<Self::Item> {
172		if self.current>=8 {
173			None
174		} else {
175			let result=CapeParamType::from(self.current);
176			self.current+=1;
177			result
178		}
179	}
180}
181impl fmt::Display for CapeParamType {
182	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
183		write!(f,"{}",self.as_string())
184	}
185}
186///CapeDimensionality
187///
188///CapeDimensionality enumeration
189///
190#[repr(i32)]
191#[derive(Debug,PartialEq,Eq,Clone,Copy)]
192pub enum CapeDimensionality {
193	CapeMeter = 0,
194	CapeKilogram = 1,
195	CapeSecond = 2,
196	CapeAmpere = 3,
197	CapeKelvin = 4,
198	CapeMole = 5,
199	CapeCandela = 6,
200	CapeRadian = 7,
201	CapeDifferenceFlag = 8,
202	CapeDimensionalityLength = 9,
203}
204
205impl CapeDimensionality {
206	/// Convert from i32 to CapeDimensionality
207	///
208	/// # Arguments
209	///
210	/// * `value` - i32 value to be converted to CapeDimensionality
211	///
212	/// # Examples
213	///
214	/// ```
215	///use cobia::*;
216	///use cape_open_1_2::CapeDimensionality;
217	///let v0=CapeDimensionality::from(0);
218	///assert_eq!(v0.unwrap(),CapeDimensionality::CapeMeter);
219	///let v1=CapeDimensionality::from(1);
220	///assert_eq!(v1.unwrap(),CapeDimensionality::CapeKilogram);
221	///let v2=CapeDimensionality::from(2);
222	///assert_eq!(v2.unwrap(),CapeDimensionality::CapeSecond);
223	///let v3=CapeDimensionality::from(3);
224	///assert_eq!(v3.unwrap(),CapeDimensionality::CapeAmpere);
225	///let v4=CapeDimensionality::from(4);
226	///assert_eq!(v4.unwrap(),CapeDimensionality::CapeKelvin);
227	///let v5=CapeDimensionality::from(5);
228	///assert_eq!(v5.unwrap(),CapeDimensionality::CapeMole);
229	///let v6=CapeDimensionality::from(6);
230	///assert_eq!(v6.unwrap(),CapeDimensionality::CapeCandela);
231	///let v7=CapeDimensionality::from(7);
232	///assert_eq!(v7.unwrap(),CapeDimensionality::CapeRadian);
233	///let v8=CapeDimensionality::from(8);
234	///assert_eq!(v8.unwrap(),CapeDimensionality::CapeDifferenceFlag);
235	///let v9=CapeDimensionality::from(9);
236	///assert_eq!(v9.unwrap(),CapeDimensionality::CapeDimensionalityLength);
237	/// ```
238	pub fn from(value: i32) -> Option<CapeDimensionality> {
239		match value {
240			0 => Some(CapeDimensionality::CapeMeter),
241			1 => Some(CapeDimensionality::CapeKilogram),
242			2 => Some(CapeDimensionality::CapeSecond),
243			3 => Some(CapeDimensionality::CapeAmpere),
244			4 => Some(CapeDimensionality::CapeKelvin),
245			5 => Some(CapeDimensionality::CapeMole),
246			6 => Some(CapeDimensionality::CapeCandela),
247			7 => Some(CapeDimensionality::CapeRadian),
248			8 => Some(CapeDimensionality::CapeDifferenceFlag),
249			9 => Some(CapeDimensionality::CapeDimensionalityLength),
250			_ => None,
251		}
252	}
253	/// Convert to string
254	pub fn as_string(&self) -> &str {
255		match self {
256			Self::CapeMeter => "CapeMeter",
257			Self::CapeKilogram => "CapeKilogram",
258			Self::CapeSecond => "CapeSecond",
259			Self::CapeAmpere => "CapeAmpere",
260			Self::CapeKelvin => "CapeKelvin",
261			Self::CapeMole => "CapeMole",
262			Self::CapeCandela => "CapeCandela",
263			Self::CapeRadian => "CapeRadian",
264			Self::CapeDifferenceFlag => "CapeDifferenceFlag",
265			Self::CapeDimensionalityLength => "CapeDimensionalityLength",
266		}
267	}
268	///get an iterator
269	///
270	/// # Examples
271	///
272	/// ```
273	/// use cobia::*;
274	/// use cape_open_1_2::CapeDimensionality;
275	/// for capeDimensionality in CapeDimensionality::iter() {
276	///     println!("{}={}",capeDimensionality,capeDimensionality as i32);
277	/// }
278	/// ```
279	pub fn iter() -> CapeDimensionalityIterator {
280		CapeDimensionalityIterator { current: 0 }
281	}
282}
283
284/// CapeDimensionality iterator
285///
286/// Iterates over all CapeDimensionality values
287///
288/// # Examples
289///
290/// ```
291/// use cobia::*;
292/// use cape_open_1_2::CapeDimensionality;
293/// for capeDimensionality in CapeDimensionality::iter() {
294///     println!("{}={}",capeDimensionality,capeDimensionality as i32);
295/// }
296/// ```
297pub struct CapeDimensionalityIterator {
298	current: i32,
299}
300impl Iterator for CapeDimensionalityIterator {
301	type Item = CapeDimensionality;
302	fn next(&mut self) -> Option<Self::Item> {
303		if self.current>=10 {
304			None
305		} else {
306			let result=CapeDimensionality::from(self.current);
307			self.current+=1;
308			result
309		}
310	}
311}
312impl fmt::Display for CapeDimensionality {
313	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
314		write!(f,"{}",self.as_string())
315	}
316}
317///CapePersistedDataType
318///
319///CapePersistedDataType enumeration
320///
321#[repr(i32)]
322#[derive(Debug,PartialEq,Eq,Clone,Copy)]
323pub enum CapePersistedDataType {
324	CapePersistedReal = 0,
325	CapePersistedInteger = 1,
326	CapePersistedBoolean = 2,
327	CapePersistedString = 3,
328	CapePersistedEnumeration = 4,
329	CapePersistedValue = 5,
330	CapePersistedArrayReal = 6,
331	CapePersistedArrayInteger = 7,
332	CapePersistedArrayBoolean = 8,
333	CapePersistedArrayString = 9,
334	CapePersistedArrayEnumeration = 10,
335	CapePersistedArrayValue = 11,
336	CapePersistedArrayByte = 12,
337}
338
339impl CapePersistedDataType {
340	/// Convert from i32 to CapePersistedDataType
341	///
342	/// # Arguments
343	///
344	/// * `value` - i32 value to be converted to CapePersistedDataType
345	///
346	/// # Examples
347	///
348	/// ```
349	///use cobia::*;
350	///use cape_open_1_2::CapePersistedDataType;
351	///let v0=CapePersistedDataType::from(0);
352	///assert_eq!(v0.unwrap(),CapePersistedDataType::CapePersistedReal);
353	///let v1=CapePersistedDataType::from(1);
354	///assert_eq!(v1.unwrap(),CapePersistedDataType::CapePersistedInteger);
355	///let v2=CapePersistedDataType::from(2);
356	///assert_eq!(v2.unwrap(),CapePersistedDataType::CapePersistedBoolean);
357	///let v3=CapePersistedDataType::from(3);
358	///assert_eq!(v3.unwrap(),CapePersistedDataType::CapePersistedString);
359	///let v4=CapePersistedDataType::from(4);
360	///assert_eq!(v4.unwrap(),CapePersistedDataType::CapePersistedEnumeration);
361	///let v5=CapePersistedDataType::from(5);
362	///assert_eq!(v5.unwrap(),CapePersistedDataType::CapePersistedValue);
363	///let v6=CapePersistedDataType::from(6);
364	///assert_eq!(v6.unwrap(),CapePersistedDataType::CapePersistedArrayReal);
365	///let v7=CapePersistedDataType::from(7);
366	///assert_eq!(v7.unwrap(),CapePersistedDataType::CapePersistedArrayInteger);
367	///let v8=CapePersistedDataType::from(8);
368	///assert_eq!(v8.unwrap(),CapePersistedDataType::CapePersistedArrayBoolean);
369	///let v9=CapePersistedDataType::from(9);
370	///assert_eq!(v9.unwrap(),CapePersistedDataType::CapePersistedArrayString);
371	///let v10=CapePersistedDataType::from(10);
372	///assert_eq!(v10.unwrap(),CapePersistedDataType::CapePersistedArrayEnumeration);
373	///let v11=CapePersistedDataType::from(11);
374	///assert_eq!(v11.unwrap(),CapePersistedDataType::CapePersistedArrayValue);
375	///let v12=CapePersistedDataType::from(12);
376	///assert_eq!(v12.unwrap(),CapePersistedDataType::CapePersistedArrayByte);
377	/// ```
378	pub fn from(value: i32) -> Option<CapePersistedDataType> {
379		match value {
380			0 => Some(CapePersistedDataType::CapePersistedReal),
381			1 => Some(CapePersistedDataType::CapePersistedInteger),
382			2 => Some(CapePersistedDataType::CapePersistedBoolean),
383			3 => Some(CapePersistedDataType::CapePersistedString),
384			4 => Some(CapePersistedDataType::CapePersistedEnumeration),
385			5 => Some(CapePersistedDataType::CapePersistedValue),
386			6 => Some(CapePersistedDataType::CapePersistedArrayReal),
387			7 => Some(CapePersistedDataType::CapePersistedArrayInteger),
388			8 => Some(CapePersistedDataType::CapePersistedArrayBoolean),
389			9 => Some(CapePersistedDataType::CapePersistedArrayString),
390			10 => Some(CapePersistedDataType::CapePersistedArrayEnumeration),
391			11 => Some(CapePersistedDataType::CapePersistedArrayValue),
392			12 => Some(CapePersistedDataType::CapePersistedArrayByte),
393			_ => None,
394		}
395	}
396	/// Convert to string
397	pub fn as_string(&self) -> &str {
398		match self {
399			Self::CapePersistedReal => "CapePersistedReal",
400			Self::CapePersistedInteger => "CapePersistedInteger",
401			Self::CapePersistedBoolean => "CapePersistedBoolean",
402			Self::CapePersistedString => "CapePersistedString",
403			Self::CapePersistedEnumeration => "CapePersistedEnumeration",
404			Self::CapePersistedValue => "CapePersistedValue",
405			Self::CapePersistedArrayReal => "CapePersistedArrayReal",
406			Self::CapePersistedArrayInteger => "CapePersistedArrayInteger",
407			Self::CapePersistedArrayBoolean => "CapePersistedArrayBoolean",
408			Self::CapePersistedArrayString => "CapePersistedArrayString",
409			Self::CapePersistedArrayEnumeration => "CapePersistedArrayEnumeration",
410			Self::CapePersistedArrayValue => "CapePersistedArrayValue",
411			Self::CapePersistedArrayByte => "CapePersistedArrayByte",
412		}
413	}
414	///get an iterator
415	///
416	/// # Examples
417	///
418	/// ```
419	/// use cobia::*;
420	/// use cape_open_1_2::CapePersistedDataType;
421	/// for capePersistedDataType in CapePersistedDataType::iter() {
422	///     println!("{}={}",capePersistedDataType,capePersistedDataType as i32);
423	/// }
424	/// ```
425	pub fn iter() -> CapePersistedDataTypeIterator {
426		CapePersistedDataTypeIterator { current: 0 }
427	}
428}
429
430/// CapePersistedDataType iterator
431///
432/// Iterates over all CapePersistedDataType values
433///
434/// # Examples
435///
436/// ```
437/// use cobia::*;
438/// use cape_open_1_2::CapePersistedDataType;
439/// for capePersistedDataType in CapePersistedDataType::iter() {
440///     println!("{}={}",capePersistedDataType,capePersistedDataType as i32);
441/// }
442/// ```
443pub struct CapePersistedDataTypeIterator {
444	current: i32,
445}
446impl Iterator for CapePersistedDataTypeIterator {
447	type Item = CapePersistedDataType;
448	fn next(&mut self) -> Option<Self::Item> {
449		if self.current>=13 {
450			None
451		} else {
452			let result=CapePersistedDataType::from(self.current);
453			self.current+=1;
454			result
455		}
456	}
457}
458impl fmt::Display for CapePersistedDataType {
459	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
460		write!(f,"{}",self.as_string())
461	}
462}
463///CapeParamMode
464///
465///CapeParamMode enumeration
466///
467#[repr(i32)]
468#[derive(Debug,PartialEq,Eq,Clone,Copy)]
469pub enum CapeParamMode {
470	CapeInput = 1,
471	CapeOutput = 2,
472	CapeInputOutput = 3,
473}
474
475impl CapeParamMode {
476	/// Convert from i32 to CapeParamMode
477	///
478	/// # Arguments
479	///
480	/// * `value` - i32 value to be converted to CapeParamMode
481	///
482	/// # Examples
483	///
484	/// ```
485	///use cobia::*;
486	///use cape_open_1_2::CapeParamMode;
487	///let v0=CapeParamMode::from(1);
488	///assert_eq!(v0.unwrap(),CapeParamMode::CapeInput);
489	///let v1=CapeParamMode::from(2);
490	///assert_eq!(v1.unwrap(),CapeParamMode::CapeOutput);
491	///let v2=CapeParamMode::from(3);
492	///assert_eq!(v2.unwrap(),CapeParamMode::CapeInputOutput);
493	/// ```
494	pub fn from(value: i32) -> Option<CapeParamMode> {
495		match value {
496			1 => Some(CapeParamMode::CapeInput),
497			2 => Some(CapeParamMode::CapeOutput),
498			3 => Some(CapeParamMode::CapeInputOutput),
499			_ => None,
500		}
501	}
502	/// Convert to string
503	pub fn as_string(&self) -> &str {
504		match self {
505			Self::CapeInput => "CapeInput",
506			Self::CapeOutput => "CapeOutput",
507			Self::CapeInputOutput => "CapeInputOutput",
508		}
509	}
510	///get an iterator
511	///
512	/// # Examples
513	///
514	/// ```
515	/// use cobia::*;
516	/// use cape_open_1_2::CapeParamMode;
517	/// for capeParamMode in CapeParamMode::iter() {
518	///     println!("{}={}",capeParamMode,capeParamMode as i32);
519	/// }
520	/// ```
521	pub fn iter() -> CapeParamModeIterator {
522		CapeParamModeIterator { current: 0 }
523	}
524}
525
526/// CapeParamMode iterator
527///
528/// Iterates over all CapeParamMode values
529///
530/// # Examples
531///
532/// ```
533/// use cobia::*;
534/// use cape_open_1_2::CapeParamMode;
535/// for capeParamMode in CapeParamMode::iter() {
536///     println!("{}={}",capeParamMode,capeParamMode as i32);
537/// }
538/// ```
539pub struct CapeParamModeIterator {
540	current: i32,
541}
542impl Iterator for CapeParamModeIterator {
543	type Item = CapeParamMode;
544	fn next(&mut self) -> Option<Self::Item> {
545		if self.current>=3 {
546			None
547		} else {
548			let result=CapeParamMode::from(self.current);
549			self.current+=1;
550			result
551		}
552	}
553}
554impl fmt::Display for CapeParamMode {
555	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
556		write!(f,"{}",self.as_string())
557	}
558}
559///CapeValidationStatus
560///
561///CapeValidationStatus enumeration
562///
563#[repr(i32)]
564#[derive(Debug,PartialEq,Eq,Clone,Copy)]
565pub enum CapeValidationStatus {
566	CapeNotValidated = 0,
567	CapeInvalid = 1,
568	CapeValid = 2,
569}
570
571impl CapeValidationStatus {
572	/// Convert from i32 to CapeValidationStatus
573	///
574	/// # Arguments
575	///
576	/// * `value` - i32 value to be converted to CapeValidationStatus
577	///
578	/// # Examples
579	///
580	/// ```
581	///use cobia::*;
582	///use cape_open_1_2::CapeValidationStatus;
583	///let v0=CapeValidationStatus::from(0);
584	///assert_eq!(v0.unwrap(),CapeValidationStatus::CapeNotValidated);
585	///let v1=CapeValidationStatus::from(1);
586	///assert_eq!(v1.unwrap(),CapeValidationStatus::CapeInvalid);
587	///let v2=CapeValidationStatus::from(2);
588	///assert_eq!(v2.unwrap(),CapeValidationStatus::CapeValid);
589	/// ```
590	pub fn from(value: i32) -> Option<CapeValidationStatus> {
591		match value {
592			0 => Some(CapeValidationStatus::CapeNotValidated),
593			1 => Some(CapeValidationStatus::CapeInvalid),
594			2 => Some(CapeValidationStatus::CapeValid),
595			_ => None,
596		}
597	}
598	/// Convert to string
599	pub fn as_string(&self) -> &str {
600		match self {
601			Self::CapeNotValidated => "CapeNotValidated",
602			Self::CapeInvalid => "CapeInvalid",
603			Self::CapeValid => "CapeValid",
604		}
605	}
606	///get an iterator
607	///
608	/// # Examples
609	///
610	/// ```
611	/// use cobia::*;
612	/// use cape_open_1_2::CapeValidationStatus;
613	/// for capeValidationStatus in CapeValidationStatus::iter() {
614	///     println!("{}={}",capeValidationStatus,capeValidationStatus as i32);
615	/// }
616	/// ```
617	pub fn iter() -> CapeValidationStatusIterator {
618		CapeValidationStatusIterator { current: 0 }
619	}
620}
621
622/// CapeValidationStatus iterator
623///
624/// Iterates over all CapeValidationStatus values
625///
626/// # Examples
627///
628/// ```
629/// use cobia::*;
630/// use cape_open_1_2::CapeValidationStatus;
631/// for capeValidationStatus in CapeValidationStatus::iter() {
632///     println!("{}={}",capeValidationStatus,capeValidationStatus as i32);
633/// }
634/// ```
635pub struct CapeValidationStatusIterator {
636	current: i32,
637}
638impl Iterator for CapeValidationStatusIterator {
639	type Item = CapeValidationStatus;
640	fn next(&mut self) -> Option<Self::Item> {
641		if self.current>=3 {
642			None
643		} else {
644			let result=CapeValidationStatus::from(self.current);
645			self.current+=1;
646			result
647		}
648	}
649}
650impl fmt::Display for CapeValidationStatus {
651	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
652		write!(f,"{}",self.as_string())
653	}
654}
655///CapeCalculationCode
656///
657///CapeCalculationCode enumeration
658///
659#[repr(i32)]
660#[derive(Debug,PartialEq,Eq,Clone,Copy)]
661pub enum CapeCalculationCode {
662	CapeNoCalculation = 0,
663	CapeLogFugacityCoefficients = 1,
664	CapeTDerivative = 2,
665	CapePDerivative = 4,
666	CapeMoleNumbersDerivatives = 8,
667}
668
669impl CapeCalculationCode {
670	/// Convert from i32 to CapeCalculationCode
671	///
672	/// # Arguments
673	///
674	/// * `value` - i32 value to be converted to CapeCalculationCode
675	///
676	/// # Examples
677	///
678	/// ```
679	///use cobia::*;
680	///use cape_open_1_2::CapeCalculationCode;
681	///let v0=CapeCalculationCode::from(0);
682	///assert_eq!(v0.unwrap(),CapeCalculationCode::CapeNoCalculation);
683	///let v1=CapeCalculationCode::from(1);
684	///assert_eq!(v1.unwrap(),CapeCalculationCode::CapeLogFugacityCoefficients);
685	///let v2=CapeCalculationCode::from(2);
686	///assert_eq!(v2.unwrap(),CapeCalculationCode::CapeTDerivative);
687	///let v3=CapeCalculationCode::from(4);
688	///assert_eq!(v3.unwrap(),CapeCalculationCode::CapePDerivative);
689	///let v4=CapeCalculationCode::from(8);
690	///assert_eq!(v4.unwrap(),CapeCalculationCode::CapeMoleNumbersDerivatives);
691	/// ```
692	pub fn from(value: i32) -> Option<CapeCalculationCode> {
693		match value {
694			0 => Some(CapeCalculationCode::CapeNoCalculation),
695			1 => Some(CapeCalculationCode::CapeLogFugacityCoefficients),
696			2 => Some(CapeCalculationCode::CapeTDerivative),
697			4 => Some(CapeCalculationCode::CapePDerivative),
698			8 => Some(CapeCalculationCode::CapeMoleNumbersDerivatives),
699			_ => None,
700		}
701	}
702	/// Convert to string
703	pub fn as_string(&self) -> &str {
704		match self {
705			Self::CapeNoCalculation => "CapeNoCalculation",
706			Self::CapeLogFugacityCoefficients => "CapeLogFugacityCoefficients",
707			Self::CapeTDerivative => "CapeTDerivative",
708			Self::CapePDerivative => "CapePDerivative",
709			Self::CapeMoleNumbersDerivatives => "CapeMoleNumbersDerivatives",
710		}
711	}
712	///get an iterator
713	///
714	/// # Examples
715	///
716	/// ```
717	/// use cobia::*;
718	/// use cape_open_1_2::CapeCalculationCode;
719	/// for capeCalculationCode in CapeCalculationCode::iter() {
720	///     println!("{}={}",capeCalculationCode,capeCalculationCode as i32);
721	/// }
722	/// ```
723	pub fn iter() -> CapeCalculationCodeIterator {
724		CapeCalculationCodeIterator { current: 0 }
725	}
726}
727
728/// CapeCalculationCode iterator
729///
730/// Iterates over all CapeCalculationCode values
731///
732/// # Examples
733///
734/// ```
735/// use cobia::*;
736/// use cape_open_1_2::CapeCalculationCode;
737/// for capeCalculationCode in CapeCalculationCode::iter() {
738///     println!("{}={}",capeCalculationCode,capeCalculationCode as i32);
739/// }
740/// ```
741pub struct CapeCalculationCodeIterator {
742	current: i32,
743}
744impl Iterator for CapeCalculationCodeIterator {
745	type Item = CapeCalculationCode;
746	fn next(&mut self) -> Option<Self::Item> {
747		if self.current>=5 {
748			None
749		} else {
750			let result=CapeCalculationCode::from(self.current);
751			self.current+=1;
752			result
753		}
754	}
755}
756impl fmt::Display for CapeCalculationCode {
757	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
758		write!(f,"{}",self.as_string())
759	}
760}
761///CapePhaseStatus
762///
763///CapePhaseStatus enumeration
764///
765#[repr(i32)]
766#[derive(Debug,PartialEq,Eq,Clone,Copy)]
767pub enum CapePhaseStatus {
768	CapeUnknownphasestatus = 0,
769	CapeAtequilibrium = 1,
770	CapeEstimates = 2,
771}
772
773impl CapePhaseStatus {
774	/// Convert from i32 to CapePhaseStatus
775	///
776	/// # Arguments
777	///
778	/// * `value` - i32 value to be converted to CapePhaseStatus
779	///
780	/// # Examples
781	///
782	/// ```
783	///use cobia::*;
784	///use cape_open_1_2::CapePhaseStatus;
785	///let v0=CapePhaseStatus::from(0);
786	///assert_eq!(v0.unwrap(),CapePhaseStatus::CapeUnknownphasestatus);
787	///let v1=CapePhaseStatus::from(1);
788	///assert_eq!(v1.unwrap(),CapePhaseStatus::CapeAtequilibrium);
789	///let v2=CapePhaseStatus::from(2);
790	///assert_eq!(v2.unwrap(),CapePhaseStatus::CapeEstimates);
791	/// ```
792	pub fn from(value: i32) -> Option<CapePhaseStatus> {
793		match value {
794			0 => Some(CapePhaseStatus::CapeUnknownphasestatus),
795			1 => Some(CapePhaseStatus::CapeAtequilibrium),
796			2 => Some(CapePhaseStatus::CapeEstimates),
797			_ => None,
798		}
799	}
800	/// Convert to string
801	pub fn as_string(&self) -> &str {
802		match self {
803			Self::CapeUnknownphasestatus => "CapeUnknownphasestatus",
804			Self::CapeAtequilibrium => "CapeAtequilibrium",
805			Self::CapeEstimates => "CapeEstimates",
806		}
807	}
808	///get an iterator
809	///
810	/// # Examples
811	///
812	/// ```
813	/// use cobia::*;
814	/// use cape_open_1_2::CapePhaseStatus;
815	/// for capePhaseStatus in CapePhaseStatus::iter() {
816	///     println!("{}={}",capePhaseStatus,capePhaseStatus as i32);
817	/// }
818	/// ```
819	pub fn iter() -> CapePhaseStatusIterator {
820		CapePhaseStatusIterator { current: 0 }
821	}
822}
823
824/// CapePhaseStatus iterator
825///
826/// Iterates over all CapePhaseStatus values
827///
828/// # Examples
829///
830/// ```
831/// use cobia::*;
832/// use cape_open_1_2::CapePhaseStatus;
833/// for capePhaseStatus in CapePhaseStatus::iter() {
834///     println!("{}={}",capePhaseStatus,capePhaseStatus as i32);
835/// }
836/// ```
837pub struct CapePhaseStatusIterator {
838	current: i32,
839}
840impl Iterator for CapePhaseStatusIterator {
841	type Item = CapePhaseStatus;
842	fn next(&mut self) -> Option<Self::Item> {
843		if self.current>=3 {
844			None
845		} else {
846			let result=CapePhaseStatus::from(self.current);
847			self.current+=1;
848			result
849		}
850	}
851}
852impl fmt::Display for CapePhaseStatus {
853	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
854		write!(f,"{}",self.as_string())
855	}
856}
857///CapeEditResult
858///
859///CapeEditResult enumeration
860///
861#[repr(i32)]
862#[derive(Debug,PartialEq,Eq,Clone,Copy)]
863pub enum CapeEditResult {
864	CapeModified = 0,
865	CapeNotModified = 1,
866}
867
868impl CapeEditResult {
869	/// Convert from i32 to CapeEditResult
870	///
871	/// # Arguments
872	///
873	/// * `value` - i32 value to be converted to CapeEditResult
874	///
875	/// # Examples
876	///
877	/// ```
878	///use cobia::*;
879	///use cape_open_1_2::CapeEditResult;
880	///let v0=CapeEditResult::from(0);
881	///assert_eq!(v0.unwrap(),CapeEditResult::CapeModified);
882	///let v1=CapeEditResult::from(1);
883	///assert_eq!(v1.unwrap(),CapeEditResult::CapeNotModified);
884	/// ```
885	pub fn from(value: i32) -> Option<CapeEditResult> {
886		match value {
887			0 => Some(CapeEditResult::CapeModified),
888			1 => Some(CapeEditResult::CapeNotModified),
889			_ => None,
890		}
891	}
892	/// Convert to string
893	pub fn as_string(&self) -> &str {
894		match self {
895			Self::CapeModified => "CapeModified",
896			Self::CapeNotModified => "CapeNotModified",
897		}
898	}
899	///get an iterator
900	///
901	/// # Examples
902	///
903	/// ```
904	/// use cobia::*;
905	/// use cape_open_1_2::CapeEditResult;
906	/// for capeEditResult in CapeEditResult::iter() {
907	///     println!("{}={}",capeEditResult,capeEditResult as i32);
908	/// }
909	/// ```
910	pub fn iter() -> CapeEditResultIterator {
911		CapeEditResultIterator { current: 0 }
912	}
913}
914
915/// CapeEditResult iterator
916///
917/// Iterates over all CapeEditResult values
918///
919/// # Examples
920///
921/// ```
922/// use cobia::*;
923/// use cape_open_1_2::CapeEditResult;
924/// for capeEditResult in CapeEditResult::iter() {
925///     println!("{}={}",capeEditResult,capeEditResult as i32);
926/// }
927/// ```
928pub struct CapeEditResultIterator {
929	current: i32,
930}
931impl Iterator for CapeEditResultIterator {
932	type Item = CapeEditResult;
933	fn next(&mut self) -> Option<Self::Item> {
934		if self.current>=2 {
935			None
936		} else {
937			let result=CapeEditResult::from(self.current);
938			self.current+=1;
939			result
940		}
941	}
942}
943impl fmt::Display for CapeEditResult {
944	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
945		write!(f,"{}",self.as_string())
946	}
947}
948///CapePortType
949///
950///CapePortType enumeration
951///
952#[repr(i32)]
953#[derive(Debug,PartialEq,Eq,Clone,Copy)]
954pub enum CapePortType {
955	CapeMaterial = 0,
956	CapeEnergy = 1,
957	CapeInformation = 2,
958	CapeAny = 3,
959}
960
961impl CapePortType {
962	/// Convert from i32 to CapePortType
963	///
964	/// # Arguments
965	///
966	/// * `value` - i32 value to be converted to CapePortType
967	///
968	/// # Examples
969	///
970	/// ```
971	///use cobia::*;
972	///use cape_open_1_2::CapePortType;
973	///let v0=CapePortType::from(0);
974	///assert_eq!(v0.unwrap(),CapePortType::CapeMaterial);
975	///let v1=CapePortType::from(1);
976	///assert_eq!(v1.unwrap(),CapePortType::CapeEnergy);
977	///let v2=CapePortType::from(2);
978	///assert_eq!(v2.unwrap(),CapePortType::CapeInformation);
979	///let v3=CapePortType::from(3);
980	///assert_eq!(v3.unwrap(),CapePortType::CapeAny);
981	/// ```
982	pub fn from(value: i32) -> Option<CapePortType> {
983		match value {
984			0 => Some(CapePortType::CapeMaterial),
985			1 => Some(CapePortType::CapeEnergy),
986			2 => Some(CapePortType::CapeInformation),
987			3 => Some(CapePortType::CapeAny),
988			_ => None,
989		}
990	}
991	/// Convert to string
992	pub fn as_string(&self) -> &str {
993		match self {
994			Self::CapeMaterial => "CapeMaterial",
995			Self::CapeEnergy => "CapeEnergy",
996			Self::CapeInformation => "CapeInformation",
997			Self::CapeAny => "CapeAny",
998		}
999	}
1000	///get an iterator
1001	///
1002	/// # Examples
1003	///
1004	/// ```
1005	/// use cobia::*;
1006	/// use cape_open_1_2::CapePortType;
1007	/// for capePortType in CapePortType::iter() {
1008	///     println!("{}={}",capePortType,capePortType as i32);
1009	/// }
1010	/// ```
1011	pub fn iter() -> CapePortTypeIterator {
1012		CapePortTypeIterator { current: 0 }
1013	}
1014}
1015
1016/// CapePortType iterator
1017///
1018/// Iterates over all CapePortType values
1019///
1020/// # Examples
1021///
1022/// ```
1023/// use cobia::*;
1024/// use cape_open_1_2::CapePortType;
1025/// for capePortType in CapePortType::iter() {
1026///     println!("{}={}",capePortType,capePortType as i32);
1027/// }
1028/// ```
1029pub struct CapePortTypeIterator {
1030	current: i32,
1031}
1032impl Iterator for CapePortTypeIterator {
1033	type Item = CapePortType;
1034	fn next(&mut self) -> Option<Self::Item> {
1035		if self.current>=4 {
1036			None
1037		} else {
1038			let result=CapePortType::from(self.current);
1039			self.current+=1;
1040			result
1041		}
1042	}
1043}
1044impl fmt::Display for CapePortType {
1045	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1046		write!(f,"{}",self.as_string())
1047	}
1048}
1049///CapePortDirection
1050///
1051///CapePortDirection enumeration
1052///
1053#[repr(i32)]
1054#[derive(Debug,PartialEq,Eq,Clone,Copy)]
1055pub enum CapePortDirection {
1056	CapeInlet = 0,
1057	CapeOutlet = 1,
1058	CapeInletOutlet = 2,
1059}
1060
1061impl CapePortDirection {
1062	/// Convert from i32 to CapePortDirection
1063	///
1064	/// # Arguments
1065	///
1066	/// * `value` - i32 value to be converted to CapePortDirection
1067	///
1068	/// # Examples
1069	///
1070	/// ```
1071	///use cobia::*;
1072	///use cape_open_1_2::CapePortDirection;
1073	///let v0=CapePortDirection::from(0);
1074	///assert_eq!(v0.unwrap(),CapePortDirection::CapeInlet);
1075	///let v1=CapePortDirection::from(1);
1076	///assert_eq!(v1.unwrap(),CapePortDirection::CapeOutlet);
1077	///let v2=CapePortDirection::from(2);
1078	///assert_eq!(v2.unwrap(),CapePortDirection::CapeInletOutlet);
1079	/// ```
1080	pub fn from(value: i32) -> Option<CapePortDirection> {
1081		match value {
1082			0 => Some(CapePortDirection::CapeInlet),
1083			1 => Some(CapePortDirection::CapeOutlet),
1084			2 => Some(CapePortDirection::CapeInletOutlet),
1085			_ => None,
1086		}
1087	}
1088	/// Convert to string
1089	pub fn as_string(&self) -> &str {
1090		match self {
1091			Self::CapeInlet => "CapeInlet",
1092			Self::CapeOutlet => "CapeOutlet",
1093			Self::CapeInletOutlet => "CapeInletOutlet",
1094		}
1095	}
1096	///get an iterator
1097	///
1098	/// # Examples
1099	///
1100	/// ```
1101	/// use cobia::*;
1102	/// use cape_open_1_2::CapePortDirection;
1103	/// for capePortDirection in CapePortDirection::iter() {
1104	///     println!("{}={}",capePortDirection,capePortDirection as i32);
1105	/// }
1106	/// ```
1107	pub fn iter() -> CapePortDirectionIterator {
1108		CapePortDirectionIterator { current: 0 }
1109	}
1110}
1111
1112/// CapePortDirection iterator
1113///
1114/// Iterates over all CapePortDirection values
1115///
1116/// # Examples
1117///
1118/// ```
1119/// use cobia::*;
1120/// use cape_open_1_2::CapePortDirection;
1121/// for capePortDirection in CapePortDirection::iter() {
1122///     println!("{}={}",capePortDirection,capePortDirection as i32);
1123/// }
1124/// ```
1125pub struct CapePortDirectionIterator {
1126	current: i32,
1127}
1128impl Iterator for CapePortDirectionIterator {
1129	type Item = CapePortDirection;
1130	fn next(&mut self) -> Option<Self::Item> {
1131		if self.current>=3 {
1132			None
1133		} else {
1134			let result=CapePortDirection::from(self.current);
1135			self.current+=1;
1136			result
1137		}
1138	}
1139}
1140impl fmt::Display for CapePortDirection {
1141	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1142		write!(f,"{}",self.as_string())
1143	}
1144}
1145///CapeSolutionStatus
1146///
1147///CapeSolutionStatus enumeration
1148///
1149#[repr(i32)]
1150#[derive(Debug,PartialEq,Eq,Clone,Copy)]
1151pub enum CapeSolutionStatus {
1152	CapeSolved = 0,
1153	CapeNotSolved = 1,
1154}
1155
1156impl CapeSolutionStatus {
1157	/// Convert from i32 to CapeSolutionStatus
1158	///
1159	/// # Arguments
1160	///
1161	/// * `value` - i32 value to be converted to CapeSolutionStatus
1162	///
1163	/// # Examples
1164	///
1165	/// ```
1166	///use cobia::*;
1167	///use cape_open_1_2::CapeSolutionStatus;
1168	///let v0=CapeSolutionStatus::from(0);
1169	///assert_eq!(v0.unwrap(),CapeSolutionStatus::CapeSolved);
1170	///let v1=CapeSolutionStatus::from(1);
1171	///assert_eq!(v1.unwrap(),CapeSolutionStatus::CapeNotSolved);
1172	/// ```
1173	pub fn from(value: i32) -> Option<CapeSolutionStatus> {
1174		match value {
1175			0 => Some(CapeSolutionStatus::CapeSolved),
1176			1 => Some(CapeSolutionStatus::CapeNotSolved),
1177			_ => None,
1178		}
1179	}
1180	/// Convert to string
1181	pub fn as_string(&self) -> &str {
1182		match self {
1183			Self::CapeSolved => "CapeSolved",
1184			Self::CapeNotSolved => "CapeNotSolved",
1185		}
1186	}
1187	///get an iterator
1188	///
1189	/// # Examples
1190	///
1191	/// ```
1192	/// use cobia::*;
1193	/// use cape_open_1_2::CapeSolutionStatus;
1194	/// for capeSolutionStatus in CapeSolutionStatus::iter() {
1195	///     println!("{}={}",capeSolutionStatus,capeSolutionStatus as i32);
1196	/// }
1197	/// ```
1198	pub fn iter() -> CapeSolutionStatusIterator {
1199		CapeSolutionStatusIterator { current: 0 }
1200	}
1201}
1202
1203/// CapeSolutionStatus iterator
1204///
1205/// Iterates over all CapeSolutionStatus values
1206///
1207/// # Examples
1208///
1209/// ```
1210/// use cobia::*;
1211/// use cape_open_1_2::CapeSolutionStatus;
1212/// for capeSolutionStatus in CapeSolutionStatus::iter() {
1213///     println!("{}={}",capeSolutionStatus,capeSolutionStatus as i32);
1214/// }
1215/// ```
1216pub struct CapeSolutionStatusIterator {
1217	current: i32,
1218}
1219impl Iterator for CapeSolutionStatusIterator {
1220	type Item = CapeSolutionStatus;
1221	fn next(&mut self) -> Option<Self::Item> {
1222		if self.current>=2 {
1223			None
1224		} else {
1225			let result=CapeSolutionStatus::from(self.current);
1226			self.current+=1;
1227			result
1228		}
1229	}
1230}
1231impl fmt::Display for CapeSolutionStatus {
1232	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1233		write!(f,"{}",self.as_string())
1234	}
1235}
1236///CapeStreamType
1237///
1238///CapeStreamType enumeration
1239///
1240#[repr(i32)]
1241#[derive(Debug,PartialEq,Eq,Clone,Copy)]
1242pub enum CapeStreamType {
1243	CapeAnyStreams = 0,
1244	CapeMaterialStream = 1,
1245	CapeEnergyStream = 2,
1246	CapeInformationStream = 3,
1247}
1248
1249impl CapeStreamType {
1250	/// Convert from i32 to CapeStreamType
1251	///
1252	/// # Arguments
1253	///
1254	/// * `value` - i32 value to be converted to CapeStreamType
1255	///
1256	/// # Examples
1257	///
1258	/// ```
1259	///use cobia::*;
1260	///use cape_open_1_2::CapeStreamType;
1261	///let v0=CapeStreamType::from(0);
1262	///assert_eq!(v0.unwrap(),CapeStreamType::CapeAnyStreams);
1263	///let v1=CapeStreamType::from(1);
1264	///assert_eq!(v1.unwrap(),CapeStreamType::CapeMaterialStream);
1265	///let v2=CapeStreamType::from(2);
1266	///assert_eq!(v2.unwrap(),CapeStreamType::CapeEnergyStream);
1267	///let v3=CapeStreamType::from(3);
1268	///assert_eq!(v3.unwrap(),CapeStreamType::CapeInformationStream);
1269	/// ```
1270	pub fn from(value: i32) -> Option<CapeStreamType> {
1271		match value {
1272			0 => Some(CapeStreamType::CapeAnyStreams),
1273			1 => Some(CapeStreamType::CapeMaterialStream),
1274			2 => Some(CapeStreamType::CapeEnergyStream),
1275			3 => Some(CapeStreamType::CapeInformationStream),
1276			_ => None,
1277		}
1278	}
1279	/// Convert to string
1280	pub fn as_string(&self) -> &str {
1281		match self {
1282			Self::CapeAnyStreams => "CapeAnyStreams",
1283			Self::CapeMaterialStream => "CapeMaterialStream",
1284			Self::CapeEnergyStream => "CapeEnergyStream",
1285			Self::CapeInformationStream => "CapeInformationStream",
1286		}
1287	}
1288	///get an iterator
1289	///
1290	/// # Examples
1291	///
1292	/// ```
1293	/// use cobia::*;
1294	/// use cape_open_1_2::CapeStreamType;
1295	/// for capeStreamType in CapeStreamType::iter() {
1296	///     println!("{}={}",capeStreamType,capeStreamType as i32);
1297	/// }
1298	/// ```
1299	pub fn iter() -> CapeStreamTypeIterator {
1300		CapeStreamTypeIterator { current: 0 }
1301	}
1302}
1303
1304/// CapeStreamType iterator
1305///
1306/// Iterates over all CapeStreamType values
1307///
1308/// # Examples
1309///
1310/// ```
1311/// use cobia::*;
1312/// use cape_open_1_2::CapeStreamType;
1313/// for capeStreamType in CapeStreamType::iter() {
1314///     println!("{}={}",capeStreamType,capeStreamType as i32);
1315/// }
1316/// ```
1317pub struct CapeStreamTypeIterator {
1318	current: i32,
1319}
1320impl Iterator for CapeStreamTypeIterator {
1321	type Item = CapeStreamType;
1322	fn next(&mut self) -> Option<Self::Item> {
1323		if self.current>=4 {
1324			None
1325		} else {
1326			let result=CapeStreamType::from(self.current);
1327			self.current+=1;
1328			result
1329		}
1330	}
1331}
1332impl fmt::Display for CapeStreamType {
1333	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1334		write!(f,"{}",self.as_string())
1335	}
1336}
1337///CapeMonitoringEvent
1338///
1339///CapeMonitoringEvent enumeration
1340///
1341#[repr(i32)]
1342#[derive(Debug,PartialEq,Eq,Clone,Copy)]
1343pub enum CapeMonitoringEvent {
1344	CapeUnitOperationAdded = 0,
1345	CapeUnitOperationRenamed = 1,
1346	CapeUnitOperationRemoved = 2,
1347	CapeStreamAdded = 3,
1348	CapeStreamRenamed = 4,
1349	CapeStreamRemoved = 5,
1350	CapeConnectionChanged = 6,
1351	CapeFlowsheetSolutionStatusChanged = 7,
1352	CapeNextTimeStep = 8,
1353	CapeFlowsheetValidationStatusChanged = 9,
1354}
1355
1356impl CapeMonitoringEvent {
1357	/// Convert from i32 to CapeMonitoringEvent
1358	///
1359	/// # Arguments
1360	///
1361	/// * `value` - i32 value to be converted to CapeMonitoringEvent
1362	///
1363	/// # Examples
1364	///
1365	/// ```
1366	///use cobia::*;
1367	///use cape_open_1_2::CapeMonitoringEvent;
1368	///let v0=CapeMonitoringEvent::from(0);
1369	///assert_eq!(v0.unwrap(),CapeMonitoringEvent::CapeUnitOperationAdded);
1370	///let v1=CapeMonitoringEvent::from(1);
1371	///assert_eq!(v1.unwrap(),CapeMonitoringEvent::CapeUnitOperationRenamed);
1372	///let v2=CapeMonitoringEvent::from(2);
1373	///assert_eq!(v2.unwrap(),CapeMonitoringEvent::CapeUnitOperationRemoved);
1374	///let v3=CapeMonitoringEvent::from(3);
1375	///assert_eq!(v3.unwrap(),CapeMonitoringEvent::CapeStreamAdded);
1376	///let v4=CapeMonitoringEvent::from(4);
1377	///assert_eq!(v4.unwrap(),CapeMonitoringEvent::CapeStreamRenamed);
1378	///let v5=CapeMonitoringEvent::from(5);
1379	///assert_eq!(v5.unwrap(),CapeMonitoringEvent::CapeStreamRemoved);
1380	///let v6=CapeMonitoringEvent::from(6);
1381	///assert_eq!(v6.unwrap(),CapeMonitoringEvent::CapeConnectionChanged);
1382	///let v7=CapeMonitoringEvent::from(7);
1383	///assert_eq!(v7.unwrap(),CapeMonitoringEvent::CapeFlowsheetSolutionStatusChanged);
1384	///let v8=CapeMonitoringEvent::from(8);
1385	///assert_eq!(v8.unwrap(),CapeMonitoringEvent::CapeNextTimeStep);
1386	///let v9=CapeMonitoringEvent::from(9);
1387	///assert_eq!(v9.unwrap(),CapeMonitoringEvent::CapeFlowsheetValidationStatusChanged);
1388	/// ```
1389	pub fn from(value: i32) -> Option<CapeMonitoringEvent> {
1390		match value {
1391			0 => Some(CapeMonitoringEvent::CapeUnitOperationAdded),
1392			1 => Some(CapeMonitoringEvent::CapeUnitOperationRenamed),
1393			2 => Some(CapeMonitoringEvent::CapeUnitOperationRemoved),
1394			3 => Some(CapeMonitoringEvent::CapeStreamAdded),
1395			4 => Some(CapeMonitoringEvent::CapeStreamRenamed),
1396			5 => Some(CapeMonitoringEvent::CapeStreamRemoved),
1397			6 => Some(CapeMonitoringEvent::CapeConnectionChanged),
1398			7 => Some(CapeMonitoringEvent::CapeFlowsheetSolutionStatusChanged),
1399			8 => Some(CapeMonitoringEvent::CapeNextTimeStep),
1400			9 => Some(CapeMonitoringEvent::CapeFlowsheetValidationStatusChanged),
1401			_ => None,
1402		}
1403	}
1404	/// Convert to string
1405	pub fn as_string(&self) -> &str {
1406		match self {
1407			Self::CapeUnitOperationAdded => "CapeUnitOperationAdded",
1408			Self::CapeUnitOperationRenamed => "CapeUnitOperationRenamed",
1409			Self::CapeUnitOperationRemoved => "CapeUnitOperationRemoved",
1410			Self::CapeStreamAdded => "CapeStreamAdded",
1411			Self::CapeStreamRenamed => "CapeStreamRenamed",
1412			Self::CapeStreamRemoved => "CapeStreamRemoved",
1413			Self::CapeConnectionChanged => "CapeConnectionChanged",
1414			Self::CapeFlowsheetSolutionStatusChanged => "CapeFlowsheetSolutionStatusChanged",
1415			Self::CapeNextTimeStep => "CapeNextTimeStep",
1416			Self::CapeFlowsheetValidationStatusChanged => "CapeFlowsheetValidationStatusChanged",
1417		}
1418	}
1419	///get an iterator
1420	///
1421	/// # Examples
1422	///
1423	/// ```
1424	/// use cobia::*;
1425	/// use cape_open_1_2::CapeMonitoringEvent;
1426	/// for capeMonitoringEvent in CapeMonitoringEvent::iter() {
1427	///     println!("{}={}",capeMonitoringEvent,capeMonitoringEvent as i32);
1428	/// }
1429	/// ```
1430	pub fn iter() -> CapeMonitoringEventIterator {
1431		CapeMonitoringEventIterator { current: 0 }
1432	}
1433}
1434
1435/// CapeMonitoringEvent iterator
1436///
1437/// Iterates over all CapeMonitoringEvent values
1438///
1439/// # Examples
1440///
1441/// ```
1442/// use cobia::*;
1443/// use cape_open_1_2::CapeMonitoringEvent;
1444/// for capeMonitoringEvent in CapeMonitoringEvent::iter() {
1445///     println!("{}={}",capeMonitoringEvent,capeMonitoringEvent as i32);
1446/// }
1447/// ```
1448pub struct CapeMonitoringEventIterator {
1449	current: i32,
1450}
1451impl Iterator for CapeMonitoringEventIterator {
1452	type Item = CapeMonitoringEvent;
1453	fn next(&mut self) -> Option<Self::Item> {
1454		if self.current>=10 {
1455			None
1456		} else {
1457			let result=CapeMonitoringEvent::from(self.current);
1458			self.current+=1;
1459			result
1460		}
1461	}
1462}
1463impl fmt::Display for CapeMonitoringEvent {
1464	fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
1465		write!(f,"{}",self.as_string())
1466	}
1467}
1468
1469//Interfaces
1470
1471///ICapeIdentification
1472///
1473///ICapeIdentification interface
1474///
1475pub trait ICapeIdentification {
1476	fn get_component_name(&mut self,name:&mut CapeStringOut) -> Result<(),COBIAError>;
1477	fn set_component_name(&mut self,name:&CapeStringIn) -> Result<(),COBIAError>;
1478	fn get_component_description(&mut self,desc:&mut CapeStringOut) -> Result<(),COBIAError>;
1479	fn set_component_description(&mut self,desc:&CapeStringIn) -> Result<(),COBIAError>;
1480}
1481
1482pub trait ICapeIdentificationImpl : ICapeIdentification {
1483	type T: ICapeInterfaceImpl+ICapeIdentificationImpl;
1484
1485	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
1486
1487	///prepare CAPEOPEN_1_2_ICapeIdentification interface and return as generic ICapeInterface pointer
1488	fn init_interface() -> crate::C::ICapeInterface {
1489		crate::C::ICapeInterface {
1490			me: std::ptr::null_mut(),
1491			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeIdentification_VTable).cast_mut()
1492				as *mut crate::C::ICapeInterface_VTable,
1493		}
1494	}
1495	
1496	fn init<Timpl: ICapeIdentificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
1497		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeIdentification =
1498			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeIdentification;
1499		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
1500		u.add_interface(
1501			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeIdentification_UUID),
1502			iface as *mut crate::C::ICapeInterface,
1503		);
1504	}
1505	
1506	extern "C" fn raw_get_component_name(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString) -> crate::C::CapeResult {
1507		if name.is_null() {
1508			return COBIAERR_NULLPOINTER;
1509		}
1510		let p = me as *mut Self::T;
1511		let myself=unsafe { &mut *p };
1512		if name.is_null() {
1513			return COBIAERR_NULLPOINTER;
1514		}
1515		let mut name=unsafe{*((&name as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
1516		let mut name=CapeStringOut::new(&mut name);
1517		match myself.get_component_name(&mut name) {
1518			Ok(_) => COBIAERR_NOERROR,
1519			Err(e) => myself.set_last_error(e,"ICapeIdentification::GetComponentName")
1520		}
1521	}
1522
1523	extern "C" fn raw_set_component_name(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString) -> crate::C::CapeResult {
1524		let p = me as *mut Self::T;
1525		let myself=unsafe { &mut *p };
1526		let name=CapeStringIn::new(&name);
1527		match myself.set_component_name(&name) {
1528			Ok(_) => COBIAERR_NOERROR,
1529			Err(e) => myself.set_last_error(e,"ICapeIdentification::SetComponentName")
1530		}
1531	}
1532
1533	extern "C" fn raw_get_component_description(me: *mut std::ffi::c_void,desc:*mut crate::C::ICapeString) -> crate::C::CapeResult {
1534		if desc.is_null() {
1535			return COBIAERR_NULLPOINTER;
1536		}
1537		let p = me as *mut Self::T;
1538		let myself=unsafe { &mut *p };
1539		if desc.is_null() {
1540			return COBIAERR_NULLPOINTER;
1541		}
1542		let mut desc=unsafe{*((&desc as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
1543		let mut desc=CapeStringOut::new(&mut desc);
1544		match myself.get_component_description(&mut desc) {
1545			Ok(_) => COBIAERR_NOERROR,
1546			Err(e) => myself.set_last_error(e,"ICapeIdentification::GetComponentDescription")
1547		}
1548	}
1549
1550	extern "C" fn raw_set_component_description(me: *mut std::ffi::c_void,desc:*mut crate::C::ICapeString) -> crate::C::CapeResult {
1551		let p = me as *mut Self::T;
1552		let myself=unsafe { &mut *p };
1553		let desc=CapeStringIn::new(&desc);
1554		match myself.set_component_description(&desc) {
1555			Ok(_) => COBIAERR_NOERROR,
1556			Err(e) => myself.set_last_error(e,"ICapeIdentification::SetComponentDescription")
1557		}
1558	}
1559
1560	const VTABLE: C::CAPEOPEN_1_2_ICapeIdentification_VTable =
1561		C::CAPEOPEN_1_2_ICapeIdentification_VTable {
1562			base: crate::C::ICapeInterface_VTable {
1563				addReference: Some(Self::T::raw_add_reference),
1564				release: Some(Self::T::raw_release),
1565				queryInterface: Some(Self::T::raw_query_interface),
1566				getLastError: Some(Self::T::raw_get_last_error),
1567			},
1568			getComponentName: Some(Self::T::raw_get_component_name),
1569			putComponentName: Some(Self::T::raw_set_component_name),
1570			getComponentDescription: Some(Self::T::raw_get_component_description),
1571			putComponentDescription: Some(Self::T::raw_set_component_description),
1572		};
1573}
1574
1575#[cape_smart_pointer(ICAPEIDENTIFICATION_UUID)]
1576pub struct CapeIdentification {
1577	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeIdentification,
1578}
1579
1580impl CapeIdentification {
1581
1582	pub fn get_component_name<TypeOfName:CapeStringProviderOut>(&self,name:&mut TypeOfName) -> Result<(),COBIAError> {
1583		let result_code = unsafe {
1584			((*(*self.interface).vTbl).getComponentName.unwrap())((*self.interface).me,(&name.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
1585		};
1586		match result_code {
1587			COBIAERR_NOERROR => {Ok(())},
1588			_ => Err(COBIAError::from_object(result_code,self))
1589		}
1590	}
1591
1592	pub fn set_component_name<TypeOfName:CapeStringProviderIn>(&self,name:&TypeOfName) -> Result<(),COBIAError> {
1593		let result_code = unsafe {
1594			((*(*self.interface).vTbl).putComponentName.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
1595		};
1596		match result_code {
1597			COBIAERR_NOERROR => {Ok(())},
1598			_ => Err(COBIAError::from_object(result_code,self))
1599		}
1600	}
1601
1602	pub fn get_component_description<TypeOfDesc:CapeStringProviderOut>(&self,desc:&mut TypeOfDesc) -> Result<(),COBIAError> {
1603		let result_code = unsafe {
1604			((*(*self.interface).vTbl).getComponentDescription.unwrap())((*self.interface).me,(&desc.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
1605		};
1606		match result_code {
1607			COBIAERR_NOERROR => {Ok(())},
1608			_ => Err(COBIAError::from_object(result_code,self))
1609		}
1610	}
1611
1612	pub fn set_component_description<TypeOfDesc:CapeStringProviderIn>(&self,desc:&TypeOfDesc) -> Result<(),COBIAError> {
1613		let result_code = unsafe {
1614			((*(*self.interface).vTbl).putComponentDescription.unwrap())((*self.interface).me,(&desc.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
1615		};
1616		match result_code {
1617			COBIAERR_NOERROR => {Ok(())},
1618			_ => Err(COBIAError::from_object(result_code,self))
1619		}
1620	}
1621
1622}
1623
1624///ICapeCollection
1625///
1626///ICapeCollection interface
1627///
1628pub trait ICapeCollection<CollectionItem:CapeSmartPointer> {
1629	fn item_by_index(&mut self,index:CapeInteger) -> Result<CollectionItem,COBIAError>;
1630	fn item_by_name(&mut self,name:&CapeStringIn) -> Result<CollectionItem,COBIAError>;
1631	fn get_count(&mut self) -> Result<CapeInteger,COBIAError>;
1632}
1633
1634pub trait ICapeCollectionImpl<CollectionItem:CapeSmartPointer> : ICapeCollection<CollectionItem> {
1635	type T: ICapeInterfaceImpl+ICapeCollectionImpl<CollectionItem>;
1636
1637	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
1638
1639	///prepare CAPEOPEN_1_2_ICapeCollection interface and return as generic ICapeInterface pointer
1640	fn init_interface() -> crate::C::ICapeInterface {
1641		crate::C::ICapeInterface {
1642			me: std::ptr::null_mut(),
1643			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeCollection_VTable).cast_mut()
1644				as *mut crate::C::ICapeInterface_VTable,
1645		}
1646	}
1647	
1648	fn init<Timpl: ICapeCollectionImpl<CollectionItem>+ICapeInterfaceImpl>(u: &mut Timpl) {
1649		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeCollection =
1650			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeCollection;
1651		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
1652		u.add_interface(
1653			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeCollection_UUID),
1654			iface as *mut crate::C::ICapeInterface,
1655		);
1656	}
1657	
1658	extern "C" fn raw_item_by_index(me: *mut std::ffi::c_void,index:CapeInteger,item:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
1659		if item.is_null() {
1660			return COBIAERR_NULLPOINTER;
1661		}
1662		let p = me as *mut Self::T;
1663		let myself=unsafe { &mut *p };
1664		if item.is_null() {
1665			return COBIAERR_NULLPOINTER;
1666		}
1667		match myself.item_by_index(index) {
1668			Ok(_item) => {
1669				unsafe{*item=_item.detach() as *mut crate::C::ICapeInterface;}
1670				COBIAERR_NOERROR
1671			},
1672			Err(e) => myself.set_last_error(e,"ICapeCollection::ItemByIndex")
1673		}
1674	}
1675
1676	extern "C" fn raw_item_by_name(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,item:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
1677		if item.is_null() {
1678			return COBIAERR_NULLPOINTER;
1679		}
1680		let p = me as *mut Self::T;
1681		let myself=unsafe { &mut *p };
1682		if item.is_null() {
1683			return COBIAERR_NULLPOINTER;
1684		}
1685		let name=CapeStringIn::new(&name);
1686		match myself.item_by_name(&name) {
1687			Ok(_item) => {
1688				unsafe{*item=_item.detach() as *mut crate::C::ICapeInterface;}
1689				COBIAERR_NOERROR
1690			},
1691			Err(e) => myself.set_last_error(e,"ICapeCollection::ItemByName")
1692		}
1693	}
1694
1695	extern "C" fn raw_get_count(me: *mut std::ffi::c_void,item_count:*mut CapeInteger) -> crate::C::CapeResult {
1696		if item_count.is_null() {
1697			return COBIAERR_NULLPOINTER;
1698		}
1699		let p = me as *mut Self::T;
1700		let myself=unsafe { &mut *p };
1701		match myself.get_count() {
1702			Ok(_item_count) => {
1703				unsafe{*item_count=_item_count;}
1704				COBIAERR_NOERROR
1705			},
1706			Err(e) => myself.set_last_error(e,"ICapeCollection::GetCount")
1707		}
1708	}
1709
1710	const VTABLE: C::CAPEOPEN_1_2_ICapeCollection_VTable =
1711		C::CAPEOPEN_1_2_ICapeCollection_VTable {
1712			base: crate::C::ICapeInterface_VTable {
1713				addReference: Some(Self::T::raw_add_reference),
1714				release: Some(Self::T::raw_release),
1715				queryInterface: Some(Self::T::raw_query_interface),
1716				getLastError: Some(Self::T::raw_get_last_error),
1717			},
1718			ItemByIndex: Some(Self::T::raw_item_by_index),
1719			ItemByName: Some(Self::T::raw_item_by_name),
1720			getCount: Some(Self::T::raw_get_count),
1721		};
1722}
1723
1724#[cape_smart_pointer(ICAPECOLLECTION_UUID)]
1725pub struct CapeCollection<CollectionItem:CapeSmartPointer> {
1726	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeCollection,
1727	phantom_collection_item : PhantomData<CollectionItem>,
1728}
1729
1730impl<CollectionItem:CapeSmartPointer> CapeCollection<CollectionItem> {
1731
1732	pub fn item_by_index(&self,index:CapeInteger) -> Result<CollectionItem,COBIAError> {
1733		let mut item: *mut crate::C::ICapeInterface=std::ptr::null_mut();
1734		let result_code = unsafe {
1735			((*(*self.interface).vTbl).ItemByIndex.unwrap())((*self.interface).me,index,&mut item as *mut *mut crate::C::ICapeInterface)
1736		};
1737		let item=crate::CapeObject::attach(item);
1738		let item=match CollectionItem::from_object(&item) {
1739			Ok(_item) => _item,
1740			Err(e) => {return Err(e);}
1741		};
1742		match result_code {
1743			COBIAERR_NOERROR => {Ok(item)},
1744			_ => Err(COBIAError::from_object(result_code,self))
1745		}
1746	}
1747
1748	pub fn item_by_name<TypeOfName:CapeStringProviderIn>(&self,name:&TypeOfName) -> Result<CollectionItem,COBIAError> {
1749		let mut item: *mut crate::C::ICapeInterface=std::ptr::null_mut();
1750		let result_code = unsafe {
1751			((*(*self.interface).vTbl).ItemByName.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut item as *mut *mut crate::C::ICapeInterface)
1752		};
1753		let item=crate::CapeObject::attach(item);
1754		let item=match CollectionItem::from_object(&item) {
1755			Ok(_item) => _item,
1756			Err(e) => {return Err(e);}
1757		};
1758		match result_code {
1759			COBIAERR_NOERROR => {Ok(item)},
1760			_ => Err(COBIAError::from_object(result_code,self))
1761		}
1762	}
1763
1764	pub fn get_count(&self) -> Result<CapeInteger,COBIAError> {
1765		let mut item_count:CapeInteger=0;
1766		let result_code = unsafe {
1767			((*(*self.interface).vTbl).getCount.unwrap())((*self.interface).me,&mut item_count as *mut CapeInteger)
1768		};
1769		match result_code {
1770			COBIAERR_NOERROR => {Ok(item_count)},
1771			_ => Err(COBIAError::from_object(result_code,self))
1772		}
1773	}
1774
1775}
1776
1777///ICapeParameter
1778///
1779///ICapeParameter interface
1780///
1781pub trait ICapeParameter {
1782	fn get_val_status(&mut self) -> Result<CapeValidationStatus,COBIAError>;
1783	fn get_mode(&mut self) -> Result<CapeParamMode,COBIAError>;
1784	fn get_type(&mut self) -> Result<CapeParamType,COBIAError>;
1785	fn validate(&mut self,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
1786	fn reset(&mut self) -> Result<(),COBIAError>;
1787}
1788
1789pub trait ICapeParameterImpl : ICapeParameter {
1790	type T: ICapeInterfaceImpl+ICapeParameterImpl;
1791
1792	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
1793
1794	///prepare CAPEOPEN_1_2_ICapeParameter interface and return as generic ICapeInterface pointer
1795	fn init_interface() -> crate::C::ICapeInterface {
1796		crate::C::ICapeInterface {
1797			me: std::ptr::null_mut(),
1798			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeParameter_VTable).cast_mut()
1799				as *mut crate::C::ICapeInterface_VTable,
1800		}
1801	}
1802	
1803	fn init<Timpl: ICapeParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
1804		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeParameter =
1805			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeParameter;
1806		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
1807		u.add_interface(
1808			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeParameter_UUID),
1809			iface as *mut crate::C::ICapeInterface,
1810		);
1811	}
1812	
1813	extern "C" fn raw_get_val_status(me: *mut std::ffi::c_void,val_status:*mut C::CAPEOPEN_1_2_CapeValidationStatus) -> crate::C::CapeResult {
1814		if val_status.is_null() {
1815			return COBIAERR_NULLPOINTER;
1816		}
1817		let p = me as *mut Self::T;
1818		let myself=unsafe { &mut *p };
1819		match myself.get_val_status() {
1820			Ok(_val_status) => {
1821				unsafe{*val_status=_val_status as C::CAPEOPEN_1_2_CapeValidationStatus;}
1822				COBIAERR_NOERROR
1823			},
1824			Err(e) => myself.set_last_error(e,"ICapeParameter::GetValStatus")
1825		}
1826	}
1827
1828	extern "C" fn raw_get_mode(me: *mut std::ffi::c_void,mode:*mut C::CAPEOPEN_1_2_CapeParamMode) -> crate::C::CapeResult {
1829		if mode.is_null() {
1830			return COBIAERR_NULLPOINTER;
1831		}
1832		let p = me as *mut Self::T;
1833		let myself=unsafe { &mut *p };
1834		match myself.get_mode() {
1835			Ok(_mode) => {
1836				unsafe{*mode=_mode as C::CAPEOPEN_1_2_CapeParamMode;}
1837				COBIAERR_NOERROR
1838			},
1839			Err(e) => myself.set_last_error(e,"ICapeParameter::GetMode")
1840		}
1841	}
1842
1843	extern "C" fn raw_get_type(me: *mut std::ffi::c_void,parameter_type:*mut C::CAPEOPEN_1_2_CapeParamType) -> crate::C::CapeResult {
1844		if parameter_type.is_null() {
1845			return COBIAERR_NULLPOINTER;
1846		}
1847		let p = me as *mut Self::T;
1848		let myself=unsafe { &mut *p };
1849		match myself.get_type() {
1850			Ok(_parameter_type) => {
1851				unsafe{*parameter_type=_parameter_type as C::CAPEOPEN_1_2_CapeParamType;}
1852				COBIAERR_NOERROR
1853			},
1854			Err(e) => myself.set_last_error(e,"ICapeParameter::GetType")
1855		}
1856	}
1857
1858	extern "C" fn raw_validate(me: *mut std::ffi::c_void,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
1859		if message.is_null()||is_ok.is_null() {
1860			return COBIAERR_NULLPOINTER;
1861		}
1862		let p = me as *mut Self::T;
1863		let myself=unsafe { &mut *p };
1864		if message.is_null() {
1865			return COBIAERR_NULLPOINTER;
1866		}
1867		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
1868		let mut message=CapeStringOut::new(&mut message);
1869		match myself.validate(&mut message) {
1870			Ok(_is_ok) => {
1871				unsafe{*is_ok=_is_ok;}
1872				COBIAERR_NOERROR
1873			},
1874			Err(e) => myself.set_last_error(e,"ICapeParameter::Validate")
1875		}
1876	}
1877
1878	extern "C" fn raw_reset(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
1879		let p = me as *mut Self::T;
1880		let myself=unsafe { &mut *p };
1881		match myself.reset() {
1882			Ok(_) => COBIAERR_NOERROR,
1883			Err(e) => myself.set_last_error(e,"ICapeParameter::Reset")
1884		}
1885	}
1886
1887	const VTABLE: C::CAPEOPEN_1_2_ICapeParameter_VTable =
1888		C::CAPEOPEN_1_2_ICapeParameter_VTable {
1889			base: crate::C::ICapeInterface_VTable {
1890				addReference: Some(Self::T::raw_add_reference),
1891				release: Some(Self::T::raw_release),
1892				queryInterface: Some(Self::T::raw_query_interface),
1893				getLastError: Some(Self::T::raw_get_last_error),
1894			},
1895			getValStatus: Some(Self::T::raw_get_val_status),
1896			getMode: Some(Self::T::raw_get_mode),
1897			getType: Some(Self::T::raw_get_type),
1898			Validate: Some(Self::T::raw_validate),
1899			Reset: Some(Self::T::raw_reset),
1900		};
1901}
1902
1903#[cape_smart_pointer(ICAPEPARAMETER_UUID)]
1904pub struct CapeParameter {
1905	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeParameter,
1906}
1907
1908impl CapeParameter {
1909
1910	pub fn get_val_status(&self) -> Result<CapeValidationStatus,COBIAError> {
1911		let mut val_status:C::CAPEOPEN_1_2_CapeValidationStatus=0;
1912		let result_code = unsafe {
1913			((*(*self.interface).vTbl).getValStatus.unwrap())((*self.interface).me,&mut val_status as *mut C::CAPEOPEN_1_2_CapeValidationStatus)
1914		};
1915		let val_status=match CapeValidationStatus::from(val_status) {
1916			Some(_val_status) => _val_status,
1917			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
1918		};
1919		match result_code {
1920			COBIAERR_NOERROR => {Ok(val_status)},
1921			_ => Err(COBIAError::from_object(result_code,self))
1922		}
1923	}
1924
1925	pub fn get_mode(&self) -> Result<CapeParamMode,COBIAError> {
1926		let mut mode:C::CAPEOPEN_1_2_CapeParamMode=0;
1927		let result_code = unsafe {
1928			((*(*self.interface).vTbl).getMode.unwrap())((*self.interface).me,&mut mode as *mut C::CAPEOPEN_1_2_CapeParamMode)
1929		};
1930		let mode=match CapeParamMode::from(mode) {
1931			Some(_mode) => _mode,
1932			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
1933		};
1934		match result_code {
1935			COBIAERR_NOERROR => {Ok(mode)},
1936			_ => Err(COBIAError::from_object(result_code,self))
1937		}
1938	}
1939
1940	pub fn get_type(&self) -> Result<CapeParamType,COBIAError> {
1941		let mut parameter_type:C::CAPEOPEN_1_2_CapeParamType=0;
1942		let result_code = unsafe {
1943			((*(*self.interface).vTbl).getType.unwrap())((*self.interface).me,&mut parameter_type as *mut C::CAPEOPEN_1_2_CapeParamType)
1944		};
1945		let parameter_type=match CapeParamType::from(parameter_type) {
1946			Some(_parameter_type) => _parameter_type,
1947			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
1948		};
1949		match result_code {
1950			COBIAERR_NOERROR => {Ok(parameter_type)},
1951			_ => Err(COBIAError::from_object(result_code,self))
1952		}
1953	}
1954
1955	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
1956		let mut is_ok:CapeBoolean=false as CapeBoolean;
1957		let result_code = unsafe {
1958			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
1959		};
1960		match result_code {
1961			COBIAERR_NOERROR => {Ok(is_ok)},
1962			_ => Err(COBIAError::from_object(result_code,self))
1963		}
1964	}
1965
1966	pub fn reset(&self) -> Result<(),COBIAError> {
1967		let result_code = unsafe {
1968			((*(*self.interface).vTbl).Reset.unwrap())((*self.interface).me)
1969		};
1970		match result_code {
1971			COBIAERR_NOERROR => {Ok(())},
1972			_ => Err(COBIAError::from_object(result_code,self))
1973		}
1974	}
1975
1976}
1977
1978///ICapeRealParameter
1979///
1980///ICapeRealParameter interface
1981///
1982pub trait ICapeRealParameter {
1983	fn get_value(&mut self) -> Result<CapeReal,COBIAError>;
1984	fn set_value(&mut self,value:CapeReal) -> Result<(),COBIAError>;
1985	fn get_default_value(&mut self) -> Result<CapeReal,COBIAError>;
1986	fn get_lower_bound(&mut self) -> Result<CapeReal,COBIAError>;
1987	fn get_upper_bound(&mut self) -> Result<CapeReal,COBIAError>;
1988	fn get_dimensionality(&mut self,dimensionality:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
1989	fn validate(&mut self,value:CapeReal,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
1990}
1991
1992pub trait ICapeRealParameterImpl : ICapeRealParameter {
1993	type T: ICapeInterfaceImpl+ICapeRealParameterImpl;
1994
1995	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
1996
1997	///prepare CAPEOPEN_1_2_ICapeRealParameter interface and return as generic ICapeInterface pointer
1998	fn init_interface() -> crate::C::ICapeInterface {
1999		crate::C::ICapeInterface {
2000			me: std::ptr::null_mut(),
2001			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeRealParameter_VTable).cast_mut()
2002				as *mut crate::C::ICapeInterface_VTable,
2003		}
2004	}
2005	
2006	fn init<Timpl: ICapeRealParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2007		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeRealParameter =
2008			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeRealParameter;
2009		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2010		u.add_interface(
2011			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeRealParameter_UUID),
2012			iface as *mut crate::C::ICapeInterface,
2013		);
2014	}
2015	
2016	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut CapeReal) -> crate::C::CapeResult {
2017		if value.is_null() {
2018			return COBIAERR_NULLPOINTER;
2019		}
2020		let p = me as *mut Self::T;
2021		let myself=unsafe { &mut *p };
2022		match myself.get_value() {
2023			Ok(_value) => {
2024				unsafe{*value=_value;}
2025				COBIAERR_NOERROR
2026			},
2027			Err(e) => myself.set_last_error(e,"ICapeRealParameter::GetValue")
2028		}
2029	}
2030
2031	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:CapeReal) -> crate::C::CapeResult {
2032		let p = me as *mut Self::T;
2033		let myself=unsafe { &mut *p };
2034		match myself.set_value(value) {
2035			Ok(_) => COBIAERR_NOERROR,
2036			Err(e) => myself.set_last_error(e,"ICapeRealParameter::SetValue")
2037		}
2038	}
2039
2040	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeReal) -> crate::C::CapeResult {
2041		if default_value.is_null() {
2042			return COBIAERR_NULLPOINTER;
2043		}
2044		let p = me as *mut Self::T;
2045		let myself=unsafe { &mut *p };
2046		match myself.get_default_value() {
2047			Ok(_default_value) => {
2048				unsafe{*default_value=_default_value;}
2049				COBIAERR_NOERROR
2050			},
2051			Err(e) => myself.set_last_error(e,"ICapeRealParameter::GetDefaultValue")
2052		}
2053	}
2054
2055	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeReal) -> crate::C::CapeResult {
2056		if l_bound.is_null() {
2057			return COBIAERR_NULLPOINTER;
2058		}
2059		let p = me as *mut Self::T;
2060		let myself=unsafe { &mut *p };
2061		match myself.get_lower_bound() {
2062			Ok(_l_bound) => {
2063				unsafe{*l_bound=_l_bound;}
2064				COBIAERR_NOERROR
2065			},
2066			Err(e) => myself.set_last_error(e,"ICapeRealParameter::GetLowerBound")
2067		}
2068	}
2069
2070	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeReal) -> crate::C::CapeResult {
2071		if u_bound.is_null() {
2072			return COBIAERR_NULLPOINTER;
2073		}
2074		let p = me as *mut Self::T;
2075		let myself=unsafe { &mut *p };
2076		match myself.get_upper_bound() {
2077			Ok(_u_bound) => {
2078				unsafe{*u_bound=_u_bound;}
2079				COBIAERR_NOERROR
2080			},
2081			Err(e) => myself.set_last_error(e,"ICapeRealParameter::GetUpperBound")
2082		}
2083	}
2084
2085	extern "C" fn raw_get_dimensionality(me: *mut std::ffi::c_void,dimensionality:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
2086		if dimensionality.is_null() {
2087			return COBIAERR_NULLPOINTER;
2088		}
2089		let p = me as *mut Self::T;
2090		let myself=unsafe { &mut *p };
2091		if dimensionality.is_null() {
2092			return COBIAERR_NULLPOINTER;
2093		}
2094		let mut dimensionality=unsafe{*((&dimensionality as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
2095		let mut dimensionality=CapeArrayRealOut::new(&mut dimensionality);
2096		match myself.get_dimensionality(&mut dimensionality) {
2097			Ok(_) => COBIAERR_NOERROR,
2098			Err(e) => myself.set_last_error(e,"ICapeRealParameter::GetDimensionality")
2099		}
2100	}
2101
2102	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
2103		if message.is_null()||is_ok.is_null() {
2104			return COBIAERR_NULLPOINTER;
2105		}
2106		let p = me as *mut Self::T;
2107		let myself=unsafe { &mut *p };
2108		if message.is_null() {
2109			return COBIAERR_NULLPOINTER;
2110		}
2111		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2112		let mut message=CapeStringOut::new(&mut message);
2113		match myself.validate(value,&mut message) {
2114			Ok(_is_ok) => {
2115				unsafe{*is_ok=_is_ok;}
2116				COBIAERR_NOERROR
2117			},
2118			Err(e) => myself.set_last_error(e,"ICapeRealParameter::Validate")
2119		}
2120	}
2121
2122	const VTABLE: C::CAPEOPEN_1_2_ICapeRealParameter_VTable =
2123		C::CAPEOPEN_1_2_ICapeRealParameter_VTable {
2124			base: crate::C::ICapeInterface_VTable {
2125				addReference: Some(Self::T::raw_add_reference),
2126				release: Some(Self::T::raw_release),
2127				queryInterface: Some(Self::T::raw_query_interface),
2128				getLastError: Some(Self::T::raw_get_last_error),
2129			},
2130			getValue: Some(Self::T::raw_get_value),
2131			putValue: Some(Self::T::raw_set_value),
2132			getDefaultValue: Some(Self::T::raw_get_default_value),
2133			getLowerBound: Some(Self::T::raw_get_lower_bound),
2134			getUpperBound: Some(Self::T::raw_get_upper_bound),
2135			getDimensionality: Some(Self::T::raw_get_dimensionality),
2136			Validate: Some(Self::T::raw_validate),
2137		};
2138}
2139
2140#[cape_smart_pointer(ICAPEREALPARAMETER_UUID)]
2141pub struct CapeRealParameter {
2142	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeRealParameter,
2143}
2144
2145impl CapeRealParameter {
2146
2147	pub fn get_value(&self) -> Result<CapeReal,COBIAError> {
2148		let mut value:CapeReal=0.0;
2149		let result_code = unsafe {
2150			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,&mut value as *mut CapeReal)
2151		};
2152		match result_code {
2153			COBIAERR_NOERROR => {Ok(value)},
2154			_ => Err(COBIAError::from_object(result_code,self))
2155		}
2156	}
2157
2158	pub fn set_value(&self,value:CapeReal) -> Result<(),COBIAError> {
2159		let result_code = unsafe {
2160			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,value)
2161		};
2162		match result_code {
2163			COBIAERR_NOERROR => {Ok(())},
2164			_ => Err(COBIAError::from_object(result_code,self))
2165		}
2166	}
2167
2168	pub fn get_default_value(&self) -> Result<CapeReal,COBIAError> {
2169		let mut default_value:CapeReal=0.0;
2170		let result_code = unsafe {
2171			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeReal)
2172		};
2173		match result_code {
2174			COBIAERR_NOERROR => {Ok(default_value)},
2175			_ => Err(COBIAError::from_object(result_code,self))
2176		}
2177	}
2178
2179	pub fn get_lower_bound(&self) -> Result<CapeReal,COBIAError> {
2180		let mut l_bound:CapeReal=0.0;
2181		let result_code = unsafe {
2182			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeReal)
2183		};
2184		match result_code {
2185			COBIAERR_NOERROR => {Ok(l_bound)},
2186			_ => Err(COBIAError::from_object(result_code,self))
2187		}
2188	}
2189
2190	pub fn get_upper_bound(&self) -> Result<CapeReal,COBIAError> {
2191		let mut u_bound:CapeReal=0.0;
2192		let result_code = unsafe {
2193			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeReal)
2194		};
2195		match result_code {
2196			COBIAERR_NOERROR => {Ok(u_bound)},
2197			_ => Err(COBIAError::from_object(result_code,self))
2198		}
2199	}
2200
2201	pub fn get_dimensionality<TypeOfDimensionality:CapeArrayRealProviderOut>(&self,dimensionality:&mut TypeOfDimensionality) -> Result<(),COBIAError> {
2202		let result_code = unsafe {
2203			((*(*self.interface).vTbl).getDimensionality.unwrap())((*self.interface).me,(&dimensionality.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
2204		};
2205		match result_code {
2206			COBIAERR_NOERROR => {Ok(())},
2207			_ => Err(COBIAError::from_object(result_code,self))
2208		}
2209	}
2210
2211	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeReal,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
2212		let mut is_ok:CapeBoolean=false as CapeBoolean;
2213		let result_code = unsafe {
2214			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
2215		};
2216		match result_code {
2217			COBIAERR_NOERROR => {Ok(is_ok)},
2218			_ => Err(COBIAError::from_object(result_code,self))
2219		}
2220	}
2221
2222}
2223
2224///ICapeIntegerParameter
2225///
2226///ICapeIntegerParameter interface
2227///
2228pub trait ICapeIntegerParameter {
2229	fn get_value(&mut self) -> Result<CapeInteger,COBIAError>;
2230	fn set_value(&mut self,value:CapeInteger) -> Result<(),COBIAError>;
2231	fn get_default_value(&mut self) -> Result<CapeInteger,COBIAError>;
2232	fn get_lower_bound(&mut self) -> Result<CapeInteger,COBIAError>;
2233	fn get_upper_bound(&mut self) -> Result<CapeInteger,COBIAError>;
2234	fn validate(&mut self,value:CapeInteger,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
2235}
2236
2237pub trait ICapeIntegerParameterImpl : ICapeIntegerParameter {
2238	type T: ICapeInterfaceImpl+ICapeIntegerParameterImpl;
2239
2240	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
2241
2242	///prepare CAPEOPEN_1_2_ICapeIntegerParameter interface and return as generic ICapeInterface pointer
2243	fn init_interface() -> crate::C::ICapeInterface {
2244		crate::C::ICapeInterface {
2245			me: std::ptr::null_mut(),
2246			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeIntegerParameter_VTable).cast_mut()
2247				as *mut crate::C::ICapeInterface_VTable,
2248		}
2249	}
2250	
2251	fn init<Timpl: ICapeIntegerParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2252		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeIntegerParameter =
2253			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeIntegerParameter;
2254		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2255		u.add_interface(
2256			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeIntegerParameter_UUID),
2257			iface as *mut crate::C::ICapeInterface,
2258		);
2259	}
2260	
2261	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut CapeInteger) -> crate::C::CapeResult {
2262		if value.is_null() {
2263			return COBIAERR_NULLPOINTER;
2264		}
2265		let p = me as *mut Self::T;
2266		let myself=unsafe { &mut *p };
2267		match myself.get_value() {
2268			Ok(_value) => {
2269				unsafe{*value=_value;}
2270				COBIAERR_NOERROR
2271			},
2272			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::GetValue")
2273		}
2274	}
2275
2276	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:CapeInteger) -> crate::C::CapeResult {
2277		let p = me as *mut Self::T;
2278		let myself=unsafe { &mut *p };
2279		match myself.set_value(value) {
2280			Ok(_) => COBIAERR_NOERROR,
2281			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::SetValue")
2282		}
2283	}
2284
2285	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeInteger) -> crate::C::CapeResult {
2286		if default_value.is_null() {
2287			return COBIAERR_NULLPOINTER;
2288		}
2289		let p = me as *mut Self::T;
2290		let myself=unsafe { &mut *p };
2291		match myself.get_default_value() {
2292			Ok(_default_value) => {
2293				unsafe{*default_value=_default_value;}
2294				COBIAERR_NOERROR
2295			},
2296			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::GetDefaultValue")
2297		}
2298	}
2299
2300	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeInteger) -> crate::C::CapeResult {
2301		if l_bound.is_null() {
2302			return COBIAERR_NULLPOINTER;
2303		}
2304		let p = me as *mut Self::T;
2305		let myself=unsafe { &mut *p };
2306		match myself.get_lower_bound() {
2307			Ok(_l_bound) => {
2308				unsafe{*l_bound=_l_bound;}
2309				COBIAERR_NOERROR
2310			},
2311			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::GetLowerBound")
2312		}
2313	}
2314
2315	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeInteger) -> crate::C::CapeResult {
2316		if u_bound.is_null() {
2317			return COBIAERR_NULLPOINTER;
2318		}
2319		let p = me as *mut Self::T;
2320		let myself=unsafe { &mut *p };
2321		match myself.get_upper_bound() {
2322			Ok(_u_bound) => {
2323				unsafe{*u_bound=_u_bound;}
2324				COBIAERR_NOERROR
2325			},
2326			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::GetUpperBound")
2327		}
2328	}
2329
2330	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
2331		if message.is_null()||is_ok.is_null() {
2332			return COBIAERR_NULLPOINTER;
2333		}
2334		let p = me as *mut Self::T;
2335		let myself=unsafe { &mut *p };
2336		if message.is_null() {
2337			return COBIAERR_NULLPOINTER;
2338		}
2339		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2340		let mut message=CapeStringOut::new(&mut message);
2341		match myself.validate(value,&mut message) {
2342			Ok(_is_ok) => {
2343				unsafe{*is_ok=_is_ok;}
2344				COBIAERR_NOERROR
2345			},
2346			Err(e) => myself.set_last_error(e,"ICapeIntegerParameter::Validate")
2347		}
2348	}
2349
2350	const VTABLE: C::CAPEOPEN_1_2_ICapeIntegerParameter_VTable =
2351		C::CAPEOPEN_1_2_ICapeIntegerParameter_VTable {
2352			base: crate::C::ICapeInterface_VTable {
2353				addReference: Some(Self::T::raw_add_reference),
2354				release: Some(Self::T::raw_release),
2355				queryInterface: Some(Self::T::raw_query_interface),
2356				getLastError: Some(Self::T::raw_get_last_error),
2357			},
2358			getValue: Some(Self::T::raw_get_value),
2359			putValue: Some(Self::T::raw_set_value),
2360			getDefaultValue: Some(Self::T::raw_get_default_value),
2361			getLowerBound: Some(Self::T::raw_get_lower_bound),
2362			getUpperBound: Some(Self::T::raw_get_upper_bound),
2363			Validate: Some(Self::T::raw_validate),
2364		};
2365}
2366
2367#[cape_smart_pointer(ICAPEINTEGERPARAMETER_UUID)]
2368pub struct CapeIntegerParameter {
2369	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeIntegerParameter,
2370}
2371
2372impl CapeIntegerParameter {
2373
2374	pub fn get_value(&self) -> Result<CapeInteger,COBIAError> {
2375		let mut value:CapeInteger=0;
2376		let result_code = unsafe {
2377			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,&mut value as *mut CapeInteger)
2378		};
2379		match result_code {
2380			COBIAERR_NOERROR => {Ok(value)},
2381			_ => Err(COBIAError::from_object(result_code,self))
2382		}
2383	}
2384
2385	pub fn set_value(&self,value:CapeInteger) -> Result<(),COBIAError> {
2386		let result_code = unsafe {
2387			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,value)
2388		};
2389		match result_code {
2390			COBIAERR_NOERROR => {Ok(())},
2391			_ => Err(COBIAError::from_object(result_code,self))
2392		}
2393	}
2394
2395	pub fn get_default_value(&self) -> Result<CapeInteger,COBIAError> {
2396		let mut default_value:CapeInteger=0;
2397		let result_code = unsafe {
2398			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeInteger)
2399		};
2400		match result_code {
2401			COBIAERR_NOERROR => {Ok(default_value)},
2402			_ => Err(COBIAError::from_object(result_code,self))
2403		}
2404	}
2405
2406	pub fn get_lower_bound(&self) -> Result<CapeInteger,COBIAError> {
2407		let mut l_bound:CapeInteger=0;
2408		let result_code = unsafe {
2409			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeInteger)
2410		};
2411		match result_code {
2412			COBIAERR_NOERROR => {Ok(l_bound)},
2413			_ => Err(COBIAError::from_object(result_code,self))
2414		}
2415	}
2416
2417	pub fn get_upper_bound(&self) -> Result<CapeInteger,COBIAError> {
2418		let mut u_bound:CapeInteger=0;
2419		let result_code = unsafe {
2420			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeInteger)
2421		};
2422		match result_code {
2423			COBIAERR_NOERROR => {Ok(u_bound)},
2424			_ => Err(COBIAError::from_object(result_code,self))
2425		}
2426	}
2427
2428	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeInteger,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
2429		let mut is_ok:CapeBoolean=false as CapeBoolean;
2430		let result_code = unsafe {
2431			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
2432		};
2433		match result_code {
2434			COBIAERR_NOERROR => {Ok(is_ok)},
2435			_ => Err(COBIAError::from_object(result_code,self))
2436		}
2437	}
2438
2439}
2440
2441///ICapeStringParameter
2442///
2443///ICapeStringParameter interface
2444///
2445pub trait ICapeStringParameter {
2446	fn get_value(&mut self,value:&mut CapeStringOut) -> Result<(),COBIAError>;
2447	fn set_value(&mut self,value:&CapeStringIn) -> Result<(),COBIAError>;
2448	fn get_default_value(&mut self,default_value:&mut CapeStringOut) -> Result<(),COBIAError>;
2449	fn get_option_list(&mut self,option_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
2450	fn get_restricted_to_list(&mut self) -> Result<CapeBoolean,COBIAError>;
2451	fn validate(&mut self,value:&CapeStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
2452}
2453
2454pub trait ICapeStringParameterImpl : ICapeStringParameter {
2455	type T: ICapeInterfaceImpl+ICapeStringParameterImpl;
2456
2457	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
2458
2459	///prepare CAPEOPEN_1_2_ICapeStringParameter interface and return as generic ICapeInterface pointer
2460	fn init_interface() -> crate::C::ICapeInterface {
2461		crate::C::ICapeInterface {
2462			me: std::ptr::null_mut(),
2463			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeStringParameter_VTable).cast_mut()
2464				as *mut crate::C::ICapeInterface_VTable,
2465		}
2466	}
2467	
2468	fn init<Timpl: ICapeStringParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2469		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeStringParameter =
2470			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStringParameter;
2471		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2472		u.add_interface(
2473			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeStringParameter_UUID),
2474			iface as *mut crate::C::ICapeInterface,
2475		);
2476	}
2477	
2478	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
2479		if value.is_null() {
2480			return COBIAERR_NULLPOINTER;
2481		}
2482		let p = me as *mut Self::T;
2483		let myself=unsafe { &mut *p };
2484		if value.is_null() {
2485			return COBIAERR_NULLPOINTER;
2486		}
2487		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2488		let mut value=CapeStringOut::new(&mut value);
2489		match myself.get_value(&mut value) {
2490			Ok(_) => COBIAERR_NOERROR,
2491			Err(e) => myself.set_last_error(e,"ICapeStringParameter::GetValue")
2492		}
2493	}
2494
2495	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
2496		let p = me as *mut Self::T;
2497		let myself=unsafe { &mut *p };
2498		let value=CapeStringIn::new(&value);
2499		match myself.set_value(&value) {
2500			Ok(_) => COBIAERR_NOERROR,
2501			Err(e) => myself.set_last_error(e,"ICapeStringParameter::SetValue")
2502		}
2503	}
2504
2505	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
2506		if default_value.is_null() {
2507			return COBIAERR_NULLPOINTER;
2508		}
2509		let p = me as *mut Self::T;
2510		let myself=unsafe { &mut *p };
2511		if default_value.is_null() {
2512			return COBIAERR_NULLPOINTER;
2513		}
2514		let mut default_value=unsafe{*((&default_value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2515		let mut default_value=CapeStringOut::new(&mut default_value);
2516		match myself.get_default_value(&mut default_value) {
2517			Ok(_) => COBIAERR_NOERROR,
2518			Err(e) => myself.set_last_error(e,"ICapeStringParameter::GetDefaultValue")
2519		}
2520	}
2521
2522	extern "C" fn raw_get_option_list(me: *mut std::ffi::c_void,option_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
2523		if option_names.is_null() {
2524			return COBIAERR_NULLPOINTER;
2525		}
2526		let p = me as *mut Self::T;
2527		let myself=unsafe { &mut *p };
2528		if option_names.is_null() {
2529			return COBIAERR_NULLPOINTER;
2530		}
2531		let mut option_names=unsafe{*((&option_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
2532		let mut option_names=CapeArrayStringOut::new(&mut option_names);
2533		match myself.get_option_list(&mut option_names) {
2534			Ok(_) => COBIAERR_NOERROR,
2535			Err(e) => myself.set_last_error(e,"ICapeStringParameter::GetOptionList")
2536		}
2537	}
2538
2539	extern "C" fn raw_get_restricted_to_list(me: *mut std::ffi::c_void,restricted:*mut CapeBoolean) -> crate::C::CapeResult {
2540		if restricted.is_null() {
2541			return COBIAERR_NULLPOINTER;
2542		}
2543		let p = me as *mut Self::T;
2544		let myself=unsafe { &mut *p };
2545		match myself.get_restricted_to_list() {
2546			Ok(_restricted) => {
2547				unsafe{*restricted=_restricted;}
2548				COBIAERR_NOERROR
2549			},
2550			Err(e) => myself.set_last_error(e,"ICapeStringParameter::GetRestrictedToList")
2551		}
2552	}
2553
2554	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
2555		if message.is_null()||is_ok.is_null() {
2556			return COBIAERR_NULLPOINTER;
2557		}
2558		let p = me as *mut Self::T;
2559		let myself=unsafe { &mut *p };
2560		if message.is_null() {
2561			return COBIAERR_NULLPOINTER;
2562		}
2563		let value=CapeStringIn::new(&value);
2564		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2565		let mut message=CapeStringOut::new(&mut message);
2566		match myself.validate(&value,&mut message) {
2567			Ok(_is_ok) => {
2568				unsafe{*is_ok=_is_ok;}
2569				COBIAERR_NOERROR
2570			},
2571			Err(e) => myself.set_last_error(e,"ICapeStringParameter::Validate")
2572		}
2573	}
2574
2575	const VTABLE: C::CAPEOPEN_1_2_ICapeStringParameter_VTable =
2576		C::CAPEOPEN_1_2_ICapeStringParameter_VTable {
2577			base: crate::C::ICapeInterface_VTable {
2578				addReference: Some(Self::T::raw_add_reference),
2579				release: Some(Self::T::raw_release),
2580				queryInterface: Some(Self::T::raw_query_interface),
2581				getLastError: Some(Self::T::raw_get_last_error),
2582			},
2583			getValue: Some(Self::T::raw_get_value),
2584			putValue: Some(Self::T::raw_set_value),
2585			getDefaultValue: Some(Self::T::raw_get_default_value),
2586			getOptionList: Some(Self::T::raw_get_option_list),
2587			getRestrictedToList: Some(Self::T::raw_get_restricted_to_list),
2588			Validate: Some(Self::T::raw_validate),
2589		};
2590}
2591
2592#[cape_smart_pointer(ICAPESTRINGPARAMETER_UUID)]
2593pub struct CapeStringParameter {
2594	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeStringParameter,
2595}
2596
2597impl CapeStringParameter {
2598
2599	pub fn get_value<TypeOfValue:CapeStringProviderOut>(&self,value:&mut TypeOfValue) -> Result<(),COBIAError> {
2600		let result_code = unsafe {
2601			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,(&value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
2602		};
2603		match result_code {
2604			COBIAERR_NOERROR => {Ok(())},
2605			_ => Err(COBIAError::from_object(result_code,self))
2606		}
2607	}
2608
2609	pub fn set_value<TypeOfValue:CapeStringProviderIn>(&self,value:&TypeOfValue) -> Result<(),COBIAError> {
2610		let result_code = unsafe {
2611			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
2612		};
2613		match result_code {
2614			COBIAERR_NOERROR => {Ok(())},
2615			_ => Err(COBIAError::from_object(result_code,self))
2616		}
2617	}
2618
2619	pub fn get_default_value<TypeOfDefaultValue:CapeStringProviderOut>(&self,default_value:&mut TypeOfDefaultValue) -> Result<(),COBIAError> {
2620		let result_code = unsafe {
2621			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,(&default_value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
2622		};
2623		match result_code {
2624			COBIAERR_NOERROR => {Ok(())},
2625			_ => Err(COBIAError::from_object(result_code,self))
2626		}
2627	}
2628
2629	pub fn get_option_list<TypeOfOptionNames:CapeArrayStringProviderOut>(&self,option_names:&mut TypeOfOptionNames) -> Result<(),COBIAError> {
2630		let result_code = unsafe {
2631			((*(*self.interface).vTbl).getOptionList.unwrap())((*self.interface).me,(&option_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
2632		};
2633		match result_code {
2634			COBIAERR_NOERROR => {Ok(())},
2635			_ => Err(COBIAError::from_object(result_code,self))
2636		}
2637	}
2638
2639	pub fn get_restricted_to_list(&self) -> Result<CapeBoolean,COBIAError> {
2640		let mut restricted:CapeBoolean=false as CapeBoolean;
2641		let result_code = unsafe {
2642			((*(*self.interface).vTbl).getRestrictedToList.unwrap())((*self.interface).me,&mut restricted as *mut CapeBoolean)
2643		};
2644		match result_code {
2645			COBIAERR_NOERROR => {Ok(restricted)},
2646			_ => Err(COBIAError::from_object(result_code,self))
2647		}
2648	}
2649
2650	pub fn validate<TypeOfValue:CapeStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
2651		let mut is_ok:CapeBoolean=false as CapeBoolean;
2652		let result_code = unsafe {
2653			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
2654		};
2655		match result_code {
2656			COBIAERR_NOERROR => {Ok(is_ok)},
2657			_ => Err(COBIAError::from_object(result_code,self))
2658		}
2659	}
2660
2661}
2662
2663///ICapeBooleanParameter
2664///
2665///ICapeBooleanParameter interface
2666///
2667pub trait ICapeBooleanParameter {
2668	fn get_value(&mut self) -> Result<CapeBoolean,COBIAError>;
2669	fn set_value(&mut self,value:CapeBoolean) -> Result<(),COBIAError>;
2670	fn get_default_value(&mut self) -> Result<CapeBoolean,COBIAError>;
2671	fn validate(&mut self,value:CapeBoolean,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
2672}
2673
2674pub trait ICapeBooleanParameterImpl : ICapeBooleanParameter {
2675	type T: ICapeInterfaceImpl+ICapeBooleanParameterImpl;
2676
2677	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
2678
2679	///prepare CAPEOPEN_1_2_ICapeBooleanParameter interface and return as generic ICapeInterface pointer
2680	fn init_interface() -> crate::C::ICapeInterface {
2681		crate::C::ICapeInterface {
2682			me: std::ptr::null_mut(),
2683			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeBooleanParameter_VTable).cast_mut()
2684				as *mut crate::C::ICapeInterface_VTable,
2685		}
2686	}
2687	
2688	fn init<Timpl: ICapeBooleanParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2689		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeBooleanParameter =
2690			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeBooleanParameter;
2691		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2692		u.add_interface(
2693			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeBooleanParameter_UUID),
2694			iface as *mut crate::C::ICapeInterface,
2695		);
2696	}
2697	
2698	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut CapeBoolean) -> crate::C::CapeResult {
2699		if value.is_null() {
2700			return COBIAERR_NULLPOINTER;
2701		}
2702		let p = me as *mut Self::T;
2703		let myself=unsafe { &mut *p };
2704		match myself.get_value() {
2705			Ok(_value) => {
2706				unsafe{*value=_value;}
2707				COBIAERR_NOERROR
2708			},
2709			Err(e) => myself.set_last_error(e,"ICapeBooleanParameter::GetValue")
2710		}
2711	}
2712
2713	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:CapeBoolean) -> crate::C::CapeResult {
2714		let p = me as *mut Self::T;
2715		let myself=unsafe { &mut *p };
2716		match myself.set_value(value) {
2717			Ok(_) => COBIAERR_NOERROR,
2718			Err(e) => myself.set_last_error(e,"ICapeBooleanParameter::SetValue")
2719		}
2720	}
2721
2722	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeBoolean) -> crate::C::CapeResult {
2723		if default_value.is_null() {
2724			return COBIAERR_NULLPOINTER;
2725		}
2726		let p = me as *mut Self::T;
2727		let myself=unsafe { &mut *p };
2728		match myself.get_default_value() {
2729			Ok(_default_value) => {
2730				unsafe{*default_value=_default_value;}
2731				COBIAERR_NOERROR
2732			},
2733			Err(e) => myself.set_last_error(e,"ICapeBooleanParameter::GetDefaultValue")
2734		}
2735	}
2736
2737	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
2738		if message.is_null()||is_ok.is_null() {
2739			return COBIAERR_NULLPOINTER;
2740		}
2741		let p = me as *mut Self::T;
2742		let myself=unsafe { &mut *p };
2743		if message.is_null() {
2744			return COBIAERR_NULLPOINTER;
2745		}
2746		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
2747		let mut message=CapeStringOut::new(&mut message);
2748		match myself.validate(value,&mut message) {
2749			Ok(_is_ok) => {
2750				unsafe{*is_ok=_is_ok;}
2751				COBIAERR_NOERROR
2752			},
2753			Err(e) => myself.set_last_error(e,"ICapeBooleanParameter::Validate")
2754		}
2755	}
2756
2757	const VTABLE: C::CAPEOPEN_1_2_ICapeBooleanParameter_VTable =
2758		C::CAPEOPEN_1_2_ICapeBooleanParameter_VTable {
2759			base: crate::C::ICapeInterface_VTable {
2760				addReference: Some(Self::T::raw_add_reference),
2761				release: Some(Self::T::raw_release),
2762				queryInterface: Some(Self::T::raw_query_interface),
2763				getLastError: Some(Self::T::raw_get_last_error),
2764			},
2765			getValue: Some(Self::T::raw_get_value),
2766			putValue: Some(Self::T::raw_set_value),
2767			getDefaultValue: Some(Self::T::raw_get_default_value),
2768			Validate: Some(Self::T::raw_validate),
2769		};
2770}
2771
2772#[cape_smart_pointer(ICAPEBOOLEANPARAMETER_UUID)]
2773pub struct CapeBooleanParameter {
2774	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeBooleanParameter,
2775}
2776
2777impl CapeBooleanParameter {
2778
2779	pub fn get_value(&self) -> Result<CapeBoolean,COBIAError> {
2780		let mut value:CapeBoolean=false as CapeBoolean;
2781		let result_code = unsafe {
2782			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,&mut value as *mut CapeBoolean)
2783		};
2784		match result_code {
2785			COBIAERR_NOERROR => {Ok(value)},
2786			_ => Err(COBIAError::from_object(result_code,self))
2787		}
2788	}
2789
2790	pub fn set_value(&self,value:CapeBoolean) -> Result<(),COBIAError> {
2791		let result_code = unsafe {
2792			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,value)
2793		};
2794		match result_code {
2795			COBIAERR_NOERROR => {Ok(())},
2796			_ => Err(COBIAError::from_object(result_code,self))
2797		}
2798	}
2799
2800	pub fn get_default_value(&self) -> Result<CapeBoolean,COBIAError> {
2801		let mut default_value:CapeBoolean=false as CapeBoolean;
2802		let result_code = unsafe {
2803			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeBoolean)
2804		};
2805		match result_code {
2806			COBIAERR_NOERROR => {Ok(default_value)},
2807			_ => Err(COBIAError::from_object(result_code,self))
2808		}
2809	}
2810
2811	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeBoolean,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
2812		let mut is_ok:CapeBoolean=false as CapeBoolean;
2813		let result_code = unsafe {
2814			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
2815		};
2816		match result_code {
2817			COBIAERR_NOERROR => {Ok(is_ok)},
2818			_ => Err(COBIAError::from_object(result_code,self))
2819		}
2820	}
2821
2822}
2823
2824///ICapeArrayParameter
2825///
2826///ICapeArrayParameter interface
2827///
2828pub trait ICapeArrayParameter {
2829	fn get_num_dimensions(&mut self) -> Result<CapeInteger,COBIAError>;
2830	fn get_size(&mut self,size:&mut CapeArrayIntegerOut) -> Result<(),COBIAError>;
2831}
2832
2833pub trait ICapeArrayParameterImpl : ICapeArrayParameter {
2834	type T: ICapeInterfaceImpl+ICapeArrayParameterImpl;
2835
2836	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
2837
2838	///prepare CAPEOPEN_1_2_ICapeArrayParameter interface and return as generic ICapeInterface pointer
2839	fn init_interface() -> crate::C::ICapeInterface {
2840		crate::C::ICapeInterface {
2841			me: std::ptr::null_mut(),
2842			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayParameter_VTable).cast_mut()
2843				as *mut crate::C::ICapeInterface_VTable,
2844		}
2845	}
2846	
2847	fn init<Timpl: ICapeArrayParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2848		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayParameter =
2849			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayParameter;
2850		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2851		u.add_interface(
2852			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayParameter_UUID),
2853			iface as *mut crate::C::ICapeInterface,
2854		);
2855	}
2856	
2857	extern "C" fn raw_get_num_dimensions(me: *mut std::ffi::c_void,num_dimensions:*mut CapeInteger) -> crate::C::CapeResult {
2858		if num_dimensions.is_null() {
2859			return COBIAERR_NULLPOINTER;
2860		}
2861		let p = me as *mut Self::T;
2862		let myself=unsafe { &mut *p };
2863		match myself.get_num_dimensions() {
2864			Ok(_num_dimensions) => {
2865				unsafe{*num_dimensions=_num_dimensions;}
2866				COBIAERR_NOERROR
2867			},
2868			Err(e) => myself.set_last_error(e,"ICapeArrayParameter::GetNumDimensions")
2869		}
2870	}
2871
2872	extern "C" fn raw_get_size(me: *mut std::ffi::c_void,size:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
2873		if size.is_null() {
2874			return COBIAERR_NULLPOINTER;
2875		}
2876		let p = me as *mut Self::T;
2877		let myself=unsafe { &mut *p };
2878		if size.is_null() {
2879			return COBIAERR_NULLPOINTER;
2880		}
2881		let mut size=unsafe{*((&size as *const *mut crate::C::ICapeArrayInteger) as *mut *mut crate::C::ICapeArrayInteger)};
2882		let mut size=CapeArrayIntegerOut::new(&mut size);
2883		match myself.get_size(&mut size) {
2884			Ok(_) => COBIAERR_NOERROR,
2885			Err(e) => myself.set_last_error(e,"ICapeArrayParameter::GetSize")
2886		}
2887	}
2888
2889	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayParameter_VTable =
2890		C::CAPEOPEN_1_2_ICapeArrayParameter_VTable {
2891			base: crate::C::ICapeInterface_VTable {
2892				addReference: Some(Self::T::raw_add_reference),
2893				release: Some(Self::T::raw_release),
2894				queryInterface: Some(Self::T::raw_query_interface),
2895				getLastError: Some(Self::T::raw_get_last_error),
2896			},
2897			getNumDimensions: Some(Self::T::raw_get_num_dimensions),
2898			getSize: Some(Self::T::raw_get_size),
2899		};
2900}
2901
2902#[cape_smart_pointer(ICAPEARRAYPARAMETER_UUID)]
2903pub struct CapeArrayParameter {
2904	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayParameter,
2905}
2906
2907impl CapeArrayParameter {
2908
2909	pub fn get_num_dimensions(&self) -> Result<CapeInteger,COBIAError> {
2910		let mut num_dimensions:CapeInteger=0;
2911		let result_code = unsafe {
2912			((*(*self.interface).vTbl).getNumDimensions.unwrap())((*self.interface).me,&mut num_dimensions as *mut CapeInteger)
2913		};
2914		match result_code {
2915			COBIAERR_NOERROR => {Ok(num_dimensions)},
2916			_ => Err(COBIAError::from_object(result_code,self))
2917		}
2918	}
2919
2920	pub fn get_size<TypeOfSize:CapeArrayIntegerProviderOut>(&self,size:&mut TypeOfSize) -> Result<(),COBIAError> {
2921		let result_code = unsafe {
2922			((*(*self.interface).vTbl).getSize.unwrap())((*self.interface).me,(&size.as_cape_array_integer_out() as *const crate::C::ICapeArrayInteger).cast_mut())
2923		};
2924		match result_code {
2925			COBIAERR_NOERROR => {Ok(())},
2926			_ => Err(COBIAError::from_object(result_code,self))
2927		}
2928	}
2929
2930}
2931
2932///ICapeArrayRealParameter
2933///
2934///ICapeArrayRealParameter interface
2935///
2936pub trait ICapeArrayRealParameter {
2937	fn get_value(&mut self,value:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
2938	fn set_value(&mut self,value:&CapeArrayRealIn) -> Result<(),COBIAError>;
2939	fn get_element_value(&mut self,position:&CapeArrayIntegerIn) -> Result<CapeReal,COBIAError>;
2940	fn set_element_value(&mut self,position:&CapeArrayIntegerIn,value:CapeReal) -> Result<(),COBIAError>;
2941	fn get_default_value(&mut self) -> Result<CapeReal,COBIAError>;
2942	fn get_lower_bound(&mut self) -> Result<CapeReal,COBIAError>;
2943	fn get_upper_bound(&mut self) -> Result<CapeReal,COBIAError>;
2944	fn get_dimensionality(&mut self,dimensionality:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
2945	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeReal,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
2946	fn validate(&mut self,value:&CapeArrayRealIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
2947}
2948
2949pub trait ICapeArrayRealParameterImpl : ICapeArrayRealParameter {
2950	type T: ICapeInterfaceImpl+ICapeArrayRealParameterImpl;
2951
2952	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
2953
2954	///prepare CAPEOPEN_1_2_ICapeArrayRealParameter interface and return as generic ICapeInterface pointer
2955	fn init_interface() -> crate::C::ICapeInterface {
2956		crate::C::ICapeInterface {
2957			me: std::ptr::null_mut(),
2958			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayRealParameter_VTable).cast_mut()
2959				as *mut crate::C::ICapeInterface_VTable,
2960		}
2961	}
2962	
2963	fn init<Timpl: ICapeArrayRealParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
2964		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayRealParameter =
2965			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayRealParameter;
2966		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
2967		u.add_interface(
2968			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayRealParameter_UUID),
2969			iface as *mut crate::C::ICapeInterface,
2970		);
2971	}
2972	
2973	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
2974		if value.is_null() {
2975			return COBIAERR_NULLPOINTER;
2976		}
2977		let p = me as *mut Self::T;
2978		let myself=unsafe { &mut *p };
2979		if value.is_null() {
2980			return COBIAERR_NULLPOINTER;
2981		}
2982		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
2983		let mut value=CapeArrayRealOut::new(&mut value);
2984		match myself.get_value(&mut value) {
2985			Ok(_) => COBIAERR_NOERROR,
2986			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetValue")
2987		}
2988	}
2989
2990	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
2991		let p = me as *mut Self::T;
2992		let myself=unsafe { &mut *p };
2993		let value=CapeArrayRealIn::new(&value);
2994		match myself.set_value(&value) {
2995			Ok(_) => COBIAERR_NOERROR,
2996			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::SetValue")
2997		}
2998	}
2999
3000	extern "C" fn raw_get_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut CapeReal) -> crate::C::CapeResult {
3001		if value.is_null() {
3002			return COBIAERR_NULLPOINTER;
3003		}
3004		let p = me as *mut Self::T;
3005		let myself=unsafe { &mut *p };
3006		let position=CapeArrayIntegerIn::new(&position);
3007		match myself.get_element_value(&position) {
3008			Ok(_value) => {
3009				unsafe{*value=_value;}
3010				COBIAERR_NOERROR
3011			},
3012			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetElementValue")
3013		}
3014	}
3015
3016	extern "C" fn raw_set_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeReal) -> crate::C::CapeResult {
3017		let p = me as *mut Self::T;
3018		let myself=unsafe { &mut *p };
3019		let position=CapeArrayIntegerIn::new(&position);
3020		match myself.set_element_value(&position,value) {
3021			Ok(_) => COBIAERR_NOERROR,
3022			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::SetElementValue")
3023		}
3024	}
3025
3026	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeReal) -> crate::C::CapeResult {
3027		if default_value.is_null() {
3028			return COBIAERR_NULLPOINTER;
3029		}
3030		let p = me as *mut Self::T;
3031		let myself=unsafe { &mut *p };
3032		match myself.get_default_value() {
3033			Ok(_default_value) => {
3034				unsafe{*default_value=_default_value;}
3035				COBIAERR_NOERROR
3036			},
3037			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetDefaultValue")
3038		}
3039	}
3040
3041	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeReal) -> crate::C::CapeResult {
3042		if l_bound.is_null() {
3043			return COBIAERR_NULLPOINTER;
3044		}
3045		let p = me as *mut Self::T;
3046		let myself=unsafe { &mut *p };
3047		match myself.get_lower_bound() {
3048			Ok(_l_bound) => {
3049				unsafe{*l_bound=_l_bound;}
3050				COBIAERR_NOERROR
3051			},
3052			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetLowerBound")
3053		}
3054	}
3055
3056	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeReal) -> crate::C::CapeResult {
3057		if u_bound.is_null() {
3058			return COBIAERR_NULLPOINTER;
3059		}
3060		let p = me as *mut Self::T;
3061		let myself=unsafe { &mut *p };
3062		match myself.get_upper_bound() {
3063			Ok(_u_bound) => {
3064				unsafe{*u_bound=_u_bound;}
3065				COBIAERR_NOERROR
3066			},
3067			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetUpperBound")
3068		}
3069	}
3070
3071	extern "C" fn raw_get_dimensionality(me: *mut std::ffi::c_void,dimensionality:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
3072		if dimensionality.is_null() {
3073			return COBIAERR_NULLPOINTER;
3074		}
3075		let p = me as *mut Self::T;
3076		let myself=unsafe { &mut *p };
3077		if dimensionality.is_null() {
3078			return COBIAERR_NULLPOINTER;
3079		}
3080		let mut dimensionality=unsafe{*((&dimensionality as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
3081		let mut dimensionality=CapeArrayRealOut::new(&mut dimensionality);
3082		match myself.get_dimensionality(&mut dimensionality) {
3083			Ok(_) => COBIAERR_NOERROR,
3084			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::GetDimensionality")
3085		}
3086	}
3087
3088	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3089		if message.is_null()||is_ok.is_null() {
3090			return COBIAERR_NULLPOINTER;
3091		}
3092		let p = me as *mut Self::T;
3093		let myself=unsafe { &mut *p };
3094		if message.is_null() {
3095			return COBIAERR_NULLPOINTER;
3096		}
3097		let position=CapeArrayIntegerIn::new(&position);
3098		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3099		let mut message=CapeStringOut::new(&mut message);
3100		match myself.validate_element(&position,value,&mut message) {
3101			Ok(_is_ok) => {
3102				unsafe{*is_ok=_is_ok;}
3103				COBIAERR_NOERROR
3104			},
3105			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::ValidateElement")
3106		}
3107	}
3108
3109	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3110		if message.is_null()||is_ok.is_null() {
3111			return COBIAERR_NULLPOINTER;
3112		}
3113		let p = me as *mut Self::T;
3114		let myself=unsafe { &mut *p };
3115		if message.is_null() {
3116			return COBIAERR_NULLPOINTER;
3117		}
3118		let value=CapeArrayRealIn::new(&value);
3119		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3120		let mut message=CapeStringOut::new(&mut message);
3121		match myself.validate(&value,&mut message) {
3122			Ok(_is_ok) => {
3123				unsafe{*is_ok=_is_ok;}
3124				COBIAERR_NOERROR
3125			},
3126			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameter::Validate")
3127		}
3128	}
3129
3130	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayRealParameter_VTable =
3131		C::CAPEOPEN_1_2_ICapeArrayRealParameter_VTable {
3132			base: crate::C::ICapeInterface_VTable {
3133				addReference: Some(Self::T::raw_add_reference),
3134				release: Some(Self::T::raw_release),
3135				queryInterface: Some(Self::T::raw_query_interface),
3136				getLastError: Some(Self::T::raw_get_last_error),
3137			},
3138			getValue: Some(Self::T::raw_get_value),
3139			putValue: Some(Self::T::raw_set_value),
3140			GetElementValue: Some(Self::T::raw_get_element_value),
3141			SetElementValue: Some(Self::T::raw_set_element_value),
3142			getDefaultValue: Some(Self::T::raw_get_default_value),
3143			getLowerBound: Some(Self::T::raw_get_lower_bound),
3144			getUpperBound: Some(Self::T::raw_get_upper_bound),
3145			getDimensionality: Some(Self::T::raw_get_dimensionality),
3146			ValidateElement: Some(Self::T::raw_validate_element),
3147			Validate: Some(Self::T::raw_validate),
3148		};
3149}
3150
3151#[cape_smart_pointer(ICAPEARRAYREALPARAMETER_UUID)]
3152pub struct CapeArrayRealParameter {
3153	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayRealParameter,
3154}
3155
3156impl CapeArrayRealParameter {
3157
3158	pub fn get_value<TypeOfValue:CapeArrayRealProviderOut>(&self,value:&mut TypeOfValue) -> Result<(),COBIAError> {
3159		let result_code = unsafe {
3160			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,(&value.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
3161		};
3162		match result_code {
3163			COBIAERR_NOERROR => {Ok(())},
3164			_ => Err(COBIAError::from_object(result_code,self))
3165		}
3166	}
3167
3168	pub fn set_value<TypeOfValue:CapeArrayRealProviderIn>(&self,value:&TypeOfValue) -> Result<(),COBIAError> {
3169		let result_code = unsafe {
3170			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,(&value.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
3171		};
3172		match result_code {
3173			COBIAERR_NOERROR => {Ok(())},
3174			_ => Err(COBIAError::from_object(result_code,self))
3175		}
3176	}
3177
3178	pub fn get_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition) -> Result<CapeReal,COBIAError> {
3179		let mut value:CapeReal=0.0;
3180		let result_code = unsafe {
3181			((*(*self.interface).vTbl).GetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),&mut value as *mut CapeReal)
3182		};
3183		match result_code {
3184			COBIAERR_NOERROR => {Ok(value)},
3185			_ => Err(COBIAError::from_object(result_code,self))
3186		}
3187	}
3188
3189	pub fn set_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition,value:CapeReal) -> Result<(),COBIAError> {
3190		let result_code = unsafe {
3191			((*(*self.interface).vTbl).SetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value)
3192		};
3193		match result_code {
3194			COBIAERR_NOERROR => {Ok(())},
3195			_ => Err(COBIAError::from_object(result_code,self))
3196		}
3197	}
3198
3199	pub fn get_default_value(&self) -> Result<CapeReal,COBIAError> {
3200		let mut default_value:CapeReal=0.0;
3201		let result_code = unsafe {
3202			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeReal)
3203		};
3204		match result_code {
3205			COBIAERR_NOERROR => {Ok(default_value)},
3206			_ => Err(COBIAError::from_object(result_code,self))
3207		}
3208	}
3209
3210	pub fn get_lower_bound(&self) -> Result<CapeReal,COBIAError> {
3211		let mut l_bound:CapeReal=0.0;
3212		let result_code = unsafe {
3213			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeReal)
3214		};
3215		match result_code {
3216			COBIAERR_NOERROR => {Ok(l_bound)},
3217			_ => Err(COBIAError::from_object(result_code,self))
3218		}
3219	}
3220
3221	pub fn get_upper_bound(&self) -> Result<CapeReal,COBIAError> {
3222		let mut u_bound:CapeReal=0.0;
3223		let result_code = unsafe {
3224			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeReal)
3225		};
3226		match result_code {
3227			COBIAERR_NOERROR => {Ok(u_bound)},
3228			_ => Err(COBIAError::from_object(result_code,self))
3229		}
3230	}
3231
3232	pub fn get_dimensionality<TypeOfDimensionality:CapeArrayRealProviderOut>(&self,dimensionality:&mut TypeOfDimensionality) -> Result<(),COBIAError> {
3233		let result_code = unsafe {
3234			((*(*self.interface).vTbl).getDimensionality.unwrap())((*self.interface).me,(&dimensionality.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
3235		};
3236		match result_code {
3237			COBIAERR_NOERROR => {Ok(())},
3238			_ => Err(COBIAError::from_object(result_code,self))
3239		}
3240	}
3241
3242	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeReal,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3243		let mut is_ok:CapeBoolean=false as CapeBoolean;
3244		let result_code = unsafe {
3245			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3246		};
3247		match result_code {
3248			COBIAERR_NOERROR => {Ok(is_ok)},
3249			_ => Err(COBIAError::from_object(result_code,self))
3250		}
3251	}
3252
3253	pub fn validate<TypeOfValue:CapeArrayRealProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3254		let mut is_ok:CapeBoolean=false as CapeBoolean;
3255		let result_code = unsafe {
3256			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3257		};
3258		match result_code {
3259			COBIAERR_NOERROR => {Ok(is_ok)},
3260			_ => Err(COBIAError::from_object(result_code,self))
3261		}
3262	}
3263
3264}
3265
3266///ICapeArrayIntegerParameter
3267///
3268///ICapeArrayIntegerParameter interface
3269///
3270pub trait ICapeArrayIntegerParameter {
3271	fn get_value(&mut self,value:&mut CapeArrayIntegerOut) -> Result<(),COBIAError>;
3272	fn set_value(&mut self,value:&CapeArrayIntegerIn) -> Result<(),COBIAError>;
3273	fn get_element_value(&mut self,position:&CapeArrayIntegerIn) -> Result<CapeInteger,COBIAError>;
3274	fn set_element_value(&mut self,position:&CapeArrayIntegerIn,value:CapeInteger) -> Result<(),COBIAError>;
3275	fn get_default_value(&mut self) -> Result<CapeInteger,COBIAError>;
3276	fn get_lower_bound(&mut self) -> Result<CapeInteger,COBIAError>;
3277	fn get_upper_bound(&mut self) -> Result<CapeInteger,COBIAError>;
3278	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeInteger,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3279	fn validate(&mut self,value:&CapeArrayIntegerIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3280}
3281
3282pub trait ICapeArrayIntegerParameterImpl : ICapeArrayIntegerParameter {
3283	type T: ICapeInterfaceImpl+ICapeArrayIntegerParameterImpl;
3284
3285	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
3286
3287	///prepare CAPEOPEN_1_2_ICapeArrayIntegerParameter interface and return as generic ICapeInterface pointer
3288	fn init_interface() -> crate::C::ICapeInterface {
3289		crate::C::ICapeInterface {
3290			me: std::ptr::null_mut(),
3291			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayIntegerParameter_VTable).cast_mut()
3292				as *mut crate::C::ICapeInterface_VTable,
3293		}
3294	}
3295	
3296	fn init<Timpl: ICapeArrayIntegerParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
3297		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayIntegerParameter =
3298			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayIntegerParameter;
3299		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
3300		u.add_interface(
3301			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayIntegerParameter_UUID),
3302			iface as *mut crate::C::ICapeInterface,
3303		);
3304	}
3305	
3306	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
3307		if value.is_null() {
3308			return COBIAERR_NULLPOINTER;
3309		}
3310		let p = me as *mut Self::T;
3311		let myself=unsafe { &mut *p };
3312		if value.is_null() {
3313			return COBIAERR_NULLPOINTER;
3314		}
3315		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayInteger) as *mut *mut crate::C::ICapeArrayInteger)};
3316		let mut value=CapeArrayIntegerOut::new(&mut value);
3317		match myself.get_value(&mut value) {
3318			Ok(_) => COBIAERR_NOERROR,
3319			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::GetValue")
3320		}
3321	}
3322
3323	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
3324		let p = me as *mut Self::T;
3325		let myself=unsafe { &mut *p };
3326		let value=CapeArrayIntegerIn::new(&value);
3327		match myself.set_value(&value) {
3328			Ok(_) => COBIAERR_NOERROR,
3329			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::SetValue")
3330		}
3331	}
3332
3333	extern "C" fn raw_get_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut CapeInteger) -> crate::C::CapeResult {
3334		if value.is_null() {
3335			return COBIAERR_NULLPOINTER;
3336		}
3337		let p = me as *mut Self::T;
3338		let myself=unsafe { &mut *p };
3339		let position=CapeArrayIntegerIn::new(&position);
3340		match myself.get_element_value(&position) {
3341			Ok(_value) => {
3342				unsafe{*value=_value;}
3343				COBIAERR_NOERROR
3344			},
3345			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::GetElementValue")
3346		}
3347	}
3348
3349	extern "C" fn raw_set_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeInteger) -> crate::C::CapeResult {
3350		let p = me as *mut Self::T;
3351		let myself=unsafe { &mut *p };
3352		let position=CapeArrayIntegerIn::new(&position);
3353		match myself.set_element_value(&position,value) {
3354			Ok(_) => COBIAERR_NOERROR,
3355			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::SetElementValue")
3356		}
3357	}
3358
3359	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeInteger) -> crate::C::CapeResult {
3360		if default_value.is_null() {
3361			return COBIAERR_NULLPOINTER;
3362		}
3363		let p = me as *mut Self::T;
3364		let myself=unsafe { &mut *p };
3365		match myself.get_default_value() {
3366			Ok(_default_value) => {
3367				unsafe{*default_value=_default_value;}
3368				COBIAERR_NOERROR
3369			},
3370			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::GetDefaultValue")
3371		}
3372	}
3373
3374	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeInteger) -> crate::C::CapeResult {
3375		if l_bound.is_null() {
3376			return COBIAERR_NULLPOINTER;
3377		}
3378		let p = me as *mut Self::T;
3379		let myself=unsafe { &mut *p };
3380		match myself.get_lower_bound() {
3381			Ok(_l_bound) => {
3382				unsafe{*l_bound=_l_bound;}
3383				COBIAERR_NOERROR
3384			},
3385			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::GetLowerBound")
3386		}
3387	}
3388
3389	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeInteger) -> crate::C::CapeResult {
3390		if u_bound.is_null() {
3391			return COBIAERR_NULLPOINTER;
3392		}
3393		let p = me as *mut Self::T;
3394		let myself=unsafe { &mut *p };
3395		match myself.get_upper_bound() {
3396			Ok(_u_bound) => {
3397				unsafe{*u_bound=_u_bound;}
3398				COBIAERR_NOERROR
3399			},
3400			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::GetUpperBound")
3401		}
3402	}
3403
3404	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3405		if message.is_null()||is_ok.is_null() {
3406			return COBIAERR_NULLPOINTER;
3407		}
3408		let p = me as *mut Self::T;
3409		let myself=unsafe { &mut *p };
3410		if message.is_null() {
3411			return COBIAERR_NULLPOINTER;
3412		}
3413		let position=CapeArrayIntegerIn::new(&position);
3414		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3415		let mut message=CapeStringOut::new(&mut message);
3416		match myself.validate_element(&position,value,&mut message) {
3417			Ok(_is_ok) => {
3418				unsafe{*is_ok=_is_ok;}
3419				COBIAERR_NOERROR
3420			},
3421			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::ValidateElement")
3422		}
3423	}
3424
3425	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3426		if message.is_null()||is_ok.is_null() {
3427			return COBIAERR_NULLPOINTER;
3428		}
3429		let p = me as *mut Self::T;
3430		let myself=unsafe { &mut *p };
3431		if message.is_null() {
3432			return COBIAERR_NULLPOINTER;
3433		}
3434		let value=CapeArrayIntegerIn::new(&value);
3435		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3436		let mut message=CapeStringOut::new(&mut message);
3437		match myself.validate(&value,&mut message) {
3438			Ok(_is_ok) => {
3439				unsafe{*is_ok=_is_ok;}
3440				COBIAERR_NOERROR
3441			},
3442			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameter::Validate")
3443		}
3444	}
3445
3446	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayIntegerParameter_VTable =
3447		C::CAPEOPEN_1_2_ICapeArrayIntegerParameter_VTable {
3448			base: crate::C::ICapeInterface_VTable {
3449				addReference: Some(Self::T::raw_add_reference),
3450				release: Some(Self::T::raw_release),
3451				queryInterface: Some(Self::T::raw_query_interface),
3452				getLastError: Some(Self::T::raw_get_last_error),
3453			},
3454			getValue: Some(Self::T::raw_get_value),
3455			putValue: Some(Self::T::raw_set_value),
3456			GetElementValue: Some(Self::T::raw_get_element_value),
3457			SetElementValue: Some(Self::T::raw_set_element_value),
3458			getDefaultValue: Some(Self::T::raw_get_default_value),
3459			getLowerBound: Some(Self::T::raw_get_lower_bound),
3460			getUpperBound: Some(Self::T::raw_get_upper_bound),
3461			ValidateElement: Some(Self::T::raw_validate_element),
3462			Validate: Some(Self::T::raw_validate),
3463		};
3464}
3465
3466#[cape_smart_pointer(ICAPEARRAYINTEGERPARAMETER_UUID)]
3467pub struct CapeArrayIntegerParameter {
3468	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayIntegerParameter,
3469}
3470
3471impl CapeArrayIntegerParameter {
3472
3473	pub fn get_value<TypeOfValue:CapeArrayIntegerProviderOut>(&self,value:&mut TypeOfValue) -> Result<(),COBIAError> {
3474		let result_code = unsafe {
3475			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,(&value.as_cape_array_integer_out() as *const crate::C::ICapeArrayInteger).cast_mut())
3476		};
3477		match result_code {
3478			COBIAERR_NOERROR => {Ok(())},
3479			_ => Err(COBIAError::from_object(result_code,self))
3480		}
3481	}
3482
3483	pub fn set_value<TypeOfValue:CapeArrayIntegerProviderIn>(&self,value:&TypeOfValue) -> Result<(),COBIAError> {
3484		let result_code = unsafe {
3485			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,(&value.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut())
3486		};
3487		match result_code {
3488			COBIAERR_NOERROR => {Ok(())},
3489			_ => Err(COBIAError::from_object(result_code,self))
3490		}
3491	}
3492
3493	pub fn get_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition) -> Result<CapeInteger,COBIAError> {
3494		let mut value:CapeInteger=0;
3495		let result_code = unsafe {
3496			((*(*self.interface).vTbl).GetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),&mut value as *mut CapeInteger)
3497		};
3498		match result_code {
3499			COBIAERR_NOERROR => {Ok(value)},
3500			_ => Err(COBIAError::from_object(result_code,self))
3501		}
3502	}
3503
3504	pub fn set_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition,value:CapeInteger) -> Result<(),COBIAError> {
3505		let result_code = unsafe {
3506			((*(*self.interface).vTbl).SetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value)
3507		};
3508		match result_code {
3509			COBIAERR_NOERROR => {Ok(())},
3510			_ => Err(COBIAError::from_object(result_code,self))
3511		}
3512	}
3513
3514	pub fn get_default_value(&self) -> Result<CapeInteger,COBIAError> {
3515		let mut default_value:CapeInteger=0;
3516		let result_code = unsafe {
3517			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeInteger)
3518		};
3519		match result_code {
3520			COBIAERR_NOERROR => {Ok(default_value)},
3521			_ => Err(COBIAError::from_object(result_code,self))
3522		}
3523	}
3524
3525	pub fn get_lower_bound(&self) -> Result<CapeInteger,COBIAError> {
3526		let mut l_bound:CapeInteger=0;
3527		let result_code = unsafe {
3528			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeInteger)
3529		};
3530		match result_code {
3531			COBIAERR_NOERROR => {Ok(l_bound)},
3532			_ => Err(COBIAError::from_object(result_code,self))
3533		}
3534	}
3535
3536	pub fn get_upper_bound(&self) -> Result<CapeInteger,COBIAError> {
3537		let mut u_bound:CapeInteger=0;
3538		let result_code = unsafe {
3539			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeInteger)
3540		};
3541		match result_code {
3542			COBIAERR_NOERROR => {Ok(u_bound)},
3543			_ => Err(COBIAError::from_object(result_code,self))
3544		}
3545	}
3546
3547	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeInteger,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3548		let mut is_ok:CapeBoolean=false as CapeBoolean;
3549		let result_code = unsafe {
3550			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3551		};
3552		match result_code {
3553			COBIAERR_NOERROR => {Ok(is_ok)},
3554			_ => Err(COBIAError::from_object(result_code,self))
3555		}
3556	}
3557
3558	pub fn validate<TypeOfValue:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3559		let mut is_ok:CapeBoolean=false as CapeBoolean;
3560		let result_code = unsafe {
3561			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3562		};
3563		match result_code {
3564			COBIAERR_NOERROR => {Ok(is_ok)},
3565			_ => Err(COBIAError::from_object(result_code,self))
3566		}
3567	}
3568
3569}
3570
3571///ICapeArrayStringParameter
3572///
3573///ICapeArrayStringParameter interface
3574///
3575pub trait ICapeArrayStringParameter {
3576	fn get_value(&mut self,value:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
3577	fn set_value(&mut self,value:&CapeArrayStringIn) -> Result<(),COBIAError>;
3578	fn get_element_value(&mut self,position:&CapeArrayIntegerIn,value:&mut CapeStringOut) -> Result<(),COBIAError>;
3579	fn set_element_value(&mut self,position:&CapeArrayIntegerIn,value:&CapeStringIn) -> Result<(),COBIAError>;
3580	fn get_default_value(&mut self,default_value:&mut CapeStringOut) -> Result<(),COBIAError>;
3581	fn get_option_list(&mut self,option_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
3582	fn get_restricted_to_list(&mut self) -> Result<CapeBoolean,COBIAError>;
3583	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:&CapeStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3584	fn validate(&mut self,value:&CapeArrayStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3585}
3586
3587pub trait ICapeArrayStringParameterImpl : ICapeArrayStringParameter {
3588	type T: ICapeInterfaceImpl+ICapeArrayStringParameterImpl;
3589
3590	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
3591
3592	///prepare CAPEOPEN_1_2_ICapeArrayStringParameter interface and return as generic ICapeInterface pointer
3593	fn init_interface() -> crate::C::ICapeInterface {
3594		crate::C::ICapeInterface {
3595			me: std::ptr::null_mut(),
3596			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayStringParameter_VTable).cast_mut()
3597				as *mut crate::C::ICapeInterface_VTable,
3598		}
3599	}
3600	
3601	fn init<Timpl: ICapeArrayStringParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
3602		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayStringParameter =
3603			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayStringParameter;
3604		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
3605		u.add_interface(
3606			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayStringParameter_UUID),
3607			iface as *mut crate::C::ICapeInterface,
3608		);
3609	}
3610	
3611	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
3612		if value.is_null() {
3613			return COBIAERR_NULLPOINTER;
3614		}
3615		let p = me as *mut Self::T;
3616		let myself=unsafe { &mut *p };
3617		if value.is_null() {
3618			return COBIAERR_NULLPOINTER;
3619		}
3620		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
3621		let mut value=CapeArrayStringOut::new(&mut value);
3622		match myself.get_value(&mut value) {
3623			Ok(_) => COBIAERR_NOERROR,
3624			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::GetValue")
3625		}
3626	}
3627
3628	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
3629		let p = me as *mut Self::T;
3630		let myself=unsafe { &mut *p };
3631		let value=CapeArrayStringIn::new(&value);
3632		match myself.set_value(&value) {
3633			Ok(_) => COBIAERR_NOERROR,
3634			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::SetValue")
3635		}
3636	}
3637
3638	extern "C" fn raw_get_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
3639		if value.is_null() {
3640			return COBIAERR_NULLPOINTER;
3641		}
3642		let p = me as *mut Self::T;
3643		let myself=unsafe { &mut *p };
3644		if value.is_null() {
3645			return COBIAERR_NULLPOINTER;
3646		}
3647		let position=CapeArrayIntegerIn::new(&position);
3648		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3649		let mut value=CapeStringOut::new(&mut value);
3650		match myself.get_element_value(&position,&mut value) {
3651			Ok(_) => COBIAERR_NOERROR,
3652			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::GetElementValue")
3653		}
3654	}
3655
3656	extern "C" fn raw_set_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
3657		let p = me as *mut Self::T;
3658		let myself=unsafe { &mut *p };
3659		let position=CapeArrayIntegerIn::new(&position);
3660		let value=CapeStringIn::new(&value);
3661		match myself.set_element_value(&position,&value) {
3662			Ok(_) => COBIAERR_NOERROR,
3663			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::SetElementValue")
3664		}
3665	}
3666
3667	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
3668		if default_value.is_null() {
3669			return COBIAERR_NULLPOINTER;
3670		}
3671		let p = me as *mut Self::T;
3672		let myself=unsafe { &mut *p };
3673		if default_value.is_null() {
3674			return COBIAERR_NULLPOINTER;
3675		}
3676		let mut default_value=unsafe{*((&default_value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3677		let mut default_value=CapeStringOut::new(&mut default_value);
3678		match myself.get_default_value(&mut default_value) {
3679			Ok(_) => COBIAERR_NOERROR,
3680			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::GetDefaultValue")
3681		}
3682	}
3683
3684	extern "C" fn raw_get_option_list(me: *mut std::ffi::c_void,option_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
3685		if option_names.is_null() {
3686			return COBIAERR_NULLPOINTER;
3687		}
3688		let p = me as *mut Self::T;
3689		let myself=unsafe { &mut *p };
3690		if option_names.is_null() {
3691			return COBIAERR_NULLPOINTER;
3692		}
3693		let mut option_names=unsafe{*((&option_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
3694		let mut option_names=CapeArrayStringOut::new(&mut option_names);
3695		match myself.get_option_list(&mut option_names) {
3696			Ok(_) => COBIAERR_NOERROR,
3697			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::GetOptionList")
3698		}
3699	}
3700
3701	extern "C" fn raw_get_restricted_to_list(me: *mut std::ffi::c_void,restricted:*mut CapeBoolean) -> crate::C::CapeResult {
3702		if restricted.is_null() {
3703			return COBIAERR_NULLPOINTER;
3704		}
3705		let p = me as *mut Self::T;
3706		let myself=unsafe { &mut *p };
3707		match myself.get_restricted_to_list() {
3708			Ok(_restricted) => {
3709				unsafe{*restricted=_restricted;}
3710				COBIAERR_NOERROR
3711			},
3712			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::GetRestrictedToList")
3713		}
3714	}
3715
3716	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut crate::C::ICapeString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3717		if message.is_null()||is_ok.is_null() {
3718			return COBIAERR_NULLPOINTER;
3719		}
3720		let p = me as *mut Self::T;
3721		let myself=unsafe { &mut *p };
3722		if message.is_null() {
3723			return COBIAERR_NULLPOINTER;
3724		}
3725		let position=CapeArrayIntegerIn::new(&position);
3726		let value=CapeStringIn::new(&value);
3727		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3728		let mut message=CapeStringOut::new(&mut message);
3729		match myself.validate_element(&position,&value,&mut message) {
3730			Ok(_is_ok) => {
3731				unsafe{*is_ok=_is_ok;}
3732				COBIAERR_NOERROR
3733			},
3734			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::ValidateElement")
3735		}
3736	}
3737
3738	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3739		if message.is_null()||is_ok.is_null() {
3740			return COBIAERR_NULLPOINTER;
3741		}
3742		let p = me as *mut Self::T;
3743		let myself=unsafe { &mut *p };
3744		if message.is_null() {
3745			return COBIAERR_NULLPOINTER;
3746		}
3747		let value=CapeArrayStringIn::new(&value);
3748		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3749		let mut message=CapeStringOut::new(&mut message);
3750		match myself.validate(&value,&mut message) {
3751			Ok(_is_ok) => {
3752				unsafe{*is_ok=_is_ok;}
3753				COBIAERR_NOERROR
3754			},
3755			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameter::Validate")
3756		}
3757	}
3758
3759	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayStringParameter_VTable =
3760		C::CAPEOPEN_1_2_ICapeArrayStringParameter_VTable {
3761			base: crate::C::ICapeInterface_VTable {
3762				addReference: Some(Self::T::raw_add_reference),
3763				release: Some(Self::T::raw_release),
3764				queryInterface: Some(Self::T::raw_query_interface),
3765				getLastError: Some(Self::T::raw_get_last_error),
3766			},
3767			getValue: Some(Self::T::raw_get_value),
3768			putValue: Some(Self::T::raw_set_value),
3769			GetElementValue: Some(Self::T::raw_get_element_value),
3770			SetElementValue: Some(Self::T::raw_set_element_value),
3771			getDefaultValue: Some(Self::T::raw_get_default_value),
3772			getOptionList: Some(Self::T::raw_get_option_list),
3773			getRestrictedToList: Some(Self::T::raw_get_restricted_to_list),
3774			ValidateElement: Some(Self::T::raw_validate_element),
3775			Validate: Some(Self::T::raw_validate),
3776		};
3777}
3778
3779#[cape_smart_pointer(ICAPEARRAYSTRINGPARAMETER_UUID)]
3780pub struct CapeArrayStringParameter {
3781	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayStringParameter,
3782}
3783
3784impl CapeArrayStringParameter {
3785
3786	pub fn get_value<TypeOfValue:CapeArrayStringProviderOut>(&self,value:&mut TypeOfValue) -> Result<(),COBIAError> {
3787		let result_code = unsafe {
3788			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,(&value.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
3789		};
3790		match result_code {
3791			COBIAERR_NOERROR => {Ok(())},
3792			_ => Err(COBIAError::from_object(result_code,self))
3793		}
3794	}
3795
3796	pub fn set_value<TypeOfValue:CapeArrayStringProviderIn>(&self,value:&TypeOfValue) -> Result<(),COBIAError> {
3797		let result_code = unsafe {
3798			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,(&value.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut())
3799		};
3800		match result_code {
3801			COBIAERR_NOERROR => {Ok(())},
3802			_ => Err(COBIAError::from_object(result_code,self))
3803		}
3804	}
3805
3806	pub fn get_element_value<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfValue:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:&mut TypeOfValue) -> Result<(),COBIAError> {
3807		let result_code = unsafe {
3808			((*(*self.interface).vTbl).GetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
3809		};
3810		match result_code {
3811			COBIAERR_NOERROR => {Ok(())},
3812			_ => Err(COBIAError::from_object(result_code,self))
3813		}
3814	}
3815
3816	pub fn set_element_value<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfValue:CapeStringProviderIn>(&self,position:&TypeOfPosition,value:&TypeOfValue) -> Result<(),COBIAError> {
3817		let result_code = unsafe {
3818			((*(*self.interface).vTbl).SetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
3819		};
3820		match result_code {
3821			COBIAERR_NOERROR => {Ok(())},
3822			_ => Err(COBIAError::from_object(result_code,self))
3823		}
3824	}
3825
3826	pub fn get_default_value<TypeOfDefaultValue:CapeStringProviderOut>(&self,default_value:&mut TypeOfDefaultValue) -> Result<(),COBIAError> {
3827		let result_code = unsafe {
3828			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,(&default_value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
3829		};
3830		match result_code {
3831			COBIAERR_NOERROR => {Ok(())},
3832			_ => Err(COBIAError::from_object(result_code,self))
3833		}
3834	}
3835
3836	pub fn get_option_list<TypeOfOptionNames:CapeArrayStringProviderOut>(&self,option_names:&mut TypeOfOptionNames) -> Result<(),COBIAError> {
3837		let result_code = unsafe {
3838			((*(*self.interface).vTbl).getOptionList.unwrap())((*self.interface).me,(&option_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
3839		};
3840		match result_code {
3841			COBIAERR_NOERROR => {Ok(())},
3842			_ => Err(COBIAError::from_object(result_code,self))
3843		}
3844	}
3845
3846	pub fn get_restricted_to_list(&self) -> Result<CapeBoolean,COBIAError> {
3847		let mut restricted:CapeBoolean=false as CapeBoolean;
3848		let result_code = unsafe {
3849			((*(*self.interface).vTbl).getRestrictedToList.unwrap())((*self.interface).me,&mut restricted as *mut CapeBoolean)
3850		};
3851		match result_code {
3852			COBIAERR_NOERROR => {Ok(restricted)},
3853			_ => Err(COBIAError::from_object(result_code,self))
3854		}
3855	}
3856
3857	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfValue:CapeStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3858		let mut is_ok:CapeBoolean=false as CapeBoolean;
3859		let result_code = unsafe {
3860			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3861		};
3862		match result_code {
3863			COBIAERR_NOERROR => {Ok(is_ok)},
3864			_ => Err(COBIAError::from_object(result_code,self))
3865		}
3866	}
3867
3868	pub fn validate<TypeOfValue:CapeArrayStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
3869		let mut is_ok:CapeBoolean=false as CapeBoolean;
3870		let result_code = unsafe {
3871			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
3872		};
3873		match result_code {
3874			COBIAERR_NOERROR => {Ok(is_ok)},
3875			_ => Err(COBIAError::from_object(result_code,self))
3876		}
3877	}
3878
3879}
3880
3881///ICapeArrayBooleanParameter
3882///
3883///ICapeArrayBooleanParameter interface
3884///
3885pub trait ICapeArrayBooleanParameter {
3886	fn get_value(&mut self,value:&mut CapeArrayBooleanOut) -> Result<(),COBIAError>;
3887	fn set_value(&mut self,value:&CapeArrayBooleanIn) -> Result<(),COBIAError>;
3888	fn get_element_value(&mut self,position:&CapeArrayIntegerIn) -> Result<CapeBoolean,COBIAError>;
3889	fn set_element_value(&mut self,position:&CapeArrayIntegerIn,value:CapeBoolean) -> Result<(),COBIAError>;
3890	fn get_default_value(&mut self) -> Result<CapeBoolean,COBIAError>;
3891	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeBoolean,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3892	fn validate(&mut self,value:&CapeArrayBooleanIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
3893}
3894
3895pub trait ICapeArrayBooleanParameterImpl : ICapeArrayBooleanParameter {
3896	type T: ICapeInterfaceImpl+ICapeArrayBooleanParameterImpl;
3897
3898	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
3899
3900	///prepare CAPEOPEN_1_2_ICapeArrayBooleanParameter interface and return as generic ICapeInterface pointer
3901	fn init_interface() -> crate::C::ICapeInterface {
3902		crate::C::ICapeInterface {
3903			me: std::ptr::null_mut(),
3904			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayBooleanParameter_VTable).cast_mut()
3905				as *mut crate::C::ICapeInterface_VTable,
3906		}
3907	}
3908	
3909	fn init<Timpl: ICapeArrayBooleanParameterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
3910		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayBooleanParameter =
3911			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayBooleanParameter;
3912		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
3913		u.add_interface(
3914			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayBooleanParameter_UUID),
3915			iface as *mut crate::C::ICapeInterface,
3916		);
3917	}
3918	
3919	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayBoolean) -> crate::C::CapeResult {
3920		if value.is_null() {
3921			return COBIAERR_NULLPOINTER;
3922		}
3923		let p = me as *mut Self::T;
3924		let myself=unsafe { &mut *p };
3925		if value.is_null() {
3926			return COBIAERR_NULLPOINTER;
3927		}
3928		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayBoolean) as *mut *mut crate::C::ICapeArrayBoolean)};
3929		let mut value=CapeArrayBooleanOut::new(&mut value);
3930		match myself.get_value(&mut value) {
3931			Ok(_) => COBIAERR_NOERROR,
3932			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::GetValue")
3933		}
3934	}
3935
3936	extern "C" fn raw_set_value(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayBoolean) -> crate::C::CapeResult {
3937		let p = me as *mut Self::T;
3938		let myself=unsafe { &mut *p };
3939		let value=CapeArrayBooleanIn::new(&value);
3940		match myself.set_value(&value) {
3941			Ok(_) => COBIAERR_NOERROR,
3942			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::SetValue")
3943		}
3944	}
3945
3946	extern "C" fn raw_get_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut CapeBoolean) -> crate::C::CapeResult {
3947		if value.is_null() {
3948			return COBIAERR_NULLPOINTER;
3949		}
3950		let p = me as *mut Self::T;
3951		let myself=unsafe { &mut *p };
3952		let position=CapeArrayIntegerIn::new(&position);
3953		match myself.get_element_value(&position) {
3954			Ok(_value) => {
3955				unsafe{*value=_value;}
3956				COBIAERR_NOERROR
3957			},
3958			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::GetElementValue")
3959		}
3960	}
3961
3962	extern "C" fn raw_set_element_value(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeBoolean) -> crate::C::CapeResult {
3963		let p = me as *mut Self::T;
3964		let myself=unsafe { &mut *p };
3965		let position=CapeArrayIntegerIn::new(&position);
3966		match myself.set_element_value(&position,value) {
3967			Ok(_) => COBIAERR_NOERROR,
3968			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::SetElementValue")
3969		}
3970	}
3971
3972	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeBoolean) -> crate::C::CapeResult {
3973		if default_value.is_null() {
3974			return COBIAERR_NULLPOINTER;
3975		}
3976		let p = me as *mut Self::T;
3977		let myself=unsafe { &mut *p };
3978		match myself.get_default_value() {
3979			Ok(_default_value) => {
3980				unsafe{*default_value=_default_value;}
3981				COBIAERR_NOERROR
3982			},
3983			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::GetDefaultValue")
3984		}
3985	}
3986
3987	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
3988		if message.is_null()||is_ok.is_null() {
3989			return COBIAERR_NULLPOINTER;
3990		}
3991		let p = me as *mut Self::T;
3992		let myself=unsafe { &mut *p };
3993		if message.is_null() {
3994			return COBIAERR_NULLPOINTER;
3995		}
3996		let position=CapeArrayIntegerIn::new(&position);
3997		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
3998		let mut message=CapeStringOut::new(&mut message);
3999		match myself.validate_element(&position,value,&mut message) {
4000			Ok(_is_ok) => {
4001				unsafe{*is_ok=_is_ok;}
4002				COBIAERR_NOERROR
4003			},
4004			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::ValidateElement")
4005		}
4006	}
4007
4008	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
4009		if message.is_null()||is_ok.is_null() {
4010			return COBIAERR_NULLPOINTER;
4011		}
4012		let p = me as *mut Self::T;
4013		let myself=unsafe { &mut *p };
4014		if message.is_null() {
4015			return COBIAERR_NULLPOINTER;
4016		}
4017		let value=CapeArrayBooleanIn::new(&value);
4018		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4019		let mut message=CapeStringOut::new(&mut message);
4020		match myself.validate(&value,&mut message) {
4021			Ok(_is_ok) => {
4022				unsafe{*is_ok=_is_ok;}
4023				COBIAERR_NOERROR
4024			},
4025			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameter::Validate")
4026		}
4027	}
4028
4029	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayBooleanParameter_VTable =
4030		C::CAPEOPEN_1_2_ICapeArrayBooleanParameter_VTable {
4031			base: crate::C::ICapeInterface_VTable {
4032				addReference: Some(Self::T::raw_add_reference),
4033				release: Some(Self::T::raw_release),
4034				queryInterface: Some(Self::T::raw_query_interface),
4035				getLastError: Some(Self::T::raw_get_last_error),
4036			},
4037			getValue: Some(Self::T::raw_get_value),
4038			putValue: Some(Self::T::raw_set_value),
4039			GetElementValue: Some(Self::T::raw_get_element_value),
4040			SetElementValue: Some(Self::T::raw_set_element_value),
4041			getDefaultValue: Some(Self::T::raw_get_default_value),
4042			ValidateElement: Some(Self::T::raw_validate_element),
4043			Validate: Some(Self::T::raw_validate),
4044		};
4045}
4046
4047#[cape_smart_pointer(ICAPEARRAYBOOLEANPARAMETER_UUID)]
4048pub struct CapeArrayBooleanParameter {
4049	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayBooleanParameter,
4050}
4051
4052impl CapeArrayBooleanParameter {
4053
4054	pub fn get_value<TypeOfValue:CapeArrayBooleanProviderOut>(&self,value:&mut TypeOfValue) -> Result<(),COBIAError> {
4055		let result_code = unsafe {
4056			((*(*self.interface).vTbl).getValue.unwrap())((*self.interface).me,(&value.as_cape_array_boolean_out() as *const crate::C::ICapeArrayBoolean).cast_mut())
4057		};
4058		match result_code {
4059			COBIAERR_NOERROR => {Ok(())},
4060			_ => Err(COBIAError::from_object(result_code,self))
4061		}
4062	}
4063
4064	pub fn set_value<TypeOfValue:CapeArrayBooleanProviderIn>(&self,value:&TypeOfValue) -> Result<(),COBIAError> {
4065		let result_code = unsafe {
4066			((*(*self.interface).vTbl).putValue.unwrap())((*self.interface).me,(&value.as_cape_array_boolean_in() as *const crate::C::ICapeArrayBoolean).cast_mut())
4067		};
4068		match result_code {
4069			COBIAERR_NOERROR => {Ok(())},
4070			_ => Err(COBIAError::from_object(result_code,self))
4071		}
4072	}
4073
4074	pub fn get_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition) -> Result<CapeBoolean,COBIAError> {
4075		let mut value:CapeBoolean=false as CapeBoolean;
4076		let result_code = unsafe {
4077			((*(*self.interface).vTbl).GetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),&mut value as *mut CapeBoolean)
4078		};
4079		match result_code {
4080			COBIAERR_NOERROR => {Ok(value)},
4081			_ => Err(COBIAError::from_object(result_code,self))
4082		}
4083	}
4084
4085	pub fn set_element_value<TypeOfPosition:CapeArrayIntegerProviderIn>(&self,position:&TypeOfPosition,value:CapeBoolean) -> Result<(),COBIAError> {
4086		let result_code = unsafe {
4087			((*(*self.interface).vTbl).SetElementValue.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value)
4088		};
4089		match result_code {
4090			COBIAERR_NOERROR => {Ok(())},
4091			_ => Err(COBIAError::from_object(result_code,self))
4092		}
4093	}
4094
4095	pub fn get_default_value(&self) -> Result<CapeBoolean,COBIAError> {
4096		let mut default_value:CapeBoolean=false as CapeBoolean;
4097		let result_code = unsafe {
4098			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeBoolean)
4099		};
4100		match result_code {
4101			COBIAERR_NOERROR => {Ok(default_value)},
4102			_ => Err(COBIAError::from_object(result_code,self))
4103		}
4104	}
4105
4106	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeBoolean,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4107		let mut is_ok:CapeBoolean=false as CapeBoolean;
4108		let result_code = unsafe {
4109			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4110		};
4111		match result_code {
4112			COBIAERR_NOERROR => {Ok(is_ok)},
4113			_ => Err(COBIAError::from_object(result_code,self))
4114		}
4115	}
4116
4117	pub fn validate<TypeOfValue:CapeArrayBooleanProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4118		let mut is_ok:CapeBoolean=false as CapeBoolean;
4119		let result_code = unsafe {
4120			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_boolean_in() as *const crate::C::ICapeArrayBoolean).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4121		};
4122		match result_code {
4123			COBIAERR_NOERROR => {Ok(is_ok)},
4124			_ => Err(COBIAError::from_object(result_code,self))
4125		}
4126	}
4127
4128}
4129
4130///ICapeParameterSpecification
4131///
4132///ICapeParameterSpecification interface
4133///
4134pub trait ICapeParameterSpecification {
4135	fn get_type(&mut self) -> Result<CapeParamType,COBIAError>;
4136}
4137
4138pub trait ICapeParameterSpecificationImpl : ICapeParameterSpecification {
4139	type T: ICapeInterfaceImpl+ICapeParameterSpecificationImpl;
4140
4141	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4142
4143	///prepare CAPEOPEN_1_2_ICapeParameterSpecification interface and return as generic ICapeInterface pointer
4144	fn init_interface() -> crate::C::ICapeInterface {
4145		crate::C::ICapeInterface {
4146			me: std::ptr::null_mut(),
4147			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeParameterSpecification_VTable).cast_mut()
4148				as *mut crate::C::ICapeInterface_VTable,
4149		}
4150	}
4151	
4152	fn init<Timpl: ICapeParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4153		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeParameterSpecification =
4154			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeParameterSpecification;
4155		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4156		u.add_interface(
4157			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeParameterSpecification_UUID),
4158			iface as *mut crate::C::ICapeInterface,
4159		);
4160	}
4161	
4162	extern "C" fn raw_get_type(me: *mut std::ffi::c_void,parameter_type:*mut C::CAPEOPEN_1_2_CapeParamType) -> crate::C::CapeResult {
4163		if parameter_type.is_null() {
4164			return COBIAERR_NULLPOINTER;
4165		}
4166		let p = me as *mut Self::T;
4167		let myself=unsafe { &mut *p };
4168		match myself.get_type() {
4169			Ok(_parameter_type) => {
4170				unsafe{*parameter_type=_parameter_type as C::CAPEOPEN_1_2_CapeParamType;}
4171				COBIAERR_NOERROR
4172			},
4173			Err(e) => myself.set_last_error(e,"ICapeParameterSpecification::GetType")
4174		}
4175	}
4176
4177	const VTABLE: C::CAPEOPEN_1_2_ICapeParameterSpecification_VTable =
4178		C::CAPEOPEN_1_2_ICapeParameterSpecification_VTable {
4179			base: crate::C::ICapeInterface_VTable {
4180				addReference: Some(Self::T::raw_add_reference),
4181				release: Some(Self::T::raw_release),
4182				queryInterface: Some(Self::T::raw_query_interface),
4183				getLastError: Some(Self::T::raw_get_last_error),
4184			},
4185			getType: Some(Self::T::raw_get_type),
4186		};
4187}
4188
4189#[cape_smart_pointer(ICAPEPARAMETERSPECIFICATION_UUID)]
4190pub struct CapeParameterSpecification {
4191	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeParameterSpecification,
4192}
4193
4194impl CapeParameterSpecification {
4195
4196	pub fn get_type(&self) -> Result<CapeParamType,COBIAError> {
4197		let mut parameter_type:C::CAPEOPEN_1_2_CapeParamType=0;
4198		let result_code = unsafe {
4199			((*(*self.interface).vTbl).getType.unwrap())((*self.interface).me,&mut parameter_type as *mut C::CAPEOPEN_1_2_CapeParamType)
4200		};
4201		let parameter_type=match CapeParamType::from(parameter_type) {
4202			Some(_parameter_type) => _parameter_type,
4203			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
4204		};
4205		match result_code {
4206			COBIAERR_NOERROR => {Ok(parameter_type)},
4207			_ => Err(COBIAError::from_object(result_code,self))
4208		}
4209	}
4210
4211}
4212
4213///ICapeRealParameterSpecification
4214///
4215///ICapeRealParameterSpecification interface
4216///
4217pub trait ICapeRealParameterSpecification {
4218	fn get_default_value(&mut self) -> Result<CapeReal,COBIAError>;
4219	fn get_lower_bound(&mut self) -> Result<CapeReal,COBIAError>;
4220	fn get_upper_bound(&mut self) -> Result<CapeReal,COBIAError>;
4221	fn get_dimensionality(&mut self,dimensionality:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
4222	fn validate(&mut self,value:CapeReal,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4223}
4224
4225pub trait ICapeRealParameterSpecificationImpl : ICapeRealParameterSpecification {
4226	type T: ICapeInterfaceImpl+ICapeRealParameterSpecificationImpl;
4227
4228	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4229
4230	///prepare CAPEOPEN_1_2_ICapeRealParameterSpecification interface and return as generic ICapeInterface pointer
4231	fn init_interface() -> crate::C::ICapeInterface {
4232		crate::C::ICapeInterface {
4233			me: std::ptr::null_mut(),
4234			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeRealParameterSpecification_VTable).cast_mut()
4235				as *mut crate::C::ICapeInterface_VTable,
4236		}
4237	}
4238	
4239	fn init<Timpl: ICapeRealParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4240		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeRealParameterSpecification =
4241			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeRealParameterSpecification;
4242		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4243		u.add_interface(
4244			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeRealParameterSpecification_UUID),
4245			iface as *mut crate::C::ICapeInterface,
4246		);
4247	}
4248	
4249	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeReal) -> crate::C::CapeResult {
4250		if default_value.is_null() {
4251			return COBIAERR_NULLPOINTER;
4252		}
4253		let p = me as *mut Self::T;
4254		let myself=unsafe { &mut *p };
4255		match myself.get_default_value() {
4256			Ok(_default_value) => {
4257				unsafe{*default_value=_default_value;}
4258				COBIAERR_NOERROR
4259			},
4260			Err(e) => myself.set_last_error(e,"ICapeRealParameterSpecification::GetDefaultValue")
4261		}
4262	}
4263
4264	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeReal) -> crate::C::CapeResult {
4265		if l_bound.is_null() {
4266			return COBIAERR_NULLPOINTER;
4267		}
4268		let p = me as *mut Self::T;
4269		let myself=unsafe { &mut *p };
4270		match myself.get_lower_bound() {
4271			Ok(_l_bound) => {
4272				unsafe{*l_bound=_l_bound;}
4273				COBIAERR_NOERROR
4274			},
4275			Err(e) => myself.set_last_error(e,"ICapeRealParameterSpecification::GetLowerBound")
4276		}
4277	}
4278
4279	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeReal) -> crate::C::CapeResult {
4280		if u_bound.is_null() {
4281			return COBIAERR_NULLPOINTER;
4282		}
4283		let p = me as *mut Self::T;
4284		let myself=unsafe { &mut *p };
4285		match myself.get_upper_bound() {
4286			Ok(_u_bound) => {
4287				unsafe{*u_bound=_u_bound;}
4288				COBIAERR_NOERROR
4289			},
4290			Err(e) => myself.set_last_error(e,"ICapeRealParameterSpecification::GetUpperBound")
4291		}
4292	}
4293
4294	extern "C" fn raw_get_dimensionality(me: *mut std::ffi::c_void,dimensionality:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
4295		if dimensionality.is_null() {
4296			return COBIAERR_NULLPOINTER;
4297		}
4298		let p = me as *mut Self::T;
4299		let myself=unsafe { &mut *p };
4300		if dimensionality.is_null() {
4301			return COBIAERR_NULLPOINTER;
4302		}
4303		let mut dimensionality=unsafe{*((&dimensionality as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
4304		let mut dimensionality=CapeArrayRealOut::new(&mut dimensionality);
4305		match myself.get_dimensionality(&mut dimensionality) {
4306			Ok(_) => COBIAERR_NOERROR,
4307			Err(e) => myself.set_last_error(e,"ICapeRealParameterSpecification::GetDimensionality")
4308		}
4309	}
4310
4311	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
4312		if message.is_null()||is_ok.is_null() {
4313			return COBIAERR_NULLPOINTER;
4314		}
4315		let p = me as *mut Self::T;
4316		let myself=unsafe { &mut *p };
4317		if message.is_null() {
4318			return COBIAERR_NULLPOINTER;
4319		}
4320		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4321		let mut message=CapeStringOut::new(&mut message);
4322		match myself.validate(value,&mut message) {
4323			Ok(_is_ok) => {
4324				unsafe{*is_ok=_is_ok;}
4325				COBIAERR_NOERROR
4326			},
4327			Err(e) => myself.set_last_error(e,"ICapeRealParameterSpecification::Validate")
4328		}
4329	}
4330
4331	const VTABLE: C::CAPEOPEN_1_2_ICapeRealParameterSpecification_VTable =
4332		C::CAPEOPEN_1_2_ICapeRealParameterSpecification_VTable {
4333			base: crate::C::ICapeInterface_VTable {
4334				addReference: Some(Self::T::raw_add_reference),
4335				release: Some(Self::T::raw_release),
4336				queryInterface: Some(Self::T::raw_query_interface),
4337				getLastError: Some(Self::T::raw_get_last_error),
4338			},
4339			getDefaultValue: Some(Self::T::raw_get_default_value),
4340			getLowerBound: Some(Self::T::raw_get_lower_bound),
4341			getUpperBound: Some(Self::T::raw_get_upper_bound),
4342			getDimensionality: Some(Self::T::raw_get_dimensionality),
4343			Validate: Some(Self::T::raw_validate),
4344		};
4345}
4346
4347#[cape_smart_pointer(ICAPEREALPARAMETERSPECIFICATION_UUID)]
4348pub struct CapeRealParameterSpecification {
4349	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeRealParameterSpecification,
4350}
4351
4352impl CapeRealParameterSpecification {
4353
4354	pub fn get_default_value(&self) -> Result<CapeReal,COBIAError> {
4355		let mut default_value:CapeReal=0.0;
4356		let result_code = unsafe {
4357			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeReal)
4358		};
4359		match result_code {
4360			COBIAERR_NOERROR => {Ok(default_value)},
4361			_ => Err(COBIAError::from_object(result_code,self))
4362		}
4363	}
4364
4365	pub fn get_lower_bound(&self) -> Result<CapeReal,COBIAError> {
4366		let mut l_bound:CapeReal=0.0;
4367		let result_code = unsafe {
4368			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeReal)
4369		};
4370		match result_code {
4371			COBIAERR_NOERROR => {Ok(l_bound)},
4372			_ => Err(COBIAError::from_object(result_code,self))
4373		}
4374	}
4375
4376	pub fn get_upper_bound(&self) -> Result<CapeReal,COBIAError> {
4377		let mut u_bound:CapeReal=0.0;
4378		let result_code = unsafe {
4379			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeReal)
4380		};
4381		match result_code {
4382			COBIAERR_NOERROR => {Ok(u_bound)},
4383			_ => Err(COBIAError::from_object(result_code,self))
4384		}
4385	}
4386
4387	pub fn get_dimensionality<TypeOfDimensionality:CapeArrayRealProviderOut>(&self,dimensionality:&mut TypeOfDimensionality) -> Result<(),COBIAError> {
4388		let result_code = unsafe {
4389			((*(*self.interface).vTbl).getDimensionality.unwrap())((*self.interface).me,(&dimensionality.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
4390		};
4391		match result_code {
4392			COBIAERR_NOERROR => {Ok(())},
4393			_ => Err(COBIAError::from_object(result_code,self))
4394		}
4395	}
4396
4397	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeReal,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4398		let mut is_ok:CapeBoolean=false as CapeBoolean;
4399		let result_code = unsafe {
4400			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4401		};
4402		match result_code {
4403			COBIAERR_NOERROR => {Ok(is_ok)},
4404			_ => Err(COBIAError::from_object(result_code,self))
4405		}
4406	}
4407
4408}
4409
4410///ICapeIntegerParameterSpecification
4411///
4412///ICapeIntegerParameterSpecification interface
4413///
4414pub trait ICapeIntegerParameterSpecification {
4415	fn get_default_value(&mut self) -> Result<CapeInteger,COBIAError>;
4416	fn get_lower_bound(&mut self) -> Result<CapeInteger,COBIAError>;
4417	fn get_upper_bound(&mut self) -> Result<CapeInteger,COBIAError>;
4418	fn validate(&mut self,value:CapeInteger,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4419}
4420
4421pub trait ICapeIntegerParameterSpecificationImpl : ICapeIntegerParameterSpecification {
4422	type T: ICapeInterfaceImpl+ICapeIntegerParameterSpecificationImpl;
4423
4424	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4425
4426	///prepare CAPEOPEN_1_2_ICapeIntegerParameterSpecification interface and return as generic ICapeInterface pointer
4427	fn init_interface() -> crate::C::ICapeInterface {
4428		crate::C::ICapeInterface {
4429			me: std::ptr::null_mut(),
4430			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification_VTable).cast_mut()
4431				as *mut crate::C::ICapeInterface_VTable,
4432		}
4433	}
4434	
4435	fn init<Timpl: ICapeIntegerParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4436		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification =
4437			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification;
4438		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4439		u.add_interface(
4440			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification_UUID),
4441			iface as *mut crate::C::ICapeInterface,
4442		);
4443	}
4444	
4445	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeInteger) -> crate::C::CapeResult {
4446		if default_value.is_null() {
4447			return COBIAERR_NULLPOINTER;
4448		}
4449		let p = me as *mut Self::T;
4450		let myself=unsafe { &mut *p };
4451		match myself.get_default_value() {
4452			Ok(_default_value) => {
4453				unsafe{*default_value=_default_value;}
4454				COBIAERR_NOERROR
4455			},
4456			Err(e) => myself.set_last_error(e,"ICapeIntegerParameterSpecification::GetDefaultValue")
4457		}
4458	}
4459
4460	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeInteger) -> crate::C::CapeResult {
4461		if l_bound.is_null() {
4462			return COBIAERR_NULLPOINTER;
4463		}
4464		let p = me as *mut Self::T;
4465		let myself=unsafe { &mut *p };
4466		match myself.get_lower_bound() {
4467			Ok(_l_bound) => {
4468				unsafe{*l_bound=_l_bound;}
4469				COBIAERR_NOERROR
4470			},
4471			Err(e) => myself.set_last_error(e,"ICapeIntegerParameterSpecification::GetLowerBound")
4472		}
4473	}
4474
4475	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeInteger) -> crate::C::CapeResult {
4476		if u_bound.is_null() {
4477			return COBIAERR_NULLPOINTER;
4478		}
4479		let p = me as *mut Self::T;
4480		let myself=unsafe { &mut *p };
4481		match myself.get_upper_bound() {
4482			Ok(_u_bound) => {
4483				unsafe{*u_bound=_u_bound;}
4484				COBIAERR_NOERROR
4485			},
4486			Err(e) => myself.set_last_error(e,"ICapeIntegerParameterSpecification::GetUpperBound")
4487		}
4488	}
4489
4490	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
4491		if message.is_null()||is_ok.is_null() {
4492			return COBIAERR_NULLPOINTER;
4493		}
4494		let p = me as *mut Self::T;
4495		let myself=unsafe { &mut *p };
4496		if message.is_null() {
4497			return COBIAERR_NULLPOINTER;
4498		}
4499		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4500		let mut message=CapeStringOut::new(&mut message);
4501		match myself.validate(value,&mut message) {
4502			Ok(_is_ok) => {
4503				unsafe{*is_ok=_is_ok;}
4504				COBIAERR_NOERROR
4505			},
4506			Err(e) => myself.set_last_error(e,"ICapeIntegerParameterSpecification::Validate")
4507		}
4508	}
4509
4510	const VTABLE: C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification_VTable =
4511		C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification_VTable {
4512			base: crate::C::ICapeInterface_VTable {
4513				addReference: Some(Self::T::raw_add_reference),
4514				release: Some(Self::T::raw_release),
4515				queryInterface: Some(Self::T::raw_query_interface),
4516				getLastError: Some(Self::T::raw_get_last_error),
4517			},
4518			getDefaultValue: Some(Self::T::raw_get_default_value),
4519			getLowerBound: Some(Self::T::raw_get_lower_bound),
4520			getUpperBound: Some(Self::T::raw_get_upper_bound),
4521			Validate: Some(Self::T::raw_validate),
4522		};
4523}
4524
4525#[cape_smart_pointer(ICAPEINTEGERPARAMETERSPECIFICATION_UUID)]
4526pub struct CapeIntegerParameterSpecification {
4527	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeIntegerParameterSpecification,
4528}
4529
4530impl CapeIntegerParameterSpecification {
4531
4532	pub fn get_default_value(&self) -> Result<CapeInteger,COBIAError> {
4533		let mut default_value:CapeInteger=0;
4534		let result_code = unsafe {
4535			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeInteger)
4536		};
4537		match result_code {
4538			COBIAERR_NOERROR => {Ok(default_value)},
4539			_ => Err(COBIAError::from_object(result_code,self))
4540		}
4541	}
4542
4543	pub fn get_lower_bound(&self) -> Result<CapeInteger,COBIAError> {
4544		let mut l_bound:CapeInteger=0;
4545		let result_code = unsafe {
4546			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeInteger)
4547		};
4548		match result_code {
4549			COBIAERR_NOERROR => {Ok(l_bound)},
4550			_ => Err(COBIAError::from_object(result_code,self))
4551		}
4552	}
4553
4554	pub fn get_upper_bound(&self) -> Result<CapeInteger,COBIAError> {
4555		let mut u_bound:CapeInteger=0;
4556		let result_code = unsafe {
4557			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeInteger)
4558		};
4559		match result_code {
4560			COBIAERR_NOERROR => {Ok(u_bound)},
4561			_ => Err(COBIAError::from_object(result_code,self))
4562		}
4563	}
4564
4565	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeInteger,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4566		let mut is_ok:CapeBoolean=false as CapeBoolean;
4567		let result_code = unsafe {
4568			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4569		};
4570		match result_code {
4571			COBIAERR_NOERROR => {Ok(is_ok)},
4572			_ => Err(COBIAError::from_object(result_code,self))
4573		}
4574	}
4575
4576}
4577
4578///ICapeStringParameterSpecification
4579///
4580///ICapeStringParameterSpecification interface
4581///
4582pub trait ICapeStringParameterSpecification {
4583	fn get_default_value(&mut self,default_value:&mut CapeStringOut) -> Result<(),COBIAError>;
4584	fn get_option_list(&mut self,option_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
4585	fn get_restricted_to_list(&mut self) -> Result<CapeBoolean,COBIAError>;
4586	fn validate(&mut self,value:&CapeStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4587}
4588
4589pub trait ICapeStringParameterSpecificationImpl : ICapeStringParameterSpecification {
4590	type T: ICapeInterfaceImpl+ICapeStringParameterSpecificationImpl;
4591
4592	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4593
4594	///prepare CAPEOPEN_1_2_ICapeStringParameterSpecification interface and return as generic ICapeInterface pointer
4595	fn init_interface() -> crate::C::ICapeInterface {
4596		crate::C::ICapeInterface {
4597			me: std::ptr::null_mut(),
4598			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeStringParameterSpecification_VTable).cast_mut()
4599				as *mut crate::C::ICapeInterface_VTable,
4600		}
4601	}
4602	
4603	fn init<Timpl: ICapeStringParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4604		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeStringParameterSpecification =
4605			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStringParameterSpecification;
4606		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4607		u.add_interface(
4608			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeStringParameterSpecification_UUID),
4609			iface as *mut crate::C::ICapeInterface,
4610		);
4611	}
4612	
4613	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
4614		if default_value.is_null() {
4615			return COBIAERR_NULLPOINTER;
4616		}
4617		let p = me as *mut Self::T;
4618		let myself=unsafe { &mut *p };
4619		if default_value.is_null() {
4620			return COBIAERR_NULLPOINTER;
4621		}
4622		let mut default_value=unsafe{*((&default_value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4623		let mut default_value=CapeStringOut::new(&mut default_value);
4624		match myself.get_default_value(&mut default_value) {
4625			Ok(_) => COBIAERR_NOERROR,
4626			Err(e) => myself.set_last_error(e,"ICapeStringParameterSpecification::GetDefaultValue")
4627		}
4628	}
4629
4630	extern "C" fn raw_get_option_list(me: *mut std::ffi::c_void,option_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
4631		if option_names.is_null() {
4632			return COBIAERR_NULLPOINTER;
4633		}
4634		let p = me as *mut Self::T;
4635		let myself=unsafe { &mut *p };
4636		if option_names.is_null() {
4637			return COBIAERR_NULLPOINTER;
4638		}
4639		let mut option_names=unsafe{*((&option_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
4640		let mut option_names=CapeArrayStringOut::new(&mut option_names);
4641		match myself.get_option_list(&mut option_names) {
4642			Ok(_) => COBIAERR_NOERROR,
4643			Err(e) => myself.set_last_error(e,"ICapeStringParameterSpecification::GetOptionList")
4644		}
4645	}
4646
4647	extern "C" fn raw_get_restricted_to_list(me: *mut std::ffi::c_void,restricted:*mut CapeBoolean) -> crate::C::CapeResult {
4648		if restricted.is_null() {
4649			return COBIAERR_NULLPOINTER;
4650		}
4651		let p = me as *mut Self::T;
4652		let myself=unsafe { &mut *p };
4653		match myself.get_restricted_to_list() {
4654			Ok(_restricted) => {
4655				unsafe{*restricted=_restricted;}
4656				COBIAERR_NOERROR
4657			},
4658			Err(e) => myself.set_last_error(e,"ICapeStringParameterSpecification::GetRestrictedToList")
4659		}
4660	}
4661
4662	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
4663		if message.is_null()||is_ok.is_null() {
4664			return COBIAERR_NULLPOINTER;
4665		}
4666		let p = me as *mut Self::T;
4667		let myself=unsafe { &mut *p };
4668		if message.is_null() {
4669			return COBIAERR_NULLPOINTER;
4670		}
4671		let value=CapeStringIn::new(&value);
4672		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4673		let mut message=CapeStringOut::new(&mut message);
4674		match myself.validate(&value,&mut message) {
4675			Ok(_is_ok) => {
4676				unsafe{*is_ok=_is_ok;}
4677				COBIAERR_NOERROR
4678			},
4679			Err(e) => myself.set_last_error(e,"ICapeStringParameterSpecification::Validate")
4680		}
4681	}
4682
4683	const VTABLE: C::CAPEOPEN_1_2_ICapeStringParameterSpecification_VTable =
4684		C::CAPEOPEN_1_2_ICapeStringParameterSpecification_VTable {
4685			base: crate::C::ICapeInterface_VTable {
4686				addReference: Some(Self::T::raw_add_reference),
4687				release: Some(Self::T::raw_release),
4688				queryInterface: Some(Self::T::raw_query_interface),
4689				getLastError: Some(Self::T::raw_get_last_error),
4690			},
4691			getDefaultValue: Some(Self::T::raw_get_default_value),
4692			getOptionList: Some(Self::T::raw_get_option_list),
4693			getRestrictedToList: Some(Self::T::raw_get_restricted_to_list),
4694			Validate: Some(Self::T::raw_validate),
4695		};
4696}
4697
4698#[cape_smart_pointer(ICAPESTRINGPARAMETERSPECIFICATION_UUID)]
4699pub struct CapeStringParameterSpecification {
4700	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeStringParameterSpecification,
4701}
4702
4703impl CapeStringParameterSpecification {
4704
4705	pub fn get_default_value<TypeOfDefaultValue:CapeStringProviderOut>(&self,default_value:&mut TypeOfDefaultValue) -> Result<(),COBIAError> {
4706		let result_code = unsafe {
4707			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,(&default_value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
4708		};
4709		match result_code {
4710			COBIAERR_NOERROR => {Ok(())},
4711			_ => Err(COBIAError::from_object(result_code,self))
4712		}
4713	}
4714
4715	pub fn get_option_list<TypeOfOptionNames:CapeArrayStringProviderOut>(&self,option_names:&mut TypeOfOptionNames) -> Result<(),COBIAError> {
4716		let result_code = unsafe {
4717			((*(*self.interface).vTbl).getOptionList.unwrap())((*self.interface).me,(&option_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
4718		};
4719		match result_code {
4720			COBIAERR_NOERROR => {Ok(())},
4721			_ => Err(COBIAError::from_object(result_code,self))
4722		}
4723	}
4724
4725	pub fn get_restricted_to_list(&self) -> Result<CapeBoolean,COBIAError> {
4726		let mut restricted:CapeBoolean=false as CapeBoolean;
4727		let result_code = unsafe {
4728			((*(*self.interface).vTbl).getRestrictedToList.unwrap())((*self.interface).me,&mut restricted as *mut CapeBoolean)
4729		};
4730		match result_code {
4731			COBIAERR_NOERROR => {Ok(restricted)},
4732			_ => Err(COBIAError::from_object(result_code,self))
4733		}
4734	}
4735
4736	pub fn validate<TypeOfValue:CapeStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4737		let mut is_ok:CapeBoolean=false as CapeBoolean;
4738		let result_code = unsafe {
4739			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4740		};
4741		match result_code {
4742			COBIAERR_NOERROR => {Ok(is_ok)},
4743			_ => Err(COBIAError::from_object(result_code,self))
4744		}
4745	}
4746
4747}
4748
4749///ICapeBooleanParameterSpecification
4750///
4751///ICapeBooleanParameterSpecification interface
4752///
4753pub trait ICapeBooleanParameterSpecification {
4754	fn get_default_value(&mut self) -> Result<CapeBoolean,COBIAError>;
4755	fn validate(&mut self,value:CapeBoolean,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4756}
4757
4758pub trait ICapeBooleanParameterSpecificationImpl : ICapeBooleanParameterSpecification {
4759	type T: ICapeInterfaceImpl+ICapeBooleanParameterSpecificationImpl;
4760
4761	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4762
4763	///prepare CAPEOPEN_1_2_ICapeBooleanParameterSpecification interface and return as generic ICapeInterface pointer
4764	fn init_interface() -> crate::C::ICapeInterface {
4765		crate::C::ICapeInterface {
4766			me: std::ptr::null_mut(),
4767			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification_VTable).cast_mut()
4768				as *mut crate::C::ICapeInterface_VTable,
4769		}
4770	}
4771	
4772	fn init<Timpl: ICapeBooleanParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4773		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification =
4774			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification;
4775		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4776		u.add_interface(
4777			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification_UUID),
4778			iface as *mut crate::C::ICapeInterface,
4779		);
4780	}
4781	
4782	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeBoolean) -> crate::C::CapeResult {
4783		if default_value.is_null() {
4784			return COBIAERR_NULLPOINTER;
4785		}
4786		let p = me as *mut Self::T;
4787		let myself=unsafe { &mut *p };
4788		match myself.get_default_value() {
4789			Ok(_default_value) => {
4790				unsafe{*default_value=_default_value;}
4791				COBIAERR_NOERROR
4792			},
4793			Err(e) => myself.set_last_error(e,"ICapeBooleanParameterSpecification::GetDefaultValue")
4794		}
4795	}
4796
4797	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:CapeBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
4798		if message.is_null()||is_ok.is_null() {
4799			return COBIAERR_NULLPOINTER;
4800		}
4801		let p = me as *mut Self::T;
4802		let myself=unsafe { &mut *p };
4803		if message.is_null() {
4804			return COBIAERR_NULLPOINTER;
4805		}
4806		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
4807		let mut message=CapeStringOut::new(&mut message);
4808		match myself.validate(value,&mut message) {
4809			Ok(_is_ok) => {
4810				unsafe{*is_ok=_is_ok;}
4811				COBIAERR_NOERROR
4812			},
4813			Err(e) => myself.set_last_error(e,"ICapeBooleanParameterSpecification::Validate")
4814		}
4815	}
4816
4817	const VTABLE: C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification_VTable =
4818		C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification_VTable {
4819			base: crate::C::ICapeInterface_VTable {
4820				addReference: Some(Self::T::raw_add_reference),
4821				release: Some(Self::T::raw_release),
4822				queryInterface: Some(Self::T::raw_query_interface),
4823				getLastError: Some(Self::T::raw_get_last_error),
4824			},
4825			getDefaultValue: Some(Self::T::raw_get_default_value),
4826			Validate: Some(Self::T::raw_validate),
4827		};
4828}
4829
4830#[cape_smart_pointer(ICAPEBOOLEANPARAMETERSPECIFICATION_UUID)]
4831pub struct CapeBooleanParameterSpecification {
4832	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeBooleanParameterSpecification,
4833}
4834
4835impl CapeBooleanParameterSpecification {
4836
4837	pub fn get_default_value(&self) -> Result<CapeBoolean,COBIAError> {
4838		let mut default_value:CapeBoolean=false as CapeBoolean;
4839		let result_code = unsafe {
4840			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeBoolean)
4841		};
4842		match result_code {
4843			COBIAERR_NOERROR => {Ok(default_value)},
4844			_ => Err(COBIAError::from_object(result_code,self))
4845		}
4846	}
4847
4848	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,value:CapeBoolean,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
4849		let mut is_ok:CapeBoolean=false as CapeBoolean;
4850		let result_code = unsafe {
4851			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
4852		};
4853		match result_code {
4854			COBIAERR_NOERROR => {Ok(is_ok)},
4855			_ => Err(COBIAError::from_object(result_code,self))
4856		}
4857	}
4858
4859}
4860
4861///ICapeArrayParameterSpecification
4862///
4863///ICapeArrayParameterSpecification interface
4864///
4865pub trait ICapeArrayParameterSpecification {
4866	fn get_num_dimensions(&mut self) -> Result<CapeInteger,COBIAError>;
4867	fn get_size(&mut self,size:&mut CapeArrayIntegerOut) -> Result<(),COBIAError>;
4868}
4869
4870pub trait ICapeArrayParameterSpecificationImpl : ICapeArrayParameterSpecification {
4871	type T: ICapeInterfaceImpl+ICapeArrayParameterSpecificationImpl;
4872
4873	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4874
4875	///prepare CAPEOPEN_1_2_ICapeArrayParameterSpecification interface and return as generic ICapeInterface pointer
4876	fn init_interface() -> crate::C::ICapeInterface {
4877		crate::C::ICapeInterface {
4878			me: std::ptr::null_mut(),
4879			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayParameterSpecification_VTable).cast_mut()
4880				as *mut crate::C::ICapeInterface_VTable,
4881		}
4882	}
4883	
4884	fn init<Timpl: ICapeArrayParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4885		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayParameterSpecification =
4886			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayParameterSpecification;
4887		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
4888		u.add_interface(
4889			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayParameterSpecification_UUID),
4890			iface as *mut crate::C::ICapeInterface,
4891		);
4892	}
4893	
4894	extern "C" fn raw_get_num_dimensions(me: *mut std::ffi::c_void,num_dimensions:*mut CapeInteger) -> crate::C::CapeResult {
4895		if num_dimensions.is_null() {
4896			return COBIAERR_NULLPOINTER;
4897		}
4898		let p = me as *mut Self::T;
4899		let myself=unsafe { &mut *p };
4900		match myself.get_num_dimensions() {
4901			Ok(_num_dimensions) => {
4902				unsafe{*num_dimensions=_num_dimensions;}
4903				COBIAERR_NOERROR
4904			},
4905			Err(e) => myself.set_last_error(e,"ICapeArrayParameterSpecification::GetNumDimensions")
4906		}
4907	}
4908
4909	extern "C" fn raw_get_size(me: *mut std::ffi::c_void,size:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
4910		if size.is_null() {
4911			return COBIAERR_NULLPOINTER;
4912		}
4913		let p = me as *mut Self::T;
4914		let myself=unsafe { &mut *p };
4915		if size.is_null() {
4916			return COBIAERR_NULLPOINTER;
4917		}
4918		let mut size=unsafe{*((&size as *const *mut crate::C::ICapeArrayInteger) as *mut *mut crate::C::ICapeArrayInteger)};
4919		let mut size=CapeArrayIntegerOut::new(&mut size);
4920		match myself.get_size(&mut size) {
4921			Ok(_) => COBIAERR_NOERROR,
4922			Err(e) => myself.set_last_error(e,"ICapeArrayParameterSpecification::GetSize")
4923		}
4924	}
4925
4926	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayParameterSpecification_VTable =
4927		C::CAPEOPEN_1_2_ICapeArrayParameterSpecification_VTable {
4928			base: crate::C::ICapeInterface_VTable {
4929				addReference: Some(Self::T::raw_add_reference),
4930				release: Some(Self::T::raw_release),
4931				queryInterface: Some(Self::T::raw_query_interface),
4932				getLastError: Some(Self::T::raw_get_last_error),
4933			},
4934			getNumDimensions: Some(Self::T::raw_get_num_dimensions),
4935			getSize: Some(Self::T::raw_get_size),
4936		};
4937}
4938
4939#[cape_smart_pointer(ICAPEARRAYPARAMETERSPECIFICATION_UUID)]
4940pub struct CapeArrayParameterSpecification {
4941	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayParameterSpecification,
4942}
4943
4944impl CapeArrayParameterSpecification {
4945
4946	pub fn get_num_dimensions(&self) -> Result<CapeInteger,COBIAError> {
4947		let mut num_dimensions:CapeInteger=0;
4948		let result_code = unsafe {
4949			((*(*self.interface).vTbl).getNumDimensions.unwrap())((*self.interface).me,&mut num_dimensions as *mut CapeInteger)
4950		};
4951		match result_code {
4952			COBIAERR_NOERROR => {Ok(num_dimensions)},
4953			_ => Err(COBIAError::from_object(result_code,self))
4954		}
4955	}
4956
4957	pub fn get_size<TypeOfSize:CapeArrayIntegerProviderOut>(&self,size:&mut TypeOfSize) -> Result<(),COBIAError> {
4958		let result_code = unsafe {
4959			((*(*self.interface).vTbl).getSize.unwrap())((*self.interface).me,(&size.as_cape_array_integer_out() as *const crate::C::ICapeArrayInteger).cast_mut())
4960		};
4961		match result_code {
4962			COBIAERR_NOERROR => {Ok(())},
4963			_ => Err(COBIAError::from_object(result_code,self))
4964		}
4965	}
4966
4967}
4968
4969///ICapeArrayRealParameterSpecification
4970///
4971///ICapeArrayRealParameterSpecification interface
4972///
4973pub trait ICapeArrayRealParameterSpecification {
4974	fn get_default_value(&mut self) -> Result<CapeReal,COBIAError>;
4975	fn get_lower_bound(&mut self) -> Result<CapeReal,COBIAError>;
4976	fn get_upper_bound(&mut self) -> Result<CapeReal,COBIAError>;
4977	fn get_dimensionality(&mut self,dimensionality:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
4978	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeReal,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4979	fn validate(&mut self,value:&CapeArrayRealIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
4980}
4981
4982pub trait ICapeArrayRealParameterSpecificationImpl : ICapeArrayRealParameterSpecification {
4983	type T: ICapeInterfaceImpl+ICapeArrayRealParameterSpecificationImpl;
4984
4985	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
4986
4987	///prepare CAPEOPEN_1_2_ICapeArrayRealParameterSpecification interface and return as generic ICapeInterface pointer
4988	fn init_interface() -> crate::C::ICapeInterface {
4989		crate::C::ICapeInterface {
4990			me: std::ptr::null_mut(),
4991			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification_VTable).cast_mut()
4992				as *mut crate::C::ICapeInterface_VTable,
4993		}
4994	}
4995	
4996	fn init<Timpl: ICapeArrayRealParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
4997		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification =
4998			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification;
4999		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5000		u.add_interface(
5001			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification_UUID),
5002			iface as *mut crate::C::ICapeInterface,
5003		);
5004	}
5005	
5006	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeReal) -> crate::C::CapeResult {
5007		if default_value.is_null() {
5008			return COBIAERR_NULLPOINTER;
5009		}
5010		let p = me as *mut Self::T;
5011		let myself=unsafe { &mut *p };
5012		match myself.get_default_value() {
5013			Ok(_default_value) => {
5014				unsafe{*default_value=_default_value;}
5015				COBIAERR_NOERROR
5016			},
5017			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::GetDefaultValue")
5018		}
5019	}
5020
5021	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeReal) -> crate::C::CapeResult {
5022		if l_bound.is_null() {
5023			return COBIAERR_NULLPOINTER;
5024		}
5025		let p = me as *mut Self::T;
5026		let myself=unsafe { &mut *p };
5027		match myself.get_lower_bound() {
5028			Ok(_l_bound) => {
5029				unsafe{*l_bound=_l_bound;}
5030				COBIAERR_NOERROR
5031			},
5032			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::GetLowerBound")
5033		}
5034	}
5035
5036	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeReal) -> crate::C::CapeResult {
5037		if u_bound.is_null() {
5038			return COBIAERR_NULLPOINTER;
5039		}
5040		let p = me as *mut Self::T;
5041		let myself=unsafe { &mut *p };
5042		match myself.get_upper_bound() {
5043			Ok(_u_bound) => {
5044				unsafe{*u_bound=_u_bound;}
5045				COBIAERR_NOERROR
5046			},
5047			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::GetUpperBound")
5048		}
5049	}
5050
5051	extern "C" fn raw_get_dimensionality(me: *mut std::ffi::c_void,dimensionality:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
5052		if dimensionality.is_null() {
5053			return COBIAERR_NULLPOINTER;
5054		}
5055		let p = me as *mut Self::T;
5056		let myself=unsafe { &mut *p };
5057		if dimensionality.is_null() {
5058			return COBIAERR_NULLPOINTER;
5059		}
5060		let mut dimensionality=unsafe{*((&dimensionality as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
5061		let mut dimensionality=CapeArrayRealOut::new(&mut dimensionality);
5062		match myself.get_dimensionality(&mut dimensionality) {
5063			Ok(_) => COBIAERR_NOERROR,
5064			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::GetDimensionality")
5065		}
5066	}
5067
5068	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5069		if message.is_null()||is_ok.is_null() {
5070			return COBIAERR_NULLPOINTER;
5071		}
5072		let p = me as *mut Self::T;
5073		let myself=unsafe { &mut *p };
5074		if message.is_null() {
5075			return COBIAERR_NULLPOINTER;
5076		}
5077		let position=CapeArrayIntegerIn::new(&position);
5078		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5079		let mut message=CapeStringOut::new(&mut message);
5080		match myself.validate_element(&position,value,&mut message) {
5081			Ok(_is_ok) => {
5082				unsafe{*is_ok=_is_ok;}
5083				COBIAERR_NOERROR
5084			},
5085			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::ValidateElement")
5086		}
5087	}
5088
5089	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayReal,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5090		if message.is_null()||is_ok.is_null() {
5091			return COBIAERR_NULLPOINTER;
5092		}
5093		let p = me as *mut Self::T;
5094		let myself=unsafe { &mut *p };
5095		if message.is_null() {
5096			return COBIAERR_NULLPOINTER;
5097		}
5098		let value=CapeArrayRealIn::new(&value);
5099		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5100		let mut message=CapeStringOut::new(&mut message);
5101		match myself.validate(&value,&mut message) {
5102			Ok(_is_ok) => {
5103				unsafe{*is_ok=_is_ok;}
5104				COBIAERR_NOERROR
5105			},
5106			Err(e) => myself.set_last_error(e,"ICapeArrayRealParameterSpecification::Validate")
5107		}
5108	}
5109
5110	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification_VTable =
5111		C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification_VTable {
5112			base: crate::C::ICapeInterface_VTable {
5113				addReference: Some(Self::T::raw_add_reference),
5114				release: Some(Self::T::raw_release),
5115				queryInterface: Some(Self::T::raw_query_interface),
5116				getLastError: Some(Self::T::raw_get_last_error),
5117			},
5118			getDefaultValue: Some(Self::T::raw_get_default_value),
5119			getLowerBound: Some(Self::T::raw_get_lower_bound),
5120			getUpperBound: Some(Self::T::raw_get_upper_bound),
5121			getDimensionality: Some(Self::T::raw_get_dimensionality),
5122			ValidateElement: Some(Self::T::raw_validate_element),
5123			Validate: Some(Self::T::raw_validate),
5124		};
5125}
5126
5127#[cape_smart_pointer(ICAPEARRAYREALPARAMETERSPECIFICATION_UUID)]
5128pub struct CapeArrayRealParameterSpecification {
5129	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayRealParameterSpecification,
5130}
5131
5132impl CapeArrayRealParameterSpecification {
5133
5134	pub fn get_default_value(&self) -> Result<CapeReal,COBIAError> {
5135		let mut default_value:CapeReal=0.0;
5136		let result_code = unsafe {
5137			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeReal)
5138		};
5139		match result_code {
5140			COBIAERR_NOERROR => {Ok(default_value)},
5141			_ => Err(COBIAError::from_object(result_code,self))
5142		}
5143	}
5144
5145	pub fn get_lower_bound(&self) -> Result<CapeReal,COBIAError> {
5146		let mut l_bound:CapeReal=0.0;
5147		let result_code = unsafe {
5148			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeReal)
5149		};
5150		match result_code {
5151			COBIAERR_NOERROR => {Ok(l_bound)},
5152			_ => Err(COBIAError::from_object(result_code,self))
5153		}
5154	}
5155
5156	pub fn get_upper_bound(&self) -> Result<CapeReal,COBIAError> {
5157		let mut u_bound:CapeReal=0.0;
5158		let result_code = unsafe {
5159			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeReal)
5160		};
5161		match result_code {
5162			COBIAERR_NOERROR => {Ok(u_bound)},
5163			_ => Err(COBIAError::from_object(result_code,self))
5164		}
5165	}
5166
5167	pub fn get_dimensionality<TypeOfDimensionality:CapeArrayRealProviderOut>(&self,dimensionality:&mut TypeOfDimensionality) -> Result<(),COBIAError> {
5168		let result_code = unsafe {
5169			((*(*self.interface).vTbl).getDimensionality.unwrap())((*self.interface).me,(&dimensionality.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
5170		};
5171		match result_code {
5172			COBIAERR_NOERROR => {Ok(())},
5173			_ => Err(COBIAError::from_object(result_code,self))
5174		}
5175	}
5176
5177	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeReal,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5178		let mut is_ok:CapeBoolean=false as CapeBoolean;
5179		let result_code = unsafe {
5180			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5181		};
5182		match result_code {
5183			COBIAERR_NOERROR => {Ok(is_ok)},
5184			_ => Err(COBIAError::from_object(result_code,self))
5185		}
5186	}
5187
5188	pub fn validate<TypeOfValue:CapeArrayRealProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5189		let mut is_ok:CapeBoolean=false as CapeBoolean;
5190		let result_code = unsafe {
5191			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5192		};
5193		match result_code {
5194			COBIAERR_NOERROR => {Ok(is_ok)},
5195			_ => Err(COBIAError::from_object(result_code,self))
5196		}
5197	}
5198
5199}
5200
5201///ICapeArrayIntegerParameterSpecification
5202///
5203///ICapeArrayIntegerParameterSpecification interface
5204///
5205pub trait ICapeArrayIntegerParameterSpecification {
5206	fn get_default_value(&mut self) -> Result<CapeInteger,COBIAError>;
5207	fn get_lower_bound(&mut self) -> Result<CapeInteger,COBIAError>;
5208	fn get_upper_bound(&mut self) -> Result<CapeInteger,COBIAError>;
5209	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeInteger,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5210	fn validate(&mut self,value:&CapeArrayIntegerIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5211}
5212
5213pub trait ICapeArrayIntegerParameterSpecificationImpl : ICapeArrayIntegerParameterSpecification {
5214	type T: ICapeInterfaceImpl+ICapeArrayIntegerParameterSpecificationImpl;
5215
5216	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
5217
5218	///prepare CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification interface and return as generic ICapeInterface pointer
5219	fn init_interface() -> crate::C::ICapeInterface {
5220		crate::C::ICapeInterface {
5221			me: std::ptr::null_mut(),
5222			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification_VTable).cast_mut()
5223				as *mut crate::C::ICapeInterface_VTable,
5224		}
5225	}
5226	
5227	fn init<Timpl: ICapeArrayIntegerParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
5228		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification =
5229			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification;
5230		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5231		u.add_interface(
5232			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification_UUID),
5233			iface as *mut crate::C::ICapeInterface,
5234		);
5235	}
5236	
5237	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeInteger) -> crate::C::CapeResult {
5238		if default_value.is_null() {
5239			return COBIAERR_NULLPOINTER;
5240		}
5241		let p = me as *mut Self::T;
5242		let myself=unsafe { &mut *p };
5243		match myself.get_default_value() {
5244			Ok(_default_value) => {
5245				unsafe{*default_value=_default_value;}
5246				COBIAERR_NOERROR
5247			},
5248			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameterSpecification::GetDefaultValue")
5249		}
5250	}
5251
5252	extern "C" fn raw_get_lower_bound(me: *mut std::ffi::c_void,l_bound:*mut CapeInteger) -> crate::C::CapeResult {
5253		if l_bound.is_null() {
5254			return COBIAERR_NULLPOINTER;
5255		}
5256		let p = me as *mut Self::T;
5257		let myself=unsafe { &mut *p };
5258		match myself.get_lower_bound() {
5259			Ok(_l_bound) => {
5260				unsafe{*l_bound=_l_bound;}
5261				COBIAERR_NOERROR
5262			},
5263			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameterSpecification::GetLowerBound")
5264		}
5265	}
5266
5267	extern "C" fn raw_get_upper_bound(me: *mut std::ffi::c_void,u_bound:*mut CapeInteger) -> crate::C::CapeResult {
5268		if u_bound.is_null() {
5269			return COBIAERR_NULLPOINTER;
5270		}
5271		let p = me as *mut Self::T;
5272		let myself=unsafe { &mut *p };
5273		match myself.get_upper_bound() {
5274			Ok(_u_bound) => {
5275				unsafe{*u_bound=_u_bound;}
5276				COBIAERR_NOERROR
5277			},
5278			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameterSpecification::GetUpperBound")
5279		}
5280	}
5281
5282	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5283		if message.is_null()||is_ok.is_null() {
5284			return COBIAERR_NULLPOINTER;
5285		}
5286		let p = me as *mut Self::T;
5287		let myself=unsafe { &mut *p };
5288		if message.is_null() {
5289			return COBIAERR_NULLPOINTER;
5290		}
5291		let position=CapeArrayIntegerIn::new(&position);
5292		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5293		let mut message=CapeStringOut::new(&mut message);
5294		match myself.validate_element(&position,value,&mut message) {
5295			Ok(_is_ok) => {
5296				unsafe{*is_ok=_is_ok;}
5297				COBIAERR_NOERROR
5298			},
5299			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameterSpecification::ValidateElement")
5300		}
5301	}
5302
5303	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayInteger,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5304		if message.is_null()||is_ok.is_null() {
5305			return COBIAERR_NULLPOINTER;
5306		}
5307		let p = me as *mut Self::T;
5308		let myself=unsafe { &mut *p };
5309		if message.is_null() {
5310			return COBIAERR_NULLPOINTER;
5311		}
5312		let value=CapeArrayIntegerIn::new(&value);
5313		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5314		let mut message=CapeStringOut::new(&mut message);
5315		match myself.validate(&value,&mut message) {
5316			Ok(_is_ok) => {
5317				unsafe{*is_ok=_is_ok;}
5318				COBIAERR_NOERROR
5319			},
5320			Err(e) => myself.set_last_error(e,"ICapeArrayIntegerParameterSpecification::Validate")
5321		}
5322	}
5323
5324	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification_VTable =
5325		C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification_VTable {
5326			base: crate::C::ICapeInterface_VTable {
5327				addReference: Some(Self::T::raw_add_reference),
5328				release: Some(Self::T::raw_release),
5329				queryInterface: Some(Self::T::raw_query_interface),
5330				getLastError: Some(Self::T::raw_get_last_error),
5331			},
5332			getDefaultValue: Some(Self::T::raw_get_default_value),
5333			getLowerBound: Some(Self::T::raw_get_lower_bound),
5334			getUpperBound: Some(Self::T::raw_get_upper_bound),
5335			ValidateElement: Some(Self::T::raw_validate_element),
5336			Validate: Some(Self::T::raw_validate),
5337		};
5338}
5339
5340#[cape_smart_pointer(ICAPEARRAYINTEGERPARAMETERSPECIFICATION_UUID)]
5341pub struct CapeArrayIntegerParameterSpecification {
5342	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayIntegerParameterSpecification,
5343}
5344
5345impl CapeArrayIntegerParameterSpecification {
5346
5347	pub fn get_default_value(&self) -> Result<CapeInteger,COBIAError> {
5348		let mut default_value:CapeInteger=0;
5349		let result_code = unsafe {
5350			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeInteger)
5351		};
5352		match result_code {
5353			COBIAERR_NOERROR => {Ok(default_value)},
5354			_ => Err(COBIAError::from_object(result_code,self))
5355		}
5356	}
5357
5358	pub fn get_lower_bound(&self) -> Result<CapeInteger,COBIAError> {
5359		let mut l_bound:CapeInteger=0;
5360		let result_code = unsafe {
5361			((*(*self.interface).vTbl).getLowerBound.unwrap())((*self.interface).me,&mut l_bound as *mut CapeInteger)
5362		};
5363		match result_code {
5364			COBIAERR_NOERROR => {Ok(l_bound)},
5365			_ => Err(COBIAError::from_object(result_code,self))
5366		}
5367	}
5368
5369	pub fn get_upper_bound(&self) -> Result<CapeInteger,COBIAError> {
5370		let mut u_bound:CapeInteger=0;
5371		let result_code = unsafe {
5372			((*(*self.interface).vTbl).getUpperBound.unwrap())((*self.interface).me,&mut u_bound as *mut CapeInteger)
5373		};
5374		match result_code {
5375			COBIAERR_NOERROR => {Ok(u_bound)},
5376			_ => Err(COBIAError::from_object(result_code,self))
5377		}
5378	}
5379
5380	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeInteger,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5381		let mut is_ok:CapeBoolean=false as CapeBoolean;
5382		let result_code = unsafe {
5383			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5384		};
5385		match result_code {
5386			COBIAERR_NOERROR => {Ok(is_ok)},
5387			_ => Err(COBIAError::from_object(result_code,self))
5388		}
5389	}
5390
5391	pub fn validate<TypeOfValue:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5392		let mut is_ok:CapeBoolean=false as CapeBoolean;
5393		let result_code = unsafe {
5394			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5395		};
5396		match result_code {
5397			COBIAERR_NOERROR => {Ok(is_ok)},
5398			_ => Err(COBIAError::from_object(result_code,self))
5399		}
5400	}
5401
5402}
5403
5404///ICapeArrayStringParameterSpecification
5405///
5406///ICapeArrayStringParameterSpecification interface
5407///
5408pub trait ICapeArrayStringParameterSpecification {
5409	fn get_default_value(&mut self,default_value:&mut CapeStringOut) -> Result<(),COBIAError>;
5410	fn get_option_list(&mut self,option_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
5411	fn get_restricted_to_list(&mut self) -> Result<CapeBoolean,COBIAError>;
5412	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:&CapeStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5413	fn validate(&mut self,value:&CapeArrayStringIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5414}
5415
5416pub trait ICapeArrayStringParameterSpecificationImpl : ICapeArrayStringParameterSpecification {
5417	type T: ICapeInterfaceImpl+ICapeArrayStringParameterSpecificationImpl;
5418
5419	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
5420
5421	///prepare CAPEOPEN_1_2_ICapeArrayStringParameterSpecification interface and return as generic ICapeInterface pointer
5422	fn init_interface() -> crate::C::ICapeInterface {
5423		crate::C::ICapeInterface {
5424			me: std::ptr::null_mut(),
5425			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification_VTable).cast_mut()
5426				as *mut crate::C::ICapeInterface_VTable,
5427		}
5428	}
5429	
5430	fn init<Timpl: ICapeArrayStringParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
5431		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification =
5432			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification;
5433		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5434		u.add_interface(
5435			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification_UUID),
5436			iface as *mut crate::C::ICapeInterface,
5437		);
5438	}
5439	
5440	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
5441		if default_value.is_null() {
5442			return COBIAERR_NULLPOINTER;
5443		}
5444		let p = me as *mut Self::T;
5445		let myself=unsafe { &mut *p };
5446		if default_value.is_null() {
5447			return COBIAERR_NULLPOINTER;
5448		}
5449		let mut default_value=unsafe{*((&default_value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5450		let mut default_value=CapeStringOut::new(&mut default_value);
5451		match myself.get_default_value(&mut default_value) {
5452			Ok(_) => COBIAERR_NOERROR,
5453			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameterSpecification::GetDefaultValue")
5454		}
5455	}
5456
5457	extern "C" fn raw_get_option_list(me: *mut std::ffi::c_void,option_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
5458		if option_names.is_null() {
5459			return COBIAERR_NULLPOINTER;
5460		}
5461		let p = me as *mut Self::T;
5462		let myself=unsafe { &mut *p };
5463		if option_names.is_null() {
5464			return COBIAERR_NULLPOINTER;
5465		}
5466		let mut option_names=unsafe{*((&option_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
5467		let mut option_names=CapeArrayStringOut::new(&mut option_names);
5468		match myself.get_option_list(&mut option_names) {
5469			Ok(_) => COBIAERR_NOERROR,
5470			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameterSpecification::GetOptionList")
5471		}
5472	}
5473
5474	extern "C" fn raw_get_restricted_to_list(me: *mut std::ffi::c_void,restricted:*mut CapeBoolean) -> crate::C::CapeResult {
5475		if restricted.is_null() {
5476			return COBIAERR_NULLPOINTER;
5477		}
5478		let p = me as *mut Self::T;
5479		let myself=unsafe { &mut *p };
5480		match myself.get_restricted_to_list() {
5481			Ok(_restricted) => {
5482				unsafe{*restricted=_restricted;}
5483				COBIAERR_NOERROR
5484			},
5485			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameterSpecification::GetRestrictedToList")
5486		}
5487	}
5488
5489	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:*mut crate::C::ICapeString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5490		if message.is_null()||is_ok.is_null() {
5491			return COBIAERR_NULLPOINTER;
5492		}
5493		let p = me as *mut Self::T;
5494		let myself=unsafe { &mut *p };
5495		if message.is_null() {
5496			return COBIAERR_NULLPOINTER;
5497		}
5498		let position=CapeArrayIntegerIn::new(&position);
5499		let value=CapeStringIn::new(&value);
5500		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5501		let mut message=CapeStringOut::new(&mut message);
5502		match myself.validate_element(&position,&value,&mut message) {
5503			Ok(_is_ok) => {
5504				unsafe{*is_ok=_is_ok;}
5505				COBIAERR_NOERROR
5506			},
5507			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameterSpecification::ValidateElement")
5508		}
5509	}
5510
5511	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayString,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5512		if message.is_null()||is_ok.is_null() {
5513			return COBIAERR_NULLPOINTER;
5514		}
5515		let p = me as *mut Self::T;
5516		let myself=unsafe { &mut *p };
5517		if message.is_null() {
5518			return COBIAERR_NULLPOINTER;
5519		}
5520		let value=CapeArrayStringIn::new(&value);
5521		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5522		let mut message=CapeStringOut::new(&mut message);
5523		match myself.validate(&value,&mut message) {
5524			Ok(_is_ok) => {
5525				unsafe{*is_ok=_is_ok;}
5526				COBIAERR_NOERROR
5527			},
5528			Err(e) => myself.set_last_error(e,"ICapeArrayStringParameterSpecification::Validate")
5529		}
5530	}
5531
5532	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification_VTable =
5533		C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification_VTable {
5534			base: crate::C::ICapeInterface_VTable {
5535				addReference: Some(Self::T::raw_add_reference),
5536				release: Some(Self::T::raw_release),
5537				queryInterface: Some(Self::T::raw_query_interface),
5538				getLastError: Some(Self::T::raw_get_last_error),
5539			},
5540			getDefaultValue: Some(Self::T::raw_get_default_value),
5541			getOptionList: Some(Self::T::raw_get_option_list),
5542			getRestrictedToList: Some(Self::T::raw_get_restricted_to_list),
5543			ValidateElement: Some(Self::T::raw_validate_element),
5544			Validate: Some(Self::T::raw_validate),
5545		};
5546}
5547
5548#[cape_smart_pointer(ICAPEARRAYSTRINGPARAMETERSPECIFICATION_UUID)]
5549pub struct CapeArrayStringParameterSpecification {
5550	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayStringParameterSpecification,
5551}
5552
5553impl CapeArrayStringParameterSpecification {
5554
5555	pub fn get_default_value<TypeOfDefaultValue:CapeStringProviderOut>(&self,default_value:&mut TypeOfDefaultValue) -> Result<(),COBIAError> {
5556		let result_code = unsafe {
5557			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,(&default_value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
5558		};
5559		match result_code {
5560			COBIAERR_NOERROR => {Ok(())},
5561			_ => Err(COBIAError::from_object(result_code,self))
5562		}
5563	}
5564
5565	pub fn get_option_list<TypeOfOptionNames:CapeArrayStringProviderOut>(&self,option_names:&mut TypeOfOptionNames) -> Result<(),COBIAError> {
5566		let result_code = unsafe {
5567			((*(*self.interface).vTbl).getOptionList.unwrap())((*self.interface).me,(&option_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
5568		};
5569		match result_code {
5570			COBIAERR_NOERROR => {Ok(())},
5571			_ => Err(COBIAError::from_object(result_code,self))
5572		}
5573	}
5574
5575	pub fn get_restricted_to_list(&self) -> Result<CapeBoolean,COBIAError> {
5576		let mut restricted:CapeBoolean=false as CapeBoolean;
5577		let result_code = unsafe {
5578			((*(*self.interface).vTbl).getRestrictedToList.unwrap())((*self.interface).me,&mut restricted as *mut CapeBoolean)
5579		};
5580		match result_code {
5581			COBIAERR_NOERROR => {Ok(restricted)},
5582			_ => Err(COBIAError::from_object(result_code,self))
5583		}
5584	}
5585
5586	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfValue:CapeStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5587		let mut is_ok:CapeBoolean=false as CapeBoolean;
5588		let result_code = unsafe {
5589			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5590		};
5591		match result_code {
5592			COBIAERR_NOERROR => {Ok(is_ok)},
5593			_ => Err(COBIAError::from_object(result_code,self))
5594		}
5595	}
5596
5597	pub fn validate<TypeOfValue:CapeArrayStringProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5598		let mut is_ok:CapeBoolean=false as CapeBoolean;
5599		let result_code = unsafe {
5600			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5601		};
5602		match result_code {
5603			COBIAERR_NOERROR => {Ok(is_ok)},
5604			_ => Err(COBIAError::from_object(result_code,self))
5605		}
5606	}
5607
5608}
5609
5610///ICapeArrayBooleanParameterSpecification
5611///
5612///ICapeArrayBooleanParameterSpecification interface
5613///
5614pub trait ICapeArrayBooleanParameterSpecification {
5615	fn get_default_value(&mut self) -> Result<CapeBoolean,COBIAError>;
5616	fn validate_element(&mut self,position:&CapeArrayIntegerIn,value:CapeBoolean,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5617	fn validate(&mut self,value:&CapeArrayBooleanIn,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
5618}
5619
5620pub trait ICapeArrayBooleanParameterSpecificationImpl : ICapeArrayBooleanParameterSpecification {
5621	type T: ICapeInterfaceImpl+ICapeArrayBooleanParameterSpecificationImpl;
5622
5623	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
5624
5625	///prepare CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification interface and return as generic ICapeInterface pointer
5626	fn init_interface() -> crate::C::ICapeInterface {
5627		crate::C::ICapeInterface {
5628			me: std::ptr::null_mut(),
5629			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification_VTable).cast_mut()
5630				as *mut crate::C::ICapeInterface_VTable,
5631		}
5632	}
5633	
5634	fn init<Timpl: ICapeArrayBooleanParameterSpecificationImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
5635		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification =
5636			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification;
5637		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5638		u.add_interface(
5639			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification_UUID),
5640			iface as *mut crate::C::ICapeInterface,
5641		);
5642	}
5643	
5644	extern "C" fn raw_get_default_value(me: *mut std::ffi::c_void,default_value:*mut CapeBoolean) -> crate::C::CapeResult {
5645		if default_value.is_null() {
5646			return COBIAERR_NULLPOINTER;
5647		}
5648		let p = me as *mut Self::T;
5649		let myself=unsafe { &mut *p };
5650		match myself.get_default_value() {
5651			Ok(_default_value) => {
5652				unsafe{*default_value=_default_value;}
5653				COBIAERR_NOERROR
5654			},
5655			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameterSpecification::GetDefaultValue")
5656		}
5657	}
5658
5659	extern "C" fn raw_validate_element(me: *mut std::ffi::c_void,position:*mut crate::C::ICapeArrayInteger,value:CapeBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5660		if message.is_null()||is_ok.is_null() {
5661			return COBIAERR_NULLPOINTER;
5662		}
5663		let p = me as *mut Self::T;
5664		let myself=unsafe { &mut *p };
5665		if message.is_null() {
5666			return COBIAERR_NULLPOINTER;
5667		}
5668		let position=CapeArrayIntegerIn::new(&position);
5669		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5670		let mut message=CapeStringOut::new(&mut message);
5671		match myself.validate_element(&position,value,&mut message) {
5672			Ok(_is_ok) => {
5673				unsafe{*is_ok=_is_ok;}
5674				COBIAERR_NOERROR
5675			},
5676			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameterSpecification::ValidateElement")
5677		}
5678	}
5679
5680	extern "C" fn raw_validate(me: *mut std::ffi::c_void,value:*mut crate::C::ICapeArrayBoolean,message:*mut crate::C::ICapeString,is_ok:*mut CapeBoolean) -> crate::C::CapeResult {
5681		if message.is_null()||is_ok.is_null() {
5682			return COBIAERR_NULLPOINTER;
5683		}
5684		let p = me as *mut Self::T;
5685		let myself=unsafe { &mut *p };
5686		if message.is_null() {
5687			return COBIAERR_NULLPOINTER;
5688		}
5689		let value=CapeArrayBooleanIn::new(&value);
5690		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
5691		let mut message=CapeStringOut::new(&mut message);
5692		match myself.validate(&value,&mut message) {
5693			Ok(_is_ok) => {
5694				unsafe{*is_ok=_is_ok;}
5695				COBIAERR_NOERROR
5696			},
5697			Err(e) => myself.set_last_error(e,"ICapeArrayBooleanParameterSpecification::Validate")
5698		}
5699	}
5700
5701	const VTABLE: C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification_VTable =
5702		C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification_VTable {
5703			base: crate::C::ICapeInterface_VTable {
5704				addReference: Some(Self::T::raw_add_reference),
5705				release: Some(Self::T::raw_release),
5706				queryInterface: Some(Self::T::raw_query_interface),
5707				getLastError: Some(Self::T::raw_get_last_error),
5708			},
5709			getDefaultValue: Some(Self::T::raw_get_default_value),
5710			ValidateElement: Some(Self::T::raw_validate_element),
5711			Validate: Some(Self::T::raw_validate),
5712		};
5713}
5714
5715#[cape_smart_pointer(ICAPEARRAYBOOLEANPARAMETERSPECIFICATION_UUID)]
5716pub struct CapeArrayBooleanParameterSpecification {
5717	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeArrayBooleanParameterSpecification,
5718}
5719
5720impl CapeArrayBooleanParameterSpecification {
5721
5722	pub fn get_default_value(&self) -> Result<CapeBoolean,COBIAError> {
5723		let mut default_value:CapeBoolean=false as CapeBoolean;
5724		let result_code = unsafe {
5725			((*(*self.interface).vTbl).getDefaultValue.unwrap())((*self.interface).me,&mut default_value as *mut CapeBoolean)
5726		};
5727		match result_code {
5728			COBIAERR_NOERROR => {Ok(default_value)},
5729			_ => Err(COBIAError::from_object(result_code,self))
5730		}
5731	}
5732
5733	pub fn validate_element<TypeOfPosition:CapeArrayIntegerProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,position:&TypeOfPosition,value:CapeBoolean,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5734		let mut is_ok:CapeBoolean=false as CapeBoolean;
5735		let result_code = unsafe {
5736			((*(*self.interface).vTbl).ValidateElement.unwrap())((*self.interface).me,(&position.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut(),value,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5737		};
5738		match result_code {
5739			COBIAERR_NOERROR => {Ok(is_ok)},
5740			_ => Err(COBIAError::from_object(result_code,self))
5741		}
5742	}
5743
5744	pub fn validate<TypeOfValue:CapeArrayBooleanProviderIn,TypeOfMessage:CapeStringProviderOut>(&self,value:&TypeOfValue,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
5745		let mut is_ok:CapeBoolean=false as CapeBoolean;
5746		let result_code = unsafe {
5747			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&value.as_cape_array_boolean_in() as *const crate::C::ICapeArrayBoolean).cast_mut(),(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_ok as *mut CapeBoolean)
5748		};
5749		match result_code {
5750			COBIAERR_NOERROR => {Ok(is_ok)},
5751			_ => Err(COBIAError::from_object(result_code,self))
5752		}
5753	}
5754
5755}
5756
5757///ICapeUtilities
5758///
5759///ICapeUtilities interface
5760///
5761pub trait ICapeUtilities {
5762	fn get_parameters(&mut self) -> Result<CapeCollection<CapeParameter>,COBIAError>;
5763	fn set_simulation_context(&mut self,context:CapeSimulationContext) -> Result<(),COBIAError>;
5764	fn initialize(&mut self) -> Result<(),COBIAError>;
5765	fn terminate(&mut self) -> Result<(),COBIAError>;
5766	fn edit(&mut self,parent:CapeWindowId) -> Result<CapeEditResult,COBIAError>;
5767}
5768
5769pub trait ICapeUtilitiesImpl : ICapeUtilities {
5770	type T: ICapeInterfaceImpl+ICapeUtilitiesImpl;
5771
5772	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
5773
5774	///prepare CAPEOPEN_1_2_ICapeUtilities interface and return as generic ICapeInterface pointer
5775	fn init_interface() -> crate::C::ICapeInterface {
5776		crate::C::ICapeInterface {
5777			me: std::ptr::null_mut(),
5778			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeUtilities_VTable).cast_mut()
5779				as *mut crate::C::ICapeInterface_VTable,
5780		}
5781	}
5782	
5783	fn init<Timpl: ICapeUtilitiesImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
5784		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeUtilities =
5785			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUtilities;
5786		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5787		u.add_interface(
5788			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeUtilities_UUID),
5789			iface as *mut crate::C::ICapeInterface,
5790		);
5791	}
5792	
5793	extern "C" fn raw_get_parameters(me: *mut std::ffi::c_void,parameters:*mut *mut C::CAPEOPEN_1_2_ICapeCollection) -> crate::C::CapeResult {
5794		if parameters.is_null() {
5795			return COBIAERR_NULLPOINTER;
5796		}
5797		let p = me as *mut Self::T;
5798		let myself=unsafe { &mut *p };
5799		if parameters.is_null() {
5800			return COBIAERR_NULLPOINTER;
5801		}
5802		match myself.get_parameters() {
5803			Ok(_parameters) => {
5804				unsafe{*parameters=_parameters.detach();}
5805				COBIAERR_NOERROR
5806			},
5807			Err(e) => myself.set_last_error(e,"ICapeUtilities::GetParameters")
5808		}
5809	}
5810
5811	extern "C" fn raw_set_simulation_context(me: *mut std::ffi::c_void,context:*mut C::CAPEOPEN_1_2_ICapeSimulationContext) -> crate::C::CapeResult {
5812		if context.is_null() {
5813			return COBIAERR_NULLPOINTER;
5814		}
5815		let p = me as *mut Self::T;
5816		let myself=unsafe { &mut *p };
5817		if context.is_null() {
5818			return COBIAERR_NULLPOINTER;
5819		}
5820		let context=CapeSimulationContext::from_interface_pointer(context);
5821		match myself.set_simulation_context(context) {
5822			Ok(_) => COBIAERR_NOERROR,
5823			Err(e) => myself.set_last_error(e,"ICapeUtilities::SetSimulationContext")
5824		}
5825	}
5826
5827	extern "C" fn raw_initialize(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
5828		let p = me as *mut Self::T;
5829		let myself=unsafe { &mut *p };
5830		match myself.initialize() {
5831			Ok(_) => COBIAERR_NOERROR,
5832			Err(e) => myself.set_last_error(e,"ICapeUtilities::Initialize")
5833		}
5834	}
5835
5836	extern "C" fn raw_terminate(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
5837		let p = me as *mut Self::T;
5838		let myself=unsafe { &mut *p };
5839		match myself.terminate() {
5840			Ok(_) => COBIAERR_NOERROR,
5841			Err(e) => myself.set_last_error(e,"ICapeUtilities::Terminate")
5842		}
5843	}
5844
5845	extern "C" fn raw_edit(me: *mut std::ffi::c_void,parent:crate::C::CapeWindowId,result:*mut C::CAPEOPEN_1_2_CapeEditResult) -> crate::C::CapeResult {
5846		if result.is_null() {
5847			return COBIAERR_NULLPOINTER;
5848		}
5849		let p = me as *mut Self::T;
5850		let myself=unsafe { &mut *p };
5851		match myself.edit(crate::CapeWindowIdFromRaw(parent)) {
5852			Ok(_result) => {
5853				unsafe{*result=_result as C::CAPEOPEN_1_2_CapeEditResult;}
5854				COBIAERR_NOERROR
5855			},
5856			Err(e) => myself.set_last_error(e,"ICapeUtilities::Edit")
5857		}
5858	}
5859
5860	const VTABLE: C::CAPEOPEN_1_2_ICapeUtilities_VTable =
5861		C::CAPEOPEN_1_2_ICapeUtilities_VTable {
5862			base: crate::C::ICapeInterface_VTable {
5863				addReference: Some(Self::T::raw_add_reference),
5864				release: Some(Self::T::raw_release),
5865				queryInterface: Some(Self::T::raw_query_interface),
5866				getLastError: Some(Self::T::raw_get_last_error),
5867			},
5868			getParameters: Some(Self::T::raw_get_parameters),
5869			putSimulationContext: Some(Self::T::raw_set_simulation_context),
5870			Initialize: Some(Self::T::raw_initialize),
5871			Terminate: Some(Self::T::raw_terminate),
5872			Edit: Some(Self::T::raw_edit),
5873		};
5874}
5875
5876#[cape_smart_pointer(ICAPEUTILITIES_UUID)]
5877pub struct CapeUtilities {
5878	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeUtilities,
5879}
5880
5881impl CapeUtilities {
5882
5883	pub fn get_parameters(&self) -> Result<CapeCollection<CapeParameter>,COBIAError> {
5884		let mut parameters: *mut C::CAPEOPEN_1_2_ICapeCollection=std::ptr::null_mut();
5885		let result_code = unsafe {
5886			((*(*self.interface).vTbl).getParameters.unwrap())((*self.interface).me,&mut parameters as *mut *mut C::CAPEOPEN_1_2_ICapeCollection)
5887		};
5888		match result_code {
5889			COBIAERR_NOERROR => {Ok(CapeCollection::<CapeParameter>::attach(parameters))},
5890			_ => Err(COBIAError::from_object(result_code,self))
5891		}
5892	}
5893
5894	pub fn set_simulation_context(&self,context:&CapeSimulationContext) -> Result<(),COBIAError> {
5895		let result_code = unsafe {
5896			((*(*self.interface).vTbl).putSimulationContext.unwrap())((*self.interface).me,context.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeSimulationContext)
5897		};
5898		match result_code {
5899			COBIAERR_NOERROR => {Ok(())},
5900			_ => Err(COBIAError::from_object(result_code,self))
5901		}
5902	}
5903
5904	pub fn initialize(&self) -> Result<(),COBIAError> {
5905		let result_code = unsafe {
5906			((*(*self.interface).vTbl).Initialize.unwrap())((*self.interface).me)
5907		};
5908		match result_code {
5909			COBIAERR_NOERROR => {Ok(())},
5910			_ => Err(COBIAError::from_object(result_code,self))
5911		}
5912	}
5913
5914	pub fn terminate(&self) -> Result<(),COBIAError> {
5915		let result_code = unsafe {
5916			((*(*self.interface).vTbl).Terminate.unwrap())((*self.interface).me)
5917		};
5918		match result_code {
5919			COBIAERR_NOERROR => {Ok(())},
5920			_ => Err(COBIAError::from_object(result_code,self))
5921		}
5922	}
5923
5924	pub fn edit(&self,parent:CapeWindowId) -> Result<CapeEditResult,COBIAError> {
5925		let mut result:C::CAPEOPEN_1_2_CapeEditResult=0;
5926		let result_code = unsafe {
5927			((*(*self.interface).vTbl).Edit.unwrap())((*self.interface).me,crate::CapeWindowIdToRaw(parent),&mut result as *mut C::CAPEOPEN_1_2_CapeEditResult)
5928		};
5929		let result=match CapeEditResult::from(result) {
5930			Some(_result) => _result,
5931			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
5932		};
5933		match result_code {
5934			COBIAERR_NOERROR => {Ok(result)},
5935			_ => Err(COBIAError::from_object(result_code,self))
5936		}
5937	}
5938
5939}
5940
5941///ICapeSimulationContext
5942///
5943///ICapeSimulationContext interface
5944///
5945pub trait ICapeSimulationContext {
5946}
5947
5948pub trait ICapeSimulationContextImpl : ICapeSimulationContext {
5949	type T: ICapeInterfaceImpl+ICapeSimulationContextImpl;
5950
5951	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
5952
5953	///prepare CAPEOPEN_1_2_ICapeSimulationContext interface and return as generic ICapeInterface pointer
5954	fn init_interface() -> crate::C::ICapeInterface {
5955		crate::C::ICapeInterface {
5956			me: std::ptr::null_mut(),
5957			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeSimulationContext_VTable).cast_mut()
5958				as *mut crate::C::ICapeInterface_VTable,
5959		}
5960	}
5961	
5962	fn init<Timpl: ICapeSimulationContextImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
5963		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeSimulationContext =
5964			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeSimulationContext;
5965		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
5966		u.add_interface(
5967			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeSimulationContext_UUID),
5968			iface as *mut crate::C::ICapeInterface,
5969		);
5970	}
5971	
5972	const VTABLE: C::CAPEOPEN_1_2_ICapeSimulationContext_VTable =
5973		C::CAPEOPEN_1_2_ICapeSimulationContext_VTable {
5974			base: crate::C::ICapeInterface_VTable {
5975				addReference: Some(Self::T::raw_add_reference),
5976				release: Some(Self::T::raw_release),
5977				queryInterface: Some(Self::T::raw_query_interface),
5978				getLastError: Some(Self::T::raw_get_last_error),
5979			},
5980		};
5981}
5982
5983#[cape_smart_pointer(ICAPESIMULATIONCONTEXT_UUID)]
5984pub struct CapeSimulationContext {
5985	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeSimulationContext,
5986}
5987
5988impl CapeSimulationContext {
5989
5990}
5991
5992///ICapeDiagnostic
5993///
5994///ICapeDiagnostic interface
5995///
5996pub trait ICapeDiagnostic {
5997	fn pop_up_message(&mut self,message:&CapeStringIn) -> Result<(),COBIAError>;
5998	fn log_message(&mut self,message:&CapeStringIn) -> Result<(),COBIAError>;
5999}
6000
6001pub trait ICapeDiagnosticImpl : ICapeDiagnostic {
6002	type T: ICapeInterfaceImpl+ICapeDiagnosticImpl;
6003
6004	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6005
6006	///prepare CAPEOPEN_1_2_ICapeDiagnostic interface and return as generic ICapeInterface pointer
6007	fn init_interface() -> crate::C::ICapeInterface {
6008		crate::C::ICapeInterface {
6009			me: std::ptr::null_mut(),
6010			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeDiagnostic_VTable).cast_mut()
6011				as *mut crate::C::ICapeInterface_VTable,
6012		}
6013	}
6014	
6015	fn init<Timpl: ICapeDiagnosticImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6016		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeDiagnostic =
6017			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeDiagnostic;
6018		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6019		u.add_interface(
6020			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeDiagnostic_UUID),
6021			iface as *mut crate::C::ICapeInterface,
6022		);
6023	}
6024	
6025	extern "C" fn raw_pop_up_message(me: *mut std::ffi::c_void,message:*mut crate::C::ICapeString) -> crate::C::CapeResult {
6026		let p = me as *mut Self::T;
6027		let myself=unsafe { &mut *p };
6028		let message=CapeStringIn::new(&message);
6029		match myself.pop_up_message(&message) {
6030			Ok(_) => COBIAERR_NOERROR,
6031			Err(e) => myself.set_last_error(e,"ICapeDiagnostic::PopUpMessage")
6032		}
6033	}
6034
6035	extern "C" fn raw_log_message(me: *mut std::ffi::c_void,message:*mut crate::C::ICapeString) -> crate::C::CapeResult {
6036		let p = me as *mut Self::T;
6037		let myself=unsafe { &mut *p };
6038		let message=CapeStringIn::new(&message);
6039		match myself.log_message(&message) {
6040			Ok(_) => COBIAERR_NOERROR,
6041			Err(e) => myself.set_last_error(e,"ICapeDiagnostic::LogMessage")
6042		}
6043	}
6044
6045	const VTABLE: C::CAPEOPEN_1_2_ICapeDiagnostic_VTable =
6046		C::CAPEOPEN_1_2_ICapeDiagnostic_VTable {
6047			base: crate::C::ICapeInterface_VTable {
6048				addReference: Some(Self::T::raw_add_reference),
6049				release: Some(Self::T::raw_release),
6050				queryInterface: Some(Self::T::raw_query_interface),
6051				getLastError: Some(Self::T::raw_get_last_error),
6052			},
6053			PopUpMessage: Some(Self::T::raw_pop_up_message),
6054			LogMessage: Some(Self::T::raw_log_message),
6055		};
6056}
6057
6058#[cape_smart_pointer(ICAPEDIAGNOSTIC_UUID)]
6059pub struct CapeDiagnostic {
6060	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeDiagnostic,
6061}
6062
6063impl CapeDiagnostic {
6064
6065	pub fn pop_up_message<TypeOfMessage:CapeStringProviderIn>(&self,message:&TypeOfMessage) -> Result<(),COBIAError> {
6066		let result_code = unsafe {
6067			((*(*self.interface).vTbl).PopUpMessage.unwrap())((*self.interface).me,(&message.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
6068		};
6069		match result_code {
6070			COBIAERR_NOERROR => {Ok(())},
6071			_ => Err(COBIAError::from_object(result_code,self))
6072		}
6073	}
6074
6075	pub fn log_message<TypeOfMessage:CapeStringProviderIn>(&self,message:&TypeOfMessage) -> Result<(),COBIAError> {
6076		let result_code = unsafe {
6077			((*(*self.interface).vTbl).LogMessage.unwrap())((*self.interface).me,(&message.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
6078		};
6079		match result_code {
6080			COBIAERR_NOERROR => {Ok(())},
6081			_ => Err(COBIAError::from_object(result_code,self))
6082		}
6083	}
6084
6085}
6086
6087///ICapeMaterialManager
6088///
6089///ICapeMaterialManager interface
6090///
6091pub trait ICapeMaterialManager {
6092	fn get_material_list(&mut self,material_name_list:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6093	fn create_material(&mut self,material_name:&CapeStringIn) -> Result<crate::CapeObject,COBIAError>;
6094}
6095
6096pub trait ICapeMaterialManagerImpl : ICapeMaterialManager {
6097	type T: ICapeInterfaceImpl+ICapeMaterialManagerImpl;
6098
6099	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6100
6101	///prepare CAPEOPEN_1_2_ICapeMaterialManager interface and return as generic ICapeInterface pointer
6102	fn init_interface() -> crate::C::ICapeInterface {
6103		crate::C::ICapeInterface {
6104			me: std::ptr::null_mut(),
6105			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeMaterialManager_VTable).cast_mut()
6106				as *mut crate::C::ICapeInterface_VTable,
6107		}
6108	}
6109	
6110	fn init<Timpl: ICapeMaterialManagerImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6111		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeMaterialManager =
6112			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeMaterialManager;
6113		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6114		u.add_interface(
6115			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeMaterialManager_UUID),
6116			iface as *mut crate::C::ICapeInterface,
6117		);
6118	}
6119	
6120	extern "C" fn raw_get_material_list(me: *mut std::ffi::c_void,material_name_list:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
6121		if material_name_list.is_null() {
6122			return COBIAERR_NULLPOINTER;
6123		}
6124		let p = me as *mut Self::T;
6125		let myself=unsafe { &mut *p };
6126		if material_name_list.is_null() {
6127			return COBIAERR_NULLPOINTER;
6128		}
6129		let mut material_name_list=unsafe{*((&material_name_list as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6130		let mut material_name_list=CapeArrayStringOut::new(&mut material_name_list);
6131		match myself.get_material_list(&mut material_name_list) {
6132			Ok(_) => COBIAERR_NOERROR,
6133			Err(e) => myself.set_last_error(e,"ICapeMaterialManager::GetMaterialList")
6134		}
6135	}
6136
6137	extern "C" fn raw_create_material(me: *mut std::ffi::c_void,material_name:*mut crate::C::ICapeString,material:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
6138		if material.is_null() {
6139			return COBIAERR_NULLPOINTER;
6140		}
6141		let p = me as *mut Self::T;
6142		let myself=unsafe { &mut *p };
6143		if material.is_null() {
6144			return COBIAERR_NULLPOINTER;
6145		}
6146		let material_name=CapeStringIn::new(&material_name);
6147		match myself.create_material(&material_name) {
6148			Ok(_material) => {
6149				unsafe{*material=_material.detach();}
6150				COBIAERR_NOERROR
6151			},
6152			Err(e) => myself.set_last_error(e,"ICapeMaterialManager::CreateMaterial")
6153		}
6154	}
6155
6156	const VTABLE: C::CAPEOPEN_1_2_ICapeMaterialManager_VTable =
6157		C::CAPEOPEN_1_2_ICapeMaterialManager_VTable {
6158			base: crate::C::ICapeInterface_VTable {
6159				addReference: Some(Self::T::raw_add_reference),
6160				release: Some(Self::T::raw_release),
6161				queryInterface: Some(Self::T::raw_query_interface),
6162				getLastError: Some(Self::T::raw_get_last_error),
6163			},
6164			getMaterialList: Some(Self::T::raw_get_material_list),
6165			CreateMaterial: Some(Self::T::raw_create_material),
6166		};
6167}
6168
6169#[cape_smart_pointer(ICAPEMATERIALMANAGER_UUID)]
6170pub struct CapeMaterialManager {
6171	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeMaterialManager,
6172}
6173
6174impl CapeMaterialManager {
6175
6176	pub fn get_material_list<TypeOfMaterialNameList:CapeArrayStringProviderOut>(&self,material_name_list:&mut TypeOfMaterialNameList) -> Result<(),COBIAError> {
6177		let result_code = unsafe {
6178			((*(*self.interface).vTbl).getMaterialList.unwrap())((*self.interface).me,(&material_name_list.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
6179		};
6180		match result_code {
6181			COBIAERR_NOERROR => {Ok(())},
6182			_ => Err(COBIAError::from_object(result_code,self))
6183		}
6184	}
6185
6186	pub fn create_material<TypeOfMaterialName:CapeStringProviderIn>(&self,material_name:&TypeOfMaterialName) -> Result<crate::CapeObject,COBIAError> {
6187		let mut material: *mut crate::C::ICapeInterface=std::ptr::null_mut();
6188		let result_code = unsafe {
6189			((*(*self.interface).vTbl).CreateMaterial.unwrap())((*self.interface).me,(&material_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut material as *mut *mut crate::C::ICapeInterface)
6190		};
6191		match result_code {
6192			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(material))},
6193			_ => Err(COBIAError::from_object(result_code,self))
6194		}
6195	}
6196
6197}
6198
6199///ICapeCOSEUtilities
6200///
6201///ICapeCOSEUtilities interface
6202///
6203pub trait ICapeCOSEUtilities {
6204	fn get_named_value_list(&mut self,named_values:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6205	fn named_value(&mut self,name:&CapeStringIn,named_value:&mut CapeValueOut) -> Result<(),COBIAError>;
6206}
6207
6208pub trait ICapeCOSEUtilitiesImpl : ICapeCOSEUtilities {
6209	type T: ICapeInterfaceImpl+ICapeCOSEUtilitiesImpl;
6210
6211	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6212
6213	///prepare CAPEOPEN_1_2_ICapeCOSEUtilities interface and return as generic ICapeInterface pointer
6214	fn init_interface() -> crate::C::ICapeInterface {
6215		crate::C::ICapeInterface {
6216			me: std::ptr::null_mut(),
6217			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeCOSEUtilities_VTable).cast_mut()
6218				as *mut crate::C::ICapeInterface_VTable,
6219		}
6220	}
6221	
6222	fn init<Timpl: ICapeCOSEUtilitiesImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6223		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeCOSEUtilities =
6224			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeCOSEUtilities;
6225		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6226		u.add_interface(
6227			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeCOSEUtilities_UUID),
6228			iface as *mut crate::C::ICapeInterface,
6229		);
6230	}
6231	
6232	extern "C" fn raw_get_named_value_list(me: *mut std::ffi::c_void,named_values:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
6233		if named_values.is_null() {
6234			return COBIAERR_NULLPOINTER;
6235		}
6236		let p = me as *mut Self::T;
6237		let myself=unsafe { &mut *p };
6238		if named_values.is_null() {
6239			return COBIAERR_NULLPOINTER;
6240		}
6241		let mut named_values=unsafe{*((&named_values as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6242		let mut named_values=CapeArrayStringOut::new(&mut named_values);
6243		match myself.get_named_value_list(&mut named_values) {
6244			Ok(_) => COBIAERR_NOERROR,
6245			Err(e) => myself.set_last_error(e,"ICapeCOSEUtilities::GetNamedValueList")
6246		}
6247	}
6248
6249	extern "C" fn raw_named_value(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,named_value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
6250		if named_value.is_null() {
6251			return COBIAERR_NULLPOINTER;
6252		}
6253		let p = me as *mut Self::T;
6254		let myself=unsafe { &mut *p };
6255		if named_value.is_null() {
6256			return COBIAERR_NULLPOINTER;
6257		}
6258		let name=CapeStringIn::new(&name);
6259		let mut named_value=unsafe{*((&named_value as *const *mut crate::C::ICapeValue) as *mut *mut crate::C::ICapeValue)};
6260		let mut named_value=CapeValueOut::new(&mut named_value);
6261		match myself.named_value(&name,&mut named_value) {
6262			Ok(_) => COBIAERR_NOERROR,
6263			Err(e) => myself.set_last_error(e,"ICapeCOSEUtilities::NamedValue")
6264		}
6265	}
6266
6267	const VTABLE: C::CAPEOPEN_1_2_ICapeCOSEUtilities_VTable =
6268		C::CAPEOPEN_1_2_ICapeCOSEUtilities_VTable {
6269			base: crate::C::ICapeInterface_VTable {
6270				addReference: Some(Self::T::raw_add_reference),
6271				release: Some(Self::T::raw_release),
6272				queryInterface: Some(Self::T::raw_query_interface),
6273				getLastError: Some(Self::T::raw_get_last_error),
6274			},
6275			getNamedValueList: Some(Self::T::raw_get_named_value_list),
6276			NamedValue: Some(Self::T::raw_named_value),
6277		};
6278}
6279
6280#[cape_smart_pointer(ICAPECOSEUTILITIES_UUID)]
6281pub struct CapeCOSEUtilities {
6282	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeCOSEUtilities,
6283}
6284
6285impl CapeCOSEUtilities {
6286
6287	pub fn get_named_value_list<TypeOfNamedValues:CapeArrayStringProviderOut>(&self,named_values:&mut TypeOfNamedValues) -> Result<(),COBIAError> {
6288		let result_code = unsafe {
6289			((*(*self.interface).vTbl).getNamedValueList.unwrap())((*self.interface).me,(&named_values.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
6290		};
6291		match result_code {
6292			COBIAERR_NOERROR => {Ok(())},
6293			_ => Err(COBIAError::from_object(result_code,self))
6294		}
6295	}
6296
6297	pub fn named_value<TypeOfName:CapeStringProviderIn,TypeOfNamedValue:CapeValueProviderOut>(&self,name:&TypeOfName,named_value:&mut TypeOfNamedValue) -> Result<(),COBIAError> {
6298		let result_code = unsafe {
6299			((*(*self.interface).vTbl).NamedValue.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&named_value.as_cape_value_out() as *const crate::C::ICapeValue).cast_mut())
6300		};
6301		match result_code {
6302			COBIAERR_NOERROR => {Ok(())},
6303			_ => Err(COBIAError::from_object(result_code,self))
6304		}
6305	}
6306
6307}
6308
6309///ICapeThermoMaterial
6310///
6311///ICapeThermoMaterial interface
6312///
6313pub trait ICapeThermoMaterial {
6314	fn clear_all_props(&mut self) -> Result<(),COBIAError>;
6315	fn copy_from_material(&mut self,source:CapeThermoMaterial) -> Result<(),COBIAError>;
6316	fn create_material(&mut self) -> Result<CapeThermoMaterial,COBIAError>;
6317	fn get_overall_prop(&mut self,property:&CapeStringIn,basis:&CapeStringIn,results:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6318	fn get_overall_tpfraction(&mut self,temperature:&mut CapeReal,pressure:&mut CapeReal,composition:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6319	fn get_present_phases(&mut self,phase_labels:&mut CapeArrayStringOut,phase_status:&mut CapeArrayEnumerationOut<CapePhaseStatus>) -> Result<(),COBIAError>;
6320	fn get_single_phase_prop(&mut self,property:&CapeStringIn,phase_label:&CapeStringIn,basis:&CapeStringIn,results:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6321	fn get_tpfraction(&mut self,phase_label:&CapeStringIn,temperature:&mut CapeReal,pressure:&mut CapeReal,composition:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6322	fn get_two_phase_prop(&mut self,property:&CapeStringIn,phase_labels:&CapeArrayStringIn,basis:&CapeStringIn,results:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6323	fn set_overall_prop(&mut self,property:&CapeStringIn,basis:&CapeStringIn,values:&CapeArrayRealIn) -> Result<(),COBIAError>;
6324	fn set_present_phases(&mut self,phase_labels:&CapeArrayStringIn,phase_status:&CapeArrayEnumerationIn<CapePhaseStatus>) -> Result<(),COBIAError>;
6325	fn set_single_phase_prop(&mut self,property:&CapeStringIn,phase_label:&CapeStringIn,basis:&CapeStringIn,values:&CapeArrayRealIn) -> Result<(),COBIAError>;
6326	fn set_two_phase_prop(&mut self,property:&CapeStringIn,phase_labels:&CapeArrayStringIn,basis:&CapeStringIn,values:&CapeArrayRealIn) -> Result<(),COBIAError>;
6327}
6328
6329pub trait ICapeThermoMaterialImpl : ICapeThermoMaterial {
6330	type T: ICapeInterfaceImpl+ICapeThermoMaterialImpl;
6331
6332	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6333
6334	///prepare CAPEOPEN_1_2_ICapeThermoMaterial interface and return as generic ICapeInterface pointer
6335	fn init_interface() -> crate::C::ICapeInterface {
6336		crate::C::ICapeInterface {
6337			me: std::ptr::null_mut(),
6338			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoMaterial_VTable).cast_mut()
6339				as *mut crate::C::ICapeInterface_VTable,
6340		}
6341	}
6342	
6343	fn init<Timpl: ICapeThermoMaterialImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6344		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoMaterial =
6345			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterial;
6346		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6347		u.add_interface(
6348			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoMaterial_UUID),
6349			iface as *mut crate::C::ICapeInterface,
6350		);
6351	}
6352	
6353	extern "C" fn raw_clear_all_props(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
6354		let p = me as *mut Self::T;
6355		let myself=unsafe { &mut *p };
6356		match myself.clear_all_props() {
6357			Ok(_) => COBIAERR_NOERROR,
6358			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::ClearAllProps")
6359		}
6360	}
6361
6362	extern "C" fn raw_copy_from_material(me: *mut std::ffi::c_void,source:*mut C::CAPEOPEN_1_2_ICapeThermoMaterial) -> crate::C::CapeResult {
6363		if source.is_null() {
6364			return COBIAERR_NULLPOINTER;
6365		}
6366		let p = me as *mut Self::T;
6367		let myself=unsafe { &mut *p };
6368		if source.is_null() {
6369			return COBIAERR_NULLPOINTER;
6370		}
6371		let source=CapeThermoMaterial::from_interface_pointer(source);
6372		match myself.copy_from_material(source) {
6373			Ok(_) => COBIAERR_NOERROR,
6374			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::CopyFromMaterial")
6375		}
6376	}
6377
6378	extern "C" fn raw_create_material(me: *mut std::ffi::c_void,material_object:*mut *mut C::CAPEOPEN_1_2_ICapeThermoMaterial) -> crate::C::CapeResult {
6379		if material_object.is_null() {
6380			return COBIAERR_NULLPOINTER;
6381		}
6382		let p = me as *mut Self::T;
6383		let myself=unsafe { &mut *p };
6384		if material_object.is_null() {
6385			return COBIAERR_NULLPOINTER;
6386		}
6387		match myself.create_material() {
6388			Ok(_material_object) => {
6389				unsafe{*material_object=_material_object.detach();}
6390				COBIAERR_NOERROR
6391			},
6392			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::CreateMaterial")
6393		}
6394	}
6395
6396	extern "C" fn raw_get_overall_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,results:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6397		if results.is_null() {
6398			return COBIAERR_NULLPOINTER;
6399		}
6400		let p = me as *mut Self::T;
6401		let myself=unsafe { &mut *p };
6402		if results.is_null() {
6403			return COBIAERR_NULLPOINTER;
6404		}
6405		let property=CapeStringIn::new(&property);
6406		let basis=CapeStringIn::new(&basis);
6407		let mut results=unsafe{*((&results as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6408		let mut results=CapeArrayRealOut::new(&mut results);
6409		match myself.get_overall_prop(&property,&basis,&mut results) {
6410			Ok(_) => COBIAERR_NOERROR,
6411			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetOverallProp")
6412		}
6413	}
6414
6415	extern "C" fn raw_get_overall_t_p_fraction(me: *mut std::ffi::c_void,temperature:*mut CapeReal,pressure:*mut CapeReal,composition:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6416		if temperature.is_null()||pressure.is_null()||composition.is_null() {
6417			return COBIAERR_NULLPOINTER;
6418		}
6419		let p = me as *mut Self::T;
6420		let myself=unsafe { &mut *p };
6421		if composition.is_null() {
6422			return COBIAERR_NULLPOINTER;
6423		}
6424		let mut _temperature:CapeReal=0.0;
6425		let mut _pressure:CapeReal=0.0;
6426		let mut composition=unsafe{*((&composition as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6427		let mut composition=CapeArrayRealOut::new(&mut composition);
6428		match myself.get_overall_tpfraction(&mut _temperature,&mut _pressure,&mut composition) {
6429			Ok(_) => {
6430				unsafe{*temperature=_temperature;}
6431				unsafe{*pressure=_pressure;}
6432				COBIAERR_NOERROR
6433			},
6434			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetOverallTPFraction")
6435		}
6436	}
6437
6438	extern "C" fn raw_get_present_phases(me: *mut std::ffi::c_void,phase_labels:*mut crate::C::ICapeArrayString,phase_status:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
6439		if phase_labels.is_null()||phase_status.is_null() {
6440			return COBIAERR_NULLPOINTER;
6441		}
6442		let p = me as *mut Self::T;
6443		let myself=unsafe { &mut *p };
6444		if phase_labels.is_null()||phase_status.is_null() {
6445			return COBIAERR_NULLPOINTER;
6446		}
6447		let mut phase_labels=unsafe{*((&phase_labels as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6448		let mut phase_labels=CapeArrayStringOut::new(&mut phase_labels);
6449		let mut phase_status=unsafe{*((&phase_status as *const *mut crate::C::ICapeArrayEnumeration) as *mut *mut crate::C::ICapeArrayEnumeration)};
6450		let mut phase_status=CapeArrayEnumerationOut::<CapePhaseStatus>::new(&mut phase_status);
6451		match myself.get_present_phases(&mut phase_labels,&mut phase_status) {
6452			Ok(_) => COBIAERR_NOERROR,
6453			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetPresentPhases")
6454		}
6455	}
6456
6457	extern "C" fn raw_get_single_phase_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_label:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,results:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6458		if results.is_null() {
6459			return COBIAERR_NULLPOINTER;
6460		}
6461		let p = me as *mut Self::T;
6462		let myself=unsafe { &mut *p };
6463		if results.is_null() {
6464			return COBIAERR_NULLPOINTER;
6465		}
6466		let property=CapeStringIn::new(&property);
6467		let phase_label=CapeStringIn::new(&phase_label);
6468		let basis=CapeStringIn::new(&basis);
6469		let mut results=unsafe{*((&results as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6470		let mut results=CapeArrayRealOut::new(&mut results);
6471		match myself.get_single_phase_prop(&property,&phase_label,&basis,&mut results) {
6472			Ok(_) => COBIAERR_NOERROR,
6473			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetSinglePhaseProp")
6474		}
6475	}
6476
6477	extern "C" fn raw_get_t_p_fraction(me: *mut std::ffi::c_void,phase_label:*mut crate::C::ICapeString,temperature:*mut CapeReal,pressure:*mut CapeReal,composition:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6478		if temperature.is_null()||pressure.is_null()||composition.is_null() {
6479			return COBIAERR_NULLPOINTER;
6480		}
6481		let p = me as *mut Self::T;
6482		let myself=unsafe { &mut *p };
6483		if composition.is_null() {
6484			return COBIAERR_NULLPOINTER;
6485		}
6486		let phase_label=CapeStringIn::new(&phase_label);
6487		let mut _temperature:CapeReal=0.0;
6488		let mut _pressure:CapeReal=0.0;
6489		let mut composition=unsafe{*((&composition as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6490		let mut composition=CapeArrayRealOut::new(&mut composition);
6491		match myself.get_tpfraction(&phase_label,&mut _temperature,&mut _pressure,&mut composition) {
6492			Ok(_) => {
6493				unsafe{*temperature=_temperature;}
6494				unsafe{*pressure=_pressure;}
6495				COBIAERR_NOERROR
6496			},
6497			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetTPFraction")
6498		}
6499	}
6500
6501	extern "C" fn raw_get_two_phase_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_labels:*mut crate::C::ICapeArrayString,basis:*mut crate::C::ICapeString,results:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6502		if results.is_null() {
6503			return COBIAERR_NULLPOINTER;
6504		}
6505		let p = me as *mut Self::T;
6506		let myself=unsafe { &mut *p };
6507		if results.is_null() {
6508			return COBIAERR_NULLPOINTER;
6509		}
6510		let property=CapeStringIn::new(&property);
6511		let phase_labels=CapeArrayStringIn::new(&phase_labels);
6512		let basis=CapeStringIn::new(&basis);
6513		let mut results=unsafe{*((&results as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6514		let mut results=CapeArrayRealOut::new(&mut results);
6515		match myself.get_two_phase_prop(&property,&phase_labels,&basis,&mut results) {
6516			Ok(_) => COBIAERR_NOERROR,
6517			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::GetTwoPhaseProp")
6518		}
6519	}
6520
6521	extern "C" fn raw_set_overall_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,values:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6522		let p = me as *mut Self::T;
6523		let myself=unsafe { &mut *p };
6524		let property=CapeStringIn::new(&property);
6525		let basis=CapeStringIn::new(&basis);
6526		let values=CapeArrayRealIn::new(&values);
6527		match myself.set_overall_prop(&property,&basis,&values) {
6528			Ok(_) => COBIAERR_NOERROR,
6529			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::SetOverallProp")
6530		}
6531	}
6532
6533	extern "C" fn raw_set_present_phases(me: *mut std::ffi::c_void,phase_labels:*mut crate::C::ICapeArrayString,phase_status:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
6534		let p = me as *mut Self::T;
6535		let myself=unsafe { &mut *p };
6536		let phase_labels=CapeArrayStringIn::new(&phase_labels);
6537		let phase_status=CapeArrayEnumerationIn::<CapePhaseStatus>::new(&phase_status);
6538		match myself.set_present_phases(&phase_labels,&phase_status) {
6539			Ok(_) => COBIAERR_NOERROR,
6540			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::SetPresentPhases")
6541		}
6542	}
6543
6544	extern "C" fn raw_set_single_phase_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_label:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,values:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6545		let p = me as *mut Self::T;
6546		let myself=unsafe { &mut *p };
6547		let property=CapeStringIn::new(&property);
6548		let phase_label=CapeStringIn::new(&phase_label);
6549		let basis=CapeStringIn::new(&basis);
6550		let values=CapeArrayRealIn::new(&values);
6551		match myself.set_single_phase_prop(&property,&phase_label,&basis,&values) {
6552			Ok(_) => COBIAERR_NOERROR,
6553			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::SetSinglePhaseProp")
6554		}
6555	}
6556
6557	extern "C" fn raw_set_two_phase_prop(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_labels:*mut crate::C::ICapeArrayString,basis:*mut crate::C::ICapeString,values:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6558		let p = me as *mut Self::T;
6559		let myself=unsafe { &mut *p };
6560		let property=CapeStringIn::new(&property);
6561		let phase_labels=CapeArrayStringIn::new(&phase_labels);
6562		let basis=CapeStringIn::new(&basis);
6563		let values=CapeArrayRealIn::new(&values);
6564		match myself.set_two_phase_prop(&property,&phase_labels,&basis,&values) {
6565			Ok(_) => COBIAERR_NOERROR,
6566			Err(e) => myself.set_last_error(e,"ICapeThermoMaterial::SetTwoPhaseProp")
6567		}
6568	}
6569
6570	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoMaterial_VTable =
6571		C::CAPEOPEN_1_2_ICapeThermoMaterial_VTable {
6572			base: crate::C::ICapeInterface_VTable {
6573				addReference: Some(Self::T::raw_add_reference),
6574				release: Some(Self::T::raw_release),
6575				queryInterface: Some(Self::T::raw_query_interface),
6576				getLastError: Some(Self::T::raw_get_last_error),
6577			},
6578			ClearAllProps: Some(Self::T::raw_clear_all_props),
6579			CopyFromMaterial: Some(Self::T::raw_copy_from_material),
6580			CreateMaterial: Some(Self::T::raw_create_material),
6581			GetOverallProp: Some(Self::T::raw_get_overall_prop),
6582			GetOverallTPFraction: Some(Self::T::raw_get_overall_t_p_fraction),
6583			GetPresentPhases: Some(Self::T::raw_get_present_phases),
6584			GetSinglePhaseProp: Some(Self::T::raw_get_single_phase_prop),
6585			GetTPFraction: Some(Self::T::raw_get_t_p_fraction),
6586			GetTwoPhaseProp: Some(Self::T::raw_get_two_phase_prop),
6587			SetOverallProp: Some(Self::T::raw_set_overall_prop),
6588			SetPresentPhases: Some(Self::T::raw_set_present_phases),
6589			SetSinglePhaseProp: Some(Self::T::raw_set_single_phase_prop),
6590			SetTwoPhaseProp: Some(Self::T::raw_set_two_phase_prop),
6591		};
6592}
6593
6594#[cape_smart_pointer(ICAPETHERMOMATERIAL_UUID)]
6595pub struct CapeThermoMaterial {
6596	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoMaterial,
6597}
6598
6599impl CapeThermoMaterial {
6600
6601	pub fn clear_all_props(&self) -> Result<(),COBIAError> {
6602		let result_code = unsafe {
6603			((*(*self.interface).vTbl).ClearAllProps.unwrap())((*self.interface).me)
6604		};
6605		match result_code {
6606			COBIAERR_NOERROR => {Ok(())},
6607			_ => Err(COBIAError::from_object(result_code,self))
6608		}
6609	}
6610
6611	pub fn copy_from_material(&self,source:&CapeThermoMaterial) -> Result<(),COBIAError> {
6612		let result_code = unsafe {
6613			((*(*self.interface).vTbl).CopyFromMaterial.unwrap())((*self.interface).me,source.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterial)
6614		};
6615		match result_code {
6616			COBIAERR_NOERROR => {Ok(())},
6617			_ => Err(COBIAError::from_object(result_code,self))
6618		}
6619	}
6620
6621	pub fn create_material(&self) -> Result<CapeThermoMaterial,COBIAError> {
6622		let mut material_object: *mut C::CAPEOPEN_1_2_ICapeThermoMaterial=std::ptr::null_mut();
6623		let result_code = unsafe {
6624			((*(*self.interface).vTbl).CreateMaterial.unwrap())((*self.interface).me,&mut material_object as *mut *mut C::CAPEOPEN_1_2_ICapeThermoMaterial)
6625		};
6626		match result_code {
6627			COBIAERR_NOERROR => {Ok(CapeThermoMaterial::attach(material_object))},
6628			_ => Err(COBIAError::from_object(result_code,self))
6629		}
6630	}
6631
6632	pub fn get_overall_prop<TypeOfProperty:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfResults:CapeArrayRealProviderOut>(&self,property:&TypeOfProperty,basis:&TypeOfBasis,results:&mut TypeOfResults) -> Result<(),COBIAError> {
6633		let result_code = unsafe {
6634			((*(*self.interface).vTbl).GetOverallProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&results.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
6635		};
6636		match result_code {
6637			COBIAERR_NOERROR => {Ok(())},
6638			_ => Err(COBIAError::from_object(result_code,self))
6639		}
6640	}
6641
6642	pub fn get_overall_tpfraction<TypeOfComposition:CapeArrayRealProviderOut>(&self,temperature:&mut CapeReal,pressure:&mut CapeReal,composition:&mut TypeOfComposition) -> Result<(),COBIAError> {
6643		let result_code = unsafe {
6644			((*(*self.interface).vTbl).GetOverallTPFraction.unwrap())((*self.interface).me,temperature as *mut CapeReal,pressure as *mut CapeReal,(&composition.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
6645		};
6646		match result_code {
6647			COBIAERR_NOERROR => {Ok(())},
6648			_ => Err(COBIAError::from_object(result_code,self))
6649		}
6650	}
6651
6652	pub fn get_present_phases<TypeOfPhaseLabels:CapeArrayStringProviderOut,TypeOfPhaseStatus:CapeArrayEnumerationProviderOut>(&self,phase_labels:&mut TypeOfPhaseLabels,phase_status:&mut TypeOfPhaseStatus) -> Result<(),COBIAError> {
6653		let result_code = unsafe {
6654			((*(*self.interface).vTbl).GetPresentPhases.unwrap())((*self.interface).me,(&phase_labels.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&phase_status.as_cape_array_enumeration_out() as *const crate::C::ICapeArrayEnumeration).cast_mut())
6655		};
6656		match result_code {
6657			COBIAERR_NOERROR => {Ok(())},
6658			_ => Err(COBIAError::from_object(result_code,self))
6659		}
6660	}
6661
6662	pub fn get_single_phase_prop<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabel:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfResults:CapeArrayRealProviderOut>(&self,property:&TypeOfProperty,phase_label:&TypeOfPhaseLabel,basis:&TypeOfBasis,results:&mut TypeOfResults) -> Result<(),COBIAError> {
6663		let result_code = unsafe {
6664			((*(*self.interface).vTbl).GetSinglePhaseProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&results.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
6665		};
6666		match result_code {
6667			COBIAERR_NOERROR => {Ok(())},
6668			_ => Err(COBIAError::from_object(result_code,self))
6669		}
6670	}
6671
6672	pub fn get_tpfraction<TypeOfPhaseLabel:CapeStringProviderIn,TypeOfComposition:CapeArrayRealProviderOut>(&self,phase_label:&TypeOfPhaseLabel,temperature:&mut CapeReal,pressure:&mut CapeReal,composition:&mut TypeOfComposition) -> Result<(),COBIAError> {
6673		let result_code = unsafe {
6674			((*(*self.interface).vTbl).GetTPFraction.unwrap())((*self.interface).me,(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),temperature as *mut CapeReal,pressure as *mut CapeReal,(&composition.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
6675		};
6676		match result_code {
6677			COBIAERR_NOERROR => {Ok(())},
6678			_ => Err(COBIAError::from_object(result_code,self))
6679		}
6680	}
6681
6682	pub fn get_two_phase_prop<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabels:CapeArrayStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfResults:CapeArrayRealProviderOut>(&self,property:&TypeOfProperty,phase_labels:&TypeOfPhaseLabels,basis:&TypeOfBasis,results:&mut TypeOfResults) -> Result<(),COBIAError> {
6683		let result_code = unsafe {
6684			((*(*self.interface).vTbl).GetTwoPhaseProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_labels.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&results.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
6685		};
6686		match result_code {
6687			COBIAERR_NOERROR => {Ok(())},
6688			_ => Err(COBIAError::from_object(result_code,self))
6689		}
6690	}
6691
6692	pub fn set_overall_prop<TypeOfProperty:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfValues:CapeArrayRealProviderIn>(&self,property:&TypeOfProperty,basis:&TypeOfBasis,values:&TypeOfValues) -> Result<(),COBIAError> {
6693		let result_code = unsafe {
6694			((*(*self.interface).vTbl).SetOverallProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&values.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
6695		};
6696		match result_code {
6697			COBIAERR_NOERROR => {Ok(())},
6698			_ => Err(COBIAError::from_object(result_code,self))
6699		}
6700	}
6701
6702	pub fn set_present_phases<TypeOfPhaseLabels:CapeArrayStringProviderIn,TypeOfPhaseStatus:CapeArrayEnumerationProviderIn>(&self,phase_labels:&TypeOfPhaseLabels,phase_status:&TypeOfPhaseStatus) -> Result<(),COBIAError> {
6703		let result_code = unsafe {
6704			((*(*self.interface).vTbl).SetPresentPhases.unwrap())((*self.interface).me,(&phase_labels.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&phase_status.as_cape_array_enumeration_in() as *const crate::C::ICapeArrayEnumeration).cast_mut())
6705		};
6706		match result_code {
6707			COBIAERR_NOERROR => {Ok(())},
6708			_ => Err(COBIAError::from_object(result_code,self))
6709		}
6710	}
6711
6712	pub fn set_single_phase_prop<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabel:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfValues:CapeArrayRealProviderIn>(&self,property:&TypeOfProperty,phase_label:&TypeOfPhaseLabel,basis:&TypeOfBasis,values:&TypeOfValues) -> Result<(),COBIAError> {
6713		let result_code = unsafe {
6714			((*(*self.interface).vTbl).SetSinglePhaseProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&values.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
6715		};
6716		match result_code {
6717			COBIAERR_NOERROR => {Ok(())},
6718			_ => Err(COBIAError::from_object(result_code,self))
6719		}
6720	}
6721
6722	pub fn set_two_phase_prop<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabels:CapeArrayStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfValues:CapeArrayRealProviderIn>(&self,property:&TypeOfProperty,phase_labels:&TypeOfPhaseLabels,basis:&TypeOfBasis,values:&TypeOfValues) -> Result<(),COBIAError> {
6723		let result_code = unsafe {
6724			((*(*self.interface).vTbl).SetTwoPhaseProp.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_labels.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&values.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
6725		};
6726		match result_code {
6727			COBIAERR_NOERROR => {Ok(())},
6728			_ => Err(COBIAError::from_object(result_code,self))
6729		}
6730	}
6731
6732}
6733
6734///ICapeThermoMaterialContext
6735///
6736///ICapeThermoMaterialContext interface
6737///
6738pub trait ICapeThermoMaterialContext {
6739	fn set_material(&mut self,material:CapeThermoMaterial) -> Result<(),COBIAError>;
6740	fn unset_material(&mut self) -> Result<(),COBIAError>;
6741}
6742
6743pub trait ICapeThermoMaterialContextImpl : ICapeThermoMaterialContext {
6744	type T: ICapeInterfaceImpl+ICapeThermoMaterialContextImpl;
6745
6746	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6747
6748	///prepare CAPEOPEN_1_2_ICapeThermoMaterialContext interface and return as generic ICapeInterface pointer
6749	fn init_interface() -> crate::C::ICapeInterface {
6750		crate::C::ICapeInterface {
6751			me: std::ptr::null_mut(),
6752			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoMaterialContext_VTable).cast_mut()
6753				as *mut crate::C::ICapeInterface_VTable,
6754		}
6755	}
6756	
6757	fn init<Timpl: ICapeThermoMaterialContextImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6758		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoMaterialContext =
6759			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterialContext;
6760		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6761		u.add_interface(
6762			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoMaterialContext_UUID),
6763			iface as *mut crate::C::ICapeInterface,
6764		);
6765	}
6766	
6767	extern "C" fn raw_set_material(me: *mut std::ffi::c_void,material:*mut C::CAPEOPEN_1_2_ICapeThermoMaterial) -> crate::C::CapeResult {
6768		if material.is_null() {
6769			return COBIAERR_NULLPOINTER;
6770		}
6771		let p = me as *mut Self::T;
6772		let myself=unsafe { &mut *p };
6773		if material.is_null() {
6774			return COBIAERR_NULLPOINTER;
6775		}
6776		let material=CapeThermoMaterial::from_interface_pointer(material);
6777		match myself.set_material(material) {
6778			Ok(_) => COBIAERR_NOERROR,
6779			Err(e) => myself.set_last_error(e,"ICapeThermoMaterialContext::SetMaterial")
6780		}
6781	}
6782
6783	extern "C" fn raw_unset_material(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
6784		let p = me as *mut Self::T;
6785		let myself=unsafe { &mut *p };
6786		match myself.unset_material() {
6787			Ok(_) => COBIAERR_NOERROR,
6788			Err(e) => myself.set_last_error(e,"ICapeThermoMaterialContext::UnsetMaterial")
6789		}
6790	}
6791
6792	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoMaterialContext_VTable =
6793		C::CAPEOPEN_1_2_ICapeThermoMaterialContext_VTable {
6794			base: crate::C::ICapeInterface_VTable {
6795				addReference: Some(Self::T::raw_add_reference),
6796				release: Some(Self::T::raw_release),
6797				queryInterface: Some(Self::T::raw_query_interface),
6798				getLastError: Some(Self::T::raw_get_last_error),
6799			},
6800			SetMaterial: Some(Self::T::raw_set_material),
6801			UnsetMaterial: Some(Self::T::raw_unset_material),
6802		};
6803}
6804
6805#[cape_smart_pointer(ICAPETHERMOMATERIALCONTEXT_UUID)]
6806pub struct CapeThermoMaterialContext {
6807	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoMaterialContext,
6808}
6809
6810impl CapeThermoMaterialContext {
6811
6812	pub fn set_material(&self,material:&CapeThermoMaterial) -> Result<(),COBIAError> {
6813		let result_code = unsafe {
6814			((*(*self.interface).vTbl).SetMaterial.unwrap())((*self.interface).me,material.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterial)
6815		};
6816		match result_code {
6817			COBIAERR_NOERROR => {Ok(())},
6818			_ => Err(COBIAError::from_object(result_code,self))
6819		}
6820	}
6821
6822	pub fn unset_material(&self) -> Result<(),COBIAError> {
6823		let result_code = unsafe {
6824			((*(*self.interface).vTbl).UnsetMaterial.unwrap())((*self.interface).me)
6825		};
6826		match result_code {
6827			COBIAERR_NOERROR => {Ok(())},
6828			_ => Err(COBIAError::from_object(result_code,self))
6829		}
6830	}
6831
6832}
6833
6834///ICapeThermoCompounds
6835///
6836///ICapeThermoCompounds interface
6837///
6838pub trait ICapeThermoCompounds {
6839	fn get_compound_constant(&mut self,props:&CapeArrayStringIn,comp_ids:&CapeArrayStringIn,contains_missing_values:&mut CapeBoolean,prop_vals:&mut CapeArrayValueOut) -> Result<(),COBIAError>;
6840	fn get_compound_list(&mut self,comp_ids:&mut CapeArrayStringOut,formulae:&mut CapeArrayStringOut,names:&mut CapeArrayStringOut,boil_temps:&mut CapeArrayRealOut,molwts:&mut CapeArrayRealOut,casnos:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6841	fn get_const_prop_list(&mut self,props:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6842	fn get_num_compounds(&mut self) -> Result<CapeInteger,COBIAError>;
6843	fn get_pdependent_property(&mut self,props:&CapeArrayStringIn,pressure:CapeReal,comp_ids:&CapeArrayStringIn,contains_missing_values:&mut CapeBoolean,prop_vals:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6844	fn get_pdependent_prop_list(&mut self,props:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6845	fn get_tdependent_property(&mut self,props:&CapeArrayStringIn,temperature:CapeReal,comp_ids:&CapeArrayStringIn,contains_missing_values:&mut CapeBoolean,prop_vals:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
6846	fn get_tdependent_prop_list(&mut self,props:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
6847}
6848
6849pub trait ICapeThermoCompoundsImpl : ICapeThermoCompounds {
6850	type T: ICapeInterfaceImpl+ICapeThermoCompoundsImpl;
6851
6852	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
6853
6854	///prepare CAPEOPEN_1_2_ICapeThermoCompounds interface and return as generic ICapeInterface pointer
6855	fn init_interface() -> crate::C::ICapeInterface {
6856		crate::C::ICapeInterface {
6857			me: std::ptr::null_mut(),
6858			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoCompounds_VTable).cast_mut()
6859				as *mut crate::C::ICapeInterface_VTable,
6860		}
6861	}
6862	
6863	fn init<Timpl: ICapeThermoCompoundsImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
6864		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoCompounds =
6865			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoCompounds;
6866		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
6867		u.add_interface(
6868			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoCompounds_UUID),
6869			iface as *mut crate::C::ICapeInterface,
6870		);
6871	}
6872	
6873	extern "C" fn raw_get_compound_constant(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString,comp_ids:*mut crate::C::ICapeArrayString,contains_missing_values:*mut CapeBoolean,prop_vals:*mut crate::C::ICapeArrayValue) -> crate::C::CapeResult {
6874		if contains_missing_values.is_null()||prop_vals.is_null() {
6875			return COBIAERR_NULLPOINTER;
6876		}
6877		let p = me as *mut Self::T;
6878		let myself=unsafe { &mut *p };
6879		if prop_vals.is_null() {
6880			return COBIAERR_NULLPOINTER;
6881		}
6882		let props=CapeArrayStringIn::new(&props);
6883		let comp_ids=CapeArrayStringIn::new(&comp_ids);
6884		let mut _contains_missing_values:CapeBoolean=false as CapeBoolean;
6885		let mut prop_vals=unsafe{*((&prop_vals as *const *mut crate::C::ICapeArrayValue) as *mut *mut crate::C::ICapeArrayValue)};
6886		let mut prop_vals=CapeArrayValueOut::new(&mut prop_vals);
6887		match myself.get_compound_constant(&props,&comp_ids,&mut _contains_missing_values,&mut prop_vals) {
6888			Ok(_) => {
6889				unsafe{*contains_missing_values=_contains_missing_values;}
6890				COBIAERR_NOERROR
6891			},
6892			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetCompoundConstant")
6893		}
6894	}
6895
6896	extern "C" fn raw_get_compound_list(me: *mut std::ffi::c_void,comp_ids:*mut crate::C::ICapeArrayString,formulae:*mut crate::C::ICapeArrayString,names:*mut crate::C::ICapeArrayString,boil_temps:*mut crate::C::ICapeArrayReal,molwts:*mut crate::C::ICapeArrayReal,casnos:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
6897		if comp_ids.is_null()||formulae.is_null()||names.is_null()||boil_temps.is_null()||molwts.is_null()||casnos.is_null() {
6898			return COBIAERR_NULLPOINTER;
6899		}
6900		let p = me as *mut Self::T;
6901		let myself=unsafe { &mut *p };
6902		if comp_ids.is_null()||formulae.is_null()||names.is_null()||boil_temps.is_null()||molwts.is_null()||casnos.is_null() {
6903			return COBIAERR_NULLPOINTER;
6904		}
6905		let mut comp_ids=unsafe{*((&comp_ids as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6906		let mut comp_ids=CapeArrayStringOut::new(&mut comp_ids);
6907		let mut formulae=unsafe{*((&formulae as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6908		let mut formulae=CapeArrayStringOut::new(&mut formulae);
6909		let mut names=unsafe{*((&names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6910		let mut names=CapeArrayStringOut::new(&mut names);
6911		let mut boil_temps=unsafe{*((&boil_temps as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6912		let mut boil_temps=CapeArrayRealOut::new(&mut boil_temps);
6913		let mut molwts=unsafe{*((&molwts as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6914		let mut molwts=CapeArrayRealOut::new(&mut molwts);
6915		let mut casnos=unsafe{*((&casnos as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6916		let mut casnos=CapeArrayStringOut::new(&mut casnos);
6917		match myself.get_compound_list(&mut comp_ids,&mut formulae,&mut names,&mut boil_temps,&mut molwts,&mut casnos) {
6918			Ok(_) => COBIAERR_NOERROR,
6919			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetCompoundList")
6920		}
6921	}
6922
6923	extern "C" fn raw_get_const_prop_list(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
6924		if props.is_null() {
6925			return COBIAERR_NULLPOINTER;
6926		}
6927		let p = me as *mut Self::T;
6928		let myself=unsafe { &mut *p };
6929		if props.is_null() {
6930			return COBIAERR_NULLPOINTER;
6931		}
6932		let mut props=unsafe{*((&props as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6933		let mut props=CapeArrayStringOut::new(&mut props);
6934		match myself.get_const_prop_list(&mut props) {
6935			Ok(_) => COBIAERR_NOERROR,
6936			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetConstPropList")
6937		}
6938	}
6939
6940	extern "C" fn raw_get_num_compounds(me: *mut std::ffi::c_void,num:*mut CapeInteger) -> crate::C::CapeResult {
6941		if num.is_null() {
6942			return COBIAERR_NULLPOINTER;
6943		}
6944		let p = me as *mut Self::T;
6945		let myself=unsafe { &mut *p };
6946		match myself.get_num_compounds() {
6947			Ok(_num) => {
6948				unsafe{*num=_num;}
6949				COBIAERR_NOERROR
6950			},
6951			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetNumCompounds")
6952		}
6953	}
6954
6955	extern "C" fn raw_get_p_dependent_property(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString,pressure:CapeReal,comp_ids:*mut crate::C::ICapeArrayString,contains_missing_values:*mut CapeBoolean,prop_vals:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6956		if contains_missing_values.is_null()||prop_vals.is_null() {
6957			return COBIAERR_NULLPOINTER;
6958		}
6959		let p = me as *mut Self::T;
6960		let myself=unsafe { &mut *p };
6961		if prop_vals.is_null() {
6962			return COBIAERR_NULLPOINTER;
6963		}
6964		let props=CapeArrayStringIn::new(&props);
6965		let comp_ids=CapeArrayStringIn::new(&comp_ids);
6966		let mut _contains_missing_values:CapeBoolean=false as CapeBoolean;
6967		let mut prop_vals=unsafe{*((&prop_vals as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
6968		let mut prop_vals=CapeArrayRealOut::new(&mut prop_vals);
6969		match myself.get_pdependent_property(&props,pressure,&comp_ids,&mut _contains_missing_values,&mut prop_vals) {
6970			Ok(_) => {
6971				unsafe{*contains_missing_values=_contains_missing_values;}
6972				COBIAERR_NOERROR
6973			},
6974			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetPDependentProperty")
6975		}
6976	}
6977
6978	extern "C" fn raw_get_p_dependent_prop_list(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
6979		if props.is_null() {
6980			return COBIAERR_NULLPOINTER;
6981		}
6982		let p = me as *mut Self::T;
6983		let myself=unsafe { &mut *p };
6984		if props.is_null() {
6985			return COBIAERR_NULLPOINTER;
6986		}
6987		let mut props=unsafe{*((&props as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
6988		let mut props=CapeArrayStringOut::new(&mut props);
6989		match myself.get_pdependent_prop_list(&mut props) {
6990			Ok(_) => COBIAERR_NOERROR,
6991			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetPDependentPropList")
6992		}
6993	}
6994
6995	extern "C" fn raw_get_t_dependent_property(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString,temperature:CapeReal,comp_ids:*mut crate::C::ICapeArrayString,contains_missing_values:*mut CapeBoolean,prop_vals:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
6996		if contains_missing_values.is_null()||prop_vals.is_null() {
6997			return COBIAERR_NULLPOINTER;
6998		}
6999		let p = me as *mut Self::T;
7000		let myself=unsafe { &mut *p };
7001		if prop_vals.is_null() {
7002			return COBIAERR_NULLPOINTER;
7003		}
7004		let props=CapeArrayStringIn::new(&props);
7005		let comp_ids=CapeArrayStringIn::new(&comp_ids);
7006		let mut _contains_missing_values:CapeBoolean=false as CapeBoolean;
7007		let mut prop_vals=unsafe{*((&prop_vals as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
7008		let mut prop_vals=CapeArrayRealOut::new(&mut prop_vals);
7009		match myself.get_tdependent_property(&props,temperature,&comp_ids,&mut _contains_missing_values,&mut prop_vals) {
7010			Ok(_) => {
7011				unsafe{*contains_missing_values=_contains_missing_values;}
7012				COBIAERR_NOERROR
7013			},
7014			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetTDependentProperty")
7015		}
7016	}
7017
7018	extern "C" fn raw_get_t_dependent_prop_list(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7019		if props.is_null() {
7020			return COBIAERR_NULLPOINTER;
7021		}
7022		let p = me as *mut Self::T;
7023		let myself=unsafe { &mut *p };
7024		if props.is_null() {
7025			return COBIAERR_NULLPOINTER;
7026		}
7027		let mut props=unsafe{*((&props as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7028		let mut props=CapeArrayStringOut::new(&mut props);
7029		match myself.get_tdependent_prop_list(&mut props) {
7030			Ok(_) => COBIAERR_NOERROR,
7031			Err(e) => myself.set_last_error(e,"ICapeThermoCompounds::GetTDependentPropList")
7032		}
7033	}
7034
7035	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoCompounds_VTable =
7036		C::CAPEOPEN_1_2_ICapeThermoCompounds_VTable {
7037			base: crate::C::ICapeInterface_VTable {
7038				addReference: Some(Self::T::raw_add_reference),
7039				release: Some(Self::T::raw_release),
7040				queryInterface: Some(Self::T::raw_query_interface),
7041				getLastError: Some(Self::T::raw_get_last_error),
7042			},
7043			GetCompoundConstant: Some(Self::T::raw_get_compound_constant),
7044			GetCompoundList: Some(Self::T::raw_get_compound_list),
7045			getConstPropList: Some(Self::T::raw_get_const_prop_list),
7046			getNumCompounds: Some(Self::T::raw_get_num_compounds),
7047			GetPDependentProperty: Some(Self::T::raw_get_p_dependent_property),
7048			getPDependentPropList: Some(Self::T::raw_get_p_dependent_prop_list),
7049			GetTDependentProperty: Some(Self::T::raw_get_t_dependent_property),
7050			getTDependentPropList: Some(Self::T::raw_get_t_dependent_prop_list),
7051		};
7052}
7053
7054#[cape_smart_pointer(ICAPETHERMOCOMPOUNDS_UUID)]
7055pub struct CapeThermoCompounds {
7056	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoCompounds,
7057}
7058
7059impl CapeThermoCompounds {
7060
7061	pub fn get_compound_constant<TypeOfProps:CapeArrayStringProviderIn,TypeOfCompIds:CapeArrayStringProviderIn,TypeOfPropVals:CapeArrayValueProviderOut>(&self,props:&TypeOfProps,comp_ids:&TypeOfCompIds,contains_missing_values:&mut CapeBoolean,prop_vals:&mut TypeOfPropVals) -> Result<(),COBIAError> {
7062		let result_code = unsafe {
7063			((*(*self.interface).vTbl).GetCompoundConstant.unwrap())((*self.interface).me,(&props.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&comp_ids.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),contains_missing_values as *mut CapeBoolean,(&prop_vals.as_cape_array_value_out() as *const crate::C::ICapeArrayValue).cast_mut())
7064		};
7065		match result_code {
7066			COBIAERR_NOERROR => {Ok(())},
7067			_ => Err(COBIAError::from_object(result_code,self))
7068		}
7069	}
7070
7071	pub fn get_compound_list<TypeOfCompIds:CapeArrayStringProviderOut,TypeOfFormulae:CapeArrayStringProviderOut,TypeOfNames:CapeArrayStringProviderOut,TypeOfBoilTemps:CapeArrayRealProviderOut,TypeOfMolwts:CapeArrayRealProviderOut,TypeOfCasnos:CapeArrayStringProviderOut>(&self,comp_ids:&mut TypeOfCompIds,formulae:&mut TypeOfFormulae,names:&mut TypeOfNames,boil_temps:&mut TypeOfBoilTemps,molwts:&mut TypeOfMolwts,casnos:&mut TypeOfCasnos) -> Result<(),COBIAError> {
7072		let result_code = unsafe {
7073			((*(*self.interface).vTbl).GetCompoundList.unwrap())((*self.interface).me,(&comp_ids.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&formulae.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&boil_temps.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut(),(&molwts.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut(),(&casnos.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7074		};
7075		match result_code {
7076			COBIAERR_NOERROR => {Ok(())},
7077			_ => Err(COBIAError::from_object(result_code,self))
7078		}
7079	}
7080
7081	pub fn get_const_prop_list<TypeOfProps:CapeArrayStringProviderOut>(&self,props:&mut TypeOfProps) -> Result<(),COBIAError> {
7082		let result_code = unsafe {
7083			((*(*self.interface).vTbl).getConstPropList.unwrap())((*self.interface).me,(&props.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7084		};
7085		match result_code {
7086			COBIAERR_NOERROR => {Ok(())},
7087			_ => Err(COBIAError::from_object(result_code,self))
7088		}
7089	}
7090
7091	pub fn get_num_compounds(&self) -> Result<CapeInteger,COBIAError> {
7092		let mut num:CapeInteger=0;
7093		let result_code = unsafe {
7094			((*(*self.interface).vTbl).getNumCompounds.unwrap())((*self.interface).me,&mut num as *mut CapeInteger)
7095		};
7096		match result_code {
7097			COBIAERR_NOERROR => {Ok(num)},
7098			_ => Err(COBIAError::from_object(result_code,self))
7099		}
7100	}
7101
7102	pub fn get_pdependent_property<TypeOfProps:CapeArrayStringProviderIn,TypeOfCompIds:CapeArrayStringProviderIn,TypeOfPropVals:CapeArrayRealProviderOut>(&self,props:&TypeOfProps,pressure:CapeReal,comp_ids:&TypeOfCompIds,contains_missing_values:&mut CapeBoolean,prop_vals:&mut TypeOfPropVals) -> Result<(),COBIAError> {
7103		let result_code = unsafe {
7104			((*(*self.interface).vTbl).GetPDependentProperty.unwrap())((*self.interface).me,(&props.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),pressure,(&comp_ids.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),contains_missing_values as *mut CapeBoolean,(&prop_vals.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
7105		};
7106		match result_code {
7107			COBIAERR_NOERROR => {Ok(())},
7108			_ => Err(COBIAError::from_object(result_code,self))
7109		}
7110	}
7111
7112	pub fn get_pdependent_prop_list<TypeOfProps:CapeArrayStringProviderOut>(&self,props:&mut TypeOfProps) -> Result<(),COBIAError> {
7113		let result_code = unsafe {
7114			((*(*self.interface).vTbl).getPDependentPropList.unwrap())((*self.interface).me,(&props.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7115		};
7116		match result_code {
7117			COBIAERR_NOERROR => {Ok(())},
7118			_ => Err(COBIAError::from_object(result_code,self))
7119		}
7120	}
7121
7122	pub fn get_tdependent_property<TypeOfProps:CapeArrayStringProviderIn,TypeOfCompIds:CapeArrayStringProviderIn,TypeOfPropVals:CapeArrayRealProviderOut>(&self,props:&TypeOfProps,temperature:CapeReal,comp_ids:&TypeOfCompIds,contains_missing_values:&mut CapeBoolean,prop_vals:&mut TypeOfPropVals) -> Result<(),COBIAError> {
7123		let result_code = unsafe {
7124			((*(*self.interface).vTbl).GetTDependentProperty.unwrap())((*self.interface).me,(&props.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),temperature,(&comp_ids.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),contains_missing_values as *mut CapeBoolean,(&prop_vals.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
7125		};
7126		match result_code {
7127			COBIAERR_NOERROR => {Ok(())},
7128			_ => Err(COBIAError::from_object(result_code,self))
7129		}
7130	}
7131
7132	pub fn get_tdependent_prop_list<TypeOfProps:CapeArrayStringProviderOut>(&self,props:&mut TypeOfProps) -> Result<(),COBIAError> {
7133		let result_code = unsafe {
7134			((*(*self.interface).vTbl).getTDependentPropList.unwrap())((*self.interface).me,(&props.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7135		};
7136		match result_code {
7137			COBIAERR_NOERROR => {Ok(())},
7138			_ => Err(COBIAError::from_object(result_code,self))
7139		}
7140	}
7141
7142}
7143
7144///ICapeThermoPhases
7145///
7146///ICapeThermoPhases interface
7147///
7148pub trait ICapeThermoPhases {
7149	fn get_num_phases(&mut self) -> Result<CapeInteger,COBIAError>;
7150	fn get_phase_info(&mut self,phase_label:&CapeStringIn,phase_attribute:&CapeStringIn,value:&mut CapeValueOut) -> Result<(),COBIAError>;
7151	fn get_phase_list(&mut self,phase_labels:&mut CapeArrayStringOut,state_of_aggregation:&mut CapeArrayStringOut,key_compound_id:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
7152}
7153
7154pub trait ICapeThermoPhasesImpl : ICapeThermoPhases {
7155	type T: ICapeInterfaceImpl+ICapeThermoPhasesImpl;
7156
7157	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7158
7159	///prepare CAPEOPEN_1_2_ICapeThermoPhases interface and return as generic ICapeInterface pointer
7160	fn init_interface() -> crate::C::ICapeInterface {
7161		crate::C::ICapeInterface {
7162			me: std::ptr::null_mut(),
7163			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoPhases_VTable).cast_mut()
7164				as *mut crate::C::ICapeInterface_VTable,
7165		}
7166	}
7167	
7168	fn init<Timpl: ICapeThermoPhasesImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7169		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoPhases =
7170			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoPhases;
7171		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7172		u.add_interface(
7173			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoPhases_UUID),
7174			iface as *mut crate::C::ICapeInterface,
7175		);
7176	}
7177	
7178	extern "C" fn raw_get_num_phases(me: *mut std::ffi::c_void,num:*mut CapeInteger) -> crate::C::CapeResult {
7179		if num.is_null() {
7180			return COBIAERR_NULLPOINTER;
7181		}
7182		let p = me as *mut Self::T;
7183		let myself=unsafe { &mut *p };
7184		match myself.get_num_phases() {
7185			Ok(_num) => {
7186				unsafe{*num=_num;}
7187				COBIAERR_NOERROR
7188			},
7189			Err(e) => myself.set_last_error(e,"ICapeThermoPhases::GetNumPhases")
7190		}
7191	}
7192
7193	extern "C" fn raw_get_phase_info(me: *mut std::ffi::c_void,phase_label:*mut crate::C::ICapeString,phase_attribute:*mut crate::C::ICapeString,value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
7194		if value.is_null() {
7195			return COBIAERR_NULLPOINTER;
7196		}
7197		let p = me as *mut Self::T;
7198		let myself=unsafe { &mut *p };
7199		if value.is_null() {
7200			return COBIAERR_NULLPOINTER;
7201		}
7202		let phase_label=CapeStringIn::new(&phase_label);
7203		let phase_attribute=CapeStringIn::new(&phase_attribute);
7204		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeValue) as *mut *mut crate::C::ICapeValue)};
7205		let mut value=CapeValueOut::new(&mut value);
7206		match myself.get_phase_info(&phase_label,&phase_attribute,&mut value) {
7207			Ok(_) => COBIAERR_NOERROR,
7208			Err(e) => myself.set_last_error(e,"ICapeThermoPhases::GetPhaseInfo")
7209		}
7210	}
7211
7212	extern "C" fn raw_get_phase_list(me: *mut std::ffi::c_void,phase_labels:*mut crate::C::ICapeArrayString,state_of_aggregation:*mut crate::C::ICapeArrayString,key_compound_id:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7213		if phase_labels.is_null()||state_of_aggregation.is_null()||key_compound_id.is_null() {
7214			return COBIAERR_NULLPOINTER;
7215		}
7216		let p = me as *mut Self::T;
7217		let myself=unsafe { &mut *p };
7218		if phase_labels.is_null()||state_of_aggregation.is_null()||key_compound_id.is_null() {
7219			return COBIAERR_NULLPOINTER;
7220		}
7221		let mut phase_labels=unsafe{*((&phase_labels as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7222		let mut phase_labels=CapeArrayStringOut::new(&mut phase_labels);
7223		let mut state_of_aggregation=unsafe{*((&state_of_aggregation as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7224		let mut state_of_aggregation=CapeArrayStringOut::new(&mut state_of_aggregation);
7225		let mut key_compound_id=unsafe{*((&key_compound_id as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7226		let mut key_compound_id=CapeArrayStringOut::new(&mut key_compound_id);
7227		match myself.get_phase_list(&mut phase_labels,&mut state_of_aggregation,&mut key_compound_id) {
7228			Ok(_) => COBIAERR_NOERROR,
7229			Err(e) => myself.set_last_error(e,"ICapeThermoPhases::GetPhaseList")
7230		}
7231	}
7232
7233	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoPhases_VTable =
7234		C::CAPEOPEN_1_2_ICapeThermoPhases_VTable {
7235			base: crate::C::ICapeInterface_VTable {
7236				addReference: Some(Self::T::raw_add_reference),
7237				release: Some(Self::T::raw_release),
7238				queryInterface: Some(Self::T::raw_query_interface),
7239				getLastError: Some(Self::T::raw_get_last_error),
7240			},
7241			getNumPhases: Some(Self::T::raw_get_num_phases),
7242			GetPhaseInfo: Some(Self::T::raw_get_phase_info),
7243			GetPhaseList: Some(Self::T::raw_get_phase_list),
7244		};
7245}
7246
7247#[cape_smart_pointer(ICAPETHERMOPHASES_UUID)]
7248pub struct CapeThermoPhases {
7249	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoPhases,
7250}
7251
7252impl CapeThermoPhases {
7253
7254	pub fn get_num_phases(&self) -> Result<CapeInteger,COBIAError> {
7255		let mut num:CapeInteger=0;
7256		let result_code = unsafe {
7257			((*(*self.interface).vTbl).getNumPhases.unwrap())((*self.interface).me,&mut num as *mut CapeInteger)
7258		};
7259		match result_code {
7260			COBIAERR_NOERROR => {Ok(num)},
7261			_ => Err(COBIAError::from_object(result_code,self))
7262		}
7263	}
7264
7265	pub fn get_phase_info<TypeOfPhaseLabel:CapeStringProviderIn,TypeOfPhaseAttribute:CapeStringProviderIn,TypeOfValue:CapeValueProviderOut>(&self,phase_label:&TypeOfPhaseLabel,phase_attribute:&TypeOfPhaseAttribute,value:&mut TypeOfValue) -> Result<(),COBIAError> {
7266		let result_code = unsafe {
7267			((*(*self.interface).vTbl).GetPhaseInfo.unwrap())((*self.interface).me,(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_attribute.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_value_out() as *const crate::C::ICapeValue).cast_mut())
7268		};
7269		match result_code {
7270			COBIAERR_NOERROR => {Ok(())},
7271			_ => Err(COBIAError::from_object(result_code,self))
7272		}
7273	}
7274
7275	pub fn get_phase_list<TypeOfPhaseLabels:CapeArrayStringProviderOut,TypeOfStateOfAggregation:CapeArrayStringProviderOut,TypeOfKeyCompoundId:CapeArrayStringProviderOut>(&self,phase_labels:&mut TypeOfPhaseLabels,state_of_aggregation:&mut TypeOfStateOfAggregation,key_compound_id:&mut TypeOfKeyCompoundId) -> Result<(),COBIAError> {
7276		let result_code = unsafe {
7277			((*(*self.interface).vTbl).GetPhaseList.unwrap())((*self.interface).me,(&phase_labels.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&state_of_aggregation.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut(),(&key_compound_id.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7278		};
7279		match result_code {
7280			COBIAERR_NOERROR => {Ok(())},
7281			_ => Err(COBIAError::from_object(result_code,self))
7282		}
7283	}
7284
7285}
7286
7287///ICapeThermoPropertyRoutine
7288///
7289///ICapeThermoPropertyRoutine interface
7290///
7291pub trait ICapeThermoPropertyRoutine {
7292	fn calc_and_get_ln_phi(&mut self,phase_label:&CapeStringIn,temperature:CapeReal,pressure:CapeReal,mole_fraction:&CapeArrayRealIn,f_flags:CapeInteger,ln_phi:&mut CapeArrayRealOut,ln_phi_dt:&mut CapeArrayRealOut,ln_phi_dp:&mut CapeArrayRealOut,ln_phi_dn:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
7293	fn calc_single_phase_prop(&mut self,props:&CapeArrayStringIn,phase_label:&CapeStringIn) -> Result<(),COBIAError>;
7294	fn calc_two_phase_prop(&mut self,props:&CapeArrayStringIn,phase_labels:&CapeArrayStringIn) -> Result<(),COBIAError>;
7295	fn check_single_phase_prop_spec(&mut self,property:&CapeStringIn,phase_label:&CapeStringIn) -> Result<CapeBoolean,COBIAError>;
7296	fn check_two_phase_prop_spec(&mut self,property:&CapeStringIn,phase_labels:&CapeArrayStringIn) -> Result<CapeBoolean,COBIAError>;
7297	fn get_single_phase_prop_list(&mut self,props:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
7298	fn get_two_phase_prop_list(&mut self,props:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
7299}
7300
7301pub trait ICapeThermoPropertyRoutineImpl : ICapeThermoPropertyRoutine {
7302	type T: ICapeInterfaceImpl+ICapeThermoPropertyRoutineImpl;
7303
7304	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7305
7306	///prepare CAPEOPEN_1_2_ICapeThermoPropertyRoutine interface and return as generic ICapeInterface pointer
7307	fn init_interface() -> crate::C::ICapeInterface {
7308		crate::C::ICapeInterface {
7309			me: std::ptr::null_mut(),
7310			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine_VTable).cast_mut()
7311				as *mut crate::C::ICapeInterface_VTable,
7312		}
7313	}
7314	
7315	fn init<Timpl: ICapeThermoPropertyRoutineImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7316		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine =
7317			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine;
7318		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7319		u.add_interface(
7320			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine_UUID),
7321			iface as *mut crate::C::ICapeInterface,
7322		);
7323	}
7324	
7325	extern "C" fn raw_calc_and_get_ln_phi(me: *mut std::ffi::c_void,phase_label:*mut crate::C::ICapeString,temperature:CapeReal,pressure:CapeReal,mole_fraction:*mut crate::C::ICapeArrayReal,f_flags:CapeInteger,ln_phi:*mut crate::C::ICapeArrayReal,ln_phi_dt:*mut crate::C::ICapeArrayReal,ln_phi_dp:*mut crate::C::ICapeArrayReal,ln_phi_dn:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
7326		if ln_phi.is_null()||ln_phi_dt.is_null()||ln_phi_dp.is_null()||ln_phi_dn.is_null() {
7327			return COBIAERR_NULLPOINTER;
7328		}
7329		let p = me as *mut Self::T;
7330		let myself=unsafe { &mut *p };
7331		if ln_phi.is_null()||ln_phi_dt.is_null()||ln_phi_dp.is_null()||ln_phi_dn.is_null() {
7332			return COBIAERR_NULLPOINTER;
7333		}
7334		let phase_label=CapeStringIn::new(&phase_label);
7335		let mole_fraction=CapeArrayRealIn::new(&mole_fraction);
7336		let mut ln_phi=unsafe{*((&ln_phi as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
7337		let mut ln_phi=CapeArrayRealOut::new(&mut ln_phi);
7338		let mut ln_phi_dt=unsafe{*((&ln_phi_dt as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
7339		let mut ln_phi_dt=CapeArrayRealOut::new(&mut ln_phi_dt);
7340		let mut ln_phi_dp=unsafe{*((&ln_phi_dp as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
7341		let mut ln_phi_dp=CapeArrayRealOut::new(&mut ln_phi_dp);
7342		let mut ln_phi_dn=unsafe{*((&ln_phi_dn as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
7343		let mut ln_phi_dn=CapeArrayRealOut::new(&mut ln_phi_dn);
7344		match myself.calc_and_get_ln_phi(&phase_label,temperature,pressure,&mole_fraction,f_flags,&mut ln_phi,&mut ln_phi_dt,&mut ln_phi_dp,&mut ln_phi_dn) {
7345			Ok(_) => COBIAERR_NOERROR,
7346			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::CalcAndGetLnPhi")
7347		}
7348	}
7349
7350	extern "C" fn raw_calc_single_phase_prop(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString,phase_label:*mut crate::C::ICapeString) -> crate::C::CapeResult {
7351		let p = me as *mut Self::T;
7352		let myself=unsafe { &mut *p };
7353		let props=CapeArrayStringIn::new(&props);
7354		let phase_label=CapeStringIn::new(&phase_label);
7355		match myself.calc_single_phase_prop(&props,&phase_label) {
7356			Ok(_) => COBIAERR_NOERROR,
7357			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::CalcSinglePhaseProp")
7358		}
7359	}
7360
7361	extern "C" fn raw_calc_two_phase_prop(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString,phase_labels:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7362		let p = me as *mut Self::T;
7363		let myself=unsafe { &mut *p };
7364		let props=CapeArrayStringIn::new(&props);
7365		let phase_labels=CapeArrayStringIn::new(&phase_labels);
7366		match myself.calc_two_phase_prop(&props,&phase_labels) {
7367			Ok(_) => COBIAERR_NOERROR,
7368			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::CalcTwoPhaseProp")
7369		}
7370	}
7371
7372	extern "C" fn raw_check_single_phase_prop_spec(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_label:*mut crate::C::ICapeString,valid:*mut CapeBoolean) -> crate::C::CapeResult {
7373		if valid.is_null() {
7374			return COBIAERR_NULLPOINTER;
7375		}
7376		let p = me as *mut Self::T;
7377		let myself=unsafe { &mut *p };
7378		let property=CapeStringIn::new(&property);
7379		let phase_label=CapeStringIn::new(&phase_label);
7380		match myself.check_single_phase_prop_spec(&property,&phase_label) {
7381			Ok(_valid) => {
7382				unsafe{*valid=_valid;}
7383				COBIAERR_NOERROR
7384			},
7385			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::CheckSinglePhasePropSpec")
7386		}
7387	}
7388
7389	extern "C" fn raw_check_two_phase_prop_spec(me: *mut std::ffi::c_void,property:*mut crate::C::ICapeString,phase_labels:*mut crate::C::ICapeArrayString,valid:*mut CapeBoolean) -> crate::C::CapeResult {
7390		if valid.is_null() {
7391			return COBIAERR_NULLPOINTER;
7392		}
7393		let p = me as *mut Self::T;
7394		let myself=unsafe { &mut *p };
7395		let property=CapeStringIn::new(&property);
7396		let phase_labels=CapeArrayStringIn::new(&phase_labels);
7397		match myself.check_two_phase_prop_spec(&property,&phase_labels) {
7398			Ok(_valid) => {
7399				unsafe{*valid=_valid;}
7400				COBIAERR_NOERROR
7401			},
7402			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::CheckTwoPhasePropSpec")
7403		}
7404	}
7405
7406	extern "C" fn raw_get_single_phase_prop_list(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7407		if props.is_null() {
7408			return COBIAERR_NULLPOINTER;
7409		}
7410		let p = me as *mut Self::T;
7411		let myself=unsafe { &mut *p };
7412		if props.is_null() {
7413			return COBIAERR_NULLPOINTER;
7414		}
7415		let mut props=unsafe{*((&props as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7416		let mut props=CapeArrayStringOut::new(&mut props);
7417		match myself.get_single_phase_prop_list(&mut props) {
7418			Ok(_) => COBIAERR_NOERROR,
7419			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::GetSinglePhasePropList")
7420		}
7421	}
7422
7423	extern "C" fn raw_get_two_phase_prop_list(me: *mut std::ffi::c_void,props:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7424		if props.is_null() {
7425			return COBIAERR_NULLPOINTER;
7426		}
7427		let p = me as *mut Self::T;
7428		let myself=unsafe { &mut *p };
7429		if props.is_null() {
7430			return COBIAERR_NULLPOINTER;
7431		}
7432		let mut props=unsafe{*((&props as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7433		let mut props=CapeArrayStringOut::new(&mut props);
7434		match myself.get_two_phase_prop_list(&mut props) {
7435			Ok(_) => COBIAERR_NOERROR,
7436			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyRoutine::GetTwoPhasePropList")
7437		}
7438	}
7439
7440	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine_VTable =
7441		C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine_VTable {
7442			base: crate::C::ICapeInterface_VTable {
7443				addReference: Some(Self::T::raw_add_reference),
7444				release: Some(Self::T::raw_release),
7445				queryInterface: Some(Self::T::raw_query_interface),
7446				getLastError: Some(Self::T::raw_get_last_error),
7447			},
7448			CalcAndGetLnPhi: Some(Self::T::raw_calc_and_get_ln_phi),
7449			CalcSinglePhaseProp: Some(Self::T::raw_calc_single_phase_prop),
7450			CalcTwoPhaseProp: Some(Self::T::raw_calc_two_phase_prop),
7451			CheckSinglePhasePropSpec: Some(Self::T::raw_check_single_phase_prop_spec),
7452			CheckTwoPhasePropSpec: Some(Self::T::raw_check_two_phase_prop_spec),
7453			getSinglePhasePropList: Some(Self::T::raw_get_single_phase_prop_list),
7454			getTwoPhasePropList: Some(Self::T::raw_get_two_phase_prop_list),
7455		};
7456}
7457
7458#[cape_smart_pointer(ICAPETHERMOPROPERTYROUTINE_UUID)]
7459pub struct CapeThermoPropertyRoutine {
7460	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoPropertyRoutine,
7461}
7462
7463impl CapeThermoPropertyRoutine {
7464
7465	pub fn calc_and_get_ln_phi<TypeOfPhaseLabel:CapeStringProviderIn,TypeOfMoleFraction:CapeArrayRealProviderIn,TypeOfLnPhi:CapeArrayRealProviderOut,TypeOfLnPhiDt:CapeArrayRealProviderOut,TypeOfLnPhiDp:CapeArrayRealProviderOut,TypeOfLnPhiDn:CapeArrayRealProviderOut>(&self,phase_label:&TypeOfPhaseLabel,temperature:CapeReal,pressure:CapeReal,mole_fraction:&TypeOfMoleFraction,f_flags:CapeInteger,ln_phi:&mut TypeOfLnPhi,ln_phi_dt:&mut TypeOfLnPhiDt,ln_phi_dp:&mut TypeOfLnPhiDp,ln_phi_dn:&mut TypeOfLnPhiDn) -> Result<(),COBIAError> {
7466		let result_code = unsafe {
7467			((*(*self.interface).vTbl).CalcAndGetLnPhi.unwrap())((*self.interface).me,(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),temperature,pressure,(&mole_fraction.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut(),f_flags,(&ln_phi.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut(),(&ln_phi_dt.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut(),(&ln_phi_dp.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut(),(&ln_phi_dn.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
7468		};
7469		match result_code {
7470			COBIAERR_NOERROR => {Ok(())},
7471			_ => Err(COBIAError::from_object(result_code,self))
7472		}
7473	}
7474
7475	pub fn calc_single_phase_prop<TypeOfProps:CapeArrayStringProviderIn,TypeOfPhaseLabel:CapeStringProviderIn>(&self,props:&TypeOfProps,phase_label:&TypeOfPhaseLabel) -> Result<(),COBIAError> {
7476		let result_code = unsafe {
7477			((*(*self.interface).vTbl).CalcSinglePhaseProp.unwrap())((*self.interface).me,(&props.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
7478		};
7479		match result_code {
7480			COBIAERR_NOERROR => {Ok(())},
7481			_ => Err(COBIAError::from_object(result_code,self))
7482		}
7483	}
7484
7485	pub fn calc_two_phase_prop<TypeOfProps:CapeArrayStringProviderIn,TypeOfPhaseLabels:CapeArrayStringProviderIn>(&self,props:&TypeOfProps,phase_labels:&TypeOfPhaseLabels) -> Result<(),COBIAError> {
7486		let result_code = unsafe {
7487			((*(*self.interface).vTbl).CalcTwoPhaseProp.unwrap())((*self.interface).me,(&props.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&phase_labels.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut())
7488		};
7489		match result_code {
7490			COBIAERR_NOERROR => {Ok(())},
7491			_ => Err(COBIAError::from_object(result_code,self))
7492		}
7493	}
7494
7495	pub fn check_single_phase_prop_spec<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabel:CapeStringProviderIn>(&self,property:&TypeOfProperty,phase_label:&TypeOfPhaseLabel) -> Result<CapeBoolean,COBIAError> {
7496		let mut valid:CapeBoolean=false as CapeBoolean;
7497		let result_code = unsafe {
7498			((*(*self.interface).vTbl).CheckSinglePhasePropSpec.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_label.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut valid as *mut CapeBoolean)
7499		};
7500		match result_code {
7501			COBIAERR_NOERROR => {Ok(valid)},
7502			_ => Err(COBIAError::from_object(result_code,self))
7503		}
7504	}
7505
7506	pub fn check_two_phase_prop_spec<TypeOfProperty:CapeStringProviderIn,TypeOfPhaseLabels:CapeArrayStringProviderIn>(&self,property:&TypeOfProperty,phase_labels:&TypeOfPhaseLabels) -> Result<CapeBoolean,COBIAError> {
7507		let mut valid:CapeBoolean=false as CapeBoolean;
7508		let result_code = unsafe {
7509			((*(*self.interface).vTbl).CheckTwoPhasePropSpec.unwrap())((*self.interface).me,(&property.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&phase_labels.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),&mut valid as *mut CapeBoolean)
7510		};
7511		match result_code {
7512			COBIAERR_NOERROR => {Ok(valid)},
7513			_ => Err(COBIAError::from_object(result_code,self))
7514		}
7515	}
7516
7517	pub fn get_single_phase_prop_list<TypeOfProps:CapeArrayStringProviderOut>(&self,props:&mut TypeOfProps) -> Result<(),COBIAError> {
7518		let result_code = unsafe {
7519			((*(*self.interface).vTbl).getSinglePhasePropList.unwrap())((*self.interface).me,(&props.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7520		};
7521		match result_code {
7522			COBIAERR_NOERROR => {Ok(())},
7523			_ => Err(COBIAError::from_object(result_code,self))
7524		}
7525	}
7526
7527	pub fn get_two_phase_prop_list<TypeOfProps:CapeArrayStringProviderOut>(&self,props:&mut TypeOfProps) -> Result<(),COBIAError> {
7528		let result_code = unsafe {
7529			((*(*self.interface).vTbl).getTwoPhasePropList.unwrap())((*self.interface).me,(&props.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7530		};
7531		match result_code {
7532			COBIAERR_NOERROR => {Ok(())},
7533			_ => Err(COBIAError::from_object(result_code,self))
7534		}
7535	}
7536
7537}
7538
7539///ICapeThermoEquilibriumRoutine
7540///
7541///ICapeThermoEquilibriumRoutine interface
7542///
7543pub trait ICapeThermoEquilibriumRoutine {
7544	fn calc_equilibrium(&mut self,specification1:&CapeArrayStringIn,specification2:&CapeArrayStringIn,solution_type:&CapeStringIn) -> Result<(),COBIAError>;
7545	fn check_equilibrium_spec(&mut self,specification1:&CapeArrayStringIn,specification2:&CapeArrayStringIn,solution_type:&CapeStringIn) -> Result<CapeBoolean,COBIAError>;
7546}
7547
7548pub trait ICapeThermoEquilibriumRoutineImpl : ICapeThermoEquilibriumRoutine {
7549	type T: ICapeInterfaceImpl+ICapeThermoEquilibriumRoutineImpl;
7550
7551	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7552
7553	///prepare CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine interface and return as generic ICapeInterface pointer
7554	fn init_interface() -> crate::C::ICapeInterface {
7555		crate::C::ICapeInterface {
7556			me: std::ptr::null_mut(),
7557			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine_VTable).cast_mut()
7558				as *mut crate::C::ICapeInterface_VTable,
7559		}
7560	}
7561	
7562	fn init<Timpl: ICapeThermoEquilibriumRoutineImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7563		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine =
7564			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine;
7565		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7566		u.add_interface(
7567			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine_UUID),
7568			iface as *mut crate::C::ICapeInterface,
7569		);
7570	}
7571	
7572	extern "C" fn raw_calc_equilibrium(me: *mut std::ffi::c_void,specification1:*mut crate::C::ICapeArrayString,specification2:*mut crate::C::ICapeArrayString,solution_type:*mut crate::C::ICapeString) -> crate::C::CapeResult {
7573		let p = me as *mut Self::T;
7574		let myself=unsafe { &mut *p };
7575		let specification1=CapeArrayStringIn::new(&specification1);
7576		let specification2=CapeArrayStringIn::new(&specification2);
7577		let solution_type=CapeStringIn::new(&solution_type);
7578		match myself.calc_equilibrium(&specification1,&specification2,&solution_type) {
7579			Ok(_) => COBIAERR_NOERROR,
7580			Err(e) => myself.set_last_error(e,"ICapeThermoEquilibriumRoutine::CalcEquilibrium")
7581		}
7582	}
7583
7584	extern "C" fn raw_check_equilibrium_spec(me: *mut std::ffi::c_void,specification1:*mut crate::C::ICapeArrayString,specification2:*mut crate::C::ICapeArrayString,solution_type:*mut crate::C::ICapeString,is_supported:*mut CapeBoolean) -> crate::C::CapeResult {
7585		if is_supported.is_null() {
7586			return COBIAERR_NULLPOINTER;
7587		}
7588		let p = me as *mut Self::T;
7589		let myself=unsafe { &mut *p };
7590		let specification1=CapeArrayStringIn::new(&specification1);
7591		let specification2=CapeArrayStringIn::new(&specification2);
7592		let solution_type=CapeStringIn::new(&solution_type);
7593		match myself.check_equilibrium_spec(&specification1,&specification2,&solution_type) {
7594			Ok(_is_supported) => {
7595				unsafe{*is_supported=_is_supported;}
7596				COBIAERR_NOERROR
7597			},
7598			Err(e) => myself.set_last_error(e,"ICapeThermoEquilibriumRoutine::CheckEquilibriumSpec")
7599		}
7600	}
7601
7602	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine_VTable =
7603		C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine_VTable {
7604			base: crate::C::ICapeInterface_VTable {
7605				addReference: Some(Self::T::raw_add_reference),
7606				release: Some(Self::T::raw_release),
7607				queryInterface: Some(Self::T::raw_query_interface),
7608				getLastError: Some(Self::T::raw_get_last_error),
7609			},
7610			CalcEquilibrium: Some(Self::T::raw_calc_equilibrium),
7611			CheckEquilibriumSpec: Some(Self::T::raw_check_equilibrium_spec),
7612		};
7613}
7614
7615#[cape_smart_pointer(ICAPETHERMOEQUILIBRIUMROUTINE_UUID)]
7616pub struct CapeThermoEquilibriumRoutine {
7617	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoEquilibriumRoutine,
7618}
7619
7620impl CapeThermoEquilibriumRoutine {
7621
7622	pub fn calc_equilibrium<TypeOfSpecification1:CapeArrayStringProviderIn,TypeOfSpecification2:CapeArrayStringProviderIn,TypeOfSolutionType:CapeStringProviderIn>(&self,specification1:&TypeOfSpecification1,specification2:&TypeOfSpecification2,solution_type:&TypeOfSolutionType) -> Result<(),COBIAError> {
7623		let result_code = unsafe {
7624			((*(*self.interface).vTbl).CalcEquilibrium.unwrap())((*self.interface).me,(&specification1.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&specification2.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&solution_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
7625		};
7626		match result_code {
7627			COBIAERR_NOERROR => {Ok(())},
7628			_ => Err(COBIAError::from_object(result_code,self))
7629		}
7630	}
7631
7632	pub fn check_equilibrium_spec<TypeOfSpecification1:CapeArrayStringProviderIn,TypeOfSpecification2:CapeArrayStringProviderIn,TypeOfSolutionType:CapeStringProviderIn>(&self,specification1:&TypeOfSpecification1,specification2:&TypeOfSpecification2,solution_type:&TypeOfSolutionType) -> Result<CapeBoolean,COBIAError> {
7633		let mut is_supported:CapeBoolean=false as CapeBoolean;
7634		let result_code = unsafe {
7635			((*(*self.interface).vTbl).CheckEquilibriumSpec.unwrap())((*self.interface).me,(&specification1.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&specification2.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut(),(&solution_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut is_supported as *mut CapeBoolean)
7636		};
7637		match result_code {
7638			COBIAERR_NOERROR => {Ok(is_supported)},
7639			_ => Err(COBIAError::from_object(result_code,self))
7640		}
7641	}
7642
7643}
7644
7645///ICapeThermoUniversalConstant
7646///
7647///ICapeThermoUniversalConstant interface
7648///
7649pub trait ICapeThermoUniversalConstant {
7650	fn get_universal_constant(&mut self,constant_id:&CapeStringIn,constant_value:&mut CapeValueOut) -> Result<(),COBIAError>;
7651	fn get_universal_constant_list(&mut self,constant_id_list:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
7652}
7653
7654pub trait ICapeThermoUniversalConstantImpl : ICapeThermoUniversalConstant {
7655	type T: ICapeInterfaceImpl+ICapeThermoUniversalConstantImpl;
7656
7657	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7658
7659	///prepare CAPEOPEN_1_2_ICapeThermoUniversalConstant interface and return as generic ICapeInterface pointer
7660	fn init_interface() -> crate::C::ICapeInterface {
7661		crate::C::ICapeInterface {
7662			me: std::ptr::null_mut(),
7663			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoUniversalConstant_VTable).cast_mut()
7664				as *mut crate::C::ICapeInterface_VTable,
7665		}
7666	}
7667	
7668	fn init<Timpl: ICapeThermoUniversalConstantImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7669		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoUniversalConstant =
7670			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoUniversalConstant;
7671		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7672		u.add_interface(
7673			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoUniversalConstant_UUID),
7674			iface as *mut crate::C::ICapeInterface,
7675		);
7676	}
7677	
7678	extern "C" fn raw_get_universal_constant(me: *mut std::ffi::c_void,constant_id:*mut crate::C::ICapeString,constant_value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
7679		if constant_value.is_null() {
7680			return COBIAERR_NULLPOINTER;
7681		}
7682		let p = me as *mut Self::T;
7683		let myself=unsafe { &mut *p };
7684		if constant_value.is_null() {
7685			return COBIAERR_NULLPOINTER;
7686		}
7687		let constant_id=CapeStringIn::new(&constant_id);
7688		let mut constant_value=unsafe{*((&constant_value as *const *mut crate::C::ICapeValue) as *mut *mut crate::C::ICapeValue)};
7689		let mut constant_value=CapeValueOut::new(&mut constant_value);
7690		match myself.get_universal_constant(&constant_id,&mut constant_value) {
7691			Ok(_) => COBIAERR_NOERROR,
7692			Err(e) => myself.set_last_error(e,"ICapeThermoUniversalConstant::GetUniversalConstant")
7693		}
7694	}
7695
7696	extern "C" fn raw_get_universal_constant_list(me: *mut std::ffi::c_void,constant_id_list:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7697		if constant_id_list.is_null() {
7698			return COBIAERR_NULLPOINTER;
7699		}
7700		let p = me as *mut Self::T;
7701		let myself=unsafe { &mut *p };
7702		if constant_id_list.is_null() {
7703			return COBIAERR_NULLPOINTER;
7704		}
7705		let mut constant_id_list=unsafe{*((&constant_id_list as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7706		let mut constant_id_list=CapeArrayStringOut::new(&mut constant_id_list);
7707		match myself.get_universal_constant_list(&mut constant_id_list) {
7708			Ok(_) => COBIAERR_NOERROR,
7709			Err(e) => myself.set_last_error(e,"ICapeThermoUniversalConstant::GetUniversalConstantList")
7710		}
7711	}
7712
7713	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoUniversalConstant_VTable =
7714		C::CAPEOPEN_1_2_ICapeThermoUniversalConstant_VTable {
7715			base: crate::C::ICapeInterface_VTable {
7716				addReference: Some(Self::T::raw_add_reference),
7717				release: Some(Self::T::raw_release),
7718				queryInterface: Some(Self::T::raw_query_interface),
7719				getLastError: Some(Self::T::raw_get_last_error),
7720			},
7721			GetUniversalConstant: Some(Self::T::raw_get_universal_constant),
7722			getUniversalConstantList: Some(Self::T::raw_get_universal_constant_list),
7723		};
7724}
7725
7726#[cape_smart_pointer(ICAPETHERMOUNIVERSALCONSTANT_UUID)]
7727pub struct CapeThermoUniversalConstant {
7728	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoUniversalConstant,
7729}
7730
7731impl CapeThermoUniversalConstant {
7732
7733	pub fn get_universal_constant<TypeOfConstantId:CapeStringProviderIn,TypeOfConstantValue:CapeValueProviderOut>(&self,constant_id:&TypeOfConstantId,constant_value:&mut TypeOfConstantValue) -> Result<(),COBIAError> {
7734		let result_code = unsafe {
7735			((*(*self.interface).vTbl).GetUniversalConstant.unwrap())((*self.interface).me,(&constant_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&constant_value.as_cape_value_out() as *const crate::C::ICapeValue).cast_mut())
7736		};
7737		match result_code {
7738			COBIAERR_NOERROR => {Ok(())},
7739			_ => Err(COBIAError::from_object(result_code,self))
7740		}
7741	}
7742
7743	pub fn get_universal_constant_list<TypeOfConstantIdList:CapeArrayStringProviderOut>(&self,constant_id_list:&mut TypeOfConstantIdList) -> Result<(),COBIAError> {
7744		let result_code = unsafe {
7745			((*(*self.interface).vTbl).getUniversalConstantList.unwrap())((*self.interface).me,(&constant_id_list.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7746		};
7747		match result_code {
7748			COBIAERR_NOERROR => {Ok(())},
7749			_ => Err(COBIAError::from_object(result_code,self))
7750		}
7751	}
7752
7753}
7754
7755///ICapeThermoPropertyPackageManager
7756///
7757///ICapeThermoPropertyPackageManager interface
7758///
7759pub trait ICapeThermoPropertyPackageManager {
7760	fn get_property_package_list(&mut self,package_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
7761	fn get_property_package(&mut self,package_name:&CapeStringIn) -> Result<crate::CapeObject,COBIAError>;
7762}
7763
7764pub trait ICapeThermoPropertyPackageManagerImpl : ICapeThermoPropertyPackageManager {
7765	type T: ICapeInterfaceImpl+ICapeThermoPropertyPackageManagerImpl;
7766
7767	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7768
7769	///prepare CAPEOPEN_1_2_ICapeThermoPropertyPackageManager interface and return as generic ICapeInterface pointer
7770	fn init_interface() -> crate::C::ICapeInterface {
7771		crate::C::ICapeInterface {
7772			me: std::ptr::null_mut(),
7773			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager_VTable).cast_mut()
7774				as *mut crate::C::ICapeInterface_VTable,
7775		}
7776	}
7777	
7778	fn init<Timpl: ICapeThermoPropertyPackageManagerImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7779		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager =
7780			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager;
7781		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7782		u.add_interface(
7783			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager_UUID),
7784			iface as *mut crate::C::ICapeInterface,
7785		);
7786	}
7787	
7788	extern "C" fn raw_get_property_package_list(me: *mut std::ffi::c_void,package_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
7789		if package_names.is_null() {
7790			return COBIAERR_NULLPOINTER;
7791		}
7792		let p = me as *mut Self::T;
7793		let myself=unsafe { &mut *p };
7794		if package_names.is_null() {
7795			return COBIAERR_NULLPOINTER;
7796		}
7797		let mut package_names=unsafe{*((&package_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
7798		let mut package_names=CapeArrayStringOut::new(&mut package_names);
7799		match myself.get_property_package_list(&mut package_names) {
7800			Ok(_) => COBIAERR_NOERROR,
7801			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyPackageManager::GetPropertyPackageList")
7802		}
7803	}
7804
7805	extern "C" fn raw_get_property_package(me: *mut std::ffi::c_void,package_name:*mut crate::C::ICapeString,package:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
7806		if package.is_null() {
7807			return COBIAERR_NULLPOINTER;
7808		}
7809		let p = me as *mut Self::T;
7810		let myself=unsafe { &mut *p };
7811		if package.is_null() {
7812			return COBIAERR_NULLPOINTER;
7813		}
7814		let package_name=CapeStringIn::new(&package_name);
7815		match myself.get_property_package(&package_name) {
7816			Ok(_package) => {
7817				unsafe{*package=_package.detach();}
7818				COBIAERR_NOERROR
7819			},
7820			Err(e) => myself.set_last_error(e,"ICapeThermoPropertyPackageManager::GetPropertyPackage")
7821		}
7822	}
7823
7824	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager_VTable =
7825		C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager_VTable {
7826			base: crate::C::ICapeInterface_VTable {
7827				addReference: Some(Self::T::raw_add_reference),
7828				release: Some(Self::T::raw_release),
7829				queryInterface: Some(Self::T::raw_query_interface),
7830				getLastError: Some(Self::T::raw_get_last_error),
7831			},
7832			getPropertyPackageList: Some(Self::T::raw_get_property_package_list),
7833			GetPropertyPackage: Some(Self::T::raw_get_property_package),
7834		};
7835}
7836
7837#[cape_smart_pointer(ICAPETHERMOPROPERTYPACKAGEMANAGER_UUID)]
7838pub struct CapeThermoPropertyPackageManager {
7839	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoPropertyPackageManager,
7840}
7841
7842impl CapeThermoPropertyPackageManager {
7843
7844	pub fn get_property_package_list<TypeOfPackageNames:CapeArrayStringProviderOut>(&self,package_names:&mut TypeOfPackageNames) -> Result<(),COBIAError> {
7845		let result_code = unsafe {
7846			((*(*self.interface).vTbl).getPropertyPackageList.unwrap())((*self.interface).me,(&package_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
7847		};
7848		match result_code {
7849			COBIAERR_NOERROR => {Ok(())},
7850			_ => Err(COBIAError::from_object(result_code,self))
7851		}
7852	}
7853
7854	pub fn get_property_package<TypeOfPackageName:CapeStringProviderIn>(&self,package_name:&TypeOfPackageName) -> Result<crate::CapeObject,COBIAError> {
7855		let mut package: *mut crate::C::ICapeInterface=std::ptr::null_mut();
7856		let result_code = unsafe {
7857			((*(*self.interface).vTbl).GetPropertyPackage.unwrap())((*self.interface).me,(&package_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut package as *mut *mut crate::C::ICapeInterface)
7858		};
7859		match result_code {
7860			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(package))},
7861			_ => Err(COBIAError::from_object(result_code,self))
7862		}
7863	}
7864
7865}
7866
7867///ICapeUnit
7868///
7869///ICapeUnit interface
7870///
7871pub trait ICapeUnit {
7872	fn ports(&mut self) -> Result<CapeCollection<CapeUnitPort>,COBIAError>;
7873	fn get_val_status(&mut self) -> Result<CapeValidationStatus,COBIAError>;
7874	fn calculate(&mut self) -> Result<(),COBIAError>;
7875	fn validate(&mut self,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
7876}
7877
7878pub trait ICapeUnitImpl : ICapeUnit {
7879	type T: ICapeInterfaceImpl+ICapeUnitImpl;
7880
7881	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
7882
7883	///prepare CAPEOPEN_1_2_ICapeUnit interface and return as generic ICapeInterface pointer
7884	fn init_interface() -> crate::C::ICapeInterface {
7885		crate::C::ICapeInterface {
7886			me: std::ptr::null_mut(),
7887			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeUnit_VTable).cast_mut()
7888				as *mut crate::C::ICapeInterface_VTable,
7889		}
7890	}
7891	
7892	fn init<Timpl: ICapeUnitImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
7893		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeUnit =
7894			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnit;
7895		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
7896		u.add_interface(
7897			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeUnit_UUID),
7898			iface as *mut crate::C::ICapeInterface,
7899		);
7900	}
7901	
7902	extern "C" fn raw_ports(me: *mut std::ffi::c_void,ports:*mut *mut C::CAPEOPEN_1_2_ICapeCollection) -> crate::C::CapeResult {
7903		if ports.is_null() {
7904			return COBIAERR_NULLPOINTER;
7905		}
7906		let p = me as *mut Self::T;
7907		let myself=unsafe { &mut *p };
7908		if ports.is_null() {
7909			return COBIAERR_NULLPOINTER;
7910		}
7911		match myself.ports() {
7912			Ok(_ports) => {
7913				unsafe{*ports=_ports.detach();}
7914				COBIAERR_NOERROR
7915			},
7916			Err(e) => myself.set_last_error(e,"ICapeUnit::ports")
7917		}
7918	}
7919
7920	extern "C" fn raw_get_val_status(me: *mut std::ffi::c_void,val_status:*mut C::CAPEOPEN_1_2_CapeValidationStatus) -> crate::C::CapeResult {
7921		if val_status.is_null() {
7922			return COBIAERR_NULLPOINTER;
7923		}
7924		let p = me as *mut Self::T;
7925		let myself=unsafe { &mut *p };
7926		match myself.get_val_status() {
7927			Ok(_val_status) => {
7928				unsafe{*val_status=_val_status as C::CAPEOPEN_1_2_CapeValidationStatus;}
7929				COBIAERR_NOERROR
7930			},
7931			Err(e) => myself.set_last_error(e,"ICapeUnit::GetValStatus")
7932		}
7933	}
7934
7935	extern "C" fn raw_calculate(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
7936		let p = me as *mut Self::T;
7937		let myself=unsafe { &mut *p };
7938		match myself.calculate() {
7939			Ok(_) => COBIAERR_NOERROR,
7940			Err(e) => myself.set_last_error(e,"ICapeUnit::Calculate")
7941		}
7942	}
7943
7944	extern "C" fn raw_validate(me: *mut std::ffi::c_void,message:*mut crate::C::ICapeString,is_valid:*mut CapeBoolean) -> crate::C::CapeResult {
7945		if message.is_null()||is_valid.is_null() {
7946			return COBIAERR_NULLPOINTER;
7947		}
7948		let p = me as *mut Self::T;
7949		let myself=unsafe { &mut *p };
7950		if message.is_null() {
7951			return COBIAERR_NULLPOINTER;
7952		}
7953		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
7954		let mut message=CapeStringOut::new(&mut message);
7955		match myself.validate(&mut message) {
7956			Ok(_is_valid) => {
7957				unsafe{*is_valid=_is_valid;}
7958				COBIAERR_NOERROR
7959			},
7960			Err(e) => myself.set_last_error(e,"ICapeUnit::Validate")
7961		}
7962	}
7963
7964	const VTABLE: C::CAPEOPEN_1_2_ICapeUnit_VTable =
7965		C::CAPEOPEN_1_2_ICapeUnit_VTable {
7966			base: crate::C::ICapeInterface_VTable {
7967				addReference: Some(Self::T::raw_add_reference),
7968				release: Some(Self::T::raw_release),
7969				queryInterface: Some(Self::T::raw_query_interface),
7970				getLastError: Some(Self::T::raw_get_last_error),
7971			},
7972			ports: Some(Self::T::raw_ports),
7973			getValStatus: Some(Self::T::raw_get_val_status),
7974			Calculate: Some(Self::T::raw_calculate),
7975			Validate: Some(Self::T::raw_validate),
7976		};
7977}
7978
7979#[cape_smart_pointer(ICAPEUNIT_UUID)]
7980pub struct CapeUnit {
7981	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeUnit,
7982}
7983
7984impl CapeUnit {
7985
7986	pub fn ports(&self) -> Result<CapeCollection<CapeUnitPort>,COBIAError> {
7987		let mut ports: *mut C::CAPEOPEN_1_2_ICapeCollection=std::ptr::null_mut();
7988		let result_code = unsafe {
7989			((*(*self.interface).vTbl).ports.unwrap())((*self.interface).me,&mut ports as *mut *mut C::CAPEOPEN_1_2_ICapeCollection)
7990		};
7991		match result_code {
7992			COBIAERR_NOERROR => {Ok(CapeCollection::<CapeUnitPort>::attach(ports))},
7993			_ => Err(COBIAError::from_object(result_code,self))
7994		}
7995	}
7996
7997	pub fn get_val_status(&self) -> Result<CapeValidationStatus,COBIAError> {
7998		let mut val_status:C::CAPEOPEN_1_2_CapeValidationStatus=0;
7999		let result_code = unsafe {
8000			((*(*self.interface).vTbl).getValStatus.unwrap())((*self.interface).me,&mut val_status as *mut C::CAPEOPEN_1_2_CapeValidationStatus)
8001		};
8002		let val_status=match CapeValidationStatus::from(val_status) {
8003			Some(_val_status) => _val_status,
8004			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
8005		};
8006		match result_code {
8007			COBIAERR_NOERROR => {Ok(val_status)},
8008			_ => Err(COBIAError::from_object(result_code,self))
8009		}
8010	}
8011
8012	pub fn calculate(&self) -> Result<(),COBIAError> {
8013		let result_code = unsafe {
8014			((*(*self.interface).vTbl).Calculate.unwrap())((*self.interface).me)
8015		};
8016		match result_code {
8017			COBIAERR_NOERROR => {Ok(())},
8018			_ => Err(COBIAError::from_object(result_code,self))
8019		}
8020	}
8021
8022	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
8023		let mut is_valid:CapeBoolean=false as CapeBoolean;
8024		let result_code = unsafe {
8025			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_valid as *mut CapeBoolean)
8026		};
8027		match result_code {
8028			COBIAERR_NOERROR => {Ok(is_valid)},
8029			_ => Err(COBIAError::from_object(result_code,self))
8030		}
8031	}
8032
8033}
8034
8035///ICapeUnitPort
8036///
8037///ICapeUnitPort interface
8038///
8039pub trait ICapeUnitPort {
8040	fn get_port_type(&mut self) -> Result<CapePortType,COBIAError>;
8041	fn get_direction(&mut self) -> Result<CapePortDirection,COBIAError>;
8042	fn get_connected_object(&mut self) -> Result<crate::CapeObject,COBIAError>;
8043	fn connect(&mut self,object_to_connect:crate::CapeObject) -> Result<(),COBIAError>;
8044	fn disconnect(&mut self) -> Result<(),COBIAError>;
8045}
8046
8047pub trait ICapeUnitPortImpl : ICapeUnitPort {
8048	type T: ICapeInterfaceImpl+ICapeUnitPortImpl;
8049
8050	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
8051
8052	///prepare CAPEOPEN_1_2_ICapeUnitPort interface and return as generic ICapeInterface pointer
8053	fn init_interface() -> crate::C::ICapeInterface {
8054		crate::C::ICapeInterface {
8055			me: std::ptr::null_mut(),
8056			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeUnitPort_VTable).cast_mut()
8057				as *mut crate::C::ICapeInterface_VTable,
8058		}
8059	}
8060	
8061	fn init<Timpl: ICapeUnitPortImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
8062		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeUnitPort =
8063			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnitPort;
8064		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
8065		u.add_interface(
8066			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeUnitPort_UUID),
8067			iface as *mut crate::C::ICapeInterface,
8068		);
8069	}
8070	
8071	extern "C" fn raw_get_port_type(me: *mut std::ffi::c_void,port_type:*mut C::CAPEOPEN_1_2_CapePortType) -> crate::C::CapeResult {
8072		if port_type.is_null() {
8073			return COBIAERR_NULLPOINTER;
8074		}
8075		let p = me as *mut Self::T;
8076		let myself=unsafe { &mut *p };
8077		match myself.get_port_type() {
8078			Ok(_port_type) => {
8079				unsafe{*port_type=_port_type as C::CAPEOPEN_1_2_CapePortType;}
8080				COBIAERR_NOERROR
8081			},
8082			Err(e) => myself.set_last_error(e,"ICapeUnitPort::GetPortType")
8083		}
8084	}
8085
8086	extern "C" fn raw_get_direction(me: *mut std::ffi::c_void,port_direction:*mut C::CAPEOPEN_1_2_CapePortDirection) -> crate::C::CapeResult {
8087		if port_direction.is_null() {
8088			return COBIAERR_NULLPOINTER;
8089		}
8090		let p = me as *mut Self::T;
8091		let myself=unsafe { &mut *p };
8092		match myself.get_direction() {
8093			Ok(_port_direction) => {
8094				unsafe{*port_direction=_port_direction as C::CAPEOPEN_1_2_CapePortDirection;}
8095				COBIAERR_NOERROR
8096			},
8097			Err(e) => myself.set_last_error(e,"ICapeUnitPort::GetDirection")
8098		}
8099	}
8100
8101	extern "C" fn raw_get_connected_object(me: *mut std::ffi::c_void,connected_object:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
8102		if connected_object.is_null() {
8103			return COBIAERR_NULLPOINTER;
8104		}
8105		let p = me as *mut Self::T;
8106		let myself=unsafe { &mut *p };
8107		if connected_object.is_null() {
8108			return COBIAERR_NULLPOINTER;
8109		}
8110		match myself.get_connected_object() {
8111			Ok(_connected_object) => {
8112				unsafe{*connected_object=_connected_object.detach();}
8113				COBIAERR_NOERROR
8114			},
8115			Err(e) => myself.set_last_error(e,"ICapeUnitPort::GetConnectedObject")
8116		}
8117	}
8118
8119	extern "C" fn raw_connect(me: *mut std::ffi::c_void,object_to_connect:*mut crate::C::ICapeInterface) -> crate::C::CapeResult {
8120		if object_to_connect.is_null() {
8121			return COBIAERR_NULLPOINTER;
8122		}
8123		let p = me as *mut Self::T;
8124		let myself=unsafe { &mut *p };
8125		if object_to_connect.is_null() {
8126			return COBIAERR_NULLPOINTER;
8127		}
8128		let object_to_connect=crate::CapeObject::from_interface_pointer(object_to_connect);
8129		match myself.connect(object_to_connect) {
8130			Ok(_) => COBIAERR_NOERROR,
8131			Err(e) => myself.set_last_error(e,"ICapeUnitPort::Connect")
8132		}
8133	}
8134
8135	extern "C" fn raw_disconnect(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
8136		let p = me as *mut Self::T;
8137		let myself=unsafe { &mut *p };
8138		match myself.disconnect() {
8139			Ok(_) => COBIAERR_NOERROR,
8140			Err(e) => myself.set_last_error(e,"ICapeUnitPort::Disconnect")
8141		}
8142	}
8143
8144	const VTABLE: C::CAPEOPEN_1_2_ICapeUnitPort_VTable =
8145		C::CAPEOPEN_1_2_ICapeUnitPort_VTable {
8146			base: crate::C::ICapeInterface_VTable {
8147				addReference: Some(Self::T::raw_add_reference),
8148				release: Some(Self::T::raw_release),
8149				queryInterface: Some(Self::T::raw_query_interface),
8150				getLastError: Some(Self::T::raw_get_last_error),
8151			},
8152			getPortType: Some(Self::T::raw_get_port_type),
8153			getDirection: Some(Self::T::raw_get_direction),
8154			getConnectedObject: Some(Self::T::raw_get_connected_object),
8155			Connect: Some(Self::T::raw_connect),
8156			Disconnect: Some(Self::T::raw_disconnect),
8157		};
8158}
8159
8160#[cape_smart_pointer(ICAPEUNITPORT_UUID)]
8161pub struct CapeUnitPort {
8162	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeUnitPort,
8163}
8164
8165impl CapeUnitPort {
8166
8167	pub fn get_port_type(&self) -> Result<CapePortType,COBIAError> {
8168		let mut port_type:C::CAPEOPEN_1_2_CapePortType=0;
8169		let result_code = unsafe {
8170			((*(*self.interface).vTbl).getPortType.unwrap())((*self.interface).me,&mut port_type as *mut C::CAPEOPEN_1_2_CapePortType)
8171		};
8172		let port_type=match CapePortType::from(port_type) {
8173			Some(_port_type) => _port_type,
8174			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
8175		};
8176		match result_code {
8177			COBIAERR_NOERROR => {Ok(port_type)},
8178			_ => Err(COBIAError::from_object(result_code,self))
8179		}
8180	}
8181
8182	pub fn get_direction(&self) -> Result<CapePortDirection,COBIAError> {
8183		let mut port_direction:C::CAPEOPEN_1_2_CapePortDirection=0;
8184		let result_code = unsafe {
8185			((*(*self.interface).vTbl).getDirection.unwrap())((*self.interface).me,&mut port_direction as *mut C::CAPEOPEN_1_2_CapePortDirection)
8186		};
8187		let port_direction=match CapePortDirection::from(port_direction) {
8188			Some(_port_direction) => _port_direction,
8189			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
8190		};
8191		match result_code {
8192			COBIAERR_NOERROR => {Ok(port_direction)},
8193			_ => Err(COBIAError::from_object(result_code,self))
8194		}
8195	}
8196
8197	pub fn get_connected_object(&self) -> Result<crate::CapeObject,COBIAError> {
8198		let mut connected_object: *mut crate::C::ICapeInterface=std::ptr::null_mut();
8199		let result_code = unsafe {
8200			((*(*self.interface).vTbl).getConnectedObject.unwrap())((*self.interface).me,&mut connected_object as *mut *mut crate::C::ICapeInterface)
8201		};
8202		match result_code {
8203			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(connected_object))},
8204			_ => Err(COBIAError::from_object(result_code,self))
8205		}
8206	}
8207
8208	pub fn connect(&self,object_to_connect:&crate::CapeObject) -> Result<(),COBIAError> {
8209		let result_code = unsafe {
8210			((*(*self.interface).vTbl).Connect.unwrap())((*self.interface).me,object_to_connect.as_interface_pointer() as *mut crate::C::ICapeInterface)
8211		};
8212		match result_code {
8213			COBIAERR_NOERROR => {Ok(())},
8214			_ => Err(COBIAError::from_object(result_code,self))
8215		}
8216	}
8217
8218	pub fn disconnect(&self) -> Result<(),COBIAError> {
8219		let result_code = unsafe {
8220			((*(*self.interface).vTbl).Disconnect.unwrap())((*self.interface).me)
8221		};
8222		match result_code {
8223			COBIAERR_NOERROR => {Ok(())},
8224			_ => Err(COBIAError::from_object(result_code,self))
8225		}
8226	}
8227
8228}
8229
8230///ICapePersistWriter
8231///
8232///ICapePersistWriter interface
8233///
8234pub trait ICapePersistWriter {
8235	fn add_real(&mut self,value_name:&CapeStringIn,value:CapeReal) -> Result<(),COBIAError>;
8236	fn add_integer(&mut self,value_name:&CapeStringIn,value:CapeInteger) -> Result<(),COBIAError>;
8237	fn add_boolean(&mut self,value_name:&CapeStringIn,value:CapeBoolean) -> Result<(),COBIAError>;
8238	fn add_string(&mut self,value_name:&CapeStringIn,value:&CapeStringIn) -> Result<(),COBIAError>;
8239	fn add_enumeration(&mut self,value_name:&CapeStringIn,value:crate::CapeEnumeration) -> Result<(),COBIAError>;
8240	fn add_value(&mut self,value_name:&CapeStringIn,value:&CapeValueIn) -> Result<(),COBIAError>;
8241	fn add_array_real(&mut self,value_name:&CapeStringIn,value:&CapeArrayRealIn) -> Result<(),COBIAError>;
8242	fn add_array_integer(&mut self,value_name:&CapeStringIn,value:&CapeArrayIntegerIn) -> Result<(),COBIAError>;
8243	fn add_array_boolean(&mut self,value_name:&CapeStringIn,value:&CapeArrayBooleanIn) -> Result<(),COBIAError>;
8244	fn add_array_string(&mut self,value_name:&CapeStringIn,value:&CapeArrayStringIn) -> Result<(),COBIAError>;
8245	fn add_array_enumeration(&mut self,value_name:&CapeStringIn,value:&CapeArrayEnumerationIn<CapeEnumeration>) -> Result<(),COBIAError>;
8246	fn add_array_value(&mut self,value_name:&CapeStringIn,value:&CapeArrayValueIn) -> Result<(),COBIAError>;
8247	fn add_array_byte(&mut self,value_name:&CapeStringIn,value:&CapeArrayByteIn) -> Result<(),COBIAError>;
8248	fn add_node(&mut self,node_name:&CapeStringIn) -> Result<CapePersistWriter,COBIAError>;
8249}
8250
8251pub trait ICapePersistWriterImpl : ICapePersistWriter {
8252	type T: ICapeInterfaceImpl+ICapePersistWriterImpl;
8253
8254	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
8255
8256	///prepare CAPEOPEN_1_2_ICapePersistWriter interface and return as generic ICapeInterface pointer
8257	fn init_interface() -> crate::C::ICapeInterface {
8258		crate::C::ICapeInterface {
8259			me: std::ptr::null_mut(),
8260			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapePersistWriter_VTable).cast_mut()
8261				as *mut crate::C::ICapeInterface_VTable,
8262		}
8263	}
8264	
8265	fn init<Timpl: ICapePersistWriterImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
8266		let iface: *mut crate::C::CAPEOPEN_1_2_ICapePersistWriter =
8267			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapePersistWriter;
8268		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
8269		u.add_interface(
8270			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapePersistWriter_UUID),
8271			iface as *mut crate::C::ICapeInterface,
8272		);
8273	}
8274	
8275	extern "C" fn raw_add_real(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:CapeReal) -> crate::C::CapeResult {
8276		let p = me as *mut Self::T;
8277		let myself=unsafe { &mut *p };
8278		let value_name=CapeStringIn::new(&value_name);
8279		match myself.add_real(&value_name,value) {
8280			Ok(_) => COBIAERR_NOERROR,
8281			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddReal")
8282		}
8283	}
8284
8285	extern "C" fn raw_add_integer(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:CapeInteger) -> crate::C::CapeResult {
8286		let p = me as *mut Self::T;
8287		let myself=unsafe { &mut *p };
8288		let value_name=CapeStringIn::new(&value_name);
8289		match myself.add_integer(&value_name,value) {
8290			Ok(_) => COBIAERR_NOERROR,
8291			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddInteger")
8292		}
8293	}
8294
8295	extern "C" fn raw_add_boolean(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:CapeBoolean) -> crate::C::CapeResult {
8296		let p = me as *mut Self::T;
8297		let myself=unsafe { &mut *p };
8298		let value_name=CapeStringIn::new(&value_name);
8299		match myself.add_boolean(&value_name,value) {
8300			Ok(_) => COBIAERR_NOERROR,
8301			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddBoolean")
8302		}
8303	}
8304
8305	extern "C" fn raw_add_string(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
8306		let p = me as *mut Self::T;
8307		let myself=unsafe { &mut *p };
8308		let value_name=CapeStringIn::new(&value_name);
8309		let value=CapeStringIn::new(&value);
8310		match myself.add_string(&value_name,&value) {
8311			Ok(_) => COBIAERR_NOERROR,
8312			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddString")
8313		}
8314	}
8315
8316	extern "C" fn raw_add_enumeration(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:crate::C::CapeEnumeration) -> crate::C::CapeResult {
8317		let p = me as *mut Self::T;
8318		let myself=unsafe { &mut *p };
8319		let value_name=CapeStringIn::new(&value_name);
8320		match myself.add_enumeration(&value_name,value) {
8321			Ok(_) => COBIAERR_NOERROR,
8322			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddEnumeration")
8323		}
8324	}
8325
8326	extern "C" fn raw_add_value(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
8327		let p = me as *mut Self::T;
8328		let myself=unsafe { &mut *p };
8329		let value_name=CapeStringIn::new(&value_name);
8330		let value=CapeValueIn::new(&value);
8331		match myself.add_value(&value_name,&value) {
8332			Ok(_) => COBIAERR_NOERROR,
8333			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddValue")
8334		}
8335	}
8336
8337	extern "C" fn raw_add_array_real(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
8338		let p = me as *mut Self::T;
8339		let myself=unsafe { &mut *p };
8340		let value_name=CapeStringIn::new(&value_name);
8341		let value=CapeArrayRealIn::new(&value);
8342		match myself.add_array_real(&value_name,&value) {
8343			Ok(_) => COBIAERR_NOERROR,
8344			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayReal")
8345		}
8346	}
8347
8348	extern "C" fn raw_add_array_integer(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
8349		let p = me as *mut Self::T;
8350		let myself=unsafe { &mut *p };
8351		let value_name=CapeStringIn::new(&value_name);
8352		let value=CapeArrayIntegerIn::new(&value);
8353		match myself.add_array_integer(&value_name,&value) {
8354			Ok(_) => COBIAERR_NOERROR,
8355			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayInteger")
8356		}
8357	}
8358
8359	extern "C" fn raw_add_array_boolean(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayBoolean) -> crate::C::CapeResult {
8360		let p = me as *mut Self::T;
8361		let myself=unsafe { &mut *p };
8362		let value_name=CapeStringIn::new(&value_name);
8363		let value=CapeArrayBooleanIn::new(&value);
8364		match myself.add_array_boolean(&value_name,&value) {
8365			Ok(_) => COBIAERR_NOERROR,
8366			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayBoolean")
8367		}
8368	}
8369
8370	extern "C" fn raw_add_array_string(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
8371		let p = me as *mut Self::T;
8372		let myself=unsafe { &mut *p };
8373		let value_name=CapeStringIn::new(&value_name);
8374		let value=CapeArrayStringIn::new(&value);
8375		match myself.add_array_string(&value_name,&value) {
8376			Ok(_) => COBIAERR_NOERROR,
8377			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayString")
8378		}
8379	}
8380
8381	extern "C" fn raw_add_array_enumeration(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
8382		let p = me as *mut Self::T;
8383		let myself=unsafe { &mut *p };
8384		let value_name=CapeStringIn::new(&value_name);
8385		let value=CapeArrayEnumerationIn::<CapeEnumeration>::new(&value);
8386		match myself.add_array_enumeration(&value_name,&value) {
8387			Ok(_) => COBIAERR_NOERROR,
8388			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayEnumeration")
8389		}
8390	}
8391
8392	extern "C" fn raw_add_array_value(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayValue) -> crate::C::CapeResult {
8393		let p = me as *mut Self::T;
8394		let myself=unsafe { &mut *p };
8395		let value_name=CapeStringIn::new(&value_name);
8396		let value=CapeArrayValueIn::new(&value);
8397		match myself.add_array_value(&value_name,&value) {
8398			Ok(_) => COBIAERR_NOERROR,
8399			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayValue")
8400		}
8401	}
8402
8403	extern "C" fn raw_add_array_byte(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayByte) -> crate::C::CapeResult {
8404		let p = me as *mut Self::T;
8405		let myself=unsafe { &mut *p };
8406		let value_name=CapeStringIn::new(&value_name);
8407		let value=CapeArrayByteIn::new(&value);
8408		match myself.add_array_byte(&value_name,&value) {
8409			Ok(_) => COBIAERR_NOERROR,
8410			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddArrayByte")
8411		}
8412	}
8413
8414	extern "C" fn raw_add_node(me: *mut std::ffi::c_void,node_name:*mut crate::C::ICapeString,value:*mut *mut C::CAPEOPEN_1_2_ICapePersistWriter) -> crate::C::CapeResult {
8415		if value.is_null() {
8416			return COBIAERR_NULLPOINTER;
8417		}
8418		let p = me as *mut Self::T;
8419		let myself=unsafe { &mut *p };
8420		if value.is_null() {
8421			return COBIAERR_NULLPOINTER;
8422		}
8423		let node_name=CapeStringIn::new(&node_name);
8424		match myself.add_node(&node_name) {
8425			Ok(_value) => {
8426				unsafe{*value=_value.detach();}
8427				COBIAERR_NOERROR
8428			},
8429			Err(e) => myself.set_last_error(e,"ICapePersistWriter::AddNode")
8430		}
8431	}
8432
8433	const VTABLE: C::CAPEOPEN_1_2_ICapePersistWriter_VTable =
8434		C::CAPEOPEN_1_2_ICapePersistWriter_VTable {
8435			base: crate::C::ICapeInterface_VTable {
8436				addReference: Some(Self::T::raw_add_reference),
8437				release: Some(Self::T::raw_release),
8438				queryInterface: Some(Self::T::raw_query_interface),
8439				getLastError: Some(Self::T::raw_get_last_error),
8440			},
8441			AddReal: Some(Self::T::raw_add_real),
8442			AddInteger: Some(Self::T::raw_add_integer),
8443			AddBoolean: Some(Self::T::raw_add_boolean),
8444			AddString: Some(Self::T::raw_add_string),
8445			AddEnumeration: Some(Self::T::raw_add_enumeration),
8446			AddValue: Some(Self::T::raw_add_value),
8447			AddArrayReal: Some(Self::T::raw_add_array_real),
8448			AddArrayInteger: Some(Self::T::raw_add_array_integer),
8449			AddArrayBoolean: Some(Self::T::raw_add_array_boolean),
8450			AddArrayString: Some(Self::T::raw_add_array_string),
8451			AddArrayEnumeration: Some(Self::T::raw_add_array_enumeration),
8452			AddArrayValue: Some(Self::T::raw_add_array_value),
8453			AddArrayByte: Some(Self::T::raw_add_array_byte),
8454			AddNode: Some(Self::T::raw_add_node),
8455		};
8456}
8457
8458#[cape_smart_pointer(ICAPEPERSISTWRITER_UUID)]
8459pub struct CapePersistWriter {
8460	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapePersistWriter,
8461}
8462
8463impl CapePersistWriter {
8464
8465	pub fn add_real<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName,value:CapeReal) -> Result<(),COBIAError> {
8466		let result_code = unsafe {
8467			((*(*self.interface).vTbl).AddReal.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),value)
8468		};
8469		match result_code {
8470			COBIAERR_NOERROR => {Ok(())},
8471			_ => Err(COBIAError::from_object(result_code,self))
8472		}
8473	}
8474
8475	pub fn add_integer<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName,value:CapeInteger) -> Result<(),COBIAError> {
8476		let result_code = unsafe {
8477			((*(*self.interface).vTbl).AddInteger.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),value)
8478		};
8479		match result_code {
8480			COBIAERR_NOERROR => {Ok(())},
8481			_ => Err(COBIAError::from_object(result_code,self))
8482		}
8483	}
8484
8485	pub fn add_boolean<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName,value:CapeBoolean) -> Result<(),COBIAError> {
8486		let result_code = unsafe {
8487			((*(*self.interface).vTbl).AddBoolean.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),value)
8488		};
8489		match result_code {
8490			COBIAERR_NOERROR => {Ok(())},
8491			_ => Err(COBIAError::from_object(result_code,self))
8492		}
8493	}
8494
8495	pub fn add_string<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeStringProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8496		let result_code = unsafe {
8497			((*(*self.interface).vTbl).AddString.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
8498		};
8499		match result_code {
8500			COBIAERR_NOERROR => {Ok(())},
8501			_ => Err(COBIAError::from_object(result_code,self))
8502		}
8503	}
8504
8505	pub fn add_enumeration<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName,value:crate::CapeEnumeration) -> Result<(),COBIAError> {
8506		let result_code = unsafe {
8507			((*(*self.interface).vTbl).AddEnumeration.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),value)
8508		};
8509		match result_code {
8510			COBIAERR_NOERROR => {Ok(())},
8511			_ => Err(COBIAError::from_object(result_code,self))
8512		}
8513	}
8514
8515	pub fn add_value<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeValueProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8516		let result_code = unsafe {
8517			((*(*self.interface).vTbl).AddValue.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_value_in() as *const crate::C::ICapeValue).cast_mut())
8518		};
8519		match result_code {
8520			COBIAERR_NOERROR => {Ok(())},
8521			_ => Err(COBIAError::from_object(result_code,self))
8522		}
8523	}
8524
8525	pub fn add_array_real<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayRealProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8526		let result_code = unsafe {
8527			((*(*self.interface).vTbl).AddArrayReal.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
8528		};
8529		match result_code {
8530			COBIAERR_NOERROR => {Ok(())},
8531			_ => Err(COBIAError::from_object(result_code,self))
8532		}
8533	}
8534
8535	pub fn add_array_integer<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayIntegerProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8536		let result_code = unsafe {
8537			((*(*self.interface).vTbl).AddArrayInteger.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_integer_in() as *const crate::C::ICapeArrayInteger).cast_mut())
8538		};
8539		match result_code {
8540			COBIAERR_NOERROR => {Ok(())},
8541			_ => Err(COBIAError::from_object(result_code,self))
8542		}
8543	}
8544
8545	pub fn add_array_boolean<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayBooleanProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8546		let result_code = unsafe {
8547			((*(*self.interface).vTbl).AddArrayBoolean.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_boolean_in() as *const crate::C::ICapeArrayBoolean).cast_mut())
8548		};
8549		match result_code {
8550			COBIAERR_NOERROR => {Ok(())},
8551			_ => Err(COBIAError::from_object(result_code,self))
8552		}
8553	}
8554
8555	pub fn add_array_string<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayStringProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8556		let result_code = unsafe {
8557			((*(*self.interface).vTbl).AddArrayString.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_string_in() as *const crate::C::ICapeArrayString).cast_mut())
8558		};
8559		match result_code {
8560			COBIAERR_NOERROR => {Ok(())},
8561			_ => Err(COBIAError::from_object(result_code,self))
8562		}
8563	}
8564
8565	pub fn add_array_enumeration<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayEnumerationProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8566		let result_code = unsafe {
8567			((*(*self.interface).vTbl).AddArrayEnumeration.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_enumeration_in() as *const crate::C::ICapeArrayEnumeration).cast_mut())
8568		};
8569		match result_code {
8570			COBIAERR_NOERROR => {Ok(())},
8571			_ => Err(COBIAError::from_object(result_code,self))
8572		}
8573	}
8574
8575	pub fn add_array_value<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayValueProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8576		let result_code = unsafe {
8577			((*(*self.interface).vTbl).AddArrayValue.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_value_in() as *const crate::C::ICapeArrayValue).cast_mut())
8578		};
8579		match result_code {
8580			COBIAERR_NOERROR => {Ok(())},
8581			_ => Err(COBIAError::from_object(result_code,self))
8582		}
8583	}
8584
8585	pub fn add_array_byte<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayByteProviderIn>(&self,value_name:&TypeOfValueName,value:&TypeOfValue) -> Result<(),COBIAError> {
8586		let result_code = unsafe {
8587			((*(*self.interface).vTbl).AddArrayByte.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_byte_in() as *const crate::C::ICapeArrayByte).cast_mut())
8588		};
8589		match result_code {
8590			COBIAERR_NOERROR => {Ok(())},
8591			_ => Err(COBIAError::from_object(result_code,self))
8592		}
8593	}
8594
8595	pub fn add_node<TypeOfNodeName:CapeStringProviderIn>(&self,node_name:&TypeOfNodeName) -> Result<CapePersistWriter,COBIAError> {
8596		let mut value: *mut C::CAPEOPEN_1_2_ICapePersistWriter=std::ptr::null_mut();
8597		let result_code = unsafe {
8598			((*(*self.interface).vTbl).AddNode.unwrap())((*self.interface).me,(&node_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut *mut C::CAPEOPEN_1_2_ICapePersistWriter)
8599		};
8600		match result_code {
8601			COBIAERR_NOERROR => {Ok(CapePersistWriter::attach(value))},
8602			_ => Err(COBIAError::from_object(result_code,self))
8603		}
8604	}
8605
8606}
8607
8608///ICapePersistReader
8609///
8610///ICapePersistReader interface
8611///
8612pub trait ICapePersistReader {
8613	fn get_value_names(&mut self,value_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
8614	fn get_value_type(&mut self,value_name:&CapeStringIn) -> Result<CapePersistedDataType,COBIAError>;
8615	fn get_real(&mut self,value_name:&CapeStringIn) -> Result<CapeReal,COBIAError>;
8616	fn get_integer(&mut self,value_name:&CapeStringIn) -> Result<CapeInteger,COBIAError>;
8617	fn get_boolean(&mut self,value_name:&CapeStringIn) -> Result<CapeBoolean,COBIAError>;
8618	fn get_string(&mut self,value_name:&CapeStringIn,value:&mut CapeStringOut) -> Result<(),COBIAError>;
8619	fn get_enumeration(&mut self,value_name:&CapeStringIn) -> Result<crate::CapeEnumeration,COBIAError>;
8620	fn get_value(&mut self,value_name:&CapeStringIn,value:&mut CapeValueOut) -> Result<(),COBIAError>;
8621	fn get_array_real(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
8622	fn get_array_integer(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayIntegerOut) -> Result<(),COBIAError>;
8623	fn get_array_boolean(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayBooleanOut) -> Result<(),COBIAError>;
8624	fn get_array_string(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
8625	fn get_array_enumeration(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayEnumerationOut<CapeEnumeration>) -> Result<(),COBIAError>;
8626	fn get_array_value(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayValueOut) -> Result<(),COBIAError>;
8627	fn get_array_byte(&mut self,value_name:&CapeStringIn,value:&mut CapeArrayByteOut) -> Result<(),COBIAError>;
8628	fn get_node_names(&mut self,node_names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
8629	fn get_node(&mut self,node_name:&CapeStringIn) -> Result<CapePersistReader,COBIAError>;
8630}
8631
8632pub trait ICapePersistReaderImpl : ICapePersistReader {
8633	type T: ICapeInterfaceImpl+ICapePersistReaderImpl;
8634
8635	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
8636
8637	///prepare CAPEOPEN_1_2_ICapePersistReader interface and return as generic ICapeInterface pointer
8638	fn init_interface() -> crate::C::ICapeInterface {
8639		crate::C::ICapeInterface {
8640			me: std::ptr::null_mut(),
8641			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapePersistReader_VTable).cast_mut()
8642				as *mut crate::C::ICapeInterface_VTable,
8643		}
8644	}
8645	
8646	fn init<Timpl: ICapePersistReaderImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
8647		let iface: *mut crate::C::CAPEOPEN_1_2_ICapePersistReader =
8648			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapePersistReader;
8649		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
8650		u.add_interface(
8651			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapePersistReader_UUID),
8652			iface as *mut crate::C::ICapeInterface,
8653		);
8654	}
8655	
8656	extern "C" fn raw_get_value_names(me: *mut std::ffi::c_void,value_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
8657		if value_names.is_null() {
8658			return COBIAERR_NULLPOINTER;
8659		}
8660		let p = me as *mut Self::T;
8661		let myself=unsafe { &mut *p };
8662		if value_names.is_null() {
8663			return COBIAERR_NULLPOINTER;
8664		}
8665		let mut value_names=unsafe{*((&value_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
8666		let mut value_names=CapeArrayStringOut::new(&mut value_names);
8667		match myself.get_value_names(&mut value_names) {
8668			Ok(_) => COBIAERR_NOERROR,
8669			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetValueNames")
8670		}
8671	}
8672
8673	extern "C" fn raw_get_value_type(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value_type:*mut C::CAPEOPEN_1_2_CapePersistedDataType) -> crate::C::CapeResult {
8674		if value_type.is_null() {
8675			return COBIAERR_NULLPOINTER;
8676		}
8677		let p = me as *mut Self::T;
8678		let myself=unsafe { &mut *p };
8679		let value_name=CapeStringIn::new(&value_name);
8680		match myself.get_value_type(&value_name) {
8681			Ok(_value_type) => {
8682				unsafe{*value_type=_value_type as C::CAPEOPEN_1_2_CapePersistedDataType;}
8683				COBIAERR_NOERROR
8684			},
8685			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetValueType")
8686		}
8687	}
8688
8689	extern "C" fn raw_get_real(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut CapeReal) -> crate::C::CapeResult {
8690		if value.is_null() {
8691			return COBIAERR_NULLPOINTER;
8692		}
8693		let p = me as *mut Self::T;
8694		let myself=unsafe { &mut *p };
8695		let value_name=CapeStringIn::new(&value_name);
8696		match myself.get_real(&value_name) {
8697			Ok(_value) => {
8698				unsafe{*value=_value;}
8699				COBIAERR_NOERROR
8700			},
8701			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetReal")
8702		}
8703	}
8704
8705	extern "C" fn raw_get_integer(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut CapeInteger) -> crate::C::CapeResult {
8706		if value.is_null() {
8707			return COBIAERR_NULLPOINTER;
8708		}
8709		let p = me as *mut Self::T;
8710		let myself=unsafe { &mut *p };
8711		let value_name=CapeStringIn::new(&value_name);
8712		match myself.get_integer(&value_name) {
8713			Ok(_value) => {
8714				unsafe{*value=_value;}
8715				COBIAERR_NOERROR
8716			},
8717			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetInteger")
8718		}
8719	}
8720
8721	extern "C" fn raw_get_boolean(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut CapeBoolean) -> crate::C::CapeResult {
8722		if value.is_null() {
8723			return COBIAERR_NULLPOINTER;
8724		}
8725		let p = me as *mut Self::T;
8726		let myself=unsafe { &mut *p };
8727		let value_name=CapeStringIn::new(&value_name);
8728		match myself.get_boolean(&value_name) {
8729			Ok(_value) => {
8730				unsafe{*value=_value;}
8731				COBIAERR_NOERROR
8732			},
8733			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetBoolean")
8734		}
8735	}
8736
8737	extern "C" fn raw_get_string(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeString) -> crate::C::CapeResult {
8738		if value.is_null() {
8739			return COBIAERR_NULLPOINTER;
8740		}
8741		let p = me as *mut Self::T;
8742		let myself=unsafe { &mut *p };
8743		if value.is_null() {
8744			return COBIAERR_NULLPOINTER;
8745		}
8746		let value_name=CapeStringIn::new(&value_name);
8747		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
8748		let mut value=CapeStringOut::new(&mut value);
8749		match myself.get_string(&value_name,&mut value) {
8750			Ok(_) => COBIAERR_NOERROR,
8751			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetString")
8752		}
8753	}
8754
8755	extern "C" fn raw_get_enumeration(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::CapeEnumeration) -> crate::C::CapeResult {
8756		if value.is_null() {
8757			return COBIAERR_NULLPOINTER;
8758		}
8759		let p = me as *mut Self::T;
8760		let myself=unsafe { &mut *p };
8761		let value_name=CapeStringIn::new(&value_name);
8762		match myself.get_enumeration(&value_name) {
8763			Ok(_value) => {
8764				unsafe{*value=_value;}
8765				COBIAERR_NOERROR
8766			},
8767			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetEnumeration")
8768		}
8769	}
8770
8771	extern "C" fn raw_get_value(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
8772		if value.is_null() {
8773			return COBIAERR_NULLPOINTER;
8774		}
8775		let p = me as *mut Self::T;
8776		let myself=unsafe { &mut *p };
8777		if value.is_null() {
8778			return COBIAERR_NULLPOINTER;
8779		}
8780		let value_name=CapeStringIn::new(&value_name);
8781		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeValue) as *mut *mut crate::C::ICapeValue)};
8782		let mut value=CapeValueOut::new(&mut value);
8783		match myself.get_value(&value_name,&mut value) {
8784			Ok(_) => COBIAERR_NOERROR,
8785			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetValue")
8786		}
8787	}
8788
8789	extern "C" fn raw_get_array_real(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
8790		if value.is_null() {
8791			return COBIAERR_NULLPOINTER;
8792		}
8793		let p = me as *mut Self::T;
8794		let myself=unsafe { &mut *p };
8795		if value.is_null() {
8796			return COBIAERR_NULLPOINTER;
8797		}
8798		let value_name=CapeStringIn::new(&value_name);
8799		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
8800		let mut value=CapeArrayRealOut::new(&mut value);
8801		match myself.get_array_real(&value_name,&mut value) {
8802			Ok(_) => COBIAERR_NOERROR,
8803			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayReal")
8804		}
8805	}
8806
8807	extern "C" fn raw_get_array_integer(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayInteger) -> crate::C::CapeResult {
8808		if value.is_null() {
8809			return COBIAERR_NULLPOINTER;
8810		}
8811		let p = me as *mut Self::T;
8812		let myself=unsafe { &mut *p };
8813		if value.is_null() {
8814			return COBIAERR_NULLPOINTER;
8815		}
8816		let value_name=CapeStringIn::new(&value_name);
8817		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayInteger) as *mut *mut crate::C::ICapeArrayInteger)};
8818		let mut value=CapeArrayIntegerOut::new(&mut value);
8819		match myself.get_array_integer(&value_name,&mut value) {
8820			Ok(_) => COBIAERR_NOERROR,
8821			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayInteger")
8822		}
8823	}
8824
8825	extern "C" fn raw_get_array_boolean(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayBoolean) -> crate::C::CapeResult {
8826		if value.is_null() {
8827			return COBIAERR_NULLPOINTER;
8828		}
8829		let p = me as *mut Self::T;
8830		let myself=unsafe { &mut *p };
8831		if value.is_null() {
8832			return COBIAERR_NULLPOINTER;
8833		}
8834		let value_name=CapeStringIn::new(&value_name);
8835		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayBoolean) as *mut *mut crate::C::ICapeArrayBoolean)};
8836		let mut value=CapeArrayBooleanOut::new(&mut value);
8837		match myself.get_array_boolean(&value_name,&mut value) {
8838			Ok(_) => COBIAERR_NOERROR,
8839			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayBoolean")
8840		}
8841	}
8842
8843	extern "C" fn raw_get_array_string(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
8844		if value.is_null() {
8845			return COBIAERR_NULLPOINTER;
8846		}
8847		let p = me as *mut Self::T;
8848		let myself=unsafe { &mut *p };
8849		if value.is_null() {
8850			return COBIAERR_NULLPOINTER;
8851		}
8852		let value_name=CapeStringIn::new(&value_name);
8853		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
8854		let mut value=CapeArrayStringOut::new(&mut value);
8855		match myself.get_array_string(&value_name,&mut value) {
8856			Ok(_) => COBIAERR_NOERROR,
8857			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayString")
8858		}
8859	}
8860
8861	extern "C" fn raw_get_array_enumeration(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
8862		if value.is_null() {
8863			return COBIAERR_NULLPOINTER;
8864		}
8865		let p = me as *mut Self::T;
8866		let myself=unsafe { &mut *p };
8867		if value.is_null() {
8868			return COBIAERR_NULLPOINTER;
8869		}
8870		let value_name=CapeStringIn::new(&value_name);
8871		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayEnumeration) as *mut *mut crate::C::ICapeArrayEnumeration)};
8872		let mut value=CapeArrayEnumerationOut::<CapeEnumeration>::new(&mut value);
8873		match myself.get_array_enumeration(&value_name,&mut value) {
8874			Ok(_) => COBIAERR_NOERROR,
8875			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayEnumeration")
8876		}
8877	}
8878
8879	extern "C" fn raw_get_array_value(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayValue) -> crate::C::CapeResult {
8880		if value.is_null() {
8881			return COBIAERR_NULLPOINTER;
8882		}
8883		let p = me as *mut Self::T;
8884		let myself=unsafe { &mut *p };
8885		if value.is_null() {
8886			return COBIAERR_NULLPOINTER;
8887		}
8888		let value_name=CapeStringIn::new(&value_name);
8889		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayValue) as *mut *mut crate::C::ICapeArrayValue)};
8890		let mut value=CapeArrayValueOut::new(&mut value);
8891		match myself.get_array_value(&value_name,&mut value) {
8892			Ok(_) => COBIAERR_NOERROR,
8893			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayValue")
8894		}
8895	}
8896
8897	extern "C" fn raw_get_array_byte(me: *mut std::ffi::c_void,value_name:*mut crate::C::ICapeString,value:*mut crate::C::ICapeArrayByte) -> crate::C::CapeResult {
8898		if value.is_null() {
8899			return COBIAERR_NULLPOINTER;
8900		}
8901		let p = me as *mut Self::T;
8902		let myself=unsafe { &mut *p };
8903		if value.is_null() {
8904			return COBIAERR_NULLPOINTER;
8905		}
8906		let value_name=CapeStringIn::new(&value_name);
8907		let mut value=unsafe{*((&value as *const *mut crate::C::ICapeArrayByte) as *mut *mut crate::C::ICapeArrayByte)};
8908		let mut value=CapeArrayByteOut::new(&mut value);
8909		match myself.get_array_byte(&value_name,&mut value) {
8910			Ok(_) => COBIAERR_NOERROR,
8911			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetArrayByte")
8912		}
8913	}
8914
8915	extern "C" fn raw_get_node_names(me: *mut std::ffi::c_void,node_names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
8916		if node_names.is_null() {
8917			return COBIAERR_NULLPOINTER;
8918		}
8919		let p = me as *mut Self::T;
8920		let myself=unsafe { &mut *p };
8921		if node_names.is_null() {
8922			return COBIAERR_NULLPOINTER;
8923		}
8924		let mut node_names=unsafe{*((&node_names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
8925		let mut node_names=CapeArrayStringOut::new(&mut node_names);
8926		match myself.get_node_names(&mut node_names) {
8927			Ok(_) => COBIAERR_NOERROR,
8928			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetNodeNames")
8929		}
8930	}
8931
8932	extern "C" fn raw_get_node(me: *mut std::ffi::c_void,node_name:*mut crate::C::ICapeString,value:*mut *mut C::CAPEOPEN_1_2_ICapePersistReader) -> crate::C::CapeResult {
8933		if value.is_null() {
8934			return COBIAERR_NULLPOINTER;
8935		}
8936		let p = me as *mut Self::T;
8937		let myself=unsafe { &mut *p };
8938		if value.is_null() {
8939			return COBIAERR_NULLPOINTER;
8940		}
8941		let node_name=CapeStringIn::new(&node_name);
8942		match myself.get_node(&node_name) {
8943			Ok(_value) => {
8944				unsafe{*value=_value.detach();}
8945				COBIAERR_NOERROR
8946			},
8947			Err(e) => myself.set_last_error(e,"ICapePersistReader::GetNode")
8948		}
8949	}
8950
8951	const VTABLE: C::CAPEOPEN_1_2_ICapePersistReader_VTable =
8952		C::CAPEOPEN_1_2_ICapePersistReader_VTable {
8953			base: crate::C::ICapeInterface_VTable {
8954				addReference: Some(Self::T::raw_add_reference),
8955				release: Some(Self::T::raw_release),
8956				queryInterface: Some(Self::T::raw_query_interface),
8957				getLastError: Some(Self::T::raw_get_last_error),
8958			},
8959			getValueNames: Some(Self::T::raw_get_value_names),
8960			GetValueType: Some(Self::T::raw_get_value_type),
8961			GetReal: Some(Self::T::raw_get_real),
8962			GetInteger: Some(Self::T::raw_get_integer),
8963			GetBoolean: Some(Self::T::raw_get_boolean),
8964			GetString: Some(Self::T::raw_get_string),
8965			GetEnumeration: Some(Self::T::raw_get_enumeration),
8966			GetValue: Some(Self::T::raw_get_value),
8967			GetArrayReal: Some(Self::T::raw_get_array_real),
8968			GetArrayInteger: Some(Self::T::raw_get_array_integer),
8969			GetArrayBoolean: Some(Self::T::raw_get_array_boolean),
8970			GetArrayString: Some(Self::T::raw_get_array_string),
8971			GetArrayEnumeration: Some(Self::T::raw_get_array_enumeration),
8972			GetArrayValue: Some(Self::T::raw_get_array_value),
8973			GetArrayByte: Some(Self::T::raw_get_array_byte),
8974			getNodeNames: Some(Self::T::raw_get_node_names),
8975			GetNode: Some(Self::T::raw_get_node),
8976		};
8977}
8978
8979#[cape_smart_pointer(ICAPEPERSISTREADER_UUID)]
8980pub struct CapePersistReader {
8981	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapePersistReader,
8982}
8983
8984impl CapePersistReader {
8985
8986	pub fn get_value_names<TypeOfValueNames:CapeArrayStringProviderOut>(&self,value_names:&mut TypeOfValueNames) -> Result<(),COBIAError> {
8987		let result_code = unsafe {
8988			((*(*self.interface).vTbl).getValueNames.unwrap())((*self.interface).me,(&value_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
8989		};
8990		match result_code {
8991			COBIAERR_NOERROR => {Ok(())},
8992			_ => Err(COBIAError::from_object(result_code,self))
8993		}
8994	}
8995
8996	pub fn get_value_type<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName) -> Result<CapePersistedDataType,COBIAError> {
8997		let mut value_type:C::CAPEOPEN_1_2_CapePersistedDataType=0;
8998		let result_code = unsafe {
8999			((*(*self.interface).vTbl).GetValueType.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value_type as *mut C::CAPEOPEN_1_2_CapePersistedDataType)
9000		};
9001		let value_type=match CapePersistedDataType::from(value_type) {
9002			Some(_value_type) => _value_type,
9003			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
9004		};
9005		match result_code {
9006			COBIAERR_NOERROR => {Ok(value_type)},
9007			_ => Err(COBIAError::from_object(result_code,self))
9008		}
9009	}
9010
9011	pub fn get_real<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName) -> Result<CapeReal,COBIAError> {
9012		let mut value:CapeReal=0.0;
9013		let result_code = unsafe {
9014			((*(*self.interface).vTbl).GetReal.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut CapeReal)
9015		};
9016		match result_code {
9017			COBIAERR_NOERROR => {Ok(value)},
9018			_ => Err(COBIAError::from_object(result_code,self))
9019		}
9020	}
9021
9022	pub fn get_integer<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName) -> Result<CapeInteger,COBIAError> {
9023		let mut value:CapeInteger=0;
9024		let result_code = unsafe {
9025			((*(*self.interface).vTbl).GetInteger.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut CapeInteger)
9026		};
9027		match result_code {
9028			COBIAERR_NOERROR => {Ok(value)},
9029			_ => Err(COBIAError::from_object(result_code,self))
9030		}
9031	}
9032
9033	pub fn get_boolean<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName) -> Result<CapeBoolean,COBIAError> {
9034		let mut value:CapeBoolean=false as CapeBoolean;
9035		let result_code = unsafe {
9036			((*(*self.interface).vTbl).GetBoolean.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut CapeBoolean)
9037		};
9038		match result_code {
9039			COBIAERR_NOERROR => {Ok(value)},
9040			_ => Err(COBIAError::from_object(result_code,self))
9041		}
9042	}
9043
9044	pub fn get_string<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeStringProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9045		let result_code = unsafe {
9046			((*(*self.interface).vTbl).GetString.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
9047		};
9048		match result_code {
9049			COBIAERR_NOERROR => {Ok(())},
9050			_ => Err(COBIAError::from_object(result_code,self))
9051		}
9052	}
9053
9054	pub fn get_enumeration<TypeOfValueName:CapeStringProviderIn>(&self,value_name:&TypeOfValueName) -> Result<crate::CapeEnumeration,COBIAError> {
9055		let mut value:crate::C::CapeEnumeration=0;
9056		let result_code = unsafe {
9057			((*(*self.interface).vTbl).GetEnumeration.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut crate::C::CapeEnumeration)
9058		};
9059		match result_code {
9060			COBIAERR_NOERROR => {Ok(value)},
9061			_ => Err(COBIAError::from_object(result_code,self))
9062		}
9063	}
9064
9065	pub fn get_value<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeValueProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9066		let result_code = unsafe {
9067			((*(*self.interface).vTbl).GetValue.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_value_out() as *const crate::C::ICapeValue).cast_mut())
9068		};
9069		match result_code {
9070			COBIAERR_NOERROR => {Ok(())},
9071			_ => Err(COBIAError::from_object(result_code,self))
9072		}
9073	}
9074
9075	pub fn get_array_real<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayRealProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9076		let result_code = unsafe {
9077			((*(*self.interface).vTbl).GetArrayReal.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
9078		};
9079		match result_code {
9080			COBIAERR_NOERROR => {Ok(())},
9081			_ => Err(COBIAError::from_object(result_code,self))
9082		}
9083	}
9084
9085	pub fn get_array_integer<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayIntegerProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9086		let result_code = unsafe {
9087			((*(*self.interface).vTbl).GetArrayInteger.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_integer_out() as *const crate::C::ICapeArrayInteger).cast_mut())
9088		};
9089		match result_code {
9090			COBIAERR_NOERROR => {Ok(())},
9091			_ => Err(COBIAError::from_object(result_code,self))
9092		}
9093	}
9094
9095	pub fn get_array_boolean<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayBooleanProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9096		let result_code = unsafe {
9097			((*(*self.interface).vTbl).GetArrayBoolean.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_boolean_out() as *const crate::C::ICapeArrayBoolean).cast_mut())
9098		};
9099		match result_code {
9100			COBIAERR_NOERROR => {Ok(())},
9101			_ => Err(COBIAError::from_object(result_code,self))
9102		}
9103	}
9104
9105	pub fn get_array_string<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayStringProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9106		let result_code = unsafe {
9107			((*(*self.interface).vTbl).GetArrayString.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
9108		};
9109		match result_code {
9110			COBIAERR_NOERROR => {Ok(())},
9111			_ => Err(COBIAError::from_object(result_code,self))
9112		}
9113	}
9114
9115	pub fn get_array_enumeration<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayEnumerationProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9116		let result_code = unsafe {
9117			((*(*self.interface).vTbl).GetArrayEnumeration.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_enumeration_out() as *const crate::C::ICapeArrayEnumeration).cast_mut())
9118		};
9119		match result_code {
9120			COBIAERR_NOERROR => {Ok(())},
9121			_ => Err(COBIAError::from_object(result_code,self))
9122		}
9123	}
9124
9125	pub fn get_array_value<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayValueProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9126		let result_code = unsafe {
9127			((*(*self.interface).vTbl).GetArrayValue.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_value_out() as *const crate::C::ICapeArrayValue).cast_mut())
9128		};
9129		match result_code {
9130			COBIAERR_NOERROR => {Ok(())},
9131			_ => Err(COBIAError::from_object(result_code,self))
9132		}
9133	}
9134
9135	pub fn get_array_byte<TypeOfValueName:CapeStringProviderIn,TypeOfValue:CapeArrayByteProviderOut>(&self,value_name:&TypeOfValueName,value:&mut TypeOfValue) -> Result<(),COBIAError> {
9136		let result_code = unsafe {
9137			((*(*self.interface).vTbl).GetArrayByte.unwrap())((*self.interface).me,(&value_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&value.as_cape_array_byte_out() as *const crate::C::ICapeArrayByte).cast_mut())
9138		};
9139		match result_code {
9140			COBIAERR_NOERROR => {Ok(())},
9141			_ => Err(COBIAError::from_object(result_code,self))
9142		}
9143	}
9144
9145	pub fn get_node_names<TypeOfNodeNames:CapeArrayStringProviderOut>(&self,node_names:&mut TypeOfNodeNames) -> Result<(),COBIAError> {
9146		let result_code = unsafe {
9147			((*(*self.interface).vTbl).getNodeNames.unwrap())((*self.interface).me,(&node_names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
9148		};
9149		match result_code {
9150			COBIAERR_NOERROR => {Ok(())},
9151			_ => Err(COBIAError::from_object(result_code,self))
9152		}
9153	}
9154
9155	pub fn get_node<TypeOfNodeName:CapeStringProviderIn>(&self,node_name:&TypeOfNodeName) -> Result<CapePersistReader,COBIAError> {
9156		let mut value: *mut C::CAPEOPEN_1_2_ICapePersistReader=std::ptr::null_mut();
9157		let result_code = unsafe {
9158			((*(*self.interface).vTbl).GetNode.unwrap())((*self.interface).me,(&node_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut *mut C::CAPEOPEN_1_2_ICapePersistReader)
9159		};
9160		match result_code {
9161			COBIAERR_NOERROR => {Ok(CapePersistReader::attach(value))},
9162			_ => Err(COBIAError::from_object(result_code,self))
9163		}
9164	}
9165
9166}
9167
9168///ICapePersist
9169///
9170///ICapePersist interface
9171///
9172pub trait ICapePersist {
9173	fn save(&mut self,writer:CapePersistWriter,clear_dirty:CapeBoolean) -> Result<(),COBIAError>;
9174	fn load(&mut self,reader:CapePersistReader) -> Result<(),COBIAError>;
9175	fn get_is_dirty(&mut self) -> Result<CapeBoolean,COBIAError>;
9176}
9177
9178pub trait ICapePersistImpl : ICapePersist {
9179	type T: ICapeInterfaceImpl+ICapePersistImpl;
9180
9181	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
9182
9183	///prepare CAPEOPEN_1_2_ICapePersist interface and return as generic ICapeInterface pointer
9184	fn init_interface() -> crate::C::ICapeInterface {
9185		crate::C::ICapeInterface {
9186			me: std::ptr::null_mut(),
9187			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapePersist_VTable).cast_mut()
9188				as *mut crate::C::ICapeInterface_VTable,
9189		}
9190	}
9191	
9192	fn init<Timpl: ICapePersistImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
9193		let iface: *mut crate::C::CAPEOPEN_1_2_ICapePersist =
9194			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapePersist;
9195		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
9196		u.add_interface(
9197			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapePersist_UUID),
9198			iface as *mut crate::C::ICapeInterface,
9199		);
9200	}
9201	
9202	extern "C" fn raw_save(me: *mut std::ffi::c_void,writer:*mut C::CAPEOPEN_1_2_ICapePersistWriter,clear_dirty:CapeBoolean) -> crate::C::CapeResult {
9203		if writer.is_null() {
9204			return COBIAERR_NULLPOINTER;
9205		}
9206		let p = me as *mut Self::T;
9207		let myself=unsafe { &mut *p };
9208		if writer.is_null() {
9209			return COBIAERR_NULLPOINTER;
9210		}
9211		let writer=CapePersistWriter::from_interface_pointer(writer);
9212		match myself.save(writer,clear_dirty) {
9213			Ok(_) => COBIAERR_NOERROR,
9214			Err(e) => myself.set_last_error(e,"ICapePersist::Save")
9215		}
9216	}
9217
9218	extern "C" fn raw_load(me: *mut std::ffi::c_void,reader:*mut C::CAPEOPEN_1_2_ICapePersistReader) -> crate::C::CapeResult {
9219		if reader.is_null() {
9220			return COBIAERR_NULLPOINTER;
9221		}
9222		let p = me as *mut Self::T;
9223		let myself=unsafe { &mut *p };
9224		if reader.is_null() {
9225			return COBIAERR_NULLPOINTER;
9226		}
9227		let reader=CapePersistReader::from_interface_pointer(reader);
9228		match myself.load(reader) {
9229			Ok(_) => COBIAERR_NOERROR,
9230			Err(e) => myself.set_last_error(e,"ICapePersist::Load")
9231		}
9232	}
9233
9234	extern "C" fn raw_get_is_dirty(me: *mut std::ffi::c_void,dirty:*mut CapeBoolean) -> crate::C::CapeResult {
9235		if dirty.is_null() {
9236			return COBIAERR_NULLPOINTER;
9237		}
9238		let p = me as *mut Self::T;
9239		let myself=unsafe { &mut *p };
9240		match myself.get_is_dirty() {
9241			Ok(_dirty) => {
9242				unsafe{*dirty=_dirty;}
9243				COBIAERR_NOERROR
9244			},
9245			Err(e) => myself.set_last_error(e,"ICapePersist::GetIsDirty")
9246		}
9247	}
9248
9249	const VTABLE: C::CAPEOPEN_1_2_ICapePersist_VTable =
9250		C::CAPEOPEN_1_2_ICapePersist_VTable {
9251			base: crate::C::ICapeInterface_VTable {
9252				addReference: Some(Self::T::raw_add_reference),
9253				release: Some(Self::T::raw_release),
9254				queryInterface: Some(Self::T::raw_query_interface),
9255				getLastError: Some(Self::T::raw_get_last_error),
9256			},
9257			Save: Some(Self::T::raw_save),
9258			Load: Some(Self::T::raw_load),
9259			getIsDirty: Some(Self::T::raw_get_is_dirty),
9260		};
9261}
9262
9263#[cape_smart_pointer(ICAPEPERSIST_UUID)]
9264pub struct CapePersist {
9265	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapePersist,
9266}
9267
9268impl CapePersist {
9269
9270	pub fn save(&self,writer:&CapePersistWriter,clear_dirty:CapeBoolean) -> Result<(),COBIAError> {
9271		let result_code = unsafe {
9272			((*(*self.interface).vTbl).Save.unwrap())((*self.interface).me,writer.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapePersistWriter,clear_dirty)
9273		};
9274		match result_code {
9275			COBIAERR_NOERROR => {Ok(())},
9276			_ => Err(COBIAError::from_object(result_code,self))
9277		}
9278	}
9279
9280	pub fn load(&self,reader:&CapePersistReader) -> Result<(),COBIAError> {
9281		let result_code = unsafe {
9282			((*(*self.interface).vTbl).Load.unwrap())((*self.interface).me,reader.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapePersistReader)
9283		};
9284		match result_code {
9285			COBIAERR_NOERROR => {Ok(())},
9286			_ => Err(COBIAError::from_object(result_code,self))
9287		}
9288	}
9289
9290	pub fn get_is_dirty(&self) -> Result<CapeBoolean,COBIAError> {
9291		let mut dirty:CapeBoolean=false as CapeBoolean;
9292		let result_code = unsafe {
9293			((*(*self.interface).vTbl).getIsDirty.unwrap())((*self.interface).me,&mut dirty as *mut CapeBoolean)
9294		};
9295		match result_code {
9296			COBIAERR_NOERROR => {Ok(dirty)},
9297			_ => Err(COBIAError::from_object(result_code,self))
9298		}
9299	}
9300
9301}
9302
9303///ICapeReport
9304///
9305///ICapeReport interface
9306///
9307pub trait ICapeReport {
9308	fn get_report_names(&mut self,names:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
9309	fn report_types(&mut self,name:&CapeStringIn,types:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
9310	fn report_locales(&mut self,name:&CapeStringIn,_type:&CapeStringIn,locales:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
9311	fn check_report_spec(&mut self,name:&CapeStringIn,_type:&CapeStringIn,locale:&CapeStringIn) -> Result<CapeBoolean,COBIAError>;
9312	fn generate_report(&mut self,name:&CapeStringIn,_type:&CapeStringIn,locale:&CapeStringIn,report_content:&mut CapeStringOut) -> Result<(),COBIAError>;
9313	fn generate_report_file(&mut self,name:&CapeStringIn,_type:&CapeStringIn,locale:&CapeStringIn,file_name:&CapeStringIn) -> Result<(),COBIAError>;
9314}
9315
9316pub trait ICapeReportImpl : ICapeReport {
9317	type T: ICapeInterfaceImpl+ICapeReportImpl;
9318
9319	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
9320
9321	///prepare CAPEOPEN_1_2_ICapeReport interface and return as generic ICapeInterface pointer
9322	fn init_interface() -> crate::C::ICapeInterface {
9323		crate::C::ICapeInterface {
9324			me: std::ptr::null_mut(),
9325			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeReport_VTable).cast_mut()
9326				as *mut crate::C::ICapeInterface_VTable,
9327		}
9328	}
9329	
9330	fn init<Timpl: ICapeReportImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
9331		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeReport =
9332			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeReport;
9333		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
9334		u.add_interface(
9335			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeReport_UUID),
9336			iface as *mut crate::C::ICapeInterface,
9337		);
9338	}
9339	
9340	extern "C" fn raw_get_report_names(me: *mut std::ffi::c_void,names:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
9341		if names.is_null() {
9342			return COBIAERR_NULLPOINTER;
9343		}
9344		let p = me as *mut Self::T;
9345		let myself=unsafe { &mut *p };
9346		if names.is_null() {
9347			return COBIAERR_NULLPOINTER;
9348		}
9349		let mut names=unsafe{*((&names as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
9350		let mut names=CapeArrayStringOut::new(&mut names);
9351		match myself.get_report_names(&mut names) {
9352			Ok(_) => COBIAERR_NOERROR,
9353			Err(e) => myself.set_last_error(e,"ICapeReport::GetReportNames")
9354		}
9355	}
9356
9357	extern "C" fn raw_report_types(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,types:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
9358		if types.is_null() {
9359			return COBIAERR_NULLPOINTER;
9360		}
9361		let p = me as *mut Self::T;
9362		let myself=unsafe { &mut *p };
9363		if types.is_null() {
9364			return COBIAERR_NULLPOINTER;
9365		}
9366		let name=CapeStringIn::new(&name);
9367		let mut types=unsafe{*((&types as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
9368		let mut types=CapeArrayStringOut::new(&mut types);
9369		match myself.report_types(&name,&mut types) {
9370			Ok(_) => COBIAERR_NOERROR,
9371			Err(e) => myself.set_last_error(e,"ICapeReport::ReportTypes")
9372		}
9373	}
9374
9375	extern "C" fn raw_report_locales(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,_type:*mut crate::C::ICapeString,locales:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
9376		if locales.is_null() {
9377			return COBIAERR_NULLPOINTER;
9378		}
9379		let p = me as *mut Self::T;
9380		let myself=unsafe { &mut *p };
9381		if locales.is_null() {
9382			return COBIAERR_NULLPOINTER;
9383		}
9384		let name=CapeStringIn::new(&name);
9385		let _type=CapeStringIn::new(&_type);
9386		let mut locales=unsafe{*((&locales as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
9387		let mut locales=CapeArrayStringOut::new(&mut locales);
9388		match myself.report_locales(&name,&_type,&mut locales) {
9389			Ok(_) => COBIAERR_NOERROR,
9390			Err(e) => myself.set_last_error(e,"ICapeReport::ReportLocales")
9391		}
9392	}
9393
9394	extern "C" fn raw_check_report_spec(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,_type:*mut crate::C::ICapeString,locale:*mut crate::C::ICapeString,report_available:*mut CapeBoolean) -> crate::C::CapeResult {
9395		if report_available.is_null() {
9396			return COBIAERR_NULLPOINTER;
9397		}
9398		let p = me as *mut Self::T;
9399		let myself=unsafe { &mut *p };
9400		let name=CapeStringIn::new(&name);
9401		let _type=CapeStringIn::new(&_type);
9402		let locale=CapeStringIn::new(&locale);
9403		match myself.check_report_spec(&name,&_type,&locale) {
9404			Ok(_report_available) => {
9405				unsafe{*report_available=_report_available;}
9406				COBIAERR_NOERROR
9407			},
9408			Err(e) => myself.set_last_error(e,"ICapeReport::CheckReportSpec")
9409		}
9410	}
9411
9412	extern "C" fn raw_generate_report(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,_type:*mut crate::C::ICapeString,locale:*mut crate::C::ICapeString,report_content:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9413		if report_content.is_null() {
9414			return COBIAERR_NULLPOINTER;
9415		}
9416		let p = me as *mut Self::T;
9417		let myself=unsafe { &mut *p };
9418		if report_content.is_null() {
9419			return COBIAERR_NULLPOINTER;
9420		}
9421		let name=CapeStringIn::new(&name);
9422		let _type=CapeStringIn::new(&_type);
9423		let locale=CapeStringIn::new(&locale);
9424		let mut report_content=unsafe{*((&report_content as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9425		let mut report_content=CapeStringOut::new(&mut report_content);
9426		match myself.generate_report(&name,&_type,&locale,&mut report_content) {
9427			Ok(_) => COBIAERR_NOERROR,
9428			Err(e) => myself.set_last_error(e,"ICapeReport::GenerateReport")
9429		}
9430	}
9431
9432	extern "C" fn raw_generate_report_file(me: *mut std::ffi::c_void,name:*mut crate::C::ICapeString,_type:*mut crate::C::ICapeString,locale:*mut crate::C::ICapeString,file_name:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9433		let p = me as *mut Self::T;
9434		let myself=unsafe { &mut *p };
9435		let name=CapeStringIn::new(&name);
9436		let _type=CapeStringIn::new(&_type);
9437		let locale=CapeStringIn::new(&locale);
9438		let file_name=CapeStringIn::new(&file_name);
9439		match myself.generate_report_file(&name,&_type,&locale,&file_name) {
9440			Ok(_) => COBIAERR_NOERROR,
9441			Err(e) => myself.set_last_error(e,"ICapeReport::GenerateReportFile")
9442		}
9443	}
9444
9445	const VTABLE: C::CAPEOPEN_1_2_ICapeReport_VTable =
9446		C::CAPEOPEN_1_2_ICapeReport_VTable {
9447			base: crate::C::ICapeInterface_VTable {
9448				addReference: Some(Self::T::raw_add_reference),
9449				release: Some(Self::T::raw_release),
9450				queryInterface: Some(Self::T::raw_query_interface),
9451				getLastError: Some(Self::T::raw_get_last_error),
9452			},
9453			getReportNames: Some(Self::T::raw_get_report_names),
9454			ReportTypes: Some(Self::T::raw_report_types),
9455			ReportLocales: Some(Self::T::raw_report_locales),
9456			CheckReportSpec: Some(Self::T::raw_check_report_spec),
9457			GenerateReport: Some(Self::T::raw_generate_report),
9458			GenerateReportFile: Some(Self::T::raw_generate_report_file),
9459		};
9460}
9461
9462#[cape_smart_pointer(ICAPEREPORT_UUID)]
9463pub struct CapeReport {
9464	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeReport,
9465}
9466
9467impl CapeReport {
9468
9469	pub fn get_report_names<TypeOfNames:CapeArrayStringProviderOut>(&self,names:&mut TypeOfNames) -> Result<(),COBIAError> {
9470		let result_code = unsafe {
9471			((*(*self.interface).vTbl).getReportNames.unwrap())((*self.interface).me,(&names.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
9472		};
9473		match result_code {
9474			COBIAERR_NOERROR => {Ok(())},
9475			_ => Err(COBIAError::from_object(result_code,self))
9476		}
9477	}
9478
9479	pub fn report_types<TypeOfName:CapeStringProviderIn,TypeOfTypes:CapeArrayStringProviderOut>(&self,name:&TypeOfName,types:&mut TypeOfTypes) -> Result<(),COBIAError> {
9480		let result_code = unsafe {
9481			((*(*self.interface).vTbl).ReportTypes.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&types.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
9482		};
9483		match result_code {
9484			COBIAERR_NOERROR => {Ok(())},
9485			_ => Err(COBIAError::from_object(result_code,self))
9486		}
9487	}
9488
9489	pub fn report_locales<TypeOfName:CapeStringProviderIn,TypeOfType:CapeStringProviderIn,TypeOfLocales:CapeArrayStringProviderOut>(&self,name:&TypeOfName,_type:&TypeOfType,locales:&mut TypeOfLocales) -> Result<(),COBIAError> {
9490		let result_code = unsafe {
9491			((*(*self.interface).vTbl).ReportLocales.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&locales.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
9492		};
9493		match result_code {
9494			COBIAERR_NOERROR => {Ok(())},
9495			_ => Err(COBIAError::from_object(result_code,self))
9496		}
9497	}
9498
9499	pub fn check_report_spec<TypeOfName:CapeStringProviderIn,TypeOfType:CapeStringProviderIn,TypeOfLocale:CapeStringProviderIn>(&self,name:&TypeOfName,_type:&TypeOfType,locale:&TypeOfLocale) -> Result<CapeBoolean,COBIAError> {
9500		let mut report_available:CapeBoolean=false as CapeBoolean;
9501		let result_code = unsafe {
9502			((*(*self.interface).vTbl).CheckReportSpec.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&locale.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut report_available as *mut CapeBoolean)
9503		};
9504		match result_code {
9505			COBIAERR_NOERROR => {Ok(report_available)},
9506			_ => Err(COBIAError::from_object(result_code,self))
9507		}
9508	}
9509
9510	pub fn generate_report<TypeOfName:CapeStringProviderIn,TypeOfType:CapeStringProviderIn,TypeOfLocale:CapeStringProviderIn,TypeOfReportContent:CapeStringProviderOut>(&self,name:&TypeOfName,_type:&TypeOfType,locale:&TypeOfLocale,report_content:&mut TypeOfReportContent) -> Result<(),COBIAError> {
9511		let result_code = unsafe {
9512			((*(*self.interface).vTbl).GenerateReport.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&locale.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&report_content.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
9513		};
9514		match result_code {
9515			COBIAERR_NOERROR => {Ok(())},
9516			_ => Err(COBIAError::from_object(result_code,self))
9517		}
9518	}
9519
9520	pub fn generate_report_file<TypeOfName:CapeStringProviderIn,TypeOfType:CapeStringProviderIn,TypeOfLocale:CapeStringProviderIn,TypeOfFileName:CapeStringProviderIn>(&self,name:&TypeOfName,_type:&TypeOfType,locale:&TypeOfLocale,file_name:&TypeOfFileName) -> Result<(),COBIAError> {
9521		let result_code = unsafe {
9522			((*(*self.interface).vTbl).GenerateReportFile.unwrap())((*self.interface).me,(&name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&_type.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&locale.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&file_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
9523		};
9524		match result_code {
9525			COBIAERR_NOERROR => {Ok(())},
9526			_ => Err(COBIAError::from_object(result_code,self))
9527		}
9528	}
9529
9530}
9531
9532///ICapeFlowsheetMonitoringComponent
9533///
9534///ICapeFlowsheetMonitoringComponent interface
9535///
9536pub trait ICapeFlowsheetMonitoringComponent {
9537	fn monitor(&mut self) -> Result<(),COBIAError>;
9538	fn validate(&mut self,message:&mut CapeStringOut) -> Result<CapeBoolean,COBIAError>;
9539	fn get_val_status(&mut self) -> Result<CapeValidationStatus,COBIAError>;
9540}
9541
9542pub trait ICapeFlowsheetMonitoringComponentImpl : ICapeFlowsheetMonitoringComponent {
9543	type T: ICapeInterfaceImpl+ICapeFlowsheetMonitoringComponentImpl;
9544
9545	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
9546
9547	///prepare CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent interface and return as generic ICapeInterface pointer
9548	fn init_interface() -> crate::C::ICapeInterface {
9549		crate::C::ICapeInterface {
9550			me: std::ptr::null_mut(),
9551			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent_VTable).cast_mut()
9552				as *mut crate::C::ICapeInterface_VTable,
9553		}
9554	}
9555	
9556	fn init<Timpl: ICapeFlowsheetMonitoringComponentImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
9557		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent =
9558			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent;
9559		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
9560		u.add_interface(
9561			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent_UUID),
9562			iface as *mut crate::C::ICapeInterface,
9563		);
9564	}
9565	
9566	extern "C" fn raw_monitor(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
9567		let p = me as *mut Self::T;
9568		let myself=unsafe { &mut *p };
9569		match myself.monitor() {
9570			Ok(_) => COBIAERR_NOERROR,
9571			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringComponent::Monitor")
9572		}
9573	}
9574
9575	extern "C" fn raw_validate(me: *mut std::ffi::c_void,message:*mut crate::C::ICapeString,is_valid:*mut CapeBoolean) -> crate::C::CapeResult {
9576		if message.is_null()||is_valid.is_null() {
9577			return COBIAERR_NULLPOINTER;
9578		}
9579		let p = me as *mut Self::T;
9580		let myself=unsafe { &mut *p };
9581		if message.is_null() {
9582			return COBIAERR_NULLPOINTER;
9583		}
9584		let mut message=unsafe{*((&message as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9585		let mut message=CapeStringOut::new(&mut message);
9586		match myself.validate(&mut message) {
9587			Ok(_is_valid) => {
9588				unsafe{*is_valid=_is_valid;}
9589				COBIAERR_NOERROR
9590			},
9591			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringComponent::Validate")
9592		}
9593	}
9594
9595	extern "C" fn raw_get_val_status(me: *mut std::ffi::c_void,validation_status:*mut C::CAPEOPEN_1_2_CapeValidationStatus) -> crate::C::CapeResult {
9596		if validation_status.is_null() {
9597			return COBIAERR_NULLPOINTER;
9598		}
9599		let p = me as *mut Self::T;
9600		let myself=unsafe { &mut *p };
9601		match myself.get_val_status() {
9602			Ok(_validation_status) => {
9603				unsafe{*validation_status=_validation_status as C::CAPEOPEN_1_2_CapeValidationStatus;}
9604				COBIAERR_NOERROR
9605			},
9606			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringComponent::GetValStatus")
9607		}
9608	}
9609
9610	const VTABLE: C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent_VTable =
9611		C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent_VTable {
9612			base: crate::C::ICapeInterface_VTable {
9613				addReference: Some(Self::T::raw_add_reference),
9614				release: Some(Self::T::raw_release),
9615				queryInterface: Some(Self::T::raw_query_interface),
9616				getLastError: Some(Self::T::raw_get_last_error),
9617			},
9618			Monitor: Some(Self::T::raw_monitor),
9619			Validate: Some(Self::T::raw_validate),
9620			getValStatus: Some(Self::T::raw_get_val_status),
9621		};
9622}
9623
9624#[cape_smart_pointer(ICAPEFLOWSHEETMONITORINGCOMPONENT_UUID)]
9625pub struct CapeFlowsheetMonitoringComponent {
9626	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringComponent,
9627}
9628
9629impl CapeFlowsheetMonitoringComponent {
9630
9631	pub fn monitor(&self) -> Result<(),COBIAError> {
9632		let result_code = unsafe {
9633			((*(*self.interface).vTbl).Monitor.unwrap())((*self.interface).me)
9634		};
9635		match result_code {
9636			COBIAERR_NOERROR => {Ok(())},
9637			_ => Err(COBIAError::from_object(result_code,self))
9638		}
9639	}
9640
9641	pub fn validate<TypeOfMessage:CapeStringProviderOut>(&self,message:&mut TypeOfMessage) -> Result<CapeBoolean,COBIAError> {
9642		let mut is_valid:CapeBoolean=false as CapeBoolean;
9643		let result_code = unsafe {
9644			((*(*self.interface).vTbl).Validate.unwrap())((*self.interface).me,(&message.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),&mut is_valid as *mut CapeBoolean)
9645		};
9646		match result_code {
9647			COBIAERR_NOERROR => {Ok(is_valid)},
9648			_ => Err(COBIAError::from_object(result_code,self))
9649		}
9650	}
9651
9652	pub fn get_val_status(&self) -> Result<CapeValidationStatus,COBIAError> {
9653		let mut validation_status:C::CAPEOPEN_1_2_CapeValidationStatus=0;
9654		let result_code = unsafe {
9655			((*(*self.interface).vTbl).getValStatus.unwrap())((*self.interface).me,&mut validation_status as *mut C::CAPEOPEN_1_2_CapeValidationStatus)
9656		};
9657		let validation_status=match CapeValidationStatus::from(validation_status) {
9658			Some(_validation_status) => _validation_status,
9659			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
9660		};
9661		match result_code {
9662			COBIAERR_NOERROR => {Ok(validation_status)},
9663			_ => Err(COBIAError::from_object(result_code,self))
9664		}
9665	}
9666
9667}
9668
9669///ICapeStream
9670///
9671///ICapeStream interface
9672///
9673pub trait ICapeStream {
9674	fn stream_type(&mut self) -> Result<CapeStreamType,COBIAError>;
9675	fn get_stream_object(&mut self) -> Result<crate::CapeObject,COBIAError>;
9676	fn get_upstream_port_connection(&mut self,upstream_port:&mut CapeStringOut,upstream_unit:&mut CapeStringOut) -> Result<(),COBIAError>;
9677	fn get_downstream_port_connection(&mut self,downstream_port:&mut CapeStringOut,downstream_unit:&mut CapeStringOut) -> Result<(),COBIAError>;
9678}
9679
9680pub trait ICapeStreamImpl : ICapeStream {
9681	type T: ICapeInterfaceImpl+ICapeStreamImpl;
9682
9683	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
9684
9685	///prepare CAPEOPEN_1_2_ICapeStream interface and return as generic ICapeInterface pointer
9686	fn init_interface() -> crate::C::ICapeInterface {
9687		crate::C::ICapeInterface {
9688			me: std::ptr::null_mut(),
9689			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeStream_VTable).cast_mut()
9690				as *mut crate::C::ICapeInterface_VTable,
9691		}
9692	}
9693	
9694	fn init<Timpl: ICapeStreamImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
9695		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeStream =
9696			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStream;
9697		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
9698		u.add_interface(
9699			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeStream_UUID),
9700			iface as *mut crate::C::ICapeInterface,
9701		);
9702	}
9703	
9704	extern "C" fn raw_stream_type(me: *mut std::ffi::c_void,stream_type:*mut C::CAPEOPEN_1_2_CapeStreamType) -> crate::C::CapeResult {
9705		if stream_type.is_null() {
9706			return COBIAERR_NULLPOINTER;
9707		}
9708		let p = me as *mut Self::T;
9709		let myself=unsafe { &mut *p };
9710		match myself.stream_type() {
9711			Ok(_stream_type) => {
9712				unsafe{*stream_type=_stream_type as C::CAPEOPEN_1_2_CapeStreamType;}
9713				COBIAERR_NOERROR
9714			},
9715			Err(e) => myself.set_last_error(e,"ICapeStream::StreamType")
9716		}
9717	}
9718
9719	extern "C" fn raw_get_stream_object(me: *mut std::ffi::c_void,stream_object:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
9720		if stream_object.is_null() {
9721			return COBIAERR_NULLPOINTER;
9722		}
9723		let p = me as *mut Self::T;
9724		let myself=unsafe { &mut *p };
9725		if stream_object.is_null() {
9726			return COBIAERR_NULLPOINTER;
9727		}
9728		match myself.get_stream_object() {
9729			Ok(_stream_object) => {
9730				unsafe{*stream_object=_stream_object.detach();}
9731				COBIAERR_NOERROR
9732			},
9733			Err(e) => myself.set_last_error(e,"ICapeStream::GetStreamObject")
9734		}
9735	}
9736
9737	extern "C" fn raw_get_upstream_port_connection(me: *mut std::ffi::c_void,upstream_port:*mut crate::C::ICapeString,upstream_unit:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9738		if upstream_port.is_null()||upstream_unit.is_null() {
9739			return COBIAERR_NULLPOINTER;
9740		}
9741		let p = me as *mut Self::T;
9742		let myself=unsafe { &mut *p };
9743		if upstream_port.is_null()||upstream_unit.is_null() {
9744			return COBIAERR_NULLPOINTER;
9745		}
9746		let mut upstream_port=unsafe{*((&upstream_port as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9747		let mut upstream_port=CapeStringOut::new(&mut upstream_port);
9748		let mut upstream_unit=unsafe{*((&upstream_unit as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9749		let mut upstream_unit=CapeStringOut::new(&mut upstream_unit);
9750		match myself.get_upstream_port_connection(&mut upstream_port,&mut upstream_unit) {
9751			Ok(_) => COBIAERR_NOERROR,
9752			Err(e) => myself.set_last_error(e,"ICapeStream::GetUpstreamPortConnection")
9753		}
9754	}
9755
9756	extern "C" fn raw_get_downstream_port_connection(me: *mut std::ffi::c_void,downstream_port:*mut crate::C::ICapeString,downstream_unit:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9757		if downstream_port.is_null()||downstream_unit.is_null() {
9758			return COBIAERR_NULLPOINTER;
9759		}
9760		let p = me as *mut Self::T;
9761		let myself=unsafe { &mut *p };
9762		if downstream_port.is_null()||downstream_unit.is_null() {
9763			return COBIAERR_NULLPOINTER;
9764		}
9765		let mut downstream_port=unsafe{*((&downstream_port as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9766		let mut downstream_port=CapeStringOut::new(&mut downstream_port);
9767		let mut downstream_unit=unsafe{*((&downstream_unit as *const *mut crate::C::ICapeString) as *mut *mut crate::C::ICapeString)};
9768		let mut downstream_unit=CapeStringOut::new(&mut downstream_unit);
9769		match myself.get_downstream_port_connection(&mut downstream_port,&mut downstream_unit) {
9770			Ok(_) => COBIAERR_NOERROR,
9771			Err(e) => myself.set_last_error(e,"ICapeStream::GetDownstreamPortConnection")
9772		}
9773	}
9774
9775	const VTABLE: C::CAPEOPEN_1_2_ICapeStream_VTable =
9776		C::CAPEOPEN_1_2_ICapeStream_VTable {
9777			base: crate::C::ICapeInterface_VTable {
9778				addReference: Some(Self::T::raw_add_reference),
9779				release: Some(Self::T::raw_release),
9780				queryInterface: Some(Self::T::raw_query_interface),
9781				getLastError: Some(Self::T::raw_get_last_error),
9782			},
9783			StreamType: Some(Self::T::raw_stream_type),
9784			getStreamObject: Some(Self::T::raw_get_stream_object),
9785			GetUpstreamPortConnection: Some(Self::T::raw_get_upstream_port_connection),
9786			GetDownstreamPortConnection: Some(Self::T::raw_get_downstream_port_connection),
9787		};
9788}
9789
9790#[cape_smart_pointer(ICAPESTREAM_UUID)]
9791pub struct CapeStream {
9792	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeStream,
9793}
9794
9795impl CapeStream {
9796
9797	pub fn stream_type(&self) -> Result<CapeStreamType,COBIAError> {
9798		let mut stream_type:C::CAPEOPEN_1_2_CapeStreamType=0;
9799		let result_code = unsafe {
9800			((*(*self.interface).vTbl).StreamType.unwrap())((*self.interface).me,&mut stream_type as *mut C::CAPEOPEN_1_2_CapeStreamType)
9801		};
9802		let stream_type=match CapeStreamType::from(stream_type) {
9803			Some(_stream_type) => _stream_type,
9804			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
9805		};
9806		match result_code {
9807			COBIAERR_NOERROR => {Ok(stream_type)},
9808			_ => Err(COBIAError::from_object(result_code,self))
9809		}
9810	}
9811
9812	pub fn get_stream_object(&self) -> Result<crate::CapeObject,COBIAError> {
9813		let mut stream_object: *mut crate::C::ICapeInterface=std::ptr::null_mut();
9814		let result_code = unsafe {
9815			((*(*self.interface).vTbl).getStreamObject.unwrap())((*self.interface).me,&mut stream_object as *mut *mut crate::C::ICapeInterface)
9816		};
9817		match result_code {
9818			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(stream_object))},
9819			_ => Err(COBIAError::from_object(result_code,self))
9820		}
9821	}
9822
9823	pub fn get_upstream_port_connection<TypeOfUpstreamPort:CapeStringProviderOut,TypeOfUpstreamUnit:CapeStringProviderOut>(&self,upstream_port:&mut TypeOfUpstreamPort,upstream_unit:&mut TypeOfUpstreamUnit) -> Result<(),COBIAError> {
9824		let result_code = unsafe {
9825			((*(*self.interface).vTbl).GetUpstreamPortConnection.unwrap())((*self.interface).me,(&upstream_port.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),(&upstream_unit.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
9826		};
9827		match result_code {
9828			COBIAERR_NOERROR => {Ok(())},
9829			_ => Err(COBIAError::from_object(result_code,self))
9830		}
9831	}
9832
9833	pub fn get_downstream_port_connection<TypeOfDownstreamPort:CapeStringProviderOut,TypeOfDownstreamUnit:CapeStringProviderOut>(&self,downstream_port:&mut TypeOfDownstreamPort,downstream_unit:&mut TypeOfDownstreamUnit) -> Result<(),COBIAError> {
9834		let result_code = unsafe {
9835			((*(*self.interface).vTbl).GetDownstreamPortConnection.unwrap())((*self.interface).me,(&downstream_port.as_cape_string_out() as *const crate::C::ICapeString).cast_mut(),(&downstream_unit.as_cape_string_out() as *const crate::C::ICapeString).cast_mut())
9836		};
9837		match result_code {
9838			COBIAERR_NOERROR => {Ok(())},
9839			_ => Err(COBIAError::from_object(result_code,self))
9840		}
9841	}
9842
9843}
9844
9845///ICapeFlowsheetMonitoringEventSink
9846///
9847///ICapeFlowsheetMonitoringEventSink interface
9848///
9849pub trait ICapeFlowsheetMonitoringEventSink {
9850	fn unit_operation_added(&mut self,unit:CapeUnit) -> Result<(),COBIAError>;
9851	fn unit_operation_removed(&mut self,unit:CapeUnit) -> Result<(),COBIAError>;
9852	fn unit_operation_renamed(&mut self,unit:CapeUnit,old_name:&CapeStringIn) -> Result<(),COBIAError>;
9853	fn stream_added(&mut self,stream:CapeStream,_type:CapeStreamType) -> Result<(),COBIAError>;
9854	fn stream_removed(&mut self,stream:CapeStream,_type:CapeStreamType) -> Result<(),COBIAError>;
9855	fn stream_renamed(&mut self,stream:CapeStream,_type:CapeStreamType,old_name:&CapeStringIn) -> Result<(),COBIAError>;
9856	fn connection_changed(&mut self,stream:CapeStream,_type:CapeStreamType,port:CapeUnitPort,unit:CapeUnit) -> Result<(),COBIAError>;
9857	fn flowsheet_solution_status_changed(&mut self,solution_status:CapeSolutionStatus) -> Result<(),COBIAError>;
9858	fn flowsheet_validation_state_changed(&mut self,validation_status:CapeValidationStatus) -> Result<(),COBIAError>;
9859	fn next_time_step(&mut self) -> Result<(),COBIAError>;
9860}
9861
9862pub trait ICapeFlowsheetMonitoringEventSinkImpl : ICapeFlowsheetMonitoringEventSink {
9863	type T: ICapeInterfaceImpl+ICapeFlowsheetMonitoringEventSinkImpl;
9864
9865	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
9866
9867	///prepare CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink interface and return as generic ICapeInterface pointer
9868	fn init_interface() -> crate::C::ICapeInterface {
9869		crate::C::ICapeInterface {
9870			me: std::ptr::null_mut(),
9871			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink_VTable).cast_mut()
9872				as *mut crate::C::ICapeInterface_VTable,
9873		}
9874	}
9875	
9876	fn init<Timpl: ICapeFlowsheetMonitoringEventSinkImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
9877		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink =
9878			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink;
9879		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
9880		u.add_interface(
9881			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink_UUID),
9882			iface as *mut crate::C::ICapeInterface,
9883		);
9884	}
9885	
9886	extern "C" fn raw_unit_operation_added(me: *mut std::ffi::c_void,unit:*mut C::CAPEOPEN_1_2_ICapeUnit) -> crate::C::CapeResult {
9887		if unit.is_null() {
9888			return COBIAERR_NULLPOINTER;
9889		}
9890		let p = me as *mut Self::T;
9891		let myself=unsafe { &mut *p };
9892		if unit.is_null() {
9893			return COBIAERR_NULLPOINTER;
9894		}
9895		let unit=CapeUnit::from_interface_pointer(unit);
9896		match myself.unit_operation_added(unit) {
9897			Ok(_) => COBIAERR_NOERROR,
9898			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::UnitOperationAdded")
9899		}
9900	}
9901
9902	extern "C" fn raw_unit_operation_removed(me: *mut std::ffi::c_void,unit:*mut C::CAPEOPEN_1_2_ICapeUnit) -> crate::C::CapeResult {
9903		if unit.is_null() {
9904			return COBIAERR_NULLPOINTER;
9905		}
9906		let p = me as *mut Self::T;
9907		let myself=unsafe { &mut *p };
9908		if unit.is_null() {
9909			return COBIAERR_NULLPOINTER;
9910		}
9911		let unit=CapeUnit::from_interface_pointer(unit);
9912		match myself.unit_operation_removed(unit) {
9913			Ok(_) => COBIAERR_NOERROR,
9914			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::UnitOperationRemoved")
9915		}
9916	}
9917
9918	extern "C" fn raw_unit_operation_renamed(me: *mut std::ffi::c_void,unit:*mut C::CAPEOPEN_1_2_ICapeUnit,old_name:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9919		if unit.is_null() {
9920			return COBIAERR_NULLPOINTER;
9921		}
9922		let p = me as *mut Self::T;
9923		let myself=unsafe { &mut *p };
9924		if unit.is_null() {
9925			return COBIAERR_NULLPOINTER;
9926		}
9927		let unit=CapeUnit::from_interface_pointer(unit);
9928		let old_name=CapeStringIn::new(&old_name);
9929		match myself.unit_operation_renamed(unit,&old_name) {
9930			Ok(_) => COBIAERR_NOERROR,
9931			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::UnitOperationRenamed")
9932		}
9933	}
9934
9935	extern "C" fn raw_stream_added(me: *mut std::ffi::c_void,stream:*mut C::CAPEOPEN_1_2_ICapeStream,_type:C::CAPEOPEN_1_2_CapeStreamType) -> crate::C::CapeResult {
9936		if stream.is_null() {
9937			return COBIAERR_NULLPOINTER;
9938		}
9939		let p = me as *mut Self::T;
9940		let myself=unsafe { &mut *p };
9941		if stream.is_null() {
9942			return COBIAERR_NULLPOINTER;
9943		}
9944		let stream=CapeStream::from_interface_pointer(stream);
9945		let _type=match CapeStreamType::from(_type) {
9946			Some(__type) => __type,
9947			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::StreamAdded");}
9948		};
9949		match myself.stream_added(stream,_type) {
9950			Ok(_) => COBIAERR_NOERROR,
9951			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::StreamAdded")
9952		}
9953	}
9954
9955	extern "C" fn raw_stream_removed(me: *mut std::ffi::c_void,stream:*mut C::CAPEOPEN_1_2_ICapeStream,_type:C::CAPEOPEN_1_2_CapeStreamType) -> crate::C::CapeResult {
9956		if stream.is_null() {
9957			return COBIAERR_NULLPOINTER;
9958		}
9959		let p = me as *mut Self::T;
9960		let myself=unsafe { &mut *p };
9961		if stream.is_null() {
9962			return COBIAERR_NULLPOINTER;
9963		}
9964		let stream=CapeStream::from_interface_pointer(stream);
9965		let _type=match CapeStreamType::from(_type) {
9966			Some(__type) => __type,
9967			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::StreamRemoved");}
9968		};
9969		match myself.stream_removed(stream,_type) {
9970			Ok(_) => COBIAERR_NOERROR,
9971			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::StreamRemoved")
9972		}
9973	}
9974
9975	extern "C" fn raw_stream_renamed(me: *mut std::ffi::c_void,stream:*mut C::CAPEOPEN_1_2_ICapeStream,_type:C::CAPEOPEN_1_2_CapeStreamType,old_name:*mut crate::C::ICapeString) -> crate::C::CapeResult {
9976		if stream.is_null() {
9977			return COBIAERR_NULLPOINTER;
9978		}
9979		let p = me as *mut Self::T;
9980		let myself=unsafe { &mut *p };
9981		if stream.is_null() {
9982			return COBIAERR_NULLPOINTER;
9983		}
9984		let stream=CapeStream::from_interface_pointer(stream);
9985		let _type=match CapeStreamType::from(_type) {
9986			Some(__type) => __type,
9987			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::StreamRenamed");}
9988		};
9989		let old_name=CapeStringIn::new(&old_name);
9990		match myself.stream_renamed(stream,_type,&old_name) {
9991			Ok(_) => COBIAERR_NOERROR,
9992			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::StreamRenamed")
9993		}
9994	}
9995
9996	extern "C" fn raw_connection_changed(me: *mut std::ffi::c_void,stream:*mut C::CAPEOPEN_1_2_ICapeStream,_type:C::CAPEOPEN_1_2_CapeStreamType,port:*mut C::CAPEOPEN_1_2_ICapeUnitPort,unit:*mut C::CAPEOPEN_1_2_ICapeUnit) -> crate::C::CapeResult {
9997		if stream.is_null()||port.is_null()||unit.is_null() {
9998			return COBIAERR_NULLPOINTER;
9999		}
10000		let p = me as *mut Self::T;
10001		let myself=unsafe { &mut *p };
10002		if stream.is_null()||port.is_null()||unit.is_null() {
10003			return COBIAERR_NULLPOINTER;
10004		}
10005		let stream=CapeStream::from_interface_pointer(stream);
10006		let _type=match CapeStreamType::from(_type) {
10007			Some(__type) => __type,
10008			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::ConnectionChanged");}
10009		};
10010		let port=CapeUnitPort::from_interface_pointer(port);
10011		let unit=CapeUnit::from_interface_pointer(unit);
10012		match myself.connection_changed(stream,_type,port,unit) {
10013			Ok(_) => COBIAERR_NOERROR,
10014			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::ConnectionChanged")
10015		}
10016	}
10017
10018	extern "C" fn raw_flowsheet_solution_status_changed(me: *mut std::ffi::c_void,solution_status:C::CAPEOPEN_1_2_CapeSolutionStatus) -> crate::C::CapeResult {
10019		let p = me as *mut Self::T;
10020		let myself=unsafe { &mut *p };
10021		let solution_status=match CapeSolutionStatus::from(solution_status) {
10022			Some(_solution_status) => _solution_status,
10023			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::FlowsheetSolutionStatusChanged");}
10024		};
10025		match myself.flowsheet_solution_status_changed(solution_status) {
10026			Ok(_) => COBIAERR_NOERROR,
10027			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::FlowsheetSolutionStatusChanged")
10028		}
10029	}
10030
10031	extern "C" fn raw_flowsheet_validation_state_changed(me: *mut std::ffi::c_void,validation_status:C::CAPEOPEN_1_2_CapeValidationStatus) -> crate::C::CapeResult {
10032		let p = me as *mut Self::T;
10033		let myself=unsafe { &mut *p };
10034		let validation_status=match CapeValidationStatus::from(validation_status) {
10035			Some(_validation_status) => _validation_status,
10036			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoringEventSink::FlowsheetValidationStateChanged");}
10037		};
10038		match myself.flowsheet_validation_state_changed(validation_status) {
10039			Ok(_) => COBIAERR_NOERROR,
10040			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::FlowsheetValidationStateChanged")
10041		}
10042	}
10043
10044	extern "C" fn raw_next_time_step(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
10045		let p = me as *mut Self::T;
10046		let myself=unsafe { &mut *p };
10047		match myself.next_time_step() {
10048			Ok(_) => COBIAERR_NOERROR,
10049			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoringEventSink::NextTimeStep")
10050		}
10051	}
10052
10053	const VTABLE: C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink_VTable =
10054		C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink_VTable {
10055			base: crate::C::ICapeInterface_VTable {
10056				addReference: Some(Self::T::raw_add_reference),
10057				release: Some(Self::T::raw_release),
10058				queryInterface: Some(Self::T::raw_query_interface),
10059				getLastError: Some(Self::T::raw_get_last_error),
10060			},
10061			UnitOperationAdded: Some(Self::T::raw_unit_operation_added),
10062			UnitOperationRemoved: Some(Self::T::raw_unit_operation_removed),
10063			UnitOperationRenamed: Some(Self::T::raw_unit_operation_renamed),
10064			StreamAdded: Some(Self::T::raw_stream_added),
10065			StreamRemoved: Some(Self::T::raw_stream_removed),
10066			StreamRenamed: Some(Self::T::raw_stream_renamed),
10067			ConnectionChanged: Some(Self::T::raw_connection_changed),
10068			FlowsheetSolutionStatusChanged: Some(Self::T::raw_flowsheet_solution_status_changed),
10069			FlowsheetValidationStateChanged: Some(Self::T::raw_flowsheet_validation_state_changed),
10070			NextTimeStep: Some(Self::T::raw_next_time_step),
10071		};
10072}
10073
10074#[cape_smart_pointer(ICAPEFLOWSHEETMONITORINGEVENTSINK_UUID)]
10075pub struct CapeFlowsheetMonitoringEventSink {
10076	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoringEventSink,
10077}
10078
10079impl CapeFlowsheetMonitoringEventSink {
10080
10081	pub fn unit_operation_added(&self,unit:&CapeUnit) -> Result<(),COBIAError> {
10082		let result_code = unsafe {
10083			((*(*self.interface).vTbl).UnitOperationAdded.unwrap())((*self.interface).me,unit.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnit)
10084		};
10085		match result_code {
10086			COBIAERR_NOERROR => {Ok(())},
10087			_ => Err(COBIAError::from_object(result_code,self))
10088		}
10089	}
10090
10091	pub fn unit_operation_removed(&self,unit:&CapeUnit) -> Result<(),COBIAError> {
10092		let result_code = unsafe {
10093			((*(*self.interface).vTbl).UnitOperationRemoved.unwrap())((*self.interface).me,unit.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnit)
10094		};
10095		match result_code {
10096			COBIAERR_NOERROR => {Ok(())},
10097			_ => Err(COBIAError::from_object(result_code,self))
10098		}
10099	}
10100
10101	pub fn unit_operation_renamed<TypeOfOldName:CapeStringProviderIn>(&self,unit:&CapeUnit,old_name:&TypeOfOldName) -> Result<(),COBIAError> {
10102		let result_code = unsafe {
10103			((*(*self.interface).vTbl).UnitOperationRenamed.unwrap())((*self.interface).me,unit.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnit,(&old_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
10104		};
10105		match result_code {
10106			COBIAERR_NOERROR => {Ok(())},
10107			_ => Err(COBIAError::from_object(result_code,self))
10108		}
10109	}
10110
10111	pub fn stream_added(&self,stream:&CapeStream,_type:CapeStreamType) -> Result<(),COBIAError> {
10112		let result_code = unsafe {
10113			((*(*self.interface).vTbl).StreamAdded.unwrap())((*self.interface).me,stream.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStream,_type as C::CAPEOPEN_1_2_CapeStreamType)
10114		};
10115		match result_code {
10116			COBIAERR_NOERROR => {Ok(())},
10117			_ => Err(COBIAError::from_object(result_code,self))
10118		}
10119	}
10120
10121	pub fn stream_removed(&self,stream:&CapeStream,_type:CapeStreamType) -> Result<(),COBIAError> {
10122		let result_code = unsafe {
10123			((*(*self.interface).vTbl).StreamRemoved.unwrap())((*self.interface).me,stream.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStream,_type as C::CAPEOPEN_1_2_CapeStreamType)
10124		};
10125		match result_code {
10126			COBIAERR_NOERROR => {Ok(())},
10127			_ => Err(COBIAError::from_object(result_code,self))
10128		}
10129	}
10130
10131	pub fn stream_renamed<TypeOfOldName:CapeStringProviderIn>(&self,stream:&CapeStream,_type:CapeStreamType,old_name:&TypeOfOldName) -> Result<(),COBIAError> {
10132		let result_code = unsafe {
10133			((*(*self.interface).vTbl).StreamRenamed.unwrap())((*self.interface).me,stream.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStream,_type as C::CAPEOPEN_1_2_CapeStreamType,(&old_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut())
10134		};
10135		match result_code {
10136			COBIAERR_NOERROR => {Ok(())},
10137			_ => Err(COBIAError::from_object(result_code,self))
10138		}
10139	}
10140
10141	pub fn connection_changed(&self,stream:&CapeStream,_type:CapeStreamType,port:&CapeUnitPort,unit:&CapeUnit) -> Result<(),COBIAError> {
10142		let result_code = unsafe {
10143			((*(*self.interface).vTbl).ConnectionChanged.unwrap())((*self.interface).me,stream.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeStream,_type as C::CAPEOPEN_1_2_CapeStreamType,port.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnitPort,unit.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeUnit)
10144		};
10145		match result_code {
10146			COBIAERR_NOERROR => {Ok(())},
10147			_ => Err(COBIAError::from_object(result_code,self))
10148		}
10149	}
10150
10151	pub fn flowsheet_solution_status_changed(&self,solution_status:CapeSolutionStatus) -> Result<(),COBIAError> {
10152		let result_code = unsafe {
10153			((*(*self.interface).vTbl).FlowsheetSolutionStatusChanged.unwrap())((*self.interface).me,solution_status as C::CAPEOPEN_1_2_CapeSolutionStatus)
10154		};
10155		match result_code {
10156			COBIAERR_NOERROR => {Ok(())},
10157			_ => Err(COBIAError::from_object(result_code,self))
10158		}
10159	}
10160
10161	pub fn flowsheet_validation_state_changed(&self,validation_status:CapeValidationStatus) -> Result<(),COBIAError> {
10162		let result_code = unsafe {
10163			((*(*self.interface).vTbl).FlowsheetValidationStateChanged.unwrap())((*self.interface).me,validation_status as C::CAPEOPEN_1_2_CapeValidationStatus)
10164		};
10165		match result_code {
10166			COBIAERR_NOERROR => {Ok(())},
10167			_ => Err(COBIAError::from_object(result_code,self))
10168		}
10169	}
10170
10171	pub fn next_time_step(&self) -> Result<(),COBIAError> {
10172		let result_code = unsafe {
10173			((*(*self.interface).vTbl).NextTimeStep.unwrap())((*self.interface).me)
10174		};
10175		match result_code {
10176			COBIAERR_NOERROR => {Ok(())},
10177			_ => Err(COBIAError::from_object(result_code,self))
10178		}
10179	}
10180
10181}
10182
10183///ICapeFlowsheetMonitoring
10184///
10185///ICapeFlowsheetMonitoring interface
10186///
10187pub trait ICapeFlowsheetMonitoring {
10188	fn get_stream_collection(&mut self,_type:CapeStreamType) -> Result<CapeCollection<CapeStream>,COBIAError>;
10189	fn get_unit_operation_collection(&mut self) -> Result<CapeCollection<CapeUnit>,COBIAError>;
10190	fn get_solution_status(&mut self) -> Result<CapeSolutionStatus,COBIAError>;
10191	fn get_val_status(&mut self) -> Result<CapeValidationStatus,COBIAError>;
10192	fn register_for_events(&mut self,component:crate::CapeObject,events:&CapeArrayEnumerationIn<CapeMonitoringEvent>) -> Result<(),COBIAError>;
10193	fn get_supported_events(&mut self,supported_events:&mut CapeArrayEnumerationOut<CapeMonitoringEvent>) -> Result<(),COBIAError>;
10194}
10195
10196pub trait ICapeFlowsheetMonitoringImpl : ICapeFlowsheetMonitoring {
10197	type T: ICapeInterfaceImpl+ICapeFlowsheetMonitoringImpl;
10198
10199	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
10200
10201	///prepare CAPEOPEN_1_2_ICapeFlowsheetMonitoring interface and return as generic ICapeInterface pointer
10202	fn init_interface() -> crate::C::ICapeInterface {
10203		crate::C::ICapeInterface {
10204			me: std::ptr::null_mut(),
10205			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring_VTable).cast_mut()
10206				as *mut crate::C::ICapeInterface_VTable,
10207		}
10208	}
10209	
10210	fn init<Timpl: ICapeFlowsheetMonitoringImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
10211		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring =
10212			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring;
10213		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
10214		u.add_interface(
10215			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring_UUID),
10216			iface as *mut crate::C::ICapeInterface,
10217		);
10218	}
10219	
10220	extern "C" fn raw_get_stream_collection(me: *mut std::ffi::c_void,_type:C::CAPEOPEN_1_2_CapeStreamType,stream_collection:*mut *mut C::CAPEOPEN_1_2_ICapeCollection) -> crate::C::CapeResult {
10221		if stream_collection.is_null() {
10222			return COBIAERR_NULLPOINTER;
10223		}
10224		let p = me as *mut Self::T;
10225		let myself=unsafe { &mut *p };
10226		if stream_collection.is_null() {
10227			return COBIAERR_NULLPOINTER;
10228		}
10229		let _type=match CapeStreamType::from(_type) {
10230			Some(__type) => __type,
10231			None => {return myself.set_last_error(COBIAError::Message("Invalid enumeration value".to_string()),"ICapeFlowsheetMonitoring::GetStreamCollection");}
10232		};
10233		match myself.get_stream_collection(_type) {
10234			Ok(_stream_collection) => {
10235				unsafe{*stream_collection=_stream_collection.detach();}
10236				COBIAERR_NOERROR
10237			},
10238			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::GetStreamCollection")
10239		}
10240	}
10241
10242	extern "C" fn raw_get_unit_operation_collection(me: *mut std::ffi::c_void,unit_operation_collection:*mut *mut C::CAPEOPEN_1_2_ICapeCollection) -> crate::C::CapeResult {
10243		if unit_operation_collection.is_null() {
10244			return COBIAERR_NULLPOINTER;
10245		}
10246		let p = me as *mut Self::T;
10247		let myself=unsafe { &mut *p };
10248		if unit_operation_collection.is_null() {
10249			return COBIAERR_NULLPOINTER;
10250		}
10251		match myself.get_unit_operation_collection() {
10252			Ok(_unit_operation_collection) => {
10253				unsafe{*unit_operation_collection=_unit_operation_collection.detach();}
10254				COBIAERR_NOERROR
10255			},
10256			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::GetUnitOperationCollection")
10257		}
10258	}
10259
10260	extern "C" fn raw_get_solution_status(me: *mut std::ffi::c_void,solution_status:*mut C::CAPEOPEN_1_2_CapeSolutionStatus) -> crate::C::CapeResult {
10261		if solution_status.is_null() {
10262			return COBIAERR_NULLPOINTER;
10263		}
10264		let p = me as *mut Self::T;
10265		let myself=unsafe { &mut *p };
10266		match myself.get_solution_status() {
10267			Ok(_solution_status) => {
10268				unsafe{*solution_status=_solution_status as C::CAPEOPEN_1_2_CapeSolutionStatus;}
10269				COBIAERR_NOERROR
10270			},
10271			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::GetSolutionStatus")
10272		}
10273	}
10274
10275	extern "C" fn raw_get_val_status(me: *mut std::ffi::c_void,validation_status:*mut C::CAPEOPEN_1_2_CapeValidationStatus) -> crate::C::CapeResult {
10276		if validation_status.is_null() {
10277			return COBIAERR_NULLPOINTER;
10278		}
10279		let p = me as *mut Self::T;
10280		let myself=unsafe { &mut *p };
10281		match myself.get_val_status() {
10282			Ok(_validation_status) => {
10283				unsafe{*validation_status=_validation_status as C::CAPEOPEN_1_2_CapeValidationStatus;}
10284				COBIAERR_NOERROR
10285			},
10286			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::GetValStatus")
10287		}
10288	}
10289
10290	extern "C" fn raw_register_for_events(me: *mut std::ffi::c_void,component:*mut crate::C::ICapeInterface,events:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
10291		if component.is_null() {
10292			return COBIAERR_NULLPOINTER;
10293		}
10294		let p = me as *mut Self::T;
10295		let myself=unsafe { &mut *p };
10296		if component.is_null() {
10297			return COBIAERR_NULLPOINTER;
10298		}
10299		let component=crate::CapeObject::from_interface_pointer(component);
10300		let events=CapeArrayEnumerationIn::<CapeMonitoringEvent>::new(&events);
10301		match myself.register_for_events(component,&events) {
10302			Ok(_) => COBIAERR_NOERROR,
10303			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::RegisterForEvents")
10304		}
10305	}
10306
10307	extern "C" fn raw_get_supported_events(me: *mut std::ffi::c_void,supported_events:*mut crate::C::ICapeArrayEnumeration) -> crate::C::CapeResult {
10308		if supported_events.is_null() {
10309			return COBIAERR_NULLPOINTER;
10310		}
10311		let p = me as *mut Self::T;
10312		let myself=unsafe { &mut *p };
10313		if supported_events.is_null() {
10314			return COBIAERR_NULLPOINTER;
10315		}
10316		let mut supported_events=unsafe{*((&supported_events as *const *mut crate::C::ICapeArrayEnumeration) as *mut *mut crate::C::ICapeArrayEnumeration)};
10317		let mut supported_events=CapeArrayEnumerationOut::<CapeMonitoringEvent>::new(&mut supported_events);
10318		match myself.get_supported_events(&mut supported_events) {
10319			Ok(_) => COBIAERR_NOERROR,
10320			Err(e) => myself.set_last_error(e,"ICapeFlowsheetMonitoring::GetSupportedEvents")
10321		}
10322	}
10323
10324	const VTABLE: C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring_VTable =
10325		C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring_VTable {
10326			base: crate::C::ICapeInterface_VTable {
10327				addReference: Some(Self::T::raw_add_reference),
10328				release: Some(Self::T::raw_release),
10329				queryInterface: Some(Self::T::raw_query_interface),
10330				getLastError: Some(Self::T::raw_get_last_error),
10331			},
10332			GetStreamCollection: Some(Self::T::raw_get_stream_collection),
10333			GetUnitOperationCollection: Some(Self::T::raw_get_unit_operation_collection),
10334			getSolutionStatus: Some(Self::T::raw_get_solution_status),
10335			getValStatus: Some(Self::T::raw_get_val_status),
10336			RegisterForEvents: Some(Self::T::raw_register_for_events),
10337			getSupportedEvents: Some(Self::T::raw_get_supported_events),
10338		};
10339}
10340
10341#[cape_smart_pointer(ICAPEFLOWSHEETMONITORING_UUID)]
10342pub struct CapeFlowsheetMonitoring {
10343	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeFlowsheetMonitoring,
10344}
10345
10346impl CapeFlowsheetMonitoring {
10347
10348	pub fn get_stream_collection(&self,_type:CapeStreamType) -> Result<CapeCollection<CapeStream>,COBIAError> {
10349		let mut stream_collection: *mut C::CAPEOPEN_1_2_ICapeCollection=std::ptr::null_mut();
10350		let result_code = unsafe {
10351			((*(*self.interface).vTbl).GetStreamCollection.unwrap())((*self.interface).me,_type as C::CAPEOPEN_1_2_CapeStreamType,&mut stream_collection as *mut *mut C::CAPEOPEN_1_2_ICapeCollection)
10352		};
10353		match result_code {
10354			COBIAERR_NOERROR => {Ok(CapeCollection::<CapeStream>::attach(stream_collection))},
10355			_ => Err(COBIAError::from_object(result_code,self))
10356		}
10357	}
10358
10359	pub fn get_unit_operation_collection(&self) -> Result<CapeCollection<CapeUnit>,COBIAError> {
10360		let mut unit_operation_collection: *mut C::CAPEOPEN_1_2_ICapeCollection=std::ptr::null_mut();
10361		let result_code = unsafe {
10362			((*(*self.interface).vTbl).GetUnitOperationCollection.unwrap())((*self.interface).me,&mut unit_operation_collection as *mut *mut C::CAPEOPEN_1_2_ICapeCollection)
10363		};
10364		match result_code {
10365			COBIAERR_NOERROR => {Ok(CapeCollection::<CapeUnit>::attach(unit_operation_collection))},
10366			_ => Err(COBIAError::from_object(result_code,self))
10367		}
10368	}
10369
10370	pub fn get_solution_status(&self) -> Result<CapeSolutionStatus,COBIAError> {
10371		let mut solution_status:C::CAPEOPEN_1_2_CapeSolutionStatus=0;
10372		let result_code = unsafe {
10373			((*(*self.interface).vTbl).getSolutionStatus.unwrap())((*self.interface).me,&mut solution_status as *mut C::CAPEOPEN_1_2_CapeSolutionStatus)
10374		};
10375		let solution_status=match CapeSolutionStatus::from(solution_status) {
10376			Some(_solution_status) => _solution_status,
10377			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
10378		};
10379		match result_code {
10380			COBIAERR_NOERROR => {Ok(solution_status)},
10381			_ => Err(COBIAError::from_object(result_code,self))
10382		}
10383	}
10384
10385	pub fn get_val_status(&self) -> Result<CapeValidationStatus,COBIAError> {
10386		let mut validation_status:C::CAPEOPEN_1_2_CapeValidationStatus=0;
10387		let result_code = unsafe {
10388			((*(*self.interface).vTbl).getValStatus.unwrap())((*self.interface).me,&mut validation_status as *mut C::CAPEOPEN_1_2_CapeValidationStatus)
10389		};
10390		let validation_status=match CapeValidationStatus::from(validation_status) {
10391			Some(_validation_status) => _validation_status,
10392			None => {return Err(COBIAError::Message("Invalid enumeration value".to_string()));}
10393		};
10394		match result_code {
10395			COBIAERR_NOERROR => {Ok(validation_status)},
10396			_ => Err(COBIAError::from_object(result_code,self))
10397		}
10398	}
10399
10400	pub fn register_for_events<TypeOfEvents:CapeArrayEnumerationProviderIn>(&self,component:&crate::CapeObject,events:&TypeOfEvents) -> Result<(),COBIAError> {
10401		let result_code = unsafe {
10402			((*(*self.interface).vTbl).RegisterForEvents.unwrap())((*self.interface).me,component.as_interface_pointer() as *mut crate::C::ICapeInterface,(&events.as_cape_array_enumeration_in() as *const crate::C::ICapeArrayEnumeration).cast_mut())
10403		};
10404		match result_code {
10405			COBIAERR_NOERROR => {Ok(())},
10406			_ => Err(COBIAError::from_object(result_code,self))
10407		}
10408	}
10409
10410	pub fn get_supported_events<TypeOfSupportedEvents:CapeArrayEnumerationProviderOut>(&self,supported_events:&mut TypeOfSupportedEvents) -> Result<(),COBIAError> {
10411		let result_code = unsafe {
10412			((*(*self.interface).vTbl).getSupportedEvents.unwrap())((*self.interface).me,(&supported_events.as_cape_array_enumeration_out() as *const crate::C::ICapeArrayEnumeration).cast_mut())
10413		};
10414		match result_code {
10415			COBIAERR_NOERROR => {Ok(())},
10416			_ => Err(COBIAError::from_object(result_code,self))
10417		}
10418	}
10419
10420}
10421
10422///ICapeThermoMaterialCustomData
10423///
10424///ICapeThermoMaterialCustomData interface
10425///
10426pub trait ICapeThermoMaterialCustomData {
10427	fn get_custom_data_container(&mut self,source:crate::CapeObject) -> Result<crate::CapeObject,COBIAError>;
10428}
10429
10430pub trait ICapeThermoMaterialCustomDataImpl : ICapeThermoMaterialCustomData {
10431	type T: ICapeInterfaceImpl+ICapeThermoMaterialCustomDataImpl;
10432
10433	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
10434
10435	///prepare CAPEOPEN_1_2_ICapeThermoMaterialCustomData interface and return as generic ICapeInterface pointer
10436	fn init_interface() -> crate::C::ICapeInterface {
10437		crate::C::ICapeInterface {
10438			me: std::ptr::null_mut(),
10439			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData_VTable).cast_mut()
10440				as *mut crate::C::ICapeInterface_VTable,
10441		}
10442	}
10443	
10444	fn init<Timpl: ICapeThermoMaterialCustomDataImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
10445		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData =
10446			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData;
10447		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
10448		u.add_interface(
10449			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData_UUID),
10450			iface as *mut crate::C::ICapeInterface,
10451		);
10452	}
10453	
10454	extern "C" fn raw_get_custom_data_container(me: *mut std::ffi::c_void,source:*mut crate::C::ICapeInterface,custom_data_container:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
10455		if source.is_null()||custom_data_container.is_null() {
10456			return COBIAERR_NULLPOINTER;
10457		}
10458		let p = me as *mut Self::T;
10459		let myself=unsafe { &mut *p };
10460		if source.is_null()||custom_data_container.is_null() {
10461			return COBIAERR_NULLPOINTER;
10462		}
10463		let source=crate::CapeObject::from_interface_pointer(source);
10464		match myself.get_custom_data_container(source) {
10465			Ok(_custom_data_container) => {
10466				unsafe{*custom_data_container=_custom_data_container.detach();}
10467				COBIAERR_NOERROR
10468			},
10469			Err(e) => myself.set_last_error(e,"ICapeThermoMaterialCustomData::GetCustomDataContainer")
10470		}
10471	}
10472
10473	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData_VTable =
10474		C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData_VTable {
10475			base: crate::C::ICapeInterface_VTable {
10476				addReference: Some(Self::T::raw_add_reference),
10477				release: Some(Self::T::raw_release),
10478				queryInterface: Some(Self::T::raw_query_interface),
10479				getLastError: Some(Self::T::raw_get_last_error),
10480			},
10481			GetCustomDataContainer: Some(Self::T::raw_get_custom_data_container),
10482		};
10483}
10484
10485#[cape_smart_pointer(ICAPETHERMOMATERIALCUSTOMDATA_UUID)]
10486pub struct CapeThermoMaterialCustomData {
10487	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoMaterialCustomData,
10488}
10489
10490impl CapeThermoMaterialCustomData {
10491
10492	pub fn get_custom_data_container(&self,source:&crate::CapeObject) -> Result<crate::CapeObject,COBIAError> {
10493		let mut custom_data_container: *mut crate::C::ICapeInterface=std::ptr::null_mut();
10494		let result_code = unsafe {
10495			((*(*self.interface).vTbl).GetCustomDataContainer.unwrap())((*self.interface).me,source.as_interface_pointer() as *mut crate::C::ICapeInterface,&mut custom_data_container as *mut *mut crate::C::ICapeInterface)
10496		};
10497		match result_code {
10498			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(custom_data_container))},
10499			_ => Err(COBIAError::from_object(result_code,self))
10500		}
10501	}
10502
10503}
10504
10505///ICapeCustomDataSource
10506///
10507///ICapeCustomDataSource interface
10508///
10509pub trait ICapeCustomDataSource {
10510	fn create_custom_data_container(&mut self) -> Result<crate::CapeObject,COBIAError>;
10511	fn copy_custom_data(&mut self,source:crate::CapeObject,target:crate::CapeObject) -> Result<(),COBIAError>;
10512	fn thermodynamic_configuration_changed(&mut self,container:crate::CapeObject) -> Result<(),COBIAError>;
10513}
10514
10515pub trait ICapeCustomDataSourceImpl : ICapeCustomDataSource {
10516	type T: ICapeInterfaceImpl+ICapeCustomDataSourceImpl;
10517
10518	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
10519
10520	///prepare CAPEOPEN_1_2_ICapeCustomDataSource interface and return as generic ICapeInterface pointer
10521	fn init_interface() -> crate::C::ICapeInterface {
10522		crate::C::ICapeInterface {
10523			me: std::ptr::null_mut(),
10524			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeCustomDataSource_VTable).cast_mut()
10525				as *mut crate::C::ICapeInterface_VTable,
10526		}
10527	}
10528	
10529	fn init<Timpl: ICapeCustomDataSourceImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
10530		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeCustomDataSource =
10531			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeCustomDataSource;
10532		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
10533		u.add_interface(
10534			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeCustomDataSource_UUID),
10535			iface as *mut crate::C::ICapeInterface,
10536		);
10537	}
10538	
10539	extern "C" fn raw_create_custom_data_container(me: *mut std::ffi::c_void,custom_data_container:*mut *mut crate::C::ICapeInterface) -> crate::C::CapeResult {
10540		if custom_data_container.is_null() {
10541			return COBIAERR_NULLPOINTER;
10542		}
10543		let p = me as *mut Self::T;
10544		let myself=unsafe { &mut *p };
10545		if custom_data_container.is_null() {
10546			return COBIAERR_NULLPOINTER;
10547		}
10548		match myself.create_custom_data_container() {
10549			Ok(_custom_data_container) => {
10550				unsafe{*custom_data_container=_custom_data_container.detach();}
10551				COBIAERR_NOERROR
10552			},
10553			Err(e) => myself.set_last_error(e,"ICapeCustomDataSource::CreateCustomDataContainer")
10554		}
10555	}
10556
10557	extern "C" fn raw_copy_custom_data(me: *mut std::ffi::c_void,source:*mut crate::C::ICapeInterface,target:*mut crate::C::ICapeInterface) -> crate::C::CapeResult {
10558		if source.is_null()||target.is_null() {
10559			return COBIAERR_NULLPOINTER;
10560		}
10561		let p = me as *mut Self::T;
10562		let myself=unsafe { &mut *p };
10563		if source.is_null()||target.is_null() {
10564			return COBIAERR_NULLPOINTER;
10565		}
10566		let source=crate::CapeObject::from_interface_pointer(source);
10567		let target=crate::CapeObject::from_interface_pointer(target);
10568		match myself.copy_custom_data(source,target) {
10569			Ok(_) => COBIAERR_NOERROR,
10570			Err(e) => myself.set_last_error(e,"ICapeCustomDataSource::CopyCustomData")
10571		}
10572	}
10573
10574	extern "C" fn raw_thermodynamic_configuration_changed(me: *mut std::ffi::c_void,container:*mut crate::C::ICapeInterface) -> crate::C::CapeResult {
10575		if container.is_null() {
10576			return COBIAERR_NULLPOINTER;
10577		}
10578		let p = me as *mut Self::T;
10579		let myself=unsafe { &mut *p };
10580		if container.is_null() {
10581			return COBIAERR_NULLPOINTER;
10582		}
10583		let container=crate::CapeObject::from_interface_pointer(container);
10584		match myself.thermodynamic_configuration_changed(container) {
10585			Ok(_) => COBIAERR_NOERROR,
10586			Err(e) => myself.set_last_error(e,"ICapeCustomDataSource::ThermodynamicConfigurationChanged")
10587		}
10588	}
10589
10590	const VTABLE: C::CAPEOPEN_1_2_ICapeCustomDataSource_VTable =
10591		C::CAPEOPEN_1_2_ICapeCustomDataSource_VTable {
10592			base: crate::C::ICapeInterface_VTable {
10593				addReference: Some(Self::T::raw_add_reference),
10594				release: Some(Self::T::raw_release),
10595				queryInterface: Some(Self::T::raw_query_interface),
10596				getLastError: Some(Self::T::raw_get_last_error),
10597			},
10598			CreateCustomDataContainer: Some(Self::T::raw_create_custom_data_container),
10599			CopyCustomData: Some(Self::T::raw_copy_custom_data),
10600			ThermodynamicConfigurationChanged: Some(Self::T::raw_thermodynamic_configuration_changed),
10601		};
10602}
10603
10604#[cape_smart_pointer(ICAPECUSTOMDATASOURCE_UUID)]
10605pub struct CapeCustomDataSource {
10606	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeCustomDataSource,
10607}
10608
10609impl CapeCustomDataSource {
10610
10611	pub fn create_custom_data_container(&self) -> Result<crate::CapeObject,COBIAError> {
10612		let mut custom_data_container: *mut crate::C::ICapeInterface=std::ptr::null_mut();
10613		let result_code = unsafe {
10614			((*(*self.interface).vTbl).CreateCustomDataContainer.unwrap())((*self.interface).me,&mut custom_data_container as *mut *mut crate::C::ICapeInterface)
10615		};
10616		match result_code {
10617			COBIAERR_NOERROR => {Ok(crate::CapeObject::attach(custom_data_container))},
10618			_ => Err(COBIAError::from_object(result_code,self))
10619		}
10620	}
10621
10622	pub fn copy_custom_data(&self,source:&crate::CapeObject,target:&crate::CapeObject) -> Result<(),COBIAError> {
10623		let result_code = unsafe {
10624			((*(*self.interface).vTbl).CopyCustomData.unwrap())((*self.interface).me,source.as_interface_pointer() as *mut crate::C::ICapeInterface,target.as_interface_pointer() as *mut crate::C::ICapeInterface)
10625		};
10626		match result_code {
10627			COBIAERR_NOERROR => {Ok(())},
10628			_ => Err(COBIAError::from_object(result_code,self))
10629		}
10630	}
10631
10632	pub fn thermodynamic_configuration_changed(&self,container:&crate::CapeObject) -> Result<(),COBIAError> {
10633		let result_code = unsafe {
10634			((*(*self.interface).vTbl).ThermodynamicConfigurationChanged.unwrap())((*self.interface).me,container.as_interface_pointer() as *mut crate::C::ICapeInterface)
10635		};
10636		match result_code {
10637			COBIAERR_NOERROR => {Ok(())},
10638			_ => Err(COBIAError::from_object(result_code,self))
10639		}
10640	}
10641
10642}
10643
10644///ICapeThermoPetroleumFractions
10645///
10646///ICapeThermoPetroleumFractions interface
10647///
10648pub trait ICapeThermoPetroleumFractions {
10649	fn set_petro_compound_prop(&mut self,property_id:&CapeStringIn,basis:&CapeStringIn,values:&CapeArrayRealIn) -> Result<(),COBIAError>;
10650	fn set_petro_bulk_prop(&mut self,property_id:&CapeStringIn,basis:&CapeStringIn,value:CapeReal) -> Result<(),COBIAError>;
10651	fn get_petro_compound_prop(&mut self,property_id:&CapeStringIn,basis:&CapeStringIn,values:&mut CapeArrayRealOut) -> Result<(),COBIAError>;
10652	fn get_petro_bulk_prop(&mut self,property_id:&CapeStringIn,basis:&CapeStringIn) -> Result<CapeReal,COBIAError>;
10653	fn petro_prop_list(&mut self,property_ids:&mut CapeArrayStringOut) -> Result<(),COBIAError>;
10654	fn get_petro_prop_attribute(&mut self,property_id:&CapeStringIn,attribute_name:&CapeStringIn,attribute_value:&mut CapeValueOut) -> Result<(),COBIAError>;
10655	fn copy_petro_properties(&mut self,source:CapeThermoMaterial) -> Result<(),COBIAError>;
10656	fn update_petro_properties(&mut self) -> Result<(),COBIAError>;
10657}
10658
10659pub trait ICapeThermoPetroleumFractionsImpl : ICapeThermoPetroleumFractions {
10660	type T: ICapeInterfaceImpl+ICapeThermoPetroleumFractionsImpl;
10661
10662	fn as_interface_pointer(&mut self) -> *mut crate::C::ICapeInterface;
10663
10664	///prepare CAPEOPEN_1_2_ICapeThermoPetroleumFractions interface and return as generic ICapeInterface pointer
10665	fn init_interface() -> crate::C::ICapeInterface {
10666		crate::C::ICapeInterface {
10667			me: std::ptr::null_mut(),
10668			vTbl: (&Self::T::VTABLE as *const crate::C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions_VTable).cast_mut()
10669				as *mut crate::C::ICapeInterface_VTable,
10670		}
10671	}
10672	
10673	fn init<Timpl: ICapeThermoPetroleumFractionsImpl+ICapeInterfaceImpl>(u: &mut Timpl) {
10674		let iface: *mut crate::C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions =
10675			u.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions;
10676		unsafe { (*iface).me = u.get_self() as *const Timpl as *mut std::ffi::c_void };
10677		u.add_interface(
10678			std::ptr::addr_of!(C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions_UUID),
10679			iface as *mut crate::C::ICapeInterface,
10680		);
10681	}
10682	
10683	extern "C" fn raw_set_petro_compound_prop(me: *mut std::ffi::c_void,property_id:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,values:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
10684		let p = me as *mut Self::T;
10685		let myself=unsafe { &mut *p };
10686		let property_id=CapeStringIn::new(&property_id);
10687		let basis=CapeStringIn::new(&basis);
10688		let values=CapeArrayRealIn::new(&values);
10689		match myself.set_petro_compound_prop(&property_id,&basis,&values) {
10690			Ok(_) => COBIAERR_NOERROR,
10691			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::SetPetroCompoundProp")
10692		}
10693	}
10694
10695	extern "C" fn raw_set_petro_bulk_prop(me: *mut std::ffi::c_void,property_id:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,value:CapeReal) -> crate::C::CapeResult {
10696		let p = me as *mut Self::T;
10697		let myself=unsafe { &mut *p };
10698		let property_id=CapeStringIn::new(&property_id);
10699		let basis=CapeStringIn::new(&basis);
10700		match myself.set_petro_bulk_prop(&property_id,&basis,value) {
10701			Ok(_) => COBIAERR_NOERROR,
10702			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::SetPetroBulkProp")
10703		}
10704	}
10705
10706	extern "C" fn raw_get_petro_compound_prop(me: *mut std::ffi::c_void,property_id:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,values:*mut crate::C::ICapeArrayReal) -> crate::C::CapeResult {
10707		if values.is_null() {
10708			return COBIAERR_NULLPOINTER;
10709		}
10710		let p = me as *mut Self::T;
10711		let myself=unsafe { &mut *p };
10712		if values.is_null() {
10713			return COBIAERR_NULLPOINTER;
10714		}
10715		let property_id=CapeStringIn::new(&property_id);
10716		let basis=CapeStringIn::new(&basis);
10717		let mut values=unsafe{*((&values as *const *mut crate::C::ICapeArrayReal) as *mut *mut crate::C::ICapeArrayReal)};
10718		let mut values=CapeArrayRealOut::new(&mut values);
10719		match myself.get_petro_compound_prop(&property_id,&basis,&mut values) {
10720			Ok(_) => COBIAERR_NOERROR,
10721			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::GetPetroCompoundProp")
10722		}
10723	}
10724
10725	extern "C" fn raw_get_petro_bulk_prop(me: *mut std::ffi::c_void,property_id:*mut crate::C::ICapeString,basis:*mut crate::C::ICapeString,value:*mut CapeReal) -> crate::C::CapeResult {
10726		if value.is_null() {
10727			return COBIAERR_NULLPOINTER;
10728		}
10729		let p = me as *mut Self::T;
10730		let myself=unsafe { &mut *p };
10731		let property_id=CapeStringIn::new(&property_id);
10732		let basis=CapeStringIn::new(&basis);
10733		match myself.get_petro_bulk_prop(&property_id,&basis) {
10734			Ok(_value) => {
10735				unsafe{*value=_value;}
10736				COBIAERR_NOERROR
10737			},
10738			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::GetPetroBulkProp")
10739		}
10740	}
10741
10742	extern "C" fn raw_petro_prop_list(me: *mut std::ffi::c_void,property_ids:*mut crate::C::ICapeArrayString) -> crate::C::CapeResult {
10743		if property_ids.is_null() {
10744			return COBIAERR_NULLPOINTER;
10745		}
10746		let p = me as *mut Self::T;
10747		let myself=unsafe { &mut *p };
10748		if property_ids.is_null() {
10749			return COBIAERR_NULLPOINTER;
10750		}
10751		let mut property_ids=unsafe{*((&property_ids as *const *mut crate::C::ICapeArrayString) as *mut *mut crate::C::ICapeArrayString)};
10752		let mut property_ids=CapeArrayStringOut::new(&mut property_ids);
10753		match myself.petro_prop_list(&mut property_ids) {
10754			Ok(_) => COBIAERR_NOERROR,
10755			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::PetroPropList")
10756		}
10757	}
10758
10759	extern "C" fn raw_get_petro_prop_attribute(me: *mut std::ffi::c_void,property_id:*mut crate::C::ICapeString,attribute_name:*mut crate::C::ICapeString,attribute_value:*mut crate::C::ICapeValue) -> crate::C::CapeResult {
10760		if attribute_value.is_null() {
10761			return COBIAERR_NULLPOINTER;
10762		}
10763		let p = me as *mut Self::T;
10764		let myself=unsafe { &mut *p };
10765		if attribute_value.is_null() {
10766			return COBIAERR_NULLPOINTER;
10767		}
10768		let property_id=CapeStringIn::new(&property_id);
10769		let attribute_name=CapeStringIn::new(&attribute_name);
10770		let mut attribute_value=unsafe{*((&attribute_value as *const *mut crate::C::ICapeValue) as *mut *mut crate::C::ICapeValue)};
10771		let mut attribute_value=CapeValueOut::new(&mut attribute_value);
10772		match myself.get_petro_prop_attribute(&property_id,&attribute_name,&mut attribute_value) {
10773			Ok(_) => COBIAERR_NOERROR,
10774			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::GetPetroPropAttribute")
10775		}
10776	}
10777
10778	extern "C" fn raw_copy_petro_properties(me: *mut std::ffi::c_void,source:*mut C::CAPEOPEN_1_2_ICapeThermoMaterial) -> crate::C::CapeResult {
10779		if source.is_null() {
10780			return COBIAERR_NULLPOINTER;
10781		}
10782		let p = me as *mut Self::T;
10783		let myself=unsafe { &mut *p };
10784		if source.is_null() {
10785			return COBIAERR_NULLPOINTER;
10786		}
10787		let source=CapeThermoMaterial::from_interface_pointer(source);
10788		match myself.copy_petro_properties(source) {
10789			Ok(_) => COBIAERR_NOERROR,
10790			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::CopyPetroProperties")
10791		}
10792	}
10793
10794	extern "C" fn raw_update_petro_properties(me: *mut std::ffi::c_void) -> crate::C::CapeResult {
10795		let p = me as *mut Self::T;
10796		let myself=unsafe { &mut *p };
10797		match myself.update_petro_properties() {
10798			Ok(_) => COBIAERR_NOERROR,
10799			Err(e) => myself.set_last_error(e,"ICapeThermoPetroleumFractions::UpdatePetroProperties")
10800		}
10801	}
10802
10803	const VTABLE: C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions_VTable =
10804		C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions_VTable {
10805			base: crate::C::ICapeInterface_VTable {
10806				addReference: Some(Self::T::raw_add_reference),
10807				release: Some(Self::T::raw_release),
10808				queryInterface: Some(Self::T::raw_query_interface),
10809				getLastError: Some(Self::T::raw_get_last_error),
10810			},
10811			SetPetroCompoundProp: Some(Self::T::raw_set_petro_compound_prop),
10812			SetPetroBulkProp: Some(Self::T::raw_set_petro_bulk_prop),
10813			GetPetroCompoundProp: Some(Self::T::raw_get_petro_compound_prop),
10814			GetPetroBulkProp: Some(Self::T::raw_get_petro_bulk_prop),
10815			PetroPropList: Some(Self::T::raw_petro_prop_list),
10816			GetPetroPropAttribute: Some(Self::T::raw_get_petro_prop_attribute),
10817			CopyPetroProperties: Some(Self::T::raw_copy_petro_properties),
10818			UpdatePetroProperties: Some(Self::T::raw_update_petro_properties),
10819		};
10820}
10821
10822#[cape_smart_pointer(ICAPETHERMOPETROLEUMFRACTIONS_UUID)]
10823pub struct CapeThermoPetroleumFractions {
10824	pub(crate) interface: *mut C::CAPEOPEN_1_2_ICapeThermoPetroleumFractions,
10825}
10826
10827impl CapeThermoPetroleumFractions {
10828
10829	pub fn set_petro_compound_prop<TypeOfPropertyId:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfValues:CapeArrayRealProviderIn>(&self,property_id:&TypeOfPropertyId,basis:&TypeOfBasis,values:&TypeOfValues) -> Result<(),COBIAError> {
10830		let result_code = unsafe {
10831			((*(*self.interface).vTbl).SetPetroCompoundProp.unwrap())((*self.interface).me,(&property_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&values.as_cape_array_real_in() as *const crate::C::ICapeArrayReal).cast_mut())
10832		};
10833		match result_code {
10834			COBIAERR_NOERROR => {Ok(())},
10835			_ => Err(COBIAError::from_object(result_code,self))
10836		}
10837	}
10838
10839	pub fn set_petro_bulk_prop<TypeOfPropertyId:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn>(&self,property_id:&TypeOfPropertyId,basis:&TypeOfBasis,value:CapeReal) -> Result<(),COBIAError> {
10840		let result_code = unsafe {
10841			((*(*self.interface).vTbl).SetPetroBulkProp.unwrap())((*self.interface).me,(&property_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),value)
10842		};
10843		match result_code {
10844			COBIAERR_NOERROR => {Ok(())},
10845			_ => Err(COBIAError::from_object(result_code,self))
10846		}
10847	}
10848
10849	pub fn get_petro_compound_prop<TypeOfPropertyId:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn,TypeOfValues:CapeArrayRealProviderOut>(&self,property_id:&TypeOfPropertyId,basis:&TypeOfBasis,values:&mut TypeOfValues) -> Result<(),COBIAError> {
10850		let result_code = unsafe {
10851			((*(*self.interface).vTbl).GetPetroCompoundProp.unwrap())((*self.interface).me,(&property_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&values.as_cape_array_real_out() as *const crate::C::ICapeArrayReal).cast_mut())
10852		};
10853		match result_code {
10854			COBIAERR_NOERROR => {Ok(())},
10855			_ => Err(COBIAError::from_object(result_code,self))
10856		}
10857	}
10858
10859	pub fn get_petro_bulk_prop<TypeOfPropertyId:CapeStringProviderIn,TypeOfBasis:CapeStringProviderIn>(&self,property_id:&TypeOfPropertyId,basis:&TypeOfBasis) -> Result<CapeReal,COBIAError> {
10860		let mut value:CapeReal=0.0;
10861		let result_code = unsafe {
10862			((*(*self.interface).vTbl).GetPetroBulkProp.unwrap())((*self.interface).me,(&property_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&basis.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),&mut value as *mut CapeReal)
10863		};
10864		match result_code {
10865			COBIAERR_NOERROR => {Ok(value)},
10866			_ => Err(COBIAError::from_object(result_code,self))
10867		}
10868	}
10869
10870	pub fn petro_prop_list<TypeOfPropertyIds:CapeArrayStringProviderOut>(&self,property_ids:&mut TypeOfPropertyIds) -> Result<(),COBIAError> {
10871		let result_code = unsafe {
10872			((*(*self.interface).vTbl).PetroPropList.unwrap())((*self.interface).me,(&property_ids.as_cape_array_string_out() as *const crate::C::ICapeArrayString).cast_mut())
10873		};
10874		match result_code {
10875			COBIAERR_NOERROR => {Ok(())},
10876			_ => Err(COBIAError::from_object(result_code,self))
10877		}
10878	}
10879
10880	pub fn get_petro_prop_attribute<TypeOfPropertyId:CapeStringProviderIn,TypeOfAttributeName:CapeStringProviderIn,TypeOfAttributeValue:CapeValueProviderOut>(&self,property_id:&TypeOfPropertyId,attribute_name:&TypeOfAttributeName,attribute_value:&mut TypeOfAttributeValue) -> Result<(),COBIAError> {
10881		let result_code = unsafe {
10882			((*(*self.interface).vTbl).GetPetroPropAttribute.unwrap())((*self.interface).me,(&property_id.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&attribute_name.as_cape_string_in() as *const crate::C::ICapeString).cast_mut(),(&attribute_value.as_cape_value_out() as *const crate::C::ICapeValue).cast_mut())
10883		};
10884		match result_code {
10885			COBIAERR_NOERROR => {Ok(())},
10886			_ => Err(COBIAError::from_object(result_code,self))
10887		}
10888	}
10889
10890	pub fn copy_petro_properties(&self,source:&CapeThermoMaterial) -> Result<(),COBIAError> {
10891		let result_code = unsafe {
10892			((*(*self.interface).vTbl).CopyPetroProperties.unwrap())((*self.interface).me,source.as_interface_pointer() as *mut C::CAPEOPEN_1_2_ICapeThermoMaterial)
10893		};
10894		match result_code {
10895			COBIAERR_NOERROR => {Ok(())},
10896			_ => Err(COBIAError::from_object(result_code,self))
10897		}
10898	}
10899
10900	pub fn update_petro_properties(&self) -> Result<(),COBIAError> {
10901		let result_code = unsafe {
10902			((*(*self.interface).vTbl).UpdatePetroProperties.unwrap())((*self.interface).me)
10903		};
10904		match result_code {
10905			COBIAERR_NOERROR => {Ok(())},
10906			_ => Err(COBIAError::from_object(result_code,self))
10907		}
10908	}
10909
10910}
10911