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
//! `InterfaceImpl` table loader implementation.
//!
//! This module provides the [`InterfaceImplLoader`] responsible for loading and processing
//! `InterfaceImpl` metadata table entries. The `InterfaceImpl` table defines interface
//! implementations by types, establishing the inheritance hierarchy for .NET types.
//!
//! # Purpose
//! The `InterfaceImpl` table is essential for type system functionality:
//! - **Interface inheritance**: Recording which types implement which interfaces
//! - **Type hierarchy**: Building complete inheritance chains including interfaces
//! - **Polymorphism support**: Enabling interface-based method dispatch
//! - **Type casting**: Supporting safe casting to implemented interface types
//! - **Reflection**: Providing runtime access to interface implementation information
//!
//! # Type System Integration
//! `InterfaceImpl` entries establish critical type relationships:
//! - **Class-to-interface mapping**: Associates classes with their implemented interfaces
//! - **Interface hierarchy**: Supports interface inheritance chains
//! - **Generic interfaces**: Handles generic interface implementations with type parameters
//! - **Explicit implementations**: Records explicit interface member implementations
//!
//! # Table Dependencies
//! - **`TypeDef`**: Required for resolving implementing class references
//! - **`TypeRef`**: Required for resolving interface references from other assemblies
//! - **`TypeSpec`**: Required for resolving generic interface instantiations
//!
//! # ECMA-335 Reference
//! See ECMA-335, Partition II, ยง22.23 for the `InterfaceImpl` table specification.
use crate::;
/// Loader implementation for the `InterfaceImpl` metadata table.
///
/// This loader processes interface implementation metadata, establishing the relationships
/// between types and the interfaces they implement. It resolves type references, converts
/// raw table entries to owned structures, and maintains the interface implementation map.
pub ;