1use super::class_requires::*;
2use super::*;
3#[allow(non_upper_case_globals, non_snake_case)]
10#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
11#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12#[derive(educe::Educe)]
13#[educe(Debug, Clone, Default, PartialEq)]
14pub struct hkMemoryResourceHandle<'a> {
15 #[cfg_attr(
22 feature = "serde",
23 serde(skip_serializing_if = "Option::is_none", default)
24 )]
25 pub __ptr: Option<Pointer>,
26 #[cfg_attr(feature = "json_schema", schemars(flatten))]
28 #[cfg_attr(feature = "serde", serde(flatten))]
29 pub parent: hkResourceHandle,
30 #[cfg_attr(feature = "json_schema", schemars(rename = "variant"))]
35 #[cfg_attr(feature = "serde", serde(rename = "variant"))]
36 pub m_variant: Pointer,
37 #[cfg_attr(feature = "serde", serde(borrow))]
42 #[cfg_attr(feature = "json_schema", schemars(rename = "name"))]
43 #[cfg_attr(feature = "serde", serde(rename = "name"))]
44 pub m_name: StringPtr<'a>,
45 #[cfg_attr(feature = "serde", serde(borrow))]
50 #[cfg_attr(feature = "json_schema", schemars(rename = "references"))]
51 #[cfg_attr(feature = "serde", serde(rename = "references"))]
52 pub m_references: Vec<hkMemoryResourceHandleExternalLink<'a>>,
53}
54const _: () = {
55 use havok_serde as _serde;
56 impl<'a> _serde::HavokClass for hkMemoryResourceHandle<'a> {
57 #[inline]
58 fn name(&self) -> &'static str {
59 "hkMemoryResourceHandle"
60 }
61 #[inline]
62 fn signature(&self) -> _serde::__private::Signature {
63 _serde::__private::Signature::new(0xbffac086)
64 }
65 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
66 fn deps_indexes(&self) -> Vec<usize> {
67 let mut v = Vec::new();
68 v.push(self.m_variant.get());
69 v.extend(
70 self
71 .m_references
72 .iter()
73 .flat_map(|class| class.deps_indexes())
74 .collect::<Vec<usize>>(),
75 );
76 v
77 }
78 }
79 impl<'a> _serde::Serialize for hkMemoryResourceHandle<'a> {
80 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
81 where
82 S: _serde::ser::Serializer,
83 {
84 let class_meta = self
85 .__ptr
86 .map(|name| (name, _serde::__private::Signature::new(0xbffac086)));
87 let mut serializer = __serializer
88 .serialize_struct("hkMemoryResourceHandle", class_meta, (28u64, 48u64))?;
89 serializer.pad_field([0u8; 4usize].as_slice(), [0u8; 8usize].as_slice())?;
90 serializer
91 .skip_field(
92 "memSizeAndFlags",
93 &self.parent.parent.parent.m_memSizeAndFlags,
94 )?;
95 serializer
96 .skip_field(
97 "referenceCount",
98 &self.parent.parent.parent.m_referenceCount,
99 )?;
100 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
101 serializer.serialize_field("variant", &self.m_variant)?;
102 serializer.serialize_field("name", &self.m_name)?;
103 serializer
104 .serialize_array_field(
105 "references",
106 &self.m_references,
107 TypeSize::Struct {
108 size_x86: 8u64,
109 size_x86_64: 16u64,
110 },
111 )?;
112 serializer.end()
113 }
114 }
115};
116#[doc(hidden)]
117#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
118const _: () = {
119 use havok_serde as _serde;
120 #[automatically_derived]
121 impl<'de> _serde::Deserialize<'de> for hkMemoryResourceHandle<'de> {
122 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
123 where
124 __D: _serde::Deserializer<'de>,
125 {
126 #[allow(non_camel_case_types)]
127 enum __Field {
128 m_variant,
129 m_name,
130 m_references,
131 __ignore,
132 }
133 struct __FieldVisitor;
134 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
135 type Value = __Field;
136 fn expecting(
137 &self,
138 __formatter: &mut core::fmt::Formatter,
139 ) -> core::fmt::Result {
140 core::fmt::Formatter::write_str(__formatter, "field identifier")
141 }
142 #[allow(clippy::match_single_binding)]
144 #[allow(clippy::reversed_empty_ranges)]
145 #[allow(clippy::single_match)]
146 fn visit_key<__E>(
147 self,
148 __value: &str,
149 ) -> core::result::Result<Self::Value, __E>
150 where
151 __E: _serde::de::Error,
152 {
153 match __value {
154 "variant" => Ok(__Field::m_variant),
155 "name" => Ok(__Field::m_name),
156 "references" => Ok(__Field::m_references),
157 _ => Ok(__Field::__ignore),
158 }
159 }
160 }
161 impl<'de> _serde::Deserialize<'de> for __Field {
162 #[inline]
163 fn deserialize<__D>(
164 __deserializer: __D,
165 ) -> core::result::Result<Self, __D::Error>
166 where
167 __D: _serde::Deserializer<'de>,
168 {
169 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
170 }
171 }
172 struct __hkMemoryResourceHandleVisitor<'de> {
173 marker: _serde::__private::PhantomData<hkMemoryResourceHandle<'de>>,
174 lifetime: _serde::__private::PhantomData<&'de ()>,
175 }
176 #[allow(clippy::match_single_binding)]
177 #[allow(clippy::reversed_empty_ranges)]
178 #[allow(clippy::single_match)]
179 impl<'de> _serde::de::Visitor<'de> for __hkMemoryResourceHandleVisitor<'de> {
180 type Value = hkMemoryResourceHandle<'de>;
181 fn expecting(
182 &self,
183 __formatter: &mut core::fmt::Formatter,
184 ) -> core::fmt::Result {
185 core::fmt::Formatter::write_str(
186 __formatter,
187 "struct hkMemoryResourceHandle",
188 )
189 }
190 fn visit_struct_for_bytes<__A>(
191 self,
192 mut __map: __A,
193 ) -> _serde::__private::Result<Self::Value, __A::Error>
194 where
195 __A: _serde::de::MapAccess<'de>,
196 {
197 let __ptr = __A::class_ptr(&mut __map);
198 let parent = __A::parent_value(&mut __map)?;
199 let mut m_variant: _serde::__private::Option<Pointer> = _serde::__private::None;
200 let mut m_name: _serde::__private::Option<StringPtr<'de>> = _serde::__private::None;
201 let mut m_references: _serde::__private::Option<
202 Vec<hkMemoryResourceHandleExternalLink<'de>>,
203 > = _serde::__private::None;
204 for i in 0..3usize {
205 match i {
206 0usize => {
207 if _serde::__private::Option::is_some(&m_variant) {
208 return _serde::__private::Err(
209 <__A::Error as _serde::de::Error>::duplicate_field(
210 "variant",
211 ),
212 );
213 }
214 m_variant = _serde::__private::Some(
215 match __A::next_value::<Pointer>(&mut __map) {
216 _serde::__private::Ok(__val) => __val,
217 _serde::__private::Err(__err) => {
218 return _serde::__private::Err(__err);
219 }
220 },
221 );
222 }
223 1usize => {
224 if _serde::__private::Option::is_some(&m_name) {
225 return _serde::__private::Err(
226 <__A::Error as _serde::de::Error>::duplicate_field("name"),
227 );
228 }
229 m_name = _serde::__private::Some(
230 match __A::next_value::<StringPtr<'de>>(&mut __map) {
231 _serde::__private::Ok(__val) => __val,
232 _serde::__private::Err(__err) => {
233 return _serde::__private::Err(__err);
234 }
235 },
236 );
237 }
238 2usize => {
239 if _serde::__private::Option::is_some(&m_references) {
240 return _serde::__private::Err(
241 <__A::Error as _serde::de::Error>::duplicate_field(
242 "references",
243 ),
244 );
245 }
246 m_references = _serde::__private::Some(
247 match __A::next_value::<
248 Vec<hkMemoryResourceHandleExternalLink<'de>>,
249 >(&mut __map) {
250 _serde::__private::Ok(__val) => __val,
251 _serde::__private::Err(__err) => {
252 return _serde::__private::Err(__err);
253 }
254 },
255 );
256 }
257 _ => {}
258 }
259 }
260 let m_variant = match m_variant {
261 _serde::__private::Some(__field) => __field,
262 _serde::__private::None => {
263 return _serde::__private::Err(
264 <__A::Error as _serde::de::Error>::missing_field("variant"),
265 );
266 }
267 };
268 let m_name = match m_name {
269 _serde::__private::Some(__field) => __field,
270 _serde::__private::None => {
271 return _serde::__private::Err(
272 <__A::Error as _serde::de::Error>::missing_field("name"),
273 );
274 }
275 };
276 let m_references = match m_references {
277 _serde::__private::Some(__field) => __field,
278 _serde::__private::None => {
279 return _serde::__private::Err(
280 <__A::Error as _serde::de::Error>::missing_field(
281 "references",
282 ),
283 );
284 }
285 };
286 _serde::__private::Ok(hkMemoryResourceHandle {
287 __ptr,
288 parent,
289 m_variant,
290 m_name,
291 m_references,
292 })
293 }
294 #[allow(clippy::manual_unwrap_or_default)]
295 fn visit_struct<__A>(
296 self,
297 mut __map: __A,
298 ) -> _serde::__private::Result<Self::Value, __A::Error>
299 where
300 __A: _serde::de::MapAccess<'de>,
301 {
302 let mut m_variant: _serde::__private::Option<Pointer> = _serde::__private::None;
303 let mut m_name: _serde::__private::Option<StringPtr<'de>> = _serde::__private::None;
304 let mut m_references: _serde::__private::Option<
305 Vec<hkMemoryResourceHandleExternalLink<'de>>,
306 > = _serde::__private::None;
307 while let _serde::__private::Some(__key) = {
308 __A::next_key::<__Field>(&mut __map)?
309 } {
310 match __key {
311 __Field::m_variant => {
312 #[cfg(
313 any(feature = "strict", feature = "ignore_duplicates")
314 )]
315 if _serde::__private::Option::is_some(&m_variant) {
316 #[cfg(feature = "ignore_duplicates")]
317 {
318 __A::skip_value(&mut __map)?;
319 continue;
320 }
321 #[cfg(feature = "strict")]
322 return _serde::__private::Err(
323 <__A::Error as _serde::de::Error>::duplicate_field(
324 "variant",
325 ),
326 );
327 }
328 m_variant = _serde::__private::Some(
329 match __A::next_value::<Pointer>(&mut __map) {
330 _serde::__private::Ok(__val) => __val,
331 _serde::__private::Err(__err) => {
332 return _serde::__private::Err(__err);
333 }
334 },
335 );
336 }
337 __Field::m_name => {
338 #[cfg(
339 any(feature = "strict", feature = "ignore_duplicates")
340 )]
341 if _serde::__private::Option::is_some(&m_name) {
342 #[cfg(feature = "ignore_duplicates")]
343 {
344 __A::skip_value(&mut __map)?;
345 continue;
346 }
347 #[cfg(feature = "strict")]
348 return _serde::__private::Err(
349 <__A::Error as _serde::de::Error>::duplicate_field("name"),
350 );
351 }
352 m_name = _serde::__private::Some(
353 match __A::next_value::<StringPtr<'de>>(&mut __map) {
354 _serde::__private::Ok(__val) => __val,
355 _serde::__private::Err(__err) => {
356 return _serde::__private::Err(__err);
357 }
358 },
359 );
360 }
361 __Field::m_references => {
362 #[cfg(
363 any(feature = "strict", feature = "ignore_duplicates")
364 )]
365 if _serde::__private::Option::is_some(&m_references) {
366 #[cfg(feature = "ignore_duplicates")]
367 {
368 __A::skip_value(&mut __map)?;
369 continue;
370 }
371 #[cfg(feature = "strict")]
372 return _serde::__private::Err(
373 <__A::Error as _serde::de::Error>::duplicate_field(
374 "references",
375 ),
376 );
377 }
378 m_references = _serde::__private::Some(
379 match __A::next_value::<
380 Vec<hkMemoryResourceHandleExternalLink<'de>>,
381 >(&mut __map) {
382 _serde::__private::Ok(__val) => __val,
383 _serde::__private::Err(__err) => {
384 return _serde::__private::Err(__err);
385 }
386 },
387 );
388 }
389 _ => __A::skip_value(&mut __map)?,
390 }
391 }
392 let m_variant = match m_variant {
393 _serde::__private::Some(__field) => __field,
394 _serde::__private::None => {
395 #[cfg(feature = "strict")]
396 return _serde::__private::Err(
397 <__A::Error as _serde::de::Error>::missing_field("variant"),
398 );
399 #[cfg(not(feature = "strict"))] Default::default()
400 }
401 };
402 let m_name = match m_name {
403 _serde::__private::Some(__field) => __field,
404 _serde::__private::None => {
405 #[cfg(feature = "strict")]
406 return _serde::__private::Err(
407 <__A::Error as _serde::de::Error>::missing_field("name"),
408 );
409 #[cfg(not(feature = "strict"))] Default::default()
410 }
411 };
412 let m_references = match m_references {
413 _serde::__private::Some(__field) => __field,
414 _serde::__private::None => {
415 #[cfg(feature = "strict")]
416 return _serde::__private::Err(
417 <__A::Error as _serde::de::Error>::missing_field(
418 "references",
419 ),
420 );
421 #[cfg(not(feature = "strict"))] Default::default()
422 }
423 };
424 let __ptr = None;
425 let parent = hkBaseObject { __ptr };
426 let parent = hkReferencedObject {
427 __ptr,
428 parent,
429 ..Default::default()
430 };
431 let parent = hkResourceBase { __ptr, parent };
432 let parent = hkResourceHandle { __ptr, parent };
433 let __ptr = __A::class_ptr(&mut __map);
434 _serde::__private::Ok(hkMemoryResourceHandle {
435 __ptr,
436 parent,
437 m_variant,
438 m_name,
439 m_references,
440 })
441 }
442 }
443 const FIELDS: &[&str] = &["variant", "name", "references"];
444 _serde::Deserializer::deserialize_struct(
445 deserializer,
446 "hkMemoryResourceHandle",
447 FIELDS,
448 __hkMemoryResourceHandleVisitor {
449 marker: _serde::__private::PhantomData::<hkMemoryResourceHandle>,
450 lifetime: _serde::__private::PhantomData,
451 },
452 )
453 }
454 }
455};