1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
//! # Metadata Tables Module
//!
//! This module provides comprehensive access to all .NET metadata tables as defined in the
//! ECMA-335 specification. It serves as the central access point for all table types, offering
//! both raw (unresolved) and owned (resolved) variants for each table.
//!
//! ## Overview
//!
//! The .NET metadata format organizes data into a series of tables, each containing specific
//! types of metadata information. This module provides Rust implementations for all standard
//! metadata tables, enabling complete inspection and manipulation of .NET assembly metadata.
//!
//! ## Table Categories
//!
//! The metadata tables are organized into several logical categories:
//!
//! ### **Assembly Information**
//! - [`crate::metadata::tables::Assembly`] - Assembly identity and configuration
//! - [`crate::metadata::tables::AssemblyOs`] - Operating system information
//! - [`crate::metadata::tables::AssemblyProcessorRaw`] - Processor architecture information
//! - [`crate::metadata::tables::AssemblyRef`] - External assembly references
//! - [`crate::metadata::tables::AssemblyRefOs`] - OS info for external assemblies
//! - [`crate::metadata::tables::AssemblyRefProcessor`] - Processor info for external assemblies
//! - [`crate::metadata::tables::File`] - Files in the assembly manifest
//! - [`crate::metadata::tables::ManifestResource`] - Resources in the assembly manifest
//!
//! ### **Type System**
//! - [`crate::metadata::tables::TypeDefRaw`] - Type definitions within this assembly
//! - [`crate::metadata::tables::TypeRefRaw`] - References to external types
//! - [`crate::metadata::tables::TypeSpec`] - Constructed type specifications
//! - [`crate::metadata::tables::NestedClass`] - Nested type relationships
//! - [`crate::metadata::tables::InterfaceImpl`] - Interface implementation relationships
//!
//! ### **Methods and Fields**
//! - [`crate::metadata::tables::MethodDefRaw`] - Method definitions
//! - [`crate::metadata::tables::MethodImpl`] - Method implementation mappings
//! - [`crate::metadata::tables::MethodSemantics`] - Method semantic relationships (getters/setters)
//! - [`crate::metadata::tables::MethodSpec`] - Generic method instantiations
//! - [`crate::metadata::tables::Field`] - Field definitions
//! - [`crate::metadata::tables::FieldLayout`] - Field layout information
//! - [`crate::metadata::tables::FieldMarshal`] - Field marshalling information
//! - [`crate::metadata::tables::FieldRva`] - Field relative virtual addresses
//!
//! ### **Properties and Events**
//! - [`crate::metadata::tables::Property`] - Property definitions
//! - [`crate::metadata::tables::PropertyMap`] - Property to type mappings
//! - [`crate::metadata::tables::Event`] - Event definitions
//! - [`crate::metadata::tables::EventMap`] - Event to type mappings
//!
//! ### **Parameters and Variables**
//! - [`crate::metadata::tables::Param`] - Method parameter definitions
//! - [`crate::metadata::tables::GenericParam`] - Generic parameter definitions
//! - [`crate::metadata::tables::GenericParamConstraint`] - Generic parameter constraints
//!
//! ### **External References**
//! - [`crate::metadata::tables::MemberRef`] - External member references
//! - [`crate::metadata::tables::ModuleRef`] - External module references
//! - [`crate::metadata::tables::ImplMap`] - P/Invoke implementation mappings
//!
//! ### **Security and Attributes**
//! - [`crate::metadata::tables::CustomAttribute`] - Custom attribute applications
//! - [`crate::metadata::tables::DeclSecurity`] - Declarative security information
//!
//! ### **Layout and Constants**
//! - [`crate::metadata::tables::ClassLayout`] - Type layout information
//! - [`crate::metadata::tables::Constant`] - Constant value definitions
//! - [`crate::metadata::tables::StandAloneSig`] - Standalone signatures
//!
//! ### **Pointer Tables** (Optimization)
//! - [`crate::metadata::tables::FieldPtr`] - Field pointer indirection
//! - [`crate::metadata::tables::MethodPtr`] - Method pointer indirection
//! - [`crate::metadata::tables::ParamPtr`] - Parameter pointer indirection
//! - [`crate::metadata::tables::EventPtr`] - Event pointer indirection
//! - [`crate::metadata::tables::PropertyPtr`] - Property pointer indirection
//!
//! ## Dual Representation Pattern
//!
//! Each table follows a consistent dual-representation pattern:
//!
//! - **Raw Variant** (`*Raw`): Contains unresolved indexes as they appear in the file format
//! - Memory efficient for parsing and storage
//! - Direct representation of binary format
//! - Requires resolution for meaningful use
//!
//! - **Owned Variant**: Contains resolved references and owned data
//! - Runtime efficient for metadata queries
//! - Fully resolved cross-references
//! - Ready for immediate use
//!
//! ## ECMA-335 Compliance
//!
//! This implementation follows the ECMA-335 specification:
//! - **§II.22** - Metadata table definitions and structure
//! - **§II.23** - Metadata table schemas and relationships
//! - **§II.24** - Coding of indexes and signatures
//!
//! Each table module includes specific ECMA-335 references for detailed specifications.
//!
//! ## Error Handling
//!
//! Table operations may fail due to:
//! - Malformed metadata structures
//! - Invalid cross-references
//! - Missing required dependencies
//! - Corrupted data
//!
//! All operations return [`Result`](crate::Result) types for proper error handling.
//!
//! For detailed specifications, see [ECMA-335 6th Edition](https://www.ecma-international.org/wp-content/uploads/ECMA-335_6th_edition_june_2012.pdf).
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;