//---------------------------------------------------------------------- // Extract //---------------------------------------------------------------------- bool DWARFDebugAranges::Extract(const DataExtractor &debug_aranges_data) { if (debug_aranges_data.ValidOffset(0)) { uint32_t offset = 0; typedef std::vector<DWARFDebugArangeSet> SetCollection; typedef SetCollection::const_iterator SetCollectionIter; SetCollection sets; DWARFDebugArangeSet set; Range range; while (set.Extract(debug_aranges_data, &offset)) sets.push_back(set); uint32_t count = 0; for_each(sets.begin(), sets.end(), CountArangeDescriptors(count)); if (count > 0) { m_aranges.reserve(count); AddArangeDescriptors range_adder(m_aranges); for_each(sets.begin(), sets.end(), range_adder); } // puts("\n\nDWARFDebugAranges list is:\n"); // for_each(m_aranges.begin(), m_aranges.end(), PrintRange); } return false; }
bool DWARFDebugAranges::extract(DataExtractor debug_aranges_data) { if (debug_aranges_data.isValidOffset(0)) { uint32_t offset = 0; typedef std::vector<DWARFDebugArangeSet> SetCollection; typedef SetCollection::const_iterator SetCollectionIter; SetCollection sets; DWARFDebugArangeSet set; Range range; while (set.extract(debug_aranges_data, &offset)) sets.push_back(set); uint32_t count = 0; std::for_each(sets.begin(), sets.end(), CountArangeDescriptors(count)); if (count > 0) { Aranges.reserve(count); AddArangeDescriptors range_adder(Aranges); std::for_each(sets.begin(), sets.end(), range_adder); } } return false; }