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 hkClassEnum<'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 = "serde", serde(borrow))]
31 #[cfg_attr(feature = "json_schema", schemars(rename = "name"))]
32 #[cfg_attr(feature = "serde", serde(rename = "name"))]
33 pub m_name: CString<'a>,
34 #[cfg_attr(feature = "serde", serde(borrow))]
39 #[cfg_attr(feature = "json_schema", schemars(rename = "items"))]
40 #[cfg_attr(feature = "serde", serde(rename = "items"))]
41 pub m_items: Vec<hkClassEnumItem<'a>>,
42 #[cfg_attr(feature = "json_schema", schemars(rename = "attributes"))]
48 #[cfg_attr(feature = "serde", serde(rename = "attributes"))]
49 pub m_attributes: Pointer,
50 #[cfg_attr(feature = "json_schema", schemars(rename = "flags"))]
55 #[cfg_attr(feature = "serde", serde(rename = "flags"))]
56 pub m_flags: FlagValues,
57}
58const _: () = {
59 use havok_serde as _serde;
60 impl<'a> _serde::HavokClass for hkClassEnum<'a> {
61 #[inline]
62 fn name(&self) -> &'static str {
63 "hkClassEnum"
64 }
65 #[inline]
66 fn signature(&self) -> _serde::__private::Signature {
67 _serde::__private::Signature::new(0x8a3609cf)
68 }
69 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
70 fn deps_indexes(&self) -> Vec<usize> {
71 let mut v = Vec::new();
72 v.push(self.m_attributes.get());
73 v
74 }
75 }
76 impl<'a> _serde::Serialize for hkClassEnum<'a> {
77 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
78 where
79 S: _serde::ser::Serializer,
80 {
81 let class_meta = self
82 .__ptr
83 .map(|name| (name, _serde::__private::Signature::new(0x8a3609cf)));
84 let mut serializer = __serializer
85 .serialize_struct("hkClassEnum", class_meta, (20u64, 40u64))?;
86 serializer.serialize_field("name", &self.m_name)?;
87 serializer.serialize_field("items", &self.m_items)?;
88 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
89 serializer.skip_field("attributes", &self.m_attributes)?;
90 serializer.serialize_field("flags", &self.m_flags)?;
91 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
92 serializer.end()
93 }
94 }
95};
96#[doc(hidden)]
97#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
98const _: () = {
99 use havok_serde as _serde;
100 #[automatically_derived]
101 impl<'de> _serde::Deserialize<'de> for hkClassEnum<'de> {
102 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
103 where
104 __D: _serde::Deserializer<'de>,
105 {
106 #[allow(non_camel_case_types)]
107 enum __Field {
108 m_name,
109 m_items,
110 m_flags,
111 __ignore,
112 }
113 struct __FieldVisitor;
114 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
115 type Value = __Field;
116 fn expecting(
117 &self,
118 __formatter: &mut core::fmt::Formatter,
119 ) -> core::fmt::Result {
120 core::fmt::Formatter::write_str(__formatter, "field identifier")
121 }
122 #[allow(clippy::match_single_binding)]
124 #[allow(clippy::reversed_empty_ranges)]
125 #[allow(clippy::single_match)]
126 fn visit_key<__E>(
127 self,
128 __value: &str,
129 ) -> core::result::Result<Self::Value, __E>
130 where
131 __E: _serde::de::Error,
132 {
133 match __value {
134 "name" => Ok(__Field::m_name),
135 "items" => Ok(__Field::m_items),
136 "flags" => Ok(__Field::m_flags),
137 _ => Ok(__Field::__ignore),
138 }
139 }
140 }
141 impl<'de> _serde::Deserialize<'de> for __Field {
142 #[inline]
143 fn deserialize<__D>(
144 __deserializer: __D,
145 ) -> core::result::Result<Self, __D::Error>
146 where
147 __D: _serde::Deserializer<'de>,
148 {
149 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
150 }
151 }
152 struct __hkClassEnumVisitor<'de> {
153 marker: _serde::__private::PhantomData<hkClassEnum<'de>>,
154 lifetime: _serde::__private::PhantomData<&'de ()>,
155 }
156 #[allow(clippy::match_single_binding)]
157 #[allow(clippy::reversed_empty_ranges)]
158 #[allow(clippy::single_match)]
159 impl<'de> _serde::de::Visitor<'de> for __hkClassEnumVisitor<'de> {
160 type Value = hkClassEnum<'de>;
161 fn expecting(
162 &self,
163 __formatter: &mut core::fmt::Formatter,
164 ) -> core::fmt::Result {
165 core::fmt::Formatter::write_str(__formatter, "struct hkClassEnum")
166 }
167 fn visit_struct_for_bytes<__A>(
168 self,
169 mut __map: __A,
170 ) -> _serde::__private::Result<Self::Value, __A::Error>
171 where
172 __A: _serde::de::MapAccess<'de>,
173 {
174 let __ptr = __A::class_ptr(&mut __map);
175 let mut m_name: _serde::__private::Option<CString<'de>> = _serde::__private::None;
176 let mut m_items: _serde::__private::Option<
177 Vec<hkClassEnumItem<'de>>,
178 > = _serde::__private::None;
179 let mut m_attributes: _serde::__private::Option<Pointer> = _serde::__private::None;
180 let mut m_flags: _serde::__private::Option<FlagValues> = _serde::__private::None;
181 for i in 0..4usize {
182 match i {
183 0usize => {
184 if _serde::__private::Option::is_some(&m_name) {
185 return _serde::__private::Err(
186 <__A::Error as _serde::de::Error>::duplicate_field("name"),
187 );
188 }
189 m_name = _serde::__private::Some(
190 match __A::next_value::<CString<'de>>(&mut __map) {
191 _serde::__private::Ok(__val) => __val,
192 _serde::__private::Err(__err) => {
193 return _serde::__private::Err(__err);
194 }
195 },
196 );
197 }
198 1usize => {
199 if _serde::__private::Option::is_some(&m_items) {
200 return _serde::__private::Err(
201 <__A::Error as _serde::de::Error>::duplicate_field("items"),
202 );
203 }
204 m_items = _serde::__private::Some(
205 match __A::next_value::<
206 Vec<hkClassEnumItem<'de>>,
207 >(&mut __map) {
208 _serde::__private::Ok(__val) => __val,
209 _serde::__private::Err(__err) => {
210 return _serde::__private::Err(__err);
211 }
212 },
213 );
214 }
215 2usize => {
216 if _serde::__private::Option::is_some(&m_attributes) {
217 return _serde::__private::Err(
218 <__A::Error as _serde::de::Error>::duplicate_field(
219 "attributes",
220 ),
221 );
222 }
223 __A::pad(&mut __map, 0usize, 4usize)?;
224 m_attributes = _serde::__private::Some(
225 match __A::next_value::<Pointer>(&mut __map) {
226 _serde::__private::Ok(__val) => __val,
227 _serde::__private::Err(__err) => {
228 return _serde::__private::Err(__err);
229 }
230 },
231 );
232 }
233 3usize => {
234 if _serde::__private::Option::is_some(&m_flags) {
235 return _serde::__private::Err(
236 <__A::Error as _serde::de::Error>::duplicate_field("flags"),
237 );
238 }
239 m_flags = _serde::__private::Some(
240 match __A::next_value::<FlagValues>(&mut __map) {
241 _serde::__private::Ok(__val) => __val,
242 _serde::__private::Err(__err) => {
243 return _serde::__private::Err(__err);
244 }
245 },
246 );
247 }
248 _ => {}
249 }
250 }
251 __A::pad(&mut __map, 0usize, 4usize)?;
252 let m_name = match m_name {
253 _serde::__private::Some(__field) => __field,
254 _serde::__private::None => {
255 return _serde::__private::Err(
256 <__A::Error as _serde::de::Error>::missing_field("name"),
257 );
258 }
259 };
260 let m_items = match m_items {
261 _serde::__private::Some(__field) => __field,
262 _serde::__private::None => {
263 return _serde::__private::Err(
264 <__A::Error as _serde::de::Error>::missing_field("items"),
265 );
266 }
267 };
268 let m_attributes = match m_attributes {
269 _serde::__private::Some(__field) => __field,
270 _serde::__private::None => {
271 return _serde::__private::Err(
272 <__A::Error as _serde::de::Error>::missing_field(
273 "attributes",
274 ),
275 );
276 }
277 };
278 let m_flags = match m_flags {
279 _serde::__private::Some(__field) => __field,
280 _serde::__private::None => {
281 return _serde::__private::Err(
282 <__A::Error as _serde::de::Error>::missing_field("flags"),
283 );
284 }
285 };
286 _serde::__private::Ok(hkClassEnum {
287 __ptr,
288 m_name,
289 m_items,
290 m_attributes,
291 m_flags,
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_name: _serde::__private::Option<CString<'de>> = _serde::__private::None;
303 let mut m_items: _serde::__private::Option<
304 Vec<hkClassEnumItem<'de>>,
305 > = _serde::__private::None;
306 let mut m_flags: _serde::__private::Option<FlagValues> = _serde::__private::None;
307 while let _serde::__private::Some(__key) = {
308 __A::next_key::<__Field>(&mut __map)?
309 } {
310 match __key {
311 __Field::m_name => {
312 #[cfg(
313 any(feature = "strict", feature = "ignore_duplicates")
314 )]
315 if _serde::__private::Option::is_some(&m_name) {
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("name"),
324 );
325 }
326 m_name = _serde::__private::Some(
327 match __A::next_value::<CString<'de>>(&mut __map) {
328 _serde::__private::Ok(__val) => __val,
329 _serde::__private::Err(__err) => {
330 return _serde::__private::Err(__err);
331 }
332 },
333 );
334 }
335 __Field::m_items => {
336 #[cfg(
337 any(feature = "strict", feature = "ignore_duplicates")
338 )]
339 if _serde::__private::Option::is_some(&m_items) {
340 #[cfg(feature = "ignore_duplicates")]
341 {
342 __A::skip_value(&mut __map)?;
343 continue;
344 }
345 #[cfg(feature = "strict")]
346 return _serde::__private::Err(
347 <__A::Error as _serde::de::Error>::duplicate_field("items"),
348 );
349 }
350 m_items = _serde::__private::Some(
351 match __A::next_value::<
352 Vec<hkClassEnumItem<'de>>,
353 >(&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_flags => {
362 #[cfg(
363 any(feature = "strict", feature = "ignore_duplicates")
364 )]
365 if _serde::__private::Option::is_some(&m_flags) {
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("flags"),
374 );
375 }
376 m_flags = _serde::__private::Some(
377 match __A::next_value::<FlagValues>(&mut __map) {
378 _serde::__private::Ok(__val) => __val,
379 _serde::__private::Err(__err) => {
380 return _serde::__private::Err(__err);
381 }
382 },
383 );
384 }
385 _ => __A::skip_value(&mut __map)?,
386 }
387 }
388 let m_name = match m_name {
389 _serde::__private::Some(__field) => __field,
390 _serde::__private::None => {
391 #[cfg(feature = "strict")]
392 return _serde::__private::Err(
393 <__A::Error as _serde::de::Error>::missing_field("name"),
394 );
395 #[cfg(not(feature = "strict"))] Default::default()
396 }
397 };
398 let m_items = match m_items {
399 _serde::__private::Some(__field) => __field,
400 _serde::__private::None => {
401 #[cfg(feature = "strict")]
402 return _serde::__private::Err(
403 <__A::Error as _serde::de::Error>::missing_field("items"),
404 );
405 #[cfg(not(feature = "strict"))] Default::default()
406 }
407 };
408 let m_flags = match m_flags {
409 _serde::__private::Some(__field) => __field,
410 _serde::__private::None => {
411 #[cfg(feature = "strict")]
412 return _serde::__private::Err(
413 <__A::Error as _serde::de::Error>::missing_field("flags"),
414 );
415 #[cfg(not(feature = "strict"))] Default::default()
416 }
417 };
418 let __ptr = __A::class_ptr(&mut __map);
419 _serde::__private::Ok(hkClassEnum {
420 __ptr,
421 m_name,
422 m_items,
423 m_flags,
424 ..Default::default()
425 })
426 }
427 }
428 const FIELDS: &[&str] = &["name", "items", "attributes", "flags"];
429 _serde::Deserializer::deserialize_struct(
430 deserializer,
431 "hkClassEnum",
432 FIELDS,
433 __hkClassEnumVisitor {
434 marker: _serde::__private::PhantomData::<hkClassEnum>,
435 lifetime: _serde::__private::PhantomData,
436 },
437 )
438 }
439 }
440};
441#[havok_types_derive::impl_flags_methods]
442bitflags::bitflags! {
443 #[doc = r" Bit flags"] #[doc = r""] #[doc = r" # C++ Info"] #[doc =
444 " - name: `FlagValues`(ctype: `hkFlags<FlagValues, hkUint32>`)"]
445 #[allow(non_upper_case_globals, non_snake_case)] #[cfg_attr(feature = "serde",
446 derive(serde_with::SerializeDisplay, serde_with::DeserializeFromStr))]
447 #[repr(transparent)] #[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] pub struct
448 FlagValues : u32 { #[doc = "0"] const FLAGS_NONE = 0u32; }
449}
450#[cfg(feature = "json_schema")]
451const _: () = {
452 use schemars::{SchemaGenerator, Schema, JsonSchema, json_schema};
453 use std::borrow::Cow;
454 impl JsonSchema for FlagValues {
455 fn schema_name() -> Cow<'static, str> {
456 "FlagValues".into()
457 }
458 fn schema_id() -> Cow<'static, str> {
459 concat!(module_path!(), "::", "FlagValues").into()
460 }
461 fn json_schema(_generate: &mut SchemaGenerator) -> Schema {
462 json_schema!(
463 { "description" :
464 "Bitflags field. Specific flags: FLAGS_NONE: 0. Additional unspecified bits may be set.(e.g.: BIT_FLAG|BIT_FLAG2|4)",
465 "type" : "string", }
466 )
467 }
468 }
469};
470const _: () = {
471 use havok_serde as __serde;
472 impl __serde::Serialize for FlagValues {
473 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
474 where
475 S: __serde::ser::Serializer,
476 {
477 let mut __serializer = __serializer.serialize_enum_flags()?;
478 if self.is_empty() {
479 __serializer.serialize_bits(&self.bits())?;
480 __serializer.serialize_empty_bit()?;
481 return __serializer.end();
482 }
483 for flag in self.iter() {
484 match flag {
485 Self::FLAGS_NONE => {
486 __serializer.serialize_field("FLAGS_NONE", &Self::FLAGS_NONE)
487 }
488 remain => {
489 __serializer
490 .serialize_field(&remain.bits().to_string(), &remain.bits())
491 }
492 }?;
493 }
494 __serializer.serialize_bits(&self.bits())?;
495 __serializer.end()
496 }
497 }
498};
499#[doc(hidden)]
500#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
501const _: () = {
502 #[allow(unused_extern_crates, clippy::useless_attribute)]
503 extern crate havok_serde as _serde;
504 #[automatically_derived]
505 impl<'de> _serde::Deserialize<'de> for FlagValues {
506 fn deserialize<__D>(
507 __deserializer: __D,
508 ) -> _serde::__private::Result<Self, __D::Error>
509 where
510 __D: _serde::Deserializer<'de>,
511 {
512 #[doc(hidden)]
513 struct __Visitor<'de> {
514 marker: _serde::__private::PhantomData<FlagValues>,
515 lifetime: _serde::__private::PhantomData<&'de ()>,
516 }
517 impl<'de> _serde::de::Visitor<'de> for __Visitor<'de> {
518 type Value = FlagValues;
519 fn expecting(
520 &self,
521 __formatter: &mut _serde::__private::Formatter,
522 ) -> _serde::__private::fmt::Result {
523 _serde::__private::Formatter::write_str(
524 __formatter,
525 "struct FlagValues(flags)",
526 )
527 }
528 #[inline]
529 fn visit_uint32<__E>(
530 self,
531 __value: u32,
532 ) -> _serde::__private::Result<Self::Value, __E>
533 where
534 __E: _serde::de::Error,
535 {
536 Ok(FlagValues::from_bits_retain(__value as _))
537 }
538 fn visit_stringptr<__E>(
539 self,
540 __value: StringPtr<'de>,
541 ) -> _serde::__private::Result<Self::Value, __E>
542 where
543 __E: _serde::de::Error,
544 {
545 match <FlagValues as core::str::FromStr>::from_str(
546 __value.into_inner().unwrap().as_ref(),
547 ) {
548 Ok(flags) => Ok(flags),
549 Err(err) => Err(_serde::de::Error::custom(err)),
550 }
551 }
552 }
553 _serde::Deserializer::deserialize_flags(
554 __deserializer,
555 _serde::de::ReadEnumSize::Uint32,
556 __Visitor {
557 marker: _serde::__private::PhantomData::<FlagValues>,
558 lifetime: _serde::__private::PhantomData,
559 },
560 )
561 }
562 }
563};