macholib.ptypes — Packable types¶
The module macholib.ptypes defines types that can be serialized into
byte arrays, both for basic types and structured types (C struct values).
Utility functions¶
-
macholib.ptypes.sizeof(value)¶ Returns the size in bytes of an object when packed, raises
ValueErrorfor inappropriate values.
-
macholib.ptypes.pypackable(name, pytype, format)¶ Returns a packable type that is a subclass of the Python type pytype. The value is converted to and from the packed format using the struct format.
Packable types¶
-
class
macholib.ptypes.BasePackable¶ All packable types are a subclass of
BasePackable, which defines the basic interface but is itself an abstract base class.-
_endian_¶ The byteorder of a packed value. This will be
"<"` for little endian values and ``">"for big-endian ones.Note
the endianness option is a public value to be able to support both big- and little-endian file formats.
The name suggests that this attribute is private, this is partically for historical reasons and partially to avoid conflicts with field names in C structs.
-
from_mmap(mmap, ptr, **kw)¶ This class method constructs the value from a subview of a
mmap.mmapobject. It uses bytes starting at offset ptr and reads just enough bytes to read the entire object.
-
from_fileobj(fp, **kw)¶ This class method constructs the value by reading just enough bytes from a file-like object.
Note
The file must be opened in binary mode, that is read calls should return byte-strings and not unicode-strings.
-
from_str(value, **kw)¶ This class method construct the value by using the struct module to parse the given bytes.
Note
contrary to what the name suggests the argument to this method is a byte-string, not a unicode-string.
-
from_tuple(fp, **kw)¶ This class method constructs the object from a tuple with all fields.
-
to_str()¶ Returns a byte representation of the value.
Note
there is no default implementation for this method
-
to_fileobj(fp)¶ Write a byte representation of the value to the given file-like object. The file should be opened in binary mode.
-
-
class
macholib.ptypes.Structure(...)¶ -
_fields_¶ This class attribute is a list that contains the fields of the structure in the right order. Every item of this list is a tuple with 2 arguments: the first element is the name of the field, and the second the packable type for the field.
Every subclass of
Structuremust define _fields_ to be usefull, and the value of _fields_ should not be changed after class construction.
-
Basic packables¶
Other than the core functionality this module defines a number of
pypackable() types that correspond to useful basic C types.
-
class
macholib.ptypes.p_char([value])¶ A byte string of length 1
-
class
macholib.ptypes.p_int8¶ An 8-bit signed integer
-
class
macholib.ptypes.p_uint8¶ An 8-bit unsigned integer
-
class
macholib.ptypes.p_int16¶ An 16-bit signed integer
-
class
macholib.ptypes.p_uint16¶ An 16-bit unsigned integer
-
class
macholib.ptypes.p_int32¶ An 32-bit signed integer
-
class
macholib.ptypes.p_uint32¶ An 32-bit unsigned integer
-
class
macholib.ptypes.p_int64¶ An 64-bit signed integer
-
class
macholib.ptypes.p_uint64¶ An 64-bit unsigned integer
-
class
macholib.ptypes.p_float¶ An floating point value of type
float
-
class
macholib.ptypes.p_double¶ An floating point value of type
double
Note
the module exports a number of other types with
names starting with p_, such as p_int. Those types
are deprecated and should not be used.