Capture the Rust type used to represent an operand kind.
The Rust type is usually the camel-cased name of the operand kind, but there are variations, so allow an explicit rust_type='IntCC' when defining operand kinds.
This commit is contained in:
@@ -290,13 +290,13 @@ class OperandKind(object):
|
||||
instruction.
|
||||
"""
|
||||
|
||||
def __init__(self, name, doc, default_member=None):
|
||||
def __init__(self, name, doc, default_member=None, rust_type=None):
|
||||
self.name = name
|
||||
self.__doc__ = doc
|
||||
self.default_member = default_member
|
||||
# The camel-cased name of an operand kind is also the Rust type used to
|
||||
# represent it.
|
||||
self.camel_name = camel_case(name)
|
||||
self.rust_type = rust_type or camel_case(name)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@@ -348,8 +348,9 @@ class ImmediateKind(OperandKind):
|
||||
`InstructionData` data structure.
|
||||
"""
|
||||
|
||||
def __init__(self, name, doc, default_member='imm'):
|
||||
super(ImmediateKind, self).__init__(name, doc, default_member)
|
||||
def __init__(self, name, doc, default_member='imm', rust_type=None):
|
||||
super(ImmediateKind, self).__init__(
|
||||
name, doc, default_member, rust_type)
|
||||
|
||||
def __repr__(self):
|
||||
return 'ImmediateKind({})'.format(self.name)
|
||||
@@ -362,8 +363,9 @@ class EntityRefKind(OperandKind):
|
||||
The kind of an entity reference instruction operand.
|
||||
"""
|
||||
|
||||
def __init__(self, name, doc, default_member=None):
|
||||
super(EntityRefKind, self).__init__(name, doc, default_member or name)
|
||||
def __init__(self, name, doc, default_member=None, rust_type=None):
|
||||
super(EntityRefKind, self).__init__(
|
||||
name, doc, default_member or name, rust_type)
|
||||
|
||||
def __repr__(self):
|
||||
return 'EntityRefKind({})'.format(self.name)
|
||||
|
||||
@@ -28,7 +28,10 @@ ieee32 = ImmediateKind('ieee32', 'A 32-bit immediate floating point number.')
|
||||
ieee64 = ImmediateKind('ieee64', 'A 64-bit immediate floating point number.')
|
||||
|
||||
#: A large SIMD vector constant.
|
||||
immvector = ImmediateKind('immvector', 'An immediate SIMD vector.')
|
||||
immvector = ImmediateKind(
|
||||
'immvector',
|
||||
'An immediate SIMD vector.',
|
||||
rust_type='ImmVector')
|
||||
|
||||
#: A condition code for comparing integer values.
|
||||
#:
|
||||
@@ -37,7 +40,7 @@ immvector = ImmediateKind('immvector', 'An immediate SIMD vector.')
|
||||
intcc = ImmediateKind(
|
||||
'intcc',
|
||||
'An integer comparison condition code.',
|
||||
default_member='cond')
|
||||
default_member='cond', rust_type='IntCC')
|
||||
|
||||
#: A condition code for comparing floating point values.
|
||||
#:
|
||||
@@ -46,4 +49,4 @@ intcc = ImmediateKind(
|
||||
floatcc = ImmediateKind(
|
||||
'floatcc',
|
||||
'A floating point comparison condition code.',
|
||||
default_member='cond')
|
||||
default_member='cond', rust_type='FloatCC')
|
||||
|
||||
Reference in New Issue
Block a user