Source code for konfoo.pointers

# -*- coding: utf-8 -*-
"""
    pointers.py
    ~~~~~~~~~~~
    <Add description of the module here>.

    :copyright: (c) 2015-2018 by Jochen Gerhaeusser.
    :license: BSD, see LICENSE for details
"""

from .core import (
    Pointer, StructurePointer, ArrayPointer, StreamPointer,
    StringPointer,
    RelativePointer, StructureRelativePointer, ArrayRelativePointer,
    StreamRelativePointer, StringRelativePointer,
    Float)
from .fields import (
    Signed8, Signed16, Signed32,
    Unsigned8, Unsigned16, Unsigned32)
from .globals import BYTEORDER


[docs]class Pointer8(Pointer): """ A `Pointer8` field is a :class:`Pointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template=None, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class Pointer16(Pointer): """ A `Pointer16` field is a :class:`Pointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class Pointer24(Pointer): """ A `Pointer24` field is a :class:`Pointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class Pointer32(Pointer): """ A `Pointer32` field is a :class:`Pointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class Pointer48(Pointer): """ A `Pointer48` field is a :class:`Pointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class Pointer64(Pointer): """ A `Pointer64` field is a :class:`Pointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class StructurePointer8(StructurePointer): """ A `StructurePointer8` field is a :class:`StructurePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template=None, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class StructurePointer16(StructurePointer): """ A `StructurePointer16` field is a :class:`StructurePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class StructurePointer24(StructurePointer): """ A `StructurePointer24` field is a :class:`StructurePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class StructurePointer32(StructurePointer): """ A `StructurePointer32` field is a :class:`StructurePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class StructurePointer48(StructurePointer): """ A `StructurePointer48` field is a :class:`StructurePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class StructurePointer64(StructurePointer): """ A `StructurePointer64` field is a :class:`StructurePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class ArrayPointer8(ArrayPointer): """ An `ArrayPointer8` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class ArrayPointer16(ArrayPointer): """ An `ArrayPointer16` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class ArrayPointer24(ArrayPointer): """ An `ArrayPointer24` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class ArrayPointer32(ArrayPointer): """ An `ArrayPointer32` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class ArrayPointer48(ArrayPointer): """ An `ArrayPointer48` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class ArrayPointer64(ArrayPointer): """ An `ArrayPointer64` field is an :class:`ArrayPointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class StreamPointer8(StreamPointer): """ A `StreamPointer8` field is a :class:`StreamPointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, size=0, address=None): super().__init__(size=size, address=address, bit_size=8)
[docs]class StreamPointer16(StreamPointer): """ A `StreamPointer16` field is a :class:`StreamPointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=16, field_order=field_order)
[docs]class StreamPointer24(StreamPointer): """ A `StreamPointer24` field is a :class:`StreamPointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=24, field_order=field_order)
[docs]class StreamPointer32(StreamPointer): """ A `StreamPointer32` field is a :class:`StreamPointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=32, field_order=field_order)
[docs]class StreamPointer48(StreamPointer): """ A `StreamPointer48` field is a :class:`StreamPointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=48, field_order=field_order)
[docs]class StreamPointer64(StreamPointer): """ A `StreamPointer64` field is a :class:`StreamPointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=64, field_order=field_order)
[docs]class StringPointer8(StringPointer): """ A `StringPointer8` field is a :class:`StringPointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, size=0, address=None): super().__init__(size, address, bit_size=8)
[docs]class StringPointer16(StringPointer): """ A `StringPointer16` field is a :class:`StringPointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=16, field_order=field_order)
[docs]class StringPointer24(StringPointer): """ A `StringPointer24` field is a :class:`StringPointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=24, field_order=field_order)
[docs]class StringPointer32(StringPointer): """ A `StringPointer32` field is a :class:`StringPointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=32, field_order=field_order)
[docs]class StringPointer48(StringPointer): """ A `StringPointer48` field is a :class:`StringPointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=48, field_order=field_order)
[docs]class StringPointer64(StringPointer): """ A `StringPointer64` field is a :class:`StringPointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=64, field_order=field_order)
class FloatPointer(Pointer): """ A `FloatPointer` field is a :class:`Pointer` field which refers to a :class:`Float` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Float(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Signed8Pointer(Pointer): """ A `FloatPointer` field is a :class:`Pointer` field which refers to a :class:`Signed8` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Signed8(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Signed16Pointer(Pointer): """ A `Signed16Pointer` field is a :class:`Pointer` field which refers to a :class:`Signed16` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Signed16(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Signed32Pointer(Pointer): """ A `Signed32Pointer` field is a :class:`Pointer` field which refers to a :class:`Signed32` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Signed32(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Unsigned8Pointer(Pointer): """ An `Unsigned8Pointer` field is a :class:`Pointer` field which refers to an :class:`Unsigned8` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Unsigned8(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Unsigned16Pointer(Pointer): """ An `Unsigned16Pointer` field is a :class:`Pointer` field which refers to an :class:`Unsigned16` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Unsigned16(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order) class Unsigned32Pointer(Pointer): """ An `Unsigned32Pointer` field is a :class:`Pointer` field which refers to an :class:`Unsigned32` field. """ def __init__(self, address=None, data_order=BYTEORDER, bit_size=32, align_to=None, field_order='auto'): super().__init__(template=Unsigned32(), address=address, data_order=data_order, bit_size=bit_size, align_to=align_to, field_order=field_order)
[docs]class RelativePointer8(RelativePointer): """ A `RelativePointer8` field is a :class:`RelativePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template=None, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class RelativePointer16(RelativePointer): """ A `RelativePointer16` field is a :class:`RelativePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class RelativePointer24(RelativePointer): """ A `RelativePointer24` field is a :class:`RelativePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class RelativePointer32(RelativePointer): """ A `RelativePointer32` field is a :class:`RelativePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class RelativePointer48(RelativePointer): """ A `RelativePointer48` field is a :class:`RelativePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class RelativePointer64(RelativePointer): """ A `RelativePointer64` field is a :class:`RelativePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class StructureRelativePointer8(StructureRelativePointer): """ A `StructureRelativePointer8` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template=None, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class StructureRelativePointer16(StructureRelativePointer): """ A `StructureRelativePointer16` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class StructureRelativePointer24(StructureRelativePointer): """ A `StructureRelativePointer24` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class StructureRelativePointer32(StructureRelativePointer): """ A `StructureRelativePointer32` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class StructureRelativePointer48(StructureRelativePointer): """ A `StructureRelativePointer48` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class StructureRelativePointer64(StructureRelativePointer): """ A `StructureRelativePointer64` field is a :class:`StructureRelativePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template=None, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class ArrayRelativePointer8(ArrayRelativePointer): """ An `ArrayRelativePointer8` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, template, address=None, data_order=BYTEORDER): super().__init__(template=template, address=address, data_order=data_order, bit_size=8)
[docs]class ArrayRelativePointer16(ArrayRelativePointer): """ An `ArrayRelativePointer16` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=16, field_order=field_order)
[docs]class ArrayRelativePointer24(ArrayRelativePointer): """ An `ArrayRelativePointer24` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=24, field_order=field_order)
[docs]class ArrayRelativePointer32(ArrayRelativePointer): """ An `ArrayRelativePointer32` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=32, field_order=field_order)
[docs]class ArrayRelativePointer48(ArrayRelativePointer): """ An `ArrayRelativePointer48` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=48, field_order=field_order)
[docs]class ArrayRelativePointer64(ArrayRelativePointer): """ An `ArrayRelativePointer64` field is an :class:`ArrayRelativePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, template, address=None, data_order=BYTEORDER, field_order='auto'): super().__init__(template=template, address=address, data_order=data_order, bit_size=64, field_order=field_order)
[docs]class StreamRelativePointer8(StreamRelativePointer): """ A `StreamRelativePointer8` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, size=0, address=None): super().__init__(size=size, address=address, bit_size=8)
[docs]class StreamRelativePointer16(StreamRelativePointer): """ A `StreamRelativePointer16` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=16, field_order=field_order)
[docs]class StreamRelativePointer24(StreamRelativePointer): """ A `StreamRelativePointer24` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=24, field_order=field_order)
[docs]class StreamRelativePointer32(StreamRelativePointer): """ A `StreamRelativePointer32` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=32, field_order=field_order)
[docs]class StreamRelativePointer48(StreamRelativePointer): """ A `StreamRelativePointer48` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=48, field_order=field_order)
[docs]class StreamRelativePointer64(StreamRelativePointer): """ A `StreamRelativePointer64` field is a :class:`StreamRelativePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=64, field_order=field_order)
[docs]class StringRelativePointer8(StringRelativePointer): """ A `StringRelativePointer8` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of one byte. """ def __init__(self, size=0, address=None): super().__init__(size=size, address=address, bit_size=8)
[docs]class StringRelativePointer16(StringRelativePointer): """ A `StringRelativePointer16` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of two bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=16, field_order=field_order)
[docs]class StringRelativePointer24(StringRelativePointer): """ A `StringRelativePointer24` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of three bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=24, field_order=field_order)
[docs]class StringRelativePointer32(StringRelativePointer): """ A `StringRelativePointer32` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of four bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=32, field_order=field_order)
[docs]class StringRelativePointer48(StringRelativePointer): """ A `StringRelativePointer48` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of six bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=48, field_order=field_order)
[docs]class StringRelativePointer64(StringRelativePointer): """ A `StringRelativePointer64` field is a :class:`StringRelativePointer` field with a :class:`Field` *size* of eight bytes. """ def __init__(self, size=0, address=None, field_order='auto'): super().__init__(size=size, address=address, bit_size=64, field_order=field_order)