Skip to main content

xidl_typeobject/
runtime.rs

1use 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}