xidl_typeobject/
runtime.rs1use crate::DDS::XTypes as xt;
2use crate::XidlTypeObject;
3
4#[derive(Clone, Copy, Debug)]
5pub enum TypeEquivalence {
6 Minimal,
7 Complete,
8}
9
10pub struct StructMemberDesc<'a> {
11 pub member_id: u32,
12 pub member_flags: u32,
13 pub type_id: xt::TypeIdentifier,
14 pub name: &'a str,
15}
16
17pub struct UnionMemberDesc<'a> {
18 pub member_id: u32,
19 pub member_flags: u32,
20 pub type_id: xt::TypeIdentifier,
21 pub name: &'a str,
22 pub labels: Vec<i32>,
23}
24
25pub struct EnumLiteralDesc<'a> {
26 pub value: i32,
27 pub flags: u32,
28 pub name: &'a str,
29}
30
31pub struct BitflagDesc<'a> {
32 pub position: u16,
33 pub flags: u32,
34 pub name: &'a str,
35}
36
37pub struct BitfieldDesc<'a> {
38 pub position: u16,
39 pub flags: u32,
40 pub bitcount: u8,
41 pub holder_type: xt::TypeKind,
42 pub name: Option<&'a str>,
43}
44
45pub fn type_identifier_none() -> xt::TypeIdentifier {
46 xt::TypeIdentifier::default()
47}
48
49pub fn type_identifier_primitive(_kind: xt::TypeKind) -> xt::TypeIdentifier {
50 xt::TypeIdentifier::default()
51}
52
53pub fn type_identifier_sequence(
54 _element_type: xt::TypeIdentifier,
55 _bound: u32,
56 _eq: TypeEquivalence,
57) -> xt::TypeIdentifier {
58 xt::TypeIdentifier::default()
59}
60
61pub fn type_identifier_array(
62 _element_type: xt::TypeIdentifier,
63 _dims: Vec<u32>,
64 _eq: TypeEquivalence,
65) -> xt::TypeIdentifier {
66 xt::TypeIdentifier::default()
67}
68
69pub fn type_identifier_map(
70 _key_type: xt::TypeIdentifier,
71 _value_type: xt::TypeIdentifier,
72 _bound: u32,
73 _eq: TypeEquivalence,
74) -> xt::TypeIdentifier {
75 xt::TypeIdentifier::default()
76}
77
78pub fn type_identifier_for<T: XidlTypeObject + 'static>(
79 _eq: TypeEquivalence,
80) -> xt::TypeIdentifier {
81 xt::TypeIdentifier::default()
82}
83
84pub fn build_complete_alias(
85 _name: &str,
86 _type_flags: u32,
87 _related_type: xt::TypeIdentifier,
88) -> xt::TypeObject {
89 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
90}
91
92pub fn build_minimal_alias(_type_flags: u32, _related_type: xt::TypeIdentifier) -> xt::TypeObject {
93 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
94}
95
96pub fn build_complete_struct(
97 _name: &str,
98 _type_flags: u32,
99 _header_type_id: xt::TypeIdentifier,
100 _members: Vec<StructMemberDesc<'_>>,
101) -> xt::TypeObject {
102 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
103}
104
105pub fn build_minimal_struct(
106 _type_flags: u32,
107 _header_type_id: xt::TypeIdentifier,
108 _members: Vec<StructMemberDesc<'_>>,
109) -> xt::TypeObject {
110 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
111}
112
113pub fn build_complete_union(
114 _name: &str,
115 _type_flags: u32,
116 _header_type_id: xt::TypeIdentifier,
117 _discriminator_type_id: xt::TypeIdentifier,
118 _members: Vec<UnionMemberDesc<'_>>,
119) -> xt::TypeObject {
120 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
121}
122
123pub fn build_minimal_union(
124 _type_flags: u32,
125 _header_type_id: xt::TypeIdentifier,
126 _discriminator_type_id: xt::TypeIdentifier,
127 _members: Vec<UnionMemberDesc<'_>>,
128) -> xt::TypeObject {
129 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
130}
131
132pub fn build_complete_enum(
133 _name: &str,
134 _type_flags: u32,
135 _bit_bound: u16,
136 _literals: Vec<EnumLiteralDesc<'_>>,
137) -> xt::TypeObject {
138 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
139}
140
141pub fn build_minimal_enum(
142 _type_flags: u32,
143 _bit_bound: u16,
144 _literals: Vec<EnumLiteralDesc<'_>>,
145) -> xt::TypeObject {
146 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
147}
148
149pub fn build_complete_bitmask(
150 _name: &str,
151 _type_flags: u32,
152 _bit_bound: u16,
153 _flags: Vec<BitflagDesc<'_>>,
154) -> xt::TypeObject {
155 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
156}
157
158pub fn build_minimal_bitmask(
159 _type_flags: u32,
160 _bit_bound: u16,
161 _flags: Vec<BitflagDesc<'_>>,
162) -> xt::TypeObject {
163 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
164}
165
166pub fn build_complete_bitset(
167 _name: &str,
168 _type_flags: u32,
169 _fields: Vec<BitfieldDesc<'_>>,
170) -> xt::TypeObject {
171 xt::TypeObject::new_complete(xt::CompleteTypeObject::default())
172}
173
174pub fn build_minimal_bitset(_type_flags: u32, _fields: Vec<BitfieldDesc<'_>>) -> xt::TypeObject {
175 xt::TypeObject::new_minimal(xt::MinimalTypeObject::default())
176}