11a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# Copyright 2016 Google Inc. All rights reserved.
21a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen#
31a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# Licensed under the Apache License, Version 2.0 (the "License");
41a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# you may not use this file except in compliance with the License.
51a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# You may obtain a copy of the License at
61a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen#
71a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen#     http://www.apache.org/licenses/LICENSE-2.0
81a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen#
91a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# Unless required by applicable law or agreed to in writing, software
101a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# distributed under the License is distributed on an "AS IS" BASIS,
111a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
121a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# See the License for the specific language governing permissions and
131a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen# limitations under the License.
141a161a8333ec1fa382a06485b7ffad955c001151Wouter van Oortmerssen
1548dfc69ee613a176f13b04c2310adb7a08fe6737rw"""
1648dfc69ee613a176f13b04c2310adb7a08fe6737rwProvide pre-compiled struct packers for encoding and decoding.
1748dfc69ee613a176f13b04c2310adb7a08fe6737rw
1848dfc69ee613a176f13b04c2310adb7a08fe6737rwSee: https://docs.python.org/2/library/struct.html#format-characters
1948dfc69ee613a176f13b04c2310adb7a08fe6737rw"""
2048dfc69ee613a176f13b04c2310adb7a08fe6737rw
2148dfc69ee613a176f13b04c2310adb7a08fe6737rwimport struct
2248dfc69ee613a176f13b04c2310adb7a08fe6737rwfrom . import compat
2348dfc69ee613a176f13b04c2310adb7a08fe6737rw
2448dfc69ee613a176f13b04c2310adb7a08fe6737rw
2548dfc69ee613a176f13b04c2310adb7a08fe6737rwboolean = struct.Struct(compat.struct_bool_decl)
2648dfc69ee613a176f13b04c2310adb7a08fe6737rw
2748dfc69ee613a176f13b04c2310adb7a08fe6737rwuint8 = struct.Struct("<B")
2848dfc69ee613a176f13b04c2310adb7a08fe6737rwuint16 = struct.Struct("<H")
2948dfc69ee613a176f13b04c2310adb7a08fe6737rwuint32 = struct.Struct("<I")
3048dfc69ee613a176f13b04c2310adb7a08fe6737rwuint64 = struct.Struct("<Q")
3148dfc69ee613a176f13b04c2310adb7a08fe6737rw
3248dfc69ee613a176f13b04c2310adb7a08fe6737rwint8 = struct.Struct("<b")
3348dfc69ee613a176f13b04c2310adb7a08fe6737rwint16 = struct.Struct("<h")
3448dfc69ee613a176f13b04c2310adb7a08fe6737rwint32 = struct.Struct("<i")
3548dfc69ee613a176f13b04c2310adb7a08fe6737rwint64 = struct.Struct("<q")
3648dfc69ee613a176f13b04c2310adb7a08fe6737rw
3748dfc69ee613a176f13b04c2310adb7a08fe6737rwfloat32 = struct.Struct("<f")
3848dfc69ee613a176f13b04c2310adb7a08fe6737rwfloat64 = struct.Struct("<d")
3948dfc69ee613a176f13b04c2310adb7a08fe6737rw
4048dfc69ee613a176f13b04c2310adb7a08fe6737rwuoffset = uint32
4148dfc69ee613a176f13b04c2310adb7a08fe6737rwsoffset = int32
4248dfc69ee613a176f13b04c2310adb7a08fe6737rwvoffset = uint16
43