1use core::fmt::Debug;
4
5use crate::read::{self, ComdatKind, ObjectComdat, ReadRef, Result, SectionIndex, SymbolIndex};
6use crate::xcoff;
7
8use super::{FileHeader, XcoffFile};
9
10pub type XcoffComdatIterator32<'data, 'file, R = &'data [u8]> =
12 XcoffComdatIterator<'data, 'file, xcoff::FileHeader32, R>;
13pub type XcoffComdatIterator64<'data, 'file, R = &'data [u8]> =
15 XcoffComdatIterator<'data, 'file, xcoff::FileHeader64, R>;
16
17#[derive(Debug)]
21pub struct XcoffComdatIterator<'data, 'file, Xcoff, R = &'data [u8]>
22where
23 Xcoff: FileHeader,
24 R: ReadRef<'data>,
25{
26 #[allow(unused)]
27 pub(crate) file: &'file XcoffFile<'data, Xcoff, R>,
28}
29
30impl<'data, 'file, Xcoff, R> Iterator for XcoffComdatIterator<'data, 'file, Xcoff, R>
31where
32 Xcoff: FileHeader,
33 R: ReadRef<'data>,
34{
35 type Item = XcoffComdat<'data, 'file, Xcoff, R>;
36
37 #[inline]
38 fn next(&mut self) -> Option<Self::Item> {
39 None
40 }
41}
42
43pub type XcoffComdat32<'data, 'file, R = &'data [u8]> =
45 XcoffComdat<'data, 'file, xcoff::FileHeader32, R>;
46
47pub type XcoffComdat64<'data, 'file, R = &'data [u8]> =
49 XcoffComdat<'data, 'file, xcoff::FileHeader64, R>;
50
51#[derive(Debug)]
55pub struct XcoffComdat<'data, 'file, Xcoff, R = &'data [u8]>
56where
57 Xcoff: FileHeader,
58 R: ReadRef<'data>,
59{
60 #[allow(unused)]
61 file: &'file XcoffFile<'data, Xcoff, R>,
62}
63
64impl<'data, 'file, Xcoff, R> read::private::Sealed for XcoffComdat<'data, 'file, Xcoff, R>
65where
66 Xcoff: FileHeader,
67 R: ReadRef<'data>,
68{
69}
70
71impl<'data, 'file, Xcoff, R> ObjectComdat<'data> for XcoffComdat<'data, 'file, Xcoff, R>
72where
73 Xcoff: FileHeader,
74 R: ReadRef<'data>,
75{
76 type SectionIterator = XcoffComdatSectionIterator<'data, 'file, Xcoff, R>;
77
78 #[inline]
79 fn kind(&self) -> ComdatKind {
80 unreachable!();
81 }
82
83 #[inline]
84 fn symbol(&self) -> SymbolIndex {
85 unreachable!();
86 }
87
88 #[inline]
89 fn name_bytes(&self) -> Result<&'data [u8]> {
90 unreachable!();
91 }
92
93 #[inline]
94 fn name(&self) -> Result<&'data str> {
95 unreachable!();
96 }
97
98 #[inline]
99 fn sections(&self) -> Self::SectionIterator {
100 unreachable!();
101 }
102}
103
104pub type XcoffComdatSectionIterator32<'data, 'file, R = &'data [u8]> =
106 XcoffComdatSectionIterator<'data, 'file, xcoff::FileHeader32, R>;
107pub type XcoffComdatSectionIterator64<'data, 'file, R = &'data [u8]> =
109 XcoffComdatSectionIterator<'data, 'file, xcoff::FileHeader64, R>;
110
111#[derive(Debug)]
115pub struct XcoffComdatSectionIterator<'data, 'file, Xcoff, R = &'data [u8]>
116where
117 Xcoff: FileHeader,
118 R: ReadRef<'data>,
119{
120 #[allow(unused)]
121 file: &'file XcoffFile<'data, Xcoff, R>,
122}
123
124impl<'data, 'file, Xcoff, R> Iterator for XcoffComdatSectionIterator<'data, 'file, Xcoff, R>
125where
126 Xcoff: FileHeader,
127 R: ReadRef<'data>,
128{
129 type Item = SectionIndex;
130
131 fn next(&mut self) -> Option<Self::Item> {
132 None
133 }
134}