def __init__(self, parent, is_distinct, kind, operands, name): super(DIValue, self).__init__(parent, types.MetaDataType(), name=name) self.is_distinct = is_distinct self.kind = kind self.operands = tuple(operands) parent.metadata.append(self)
def _fix_metadata_operands(self, operands): fixed_ops = [] for op in operands: if op is None: # A literal None creates a null metadata value op = types.MetaDataType()(None) elif isinstance(op, str): # A literal string creates a metadata string value op = values.MetaDataString(self, op) elif isinstance(op, (list, tuple)): # A sequence creates a metadata node reference op = self.add_metadata(op) fixed_ops.append(op) return fixed_ops
def __init__(self, value): assert isinstance(value, Value) assert not isinstance(value.type, types.MetaDataType) self.type = types.MetaDataType() self.wrapped_value = value
def __init__(self, parent, values, name): super(MDValue, self).__init__(parent, types.MetaDataType(), name=name) self.operands = tuple(values) parent.metadata.append(self)
def __init__(self, parent, string): super(MetaDataString, self).__init__(parent, types.MetaDataType(), name="") self.string = string