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