binman: Add a function to obtain the image for an Entry
At present we have an 'image' property in the entry for this purpose, but this is not necessary and seems error-prone in the presence of inheritance. Add a function instead. The Entry_section class overrides this with a special version, since top-level sections are in fact images, since Image inherits Entry_section. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
c6bd6e235a
commit
c5ad04b721
@ -700,3 +700,11 @@ features to produce new behaviours.
|
||||
data = self.ReadData(decomp)
|
||||
self.ProcessContentsUpdate(data)
|
||||
self.Detail('Loaded data size %x' % len(data))
|
||||
|
||||
def GetImage(self):
|
||||
"""Get the image containing this entry
|
||||
|
||||
Returns:
|
||||
Image object containing this entry
|
||||
"""
|
||||
return self.section.GetImage()
|
||||
|
@ -49,7 +49,7 @@ class Entry_fmap(Entry):
|
||||
areas.append(fmap_util.FmapArea(pos or 0, entry.size or 0,
|
||||
tools.FromUnicode(entry.name), 0))
|
||||
|
||||
entries = self.section.image.GetEntries()
|
||||
entries = self.GetImage().GetEntries()
|
||||
areas = []
|
||||
for entry in entries.values():
|
||||
_AddEntries(areas, entry)
|
||||
|
@ -45,8 +45,6 @@ class Entry_section(Entry):
|
||||
def __init__(self, section, etype, node, test=False):
|
||||
if not test:
|
||||
Entry.__init__(self, section, etype, node)
|
||||
if section:
|
||||
self.image = section.image
|
||||
self._entries = OrderedDict()
|
||||
self._pad_byte = 0
|
||||
self._sort = False
|
||||
@ -374,7 +372,7 @@ class Entry_section(Entry):
|
||||
Image size as an integer number of bytes, which may be None if the
|
||||
image size is dynamic and its sections have not yet been packed
|
||||
"""
|
||||
return self.image.size
|
||||
return self.GetImage().size
|
||||
|
||||
def FindEntryType(self, etype):
|
||||
"""Find an entry type in the section
|
||||
@ -468,3 +466,16 @@ class Entry_section(Entry):
|
||||
for entry in self._entries.values():
|
||||
entry.LoadData(decomp)
|
||||
self.Detail('Loaded data')
|
||||
|
||||
def GetImage(self):
|
||||
"""Get the image containing this section
|
||||
|
||||
Note that a top-level section is actually an Image, so this function may
|
||||
return self.
|
||||
|
||||
Returns:
|
||||
Image object containing this section
|
||||
"""
|
||||
if not self.section:
|
||||
return self
|
||||
return self.section.GetImage()
|
||||
|
@ -42,7 +42,6 @@ class Image(section.Entry_section):
|
||||
we create a section manually.
|
||||
"""
|
||||
def __init__(self, name, node, test=False):
|
||||
self.image = self
|
||||
section.Entry_section.__init__(self, None, 'section', node, test)
|
||||
self.name = 'main-section'
|
||||
self.image_name = name
|
||||
|
Loading…
Reference in New Issue
Block a user