| # Copyright 2019 Google LLC |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| [$default byte_order: "LittleEndian"] |
| [(cpp) namespace: "emboss::test"] |
| |
| |
| struct RequiresIntegers: |
| [requires: zero_through_nine <= ten_through_twenty - 10] |
| |
| 0 [+1] UInt zero_through_nine [requires: 0 <= this <= 9] |
| |
| 1 [+1] Int ten_through_twenty [requires: 10 <= this <= 20] |
| |
| 2 [+1] UInt disjoint |
| [requires: 0 <= this <= 5 || 15 <= this <= 20] |
| |
| let ztn_plus_ttt = zero_through_nine + ten_through_twenty |
| [requires: 10 <= this <= 19] |
| |
| let alias_of_zero_through_nine = zero_through_nine |
| [requires: 2 <= this <= 7] |
| |
| let zero_through_nine_plus_five = zero_through_nine + 5 |
| [requires: 5 <= this <= 10] |
| |
| |
| struct RequiresBools: |
| [requires: a || b] |
| |
| 0 [+1] bits: |
| 0 [+1] Flag a |
| 1 [+1] Flag b |
| 2 [+1] Flag must_be_true |
| [requires: this] |
| 3 [+1] Flag must_be_false |
| [requires: this == false] |
| |
| let b_must_be_false = b == false |
| [requires: this] |
| |
| let alias_of_a_must_be_true = a |
| [requires: this] |
| |
| |
| struct RequiresEnums: |
| [requires: a == Enum.EN0 || b == Enum.EN0] |
| |
| enum Enum: |
| EN0 = 0 |
| EN1 = 1 |
| EN2 = 2 |
| EN3 = 3 |
| |
| 0 [+1] Enum a |
| 1 [+1] Enum b |
| 2 [+1] Enum c |
| [requires: this == Enum.EN0 || this == Enum.EN1] |
| |
| let filtered_a = a == Enum.EN0 ? Enum.EN1 : a |
| [requires: this == Enum.EN1] |
| |
| let alias_of_a = a |
| [requires: this == Enum.EN1] |
| |
| |
| struct RequiresWithOptionalFields: |
| [requires: a || b] |
| 0 [+1] bits: |
| 0 [+1] Flag a |
| 1 [+1] Flag b_exists |
| if b_exists: |
| 2 [+1] Flag b |
| if b_exists: |
| 2 [+1] Flag b_true |
| [requires: this] |
| |
| |
| struct RequiresInArrayElements: |
| struct Element: |
| 0 [+1] UInt:8 x [requires: 0 <= this <= 10] |
| |
| 0 [+4] Element[] xs |