Source code for envi.memcanvas.renderers

"""
Some of the basic/universal memory renderers.
"""

import struct

import envi.memcanvas as e_canvas

class ByteRend(e_canvas.MemoryRenderer):
[docs] __fmt_char__ = "B" def __init__(self, bigend=False): self.fmtbase = "<" if bigend: self.fmtbase = ">" self.width = struct.calcsize("%s%s" % (self.fmtbase,self.__class__.__fmt_char__)) self.dispfmt = "%%.%dx" % (self.width*2) cnt = 16 / self.width self.packfmt = self.fmtbase + (self.__class__.__fmt_char__ * cnt) def render(self, mcanv, va):
[docs] bytes = mcanv.mem.readMemory(va, 16) self.rendVa(mcanv, va) mcanv.addText(" ") for val in mcanv.mem.readMemoryFormat(va, self.packfmt): bstr = self.dispfmt % val if mcanv.mem.isValidPointer(val): mcanv.addVaText(bstr, val) else: mcanv.addNameText(bstr) mcanv.addText(" ") mcanv.addText(" ") self.rendChars(mcanv, bytes) mcanv.addText("\n") return 16 class ShortRend(ByteRend):
[docs] __fmt_char__ = "H" class LongRend(ByteRend):
[docs] __fmt_char__ = "L" class QuadRend(ByteRend):
[docs] __fmt_char__ = "Q"