def implements_storage(self):
        """
        True if combination of field access properties imply that the field
        implements a storage element.
        """

        # 9.4.1, Table 12
        sw = self.get_property('sw')
        hw = self.get_property('hw')
        if sw in (rdltypes.AccessType.rw, rdltypes.AccessType.rw1):
            # Software can read and write, implying a storage element
            return True
        if hw == rdltypes.AccessType.rw:
            # Hardware can read and write, implying a storage element
            return True
        if (sw in (rdltypes.AccessType.w, rdltypes.AccessType.w1)) and (hw == rdltypes.AccessType.r):
            # Write-only register visible to hardware is stored
            return True


        onread = self.get_property('onread')
        if onread is not None:
            # 9.6.1-c: Onread side-effects imply storage regardless of whether
            # or not the field is writable by sw
            return True


        if self.get_property('hwset') or self.get_property('hwclr'):
            # Not in spec, but these imply that a storage element exists
            return True

        return False
def implements_storage ( self ) : sw = self . get_property ( 'sw' ) hw = self . get_property ( 'hw' ) if sw in ( rdltypes . AccessType . rw , rdltypes . AccessType . rw1 ) : return True if hw == rdltypes . AccessType . rw : return True if ( sw in ( rdltypes . AccessType . w , rdltypes . AccessType . w1 ) ) and ( hw == rdltypes . AccessType . r ) : return True onread = self . get_property ( 'onread' ) if onread is not None : return True if self . get_property ( 'hwset' ) or self . get_property ( 'hwclr' ) : return True return False
True if combination of field access properties imply that the field
        implements a storage element.