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
ValueError
for 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.mmap
object. 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
Structure
must 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.