xref: /aosp_15_r20/external/emboss/testdata/dynamic_size.emb (revision 99e0aae7469b87d12f0ad23e61142c2d74c1ef70)
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 Rees
19*99e0aae7SDavid Reesstruct Message:
20*99e0aae7SDavid Rees  0   [+1]    UInt         header_length (h)
21*99e0aae7SDavid Rees  1   [+1]    UInt         message_length (m)
22*99e0aae7SDavid Rees  2   [+h-2]  UInt:8[h-2]  padding
23*99e0aae7SDavid Rees  h   [+m]    UInt:8[m]    message
24*99e0aae7SDavid Rees  h+m [+4]    UInt         crc32
25*99e0aae7SDavid Rees
26*99e0aae7SDavid Rees
27*99e0aae7SDavid Reesstruct Image:
28*99e0aae7SDavid Rees  0 [+1]         UInt                size
29*99e0aae7SDavid Rees  1 [+3*5*size]  UInt:8[3][5][size]  pixels
30*99e0aae7SDavid Rees
31*99e0aae7SDavid Rees
32*99e0aae7SDavid Reesstruct TwoRegions:
33*99e0aae7SDavid Rees  # Fields are listed in reverse order to exercise a specific part of
34*99e0aae7SDavid Rees  # header_generator.py.
35*99e0aae7SDavid Rees  3       [+1]              UInt                   b_end
36*99e0aae7SDavid Rees  2       [+1]              UInt                   b_start
37*99e0aae7SDavid Rees  1       [+1]              UInt                   a_size
38*99e0aae7SDavid Rees  0       [+1]              UInt                   a_start
39*99e0aae7SDavid Rees  a_start [+a_size]         UInt:8[a_size]         region_a
40*99e0aae7SDavid Rees  b_start [+b_end-b_start]  UInt:8[b_end-b_start]  region_b
41*99e0aae7SDavid Rees
42*99e0aae7SDavid Rees
43*99e0aae7SDavid Reesstruct MultipliedSize:
44*99e0aae7SDavid Rees  0 [+1]    UInt         width (w)
45*99e0aae7SDavid Rees  1 [+1]    UInt         height (h)
46*99e0aae7SDavid Rees  # Used to test that w*h is not performed with 8-bit arithmetic.
47*99e0aae7SDavid Rees  2 [+w*h]  UInt:8[w*h]  data
48*99e0aae7SDavid Rees
49*99e0aae7SDavid Rees
50*99e0aae7SDavid Reesstruct NegativeTermsInSizes:
51*99e0aae7SDavid Rees  0 [+1]        UInt             a
52*99e0aae7SDavid Rees  1 [+1]        UInt             b
53*99e0aae7SDavid Rees  2 [+1]        UInt             c
54*99e0aae7SDavid Rees  # Used to test that the pruning logic for Size() doesn't miss anything.
55*99e0aae7SDavid Rees  3 [+a-b-3]    UInt:8[a-b-3]    a_minus_b
56*99e0aae7SDavid Rees  3 [+a-2*b-3]  UInt:8[a-2*b-3]  a_minus_2b
57*99e0aae7SDavid Rees  3 [+a-b-c-3]  UInt:8[a-b-c-3]  a_minus_b_minus_c
58*99e0aae7SDavid Rees  3 [+7-a]      UInt:8[7-a]      ten_minus_a
59*99e0aae7SDavid Rees  3 [+a-2*c-3]  UInt:8[a-2*c-3]  a_minus_2c
60*99e0aae7SDavid Rees  3 [+a-c-3]    UInt:8[a-c-3]    a_minus_c
61*99e0aae7SDavid Rees
62*99e0aae7SDavid Rees
63*99e0aae7SDavid Reesstruct NegativeTermInLocation:
64*99e0aae7SDavid Rees  0 [+1]     UInt  a
65*99e0aae7SDavid Rees  10-a [+1]  UInt  b
66*99e0aae7SDavid Rees
67*99e0aae7SDavid Rees
68*99e0aae7SDavid Reesstruct ChainedSize:
69*99e0aae7SDavid Rees  0 [+1]  UInt  a
70*99e0aae7SDavid Rees  a [+1]  UInt  b
71*99e0aae7SDavid Rees  b [+1]  UInt  c
72*99e0aae7SDavid Rees  c [+1]  UInt  d
73*99e0aae7SDavid Rees
74*99e0aae7SDavid Rees
75*99e0aae7SDavid Reesstruct FinalFieldOverlaps:
76*99e0aae7SDavid Rees  0 [+1]  UInt  a
77*99e0aae7SDavid Rees  1 [+4]  UInt  b
78*99e0aae7SDavid Rees  3 [+2]  UInt  c
79*99e0aae7SDavid Rees
80*99e0aae7SDavid Rees
81*99e0aae7SDavid Reesstruct DynamicFinalFieldOverlaps:
82*99e0aae7SDavid Rees  0   [+1]  UInt  a
83*99e0aae7SDavid Rees  9   [+1]  UInt  b
84*99e0aae7SDavid Rees  a   [+2]  UInt  c
85*99e0aae7SDavid Rees  a+1 [+1]  UInt  d
86*99e0aae7SDavid Rees
87*99e0aae7SDavid Rees
88*99e0aae7SDavid Reesstruct DynamicFieldDependsOnLaterField:
89*99e0aae7SDavid Rees  a+1 [+1]  UInt  b
90*99e0aae7SDavid Rees  4   [+1]  UInt  a
91*99e0aae7SDavid Rees
92*99e0aae7SDavid Rees
93*99e0aae7SDavid Reesstruct DynamicFieldDoesNotAffectSize:
94*99e0aae7SDavid Rees  0   [+1]  UInt  a
95*99e0aae7SDavid Rees  a   [+1]  UInt  b
96*99e0aae7SDavid Rees  255 [+1]  UInt  c
97