1*99e0aae7SDavid Rees# Copyright 2019 Google LLC 2*99e0aae7SDavid Rees# 3*99e0aae7SDavid Rees# Licensed under the Apache License, Version 2.0 (the "License"); 4*99e0aae7SDavid Rees# you may not use this file except in compliance with the License. 5*99e0aae7SDavid Rees# You may obtain a copy of the License at 6*99e0aae7SDavid Rees# 7*99e0aae7SDavid Rees# https://www.apache.org/licenses/LICENSE-2.0 8*99e0aae7SDavid Rees# 9*99e0aae7SDavid Rees# Unless required by applicable law or agreed to in writing, software 10*99e0aae7SDavid Rees# distributed under the License is distributed on an "AS IS" BASIS, 11*99e0aae7SDavid Rees# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*99e0aae7SDavid Rees# See the License for the specific language governing permissions and 13*99e0aae7SDavid Rees# limitations under the License. 14*99e0aae7SDavid Rees 15*99e0aae7SDavid Rees[$default byte_order: "LittleEndian"] 16*99e0aae7SDavid Rees[(cpp) namespace: "emboss::test"] 17*99e0aae7SDavid Rees 18*99e0aae7SDavid Reesstruct Constants: 19*99e0aae7SDavid Rees let sprocket = 1 20*99e0aae7SDavid Rees let geegaw = 2 21*99e0aae7SDavid Rees 22*99e0aae7SDavid Reesenum Kind: 23*99e0aae7SDavid Rees WIDGET = 0 24*99e0aae7SDavid Rees SPROCKET = Constants.sprocket 25*99e0aae7SDavid Rees GEEGAW = Constants.geegaw 26*99e0aae7SDavid Rees COMPUTED = Constants.geegaw+Constants.sprocket 27*99e0aae7SDavid Rees LARGE_VALUE = 2000 28*99e0aae7SDavid Rees DUPLICATE_LARGE_VALUE = LARGE_VALUE 29*99e0aae7SDavid Rees MAX32BIT = 4294967295 30*99e0aae7SDavid Rees MAX64BIT = 0x1_0000_0000_0000_0000-1 31*99e0aae7SDavid Rees 32*99e0aae7SDavid Rees 33*99e0aae7SDavid Reesenum Signed: 34*99e0aae7SDavid Rees MIN64BIT = -0x8000_0000_0000_0000 35*99e0aae7SDavid Rees MAX64BIT = 0x8000_0000_0000_0000-1 36*99e0aae7SDavid Rees 37*99e0aae7SDavid Rees 38*99e0aae7SDavid Reesenum OnlyShortValues: 39*99e0aae7SDavid Rees ZERO = 0 40*99e0aae7SDavid Rees ONE = 1 41*99e0aae7SDavid Rees 42*99e0aae7SDavid Rees 43*99e0aae7SDavid Reesenum OnlyShortSignedValues: 44*99e0aae7SDavid Rees ZERO = 0 45*99e0aae7SDavid Rees NEGATIVE_ONE = -1 46*99e0aae7SDavid Rees 47*99e0aae7SDavid Rees 48*99e0aae7SDavid Reesenum ExplicitlySigned: 49*99e0aae7SDavid Rees [is_signed: true] 50*99e0aae7SDavid Rees ZERO = 0 51*99e0aae7SDavid Rees 52*99e0aae7SDavid Rees 53*99e0aae7SDavid Reesenum ExplicitlySized64: 54*99e0aae7SDavid Rees [maximum_bits: 64] 55*99e0aae7SDavid Rees ZERO = 0 56*99e0aae7SDavid Rees 57*99e0aae7SDavid Rees 58*99e0aae7SDavid Reesenum ExplicitlySized32: 59*99e0aae7SDavid Rees [maximum_bits: 32] 60*99e0aae7SDavid Rees ZERO = 0 61*99e0aae7SDavid Rees 62*99e0aae7SDavid Rees 63*99e0aae7SDavid Reesenum ExplicitlySized16: 64*99e0aae7SDavid Rees [maximum_bits: 16] 65*99e0aae7SDavid Rees ZERO = 0 66*99e0aae7SDavid Rees 67*99e0aae7SDavid Rees 68*99e0aae7SDavid Reesenum ExplicitlySized8: 69*99e0aae7SDavid Rees [maximum_bits: 8] 70*99e0aae7SDavid Rees ZERO = 0 71*99e0aae7SDavid Rees 72*99e0aae7SDavid Rees 73*99e0aae7SDavid Reesenum ExplicitlySized12: 74*99e0aae7SDavid Rees [maximum_bits: 12] 75*99e0aae7SDavid Rees ZERO = 0 76*99e0aae7SDavid Rees 77*99e0aae7SDavid Rees 78*99e0aae7SDavid Reesenum ExplicitlySizedAndSigned: 79*99e0aae7SDavid Rees [maximum_bits: 32] 80*99e0aae7SDavid Rees [is_signed: true] 81*99e0aae7SDavid Rees ZERO = 0 82*99e0aae7SDavid Rees 83*99e0aae7SDavid Rees 84*99e0aae7SDavid Reesstruct ManifestEntry: 85*99e0aae7SDavid Rees 0 [+1] Kind kind 86*99e0aae7SDavid Rees 1 [+4] UInt count 87*99e0aae7SDavid Rees 5 [+4] Kind wide_kind 88*99e0aae7SDavid Rees 9 [+5] bits: 89*99e0aae7SDavid Rees 4 [+32] Kind wide_kind_in_bits 90*99e0aae7SDavid Rees 91*99e0aae7SDavid Rees 92*99e0aae7SDavid Reesstruct StructContainingEnum: 93*99e0aae7SDavid Rees enum Status: 94*99e0aae7SDavid Rees OK = 0x00 95*99e0aae7SDavid Rees FAILURE = 0x01 96*99e0aae7SDavid Rees 0 [+1] UInt bar 97