"""
@generated by codestare-proto-plus.  Do not edit manually!
"""
from proto import (
    BOOL,
    DOUBLE,
    FLOAT,
    Field,
    INT32,
    RepeatedField,
    STRING,
    module,
)

from proto.message import (
    Message,
)

from ubii.proto.v1.dataStructure.color_pb_plus import (
    Color,
)

from ubii.proto.v1.dataStructure.image_pb_plus import (
    Image2D,
    Image2DList,
)

from ubii.proto.v1.dataStructure.keyEvent_pb_plus import (
    KeyEvent,
)

from ubii.proto.v1.dataStructure.lists_pb_plus import (
    BoolList,
    DoubleList,
    FloatList,
    Int32List,
    StringList,
)

from ubii.proto.v1.dataStructure.matrix3x2_pb_plus import (
    Matrix3x2,
)

from ubii.proto.v1.dataStructure.matrix4x4_pb_plus import (
    Matrix4x4,
)

from ubii.proto.v1.dataStructure.mouseEvent_pb_plus import (
    MouseEvent,
)

from ubii.proto.v1.dataStructure.myoEvent_pb_plus import (
    MyoEvent,
)

from ubii.proto.v1.dataStructure.object2d_pb_plus import (
    Object2D,
    Object2DList,
)

from ubii.proto.v1.dataStructure.object3d_pb_plus import (
    Object3D,
    Object3DList,
)

from ubii.proto.v1.dataStructure.pose2d_pb_plus import (
    Pose2D,
)

from ubii.proto.v1.dataStructure.pose3d_pb_plus import (
    Pose3D,
)

from ubii.proto.v1.dataStructure.quaternion_pb_plus import (
    Quaternion,
)

from ubii.proto.v1.dataStructure.touchEvent_pb_plus import (
    TouchEvent,
    TouchEventList,
)

from ubii.proto.v1.dataStructure.vector2_pb_plus import (
    Vector2,
    Vector2List,
)

from ubii.proto.v1.dataStructure.vector3_pb_plus import (
    Vector3,
    Vector3List,
)

from ubii.proto.v1.dataStructure.vector4_pb_plus import (
    Vector4,
    Vector4List,
)

from ubii.proto.v1.sessions.session_pb_plus import (
    Session,
)

from ubii.proto.v1.topicData.timestamp_pb_plus import (
    Timestamp,
)


__protobuf__ = module(
    package="ubii.proto.v1.topicData",
    marshal="ubii.proto.v1",
    manifest={
        "TopicDataRecord",
        "TopicDataRecordList",
    }
)


class TopicDataRecord(Message):
    """
    continuous index: 38

    .. admonition:: One Ofs

        This message defines the following *oneof* group[s]

        .. attribute:: type

            - 	:attr:`.double`
            - 	:attr:`.bool`
            - 	:attr:`.string`
            - 	:attr:`.int32`
            - 	:attr:`.float`
            - 	:attr:`.vector2`
            - 	:attr:`.vector2_list`
            - 	:attr:`.vector3`
            - 	:attr:`.vector3_list`
            - 	:attr:`.vector4`
            - 	:attr:`.vector4_list`
            - 	:attr:`.quaternion`
            - 	:attr:`.quaternion_list`
            - 	:attr:`.matrix3x2`
            - 	:attr:`.matrix4x4`
            - 	:attr:`.color`
            - 	:attr:`.touch_event`
            - 	:attr:`.touch_event_list`
            - 	:attr:`.key_event`
            - 	:attr:`.mouse_event`
            - 	:attr:`.myo_event`
            - 	:attr:`.pose2D`
            - 	:attr:`.pose3D`
            - 	:attr:`.object2D`
            - 	:attr:`.object3D`
            - 	:attr:`.object2D_list`
            - 	:attr:`.object3D_list`
            - 	:attr:`.int32_list`
            - 	:attr:`.float_list`
            - 	:attr:`.double_list`
            - 	:attr:`.string_list`
            - 	:attr:`.bool_list`
            - 	:attr:`.image2D`
            - 	:attr:`.image2D_list`
            - 	:attr:`.session`

    Attributes:
        topic (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        timestamp (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.topicData.timestamp_pb_plus.Timestamp`
        client_id (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING`
        double (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.DOUBLE` -- *oneof* :attr:`.type`
        bool (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.BOOL` -- *oneof* :attr:`.type`
        string (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.STRING` -- *oneof* :attr:`.type`
        int32 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.INT32` -- *oneof* :attr:`.type`
        float (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~proto.primitives.ProtoType.FLOAT` -- *oneof* :attr:`.type`
        vector2 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector2_pb_plus.Vector2` -- *oneof* :attr:`.type`
        vector2_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector2_pb_plus.Vector2List` -- *oneof* :attr:`.type`
        vector3 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector3_pb_plus.Vector3` -- *oneof* :attr:`.type`
        vector3_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector3_pb_plus.Vector3List` -- *oneof* :attr:`.type`
        vector4 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector4_pb_plus.Vector4` -- *oneof* :attr:`.type`
        vector4_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.vector4_pb_plus.Vector4List` -- *oneof* :attr:`.type`
        quaternion (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.quaternion_pb_plus.Quaternion` -- *oneof*
            :attr:`.type`
        quaternion_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.quaternion_pb_plus.Quaternion` -- *oneof*
            :attr:`.type`
        matrix3x2 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.matrix3x2_pb_plus.Matrix3x2` -- *oneof* :attr:`.type`
        matrix4x4 (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.matrix4x4_pb_plus.Matrix4x4` -- *oneof* :attr:`.type`
        color (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.color_pb_plus.Color` -- *oneof* :attr:`.type`
        touch_event (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.touchEvent_pb_plus.TouchEvent` -- *oneof*
            :attr:`.type`
        touch_event_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.touchEvent_pb_plus.TouchEventList` -- *oneof*
            :attr:`.type`
        key_event (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.keyEvent_pb_plus.KeyEvent` -- *oneof* :attr:`.type`
        mouse_event (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.mouseEvent_pb_plus.MouseEvent` -- *oneof*
            :attr:`.type`
        myo_event (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.myoEvent_pb_plus.MyoEvent` -- *oneof* :attr:`.type`
        pose2D (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.pose2d_pb_plus.Pose2D` -- *oneof* :attr:`.type`
        pose3D (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.pose3d_pb_plus.Pose3D` -- *oneof* :attr:`.type`
        object2D (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.object2d_pb_plus.Object2D` -- *oneof* :attr:`.type`
        object3D (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.object3d_pb_plus.Object3D` -- *oneof* :attr:`.type`
        object2D_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.object2d_pb_plus.Object2DList` -- *oneof*
            :attr:`.type`
        object3D_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.object3d_pb_plus.Object3DList` -- *oneof*
            :attr:`.type`
        int32_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.Int32List` -- *oneof* :attr:`.type`
        float_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.FloatList` -- *oneof* :attr:`.type`
        double_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.DoubleList` -- *oneof* :attr:`.type`
        string_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.StringList` -- *oneof* :attr:`.type`
        bool_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.lists_pb_plus.BoolList` -- *oneof* :attr:`.type`
        image2D (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.image_pb_plus.Image2D` -- *oneof* :attr:`.type`
        image2D_list (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.dataStructure.image_pb_plus.Image2DList` -- *oneof* :attr:`.type`
        session (proto.fields.Field): :obj:`~proto.fields.Field` of type
            :obj:`~ubii.proto.v1.sessions.session_pb_plus.Session` -- *oneof* :attr:`.type`
    """

    topic = Field(
        STRING,
        number=1,
    )
    timestamp = Field(
        Timestamp,
        number=2,
    )
    client_id = Field(
        STRING,
        number=33,
    )
    double = Field(
        DOUBLE,
        number=3,
        oneof='type',
    )
    bool = Field(
        BOOL,
        number=4,
        oneof='type',
    )
    string = Field(
        STRING,
        number=5,
        oneof='type',
    )
    int32 = Field(
        INT32,
        number=23,
        oneof='type',
    )
    float = Field(
        FLOAT,
        number=24,
        oneof='type',
    )
    vector2 = Field(
        Vector2,
        number=6,
        oneof='type',
    )
    vector2_list = Field(
        Vector2List,
        number=35,
        oneof='type',
    )
    vector3 = Field(
        Vector3,
        number=7,
        oneof='type',
    )
    vector3_list = Field(
        Vector3List,
        number=36,
        oneof='type',
    )
    vector4 = Field(
        Vector4,
        number=8,
        oneof='type',
    )
    vector4_list = Field(
        Vector4List,
        number=37,
        oneof='type',
    )
    quaternion = Field(
        Quaternion,
        number=9,
        oneof='type',
    )
    quaternion_list = Field(
        Quaternion,
        number=38,
        oneof='type',
    )
    matrix3x2 = Field(
        Matrix3x2,
        number=10,
        oneof='type',
    )
    matrix4x4 = Field(
        Matrix4x4,
        number=11,
        oneof='type',
    )
    color = Field(
        Color,
        number=12,
        oneof='type',
    )
    touch_event = Field(
        TouchEvent,
        number=13,
        oneof='type',
    )
    touch_event_list = Field(
        TouchEventList,
        number=34,
        oneof='type',
    )
    key_event = Field(
        KeyEvent,
        number=14,
        oneof='type',
    )
    mouse_event = Field(
        MouseEvent,
        number=15,
        oneof='type',
    )
    myo_event = Field(
        MyoEvent,
        number=16,
        oneof='type',
    )
    pose2D = Field(
        Pose2D,
        number=17,
        oneof='type',
    )
    pose3D = Field(
        Pose3D,
        number=18,
        oneof='type',
    )
    object2D = Field(
        Object2D,
        number=19,
        oneof='type',
    )
    object3D = Field(
        Object3D,
        number=20,
        oneof='type',
    )
    object2D_list = Field(
        Object2DList,
        number=21,
        oneof='type',
    )
    object3D_list = Field(
        Object3DList,
        number=22,
        oneof='type',
    )
    int32_list = Field(
        Int32List,
        number=25,
        oneof='type',
    )
    float_list = Field(
        FloatList,
        number=26,
        oneof='type',
    )
    double_list = Field(
        DoubleList,
        number=27,
        oneof='type',
    )
    string_list = Field(
        StringList,
        number=28,
        oneof='type',
    )
    bool_list = Field(
        BoolList,
        number=29,
        oneof='type',
    )
    image2D = Field(
        Image2D,
        number=30,
        oneof='type',
    )
    image2D_list = Field(
        Image2DList,
        number=31,
        oneof='type',
    )
    session = Field(
        Session,
        number=32,
        oneof='type',
    )


class TopicDataRecordList(Message):
    """
    Attributes:
        elements (proto.fields.RepeatedField): :obj:`~proto.fields.RepeatedField` of type
            :obj:`~.TopicDataRecord`
    """

    elements = RepeatedField(
        TopicDataRecord,
        number=1,
    )

