class documentation

An abstract class whose instances represent a type. Refer to the module documentation for details.

Implementers must provide the _construct_type method.

Method description The short description of this type.
Method is_context_sensitive Whether the context argument needed by some methods actually has an effect.
Method parse Parses the value of an instance of this type from a raw buffer, possibly depending on the context.
Method size_bytes The minimal number of bytes necessary to hold an instance of this type, possibly depending on the context.
Method to_bytes Build a byte buffer from a value of this type.
Method _construct_type Return the underlying construct instance
Method _resolve Uses the resolver to return a resolved version of the type, if possible.
def description(self):

The short description of this type.

For named types, it is the name of the type. For other types, it is generally __str__.

Returns
strUndocumented
def is_context_sensitive(self):

Whether the context argument needed by some methods actually has an effect.

Types that return False to this method are context-insensitive types. You can safely pass any object as context parameter (including None) to the methods of such type.

Note that the context-sensitivity of a type may change in the future.

Examples

Getting the size of a type without needing a context for context-insensitive types: >>> types.U32.is_context_sensitive() False >>> types.U32.size_bytes(context=None) 4 >>> array32_12 = types.Array(types.U32, 12) >>> array32_12.is_context_sensitive() False >>> array32_12.size_bytes() # context=None by default 48

Context-sensitive types may raise errors when attempting to get the size without a context: >>> types.USize.is_context_sensitive() True >>> types.USize.size_bytes(context=None) ValueError: Please provide a context when using a context-sensitive type

Returns
boolUndocumented
def parse(self, buf, context=None):

Parses the value of an instance of this type from a raw buffer, possibly depending on the context.

Information

Parameters
buf:bytesUndocumented
context:_Optional[Context]The context object. See package documentation.
Returns
_AnyUndocumented
def size_bytes(self, context=None):

The minimal number of bytes necessary to hold an instance of this type, possibly depending on the context.

Parameters
context:_Optional[Context]Undocumented
Returns
intUndocumented
def to_bytes(self, value, context=None):

Build a byte buffer from a value of this type.

Examples

Converting some values to their byte representation.

>>> F32.to_bytes(0.222)
b'øSc>'
>>> Array(U16, 2).to_bytes([0xfe, 0xfeff])
b'þÿþ'
>>> BigEndian(U16).to_bytes(0xfffe)
b'ÿþ'
>>> U16.to_bytes(0xfffe)
b'þÿ'

Information

Parameters
value:_AnyUndocumented
context:_Optional[Context]The context object. See package documentation.
Returns
bytesUndocumented
def _resolve(self, resolver):

Uses the resolver to return a resolved version of the type, if possible.

Parameters
resolver:BaseTypeResolverUndocumented
Returns
TypeUndocumented