Struct gimli::read::unit::EntriesTree
source · pub struct EntriesTree<'abbrev, 'unit, R>where
R: Reader,{
root: R,
unit: &'unit UnitHeader<R>,
abbreviations: &'abbrev Abbreviations,
input: R,
entry: Option<DebuggingInformationEntry<'abbrev, 'unit, R>>,
depth: isize,
}
Expand description
The state information for a tree view of the Debugging Information Entries.
The EntriesTree
can be used to recursively iterate through the DIE
tree, following the parent/child relationships. The EntriesTree
contains
shared state for all nodes in the tree, avoiding any duplicate parsing of
entries during the traversal.
§Example Usage
let unit = get_some_unit();
let abbrevs = get_abbrevs_for_unit(&unit);
let mut tree = unit.entries_tree(&abbrevs, None)?;
let root = tree.root()?;
process_tree(root)?;
fn process_tree<R>(mut node: gimli::EntriesTreeNode<R>) -> gimli::Result<()>
where R: gimli::Reader
{
{
// Examine the entry attributes.
let mut attrs = node.entry().attrs();
while let Some(attr) = attrs.next()? {
}
}
let mut children = node.children();
while let Some(child) = children.next()? {
// Recursively process a child.
process_tree(child);
}
Ok(())
}
Fields§
§root: R
§unit: &'unit UnitHeader<R>
§abbreviations: &'abbrev Abbreviations
§input: R
§entry: Option<DebuggingInformationEntry<'abbrev, 'unit, R>>
§depth: isize
Implementations§
source§impl<'abbrev, 'unit, R: Reader> EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R: Reader> EntriesTree<'abbrev, 'unit, R>
fn new( root: R, unit: &'unit UnitHeader<R>, abbreviations: &'abbrev Abbreviations, ) -> Self
sourcepub fn root<'me>(
&'me mut self,
) -> Result<EntriesTreeNode<'abbrev, 'unit, 'me, R>>
pub fn root<'me>( &'me mut self, ) -> Result<EntriesTreeNode<'abbrev, 'unit, 'me, R>>
Returns the root node of the tree.
Trait Implementations§
source§impl<'abbrev, 'unit, R> Clone for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> Clone for EntriesTree<'abbrev, 'unit, R>
source§fn clone(&self) -> EntriesTree<'abbrev, 'unit, R>
fn clone(&self) -> EntriesTree<'abbrev, 'unit, R>
Returns a copy of the value. Read more
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl<'abbrev, 'unit, R> !Freeze for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> !RefUnwindSafe for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> Send for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> !Sync for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> Unpin for EntriesTree<'abbrev, 'unit, R>
impl<'abbrev, 'unit, R> UnwindSafe for EntriesTree<'abbrev, 'unit, R>
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)