Type annotations reference
Char = bytes
module-attribute
Single char type. Supported in both size modes.
Bool = Annotated[bool, field.BoolField()]
module-attribute
Boolean type. Supported in both size modes.
I8 = Annotated[int, field.SignedStdIntField(1)]
module-attribute
Fixed-width 8-bit signed integer. Supported with size="std"
.
U8 = Annotated[int, field.UnsignedStdIntField(1)]
module-attribute
Fixed-width 8-bit unsigned integer. Supported with size="std"
.
I16 = Annotated[int, field.SignedStdIntField(2)]
module-attribute
Fixed-width 16-bit signed integer. Supported with size="std"
.
U16 = Annotated[int, field.UnsignedStdIntField(2)]
module-attribute
Fixed-width 16-bit unsigned integer. Supported with size="std"
.
I32 = Annotated[int, field.SignedStdIntField(4)]
module-attribute
Fixed-width 32-bit signed integer. Supported with size="std"
.
U32 = Annotated[int, field.UnsignedStdIntField(4)]
module-attribute
Fixed-width 32-bit unsigned integer. Supported with size="std"
.
I64 = Annotated[int, field.SignedStdIntField(8)]
module-attribute
Fixed-width 64-bit signed integer. Supported with size="std"
.
U64 = Annotated[int, field.UnsignedStdIntField(8)]
module-attribute
Fixed-width 64-bit unsigned integer. Supported with size="std"
.
SignedChar = Annotated[int, field.NativeIntField('b', 'byte')]
module-attribute
Equivalent to native C signed char
. Supported with size="native"
.
UnsignedChar = Annotated[int, field.NativeIntField('B', 'ubyte')]
module-attribute
Equivalent to native C unsigned char
. Supported with size="native"
.
Short = Annotated[int, field.NativeIntField('h', 'short')]
module-attribute
Equivalent to native C short
. Supported with size="native"
.
UnsignedShort = Annotated[int, field.NativeIntField('H', 'ushort')]
module-attribute
Equivalent to native C unsigned short
. Supported with size="native"
.
Int = Annotated[int, field.NativeIntField('i', 'int')]
module-attribute
Equivalent to native C int
. Supported with size="native"
.
UnsignedInt = Annotated[int, field.NativeIntField('I', 'uint')]
module-attribute
Equivalent to native C unsigned int
. Supported with size="native"
.
Long = Annotated[int, field.NativeIntField('l', 'long')]
module-attribute
Equivalent to native C long
. Supported with size="native"
.
UnsignedLong = Annotated[int, field.NativeIntField('L', 'ulong')]
module-attribute
Equivalent to native C unsigned long
. Supported with size="native"
.
LongLong = Annotated[int, field.NativeIntField('q', 'longlong')]
module-attribute
Equivalent to native C long long
. Supported with size="native"
.
UnsignedLongLong = Annotated[int, field.NativeIntField('Q', 'ulonglong')]
module-attribute
Equivalent to native C unsigned long long
. Supported with
size="native"
.
UnsignedSize = Annotated[int, field.SizeField(signed=False)]
module-attribute
Equivalent to native C size_t
. Supported with size="native"
.
SignedSize = Annotated[int, field.SizeField(signed=True)]
module-attribute
Equivalent to native C ssize_t
(a POSIX extension type). Supported with
size="native"
.
Pointer = Annotated[int, field.PointerField()]
module-attribute
Equivalent to native C void *
pointer. Supported with size="native"
.
F16 = Annotated[float, field.FloatingPointField('e')]
module-attribute
Half-precision floating point number. Supported in both size modes.
Some compilers provide support for half precision floats on certain platforms
(e.g. GCC,
Clang).
It is also available as
std::float16_t
in C++23.
F32 = Annotated[float, field.FloatingPointField('f')]
module-attribute
Single-precision floating point number, equivalent to float
in C.
Supported in both size modes.
F64 = Annotated[float, field.FloatingPointField('d')]
module-attribute
Double-precision floating point number, equivalent to double
in C.
Supported in both size modes.
LengthPrefixed
Bases: Field[bytes]
Length-prefixed byte array, also known as a 'Pascal string'.
Packed to a fixed-length array of bytes, where the first byte is the length of the data. Data shorter than the maximum size is padded with zero bytes.
Must be used to annotate a bytes
field with typing.Annotated
:
import dataclasses_struct as dcs
@dcs.dataclass_struct()
class Example:
fixed_length: Annotated[bytes, dcs.LengthPrefixed(10)]
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
The maximum size of the string including the length byte. Must be
between 2 and 256 inclusive. The maximum array length that can be
stored without truncation is |
required |
Raises:
Type | Description |
---|---|
ValueError
|
If |
Source code in dataclasses_struct/types.py
PadBefore
Bases: _Padding
Add zero-bytes padding before the field.
Should be used with typing.Annotated
.
from typing import Annotated
import dataclasses_struct as dcs
@dcs.dataclass_struct()
class Padded:
x: Annotated[int, dcs.PadBefore(5)]
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
The number of padding bytes to add before the field. |
required |
Source code in dataclasses_struct/types.py
PadAfter
Bases: _Padding
Add zero-bytes padding after the field.
Should be used with typing.Annotated
.
from typing import Annotated
import dataclasses_struct as dcs
@dcs.dataclass_struct()
class Padded:
x: Annotated[int, dcs.PadAfter(5)]
Parameters:
Name | Type | Description | Default |
---|---|---|---|
size
|
int
|
The number of padding bytes to add after the field. |
required |