1*4d7e907cSAndroid Build Coastguard Worker/* 2*4d7e907cSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project 3*4d7e907cSAndroid Build Coastguard Worker * 4*4d7e907cSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*4d7e907cSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*4d7e907cSAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*4d7e907cSAndroid Build Coastguard Worker * 8*4d7e907cSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*4d7e907cSAndroid Build Coastguard Worker * 10*4d7e907cSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*4d7e907cSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*4d7e907cSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4d7e907cSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*4d7e907cSAndroid Build Coastguard Worker * limitations under the License. 15*4d7e907cSAndroid Build Coastguard Worker */ 16*4d7e907cSAndroid Build Coastguard Worker 17*4d7e907cSAndroid Build Coastguard Workerpackage [email protected]; 18*4d7e907cSAndroid Build Coastguard Worker 19*4d7e907cSAndroid Build Coastguard Workerinterface IBase { 20*4d7e907cSAndroid Build Coastguard Worker enum SomeBaseEnum : int32_t { 21*4d7e907cSAndroid Build Coastguard Worker grrr = 1, 22*4d7e907cSAndroid Build Coastguard Worker }; 23*4d7e907cSAndroid Build Coastguard Worker 24*4d7e907cSAndroid Build Coastguard Worker struct Foo { 25*4d7e907cSAndroid Build Coastguard Worker struct Bar { 26*4d7e907cSAndroid Build Coastguard Worker float z; 27*4d7e907cSAndroid Build Coastguard Worker string s; 28*4d7e907cSAndroid Build Coastguard Worker }; 29*4d7e907cSAndroid Build Coastguard Worker 30*4d7e907cSAndroid Build Coastguard Worker enum FooEnum : int8_t { 31*4d7e907cSAndroid Build Coastguard Worker first = 1, 32*4d7e907cSAndroid Build Coastguard Worker second = 2, 33*4d7e907cSAndroid Build Coastguard Worker }; 34*4d7e907cSAndroid Build Coastguard Worker 35*4d7e907cSAndroid Build Coastguard Worker int32_t x; 36*4d7e907cSAndroid Build Coastguard Worker vec<Bar> aaa; 37*4d7e907cSAndroid Build Coastguard Worker Bar y; 38*4d7e907cSAndroid Build Coastguard Worker }; 39*4d7e907cSAndroid Build Coastguard Worker 40*4d7e907cSAndroid Build Coastguard Worker struct MoreThanOneArrayField { 41*4d7e907cSAndroid Build Coastguard Worker /** 42*4d7e907cSAndroid Build Coastguard Worker * Generated (Java) code used to redeclare the same variable name 43*4d7e907cSAndroid Build Coastguard Worker * multiple times in the same scope, this test ensures that that's no 44*4d7e907cSAndroid Build Coastguard Worker * longer the case. 45*4d7e907cSAndroid Build Coastguard Worker */ 46*4d7e907cSAndroid Build Coastguard Worker string[3] one; 47*4d7e907cSAndroid Build Coastguard Worker string[5] two; 48*4d7e907cSAndroid Build Coastguard Worker }; 49*4d7e907cSAndroid Build Coastguard Worker 50*4d7e907cSAndroid Build Coastguard Worker typedef string[3] ThreeStrings; 51*4d7e907cSAndroid Build Coastguard Worker typedef string[5] FiveStrings; 52*4d7e907cSAndroid Build Coastguard Worker 53*4d7e907cSAndroid Build Coastguard Worker struct StringMatrix3x5 { 54*4d7e907cSAndroid Build Coastguard Worker FiveStrings[3] s; 55*4d7e907cSAndroid Build Coastguard Worker }; 56*4d7e907cSAndroid Build Coastguard Worker 57*4d7e907cSAndroid Build Coastguard Worker struct StringMatrix5x3 { 58*4d7e907cSAndroid Build Coastguard Worker ThreeStrings[5] s; 59*4d7e907cSAndroid Build Coastguard Worker }; 60*4d7e907cSAndroid Build Coastguard Worker 61*4d7e907cSAndroid Build Coastguard Worker typedef uint8_t[6] MacAddress; 62*4d7e907cSAndroid Build Coastguard Worker 63*4d7e907cSAndroid Build Coastguard Worker struct VectorOfArray { 64*4d7e907cSAndroid Build Coastguard Worker vec<MacAddress> addresses; 65*4d7e907cSAndroid Build Coastguard Worker }; 66*4d7e907cSAndroid Build Coastguard Worker 67*4d7e907cSAndroid Build Coastguard Worker enum BitField : uint8_t { 68*4d7e907cSAndroid Build Coastguard Worker V0 = 1 << 0, 69*4d7e907cSAndroid Build Coastguard Worker V1 = 1 << 1, 70*4d7e907cSAndroid Build Coastguard Worker V2 = 1 << 2, 71*4d7e907cSAndroid Build Coastguard Worker V3 = 1 << 3, 72*4d7e907cSAndroid Build Coastguard Worker }; 73*4d7e907cSAndroid Build Coastguard Worker 74*4d7e907cSAndroid Build Coastguard Worker struct MyMask { 75*4d7e907cSAndroid Build Coastguard Worker bitfield<BitField> value; 76*4d7e907cSAndroid Build Coastguard Worker }; 77*4d7e907cSAndroid Build Coastguard Worker 78*4d7e907cSAndroid Build Coastguard Worker typedef bitfield<BitField> Mask; 79*4d7e907cSAndroid Build Coastguard Worker 80*4d7e907cSAndroid Build Coastguard Worker typedef uint8_t[128] ByteOneDim; 81*4d7e907cSAndroid Build Coastguard Worker typedef uint8_t[8][128] ByteTwoDim; 82*4d7e907cSAndroid Build Coastguard Worker typedef uint8_t[8][16][128] ByteThreeDim; 83*4d7e907cSAndroid Build Coastguard Worker 84*4d7e907cSAndroid Build Coastguard Worker typedef bool[128] BooleanOneDim; 85*4d7e907cSAndroid Build Coastguard Worker typedef bool[8][128] BooleanTwoDim; 86*4d7e907cSAndroid Build Coastguard Worker typedef bool[8][16][128] BooleanThreeDim; 87*4d7e907cSAndroid Build Coastguard Worker 88*4d7e907cSAndroid Build Coastguard Worker typedef double[128] DoubleOneDim; 89*4d7e907cSAndroid Build Coastguard Worker typedef double[8][128] DoubleTwoDim; 90*4d7e907cSAndroid Build Coastguard Worker typedef double[8][16][128] DoubleThreeDim; 91*4d7e907cSAndroid Build Coastguard Worker 92*4d7e907cSAndroid Build Coastguard Worker struct LotsOfPrimitiveArrays { 93*4d7e907cSAndroid Build Coastguard Worker ByteOneDim byte1; 94*4d7e907cSAndroid Build Coastguard Worker ByteTwoDim byte2; 95*4d7e907cSAndroid Build Coastguard Worker ByteThreeDim byte3; 96*4d7e907cSAndroid Build Coastguard Worker BooleanOneDim boolean1; 97*4d7e907cSAndroid Build Coastguard Worker BooleanTwoDim boolean2; 98*4d7e907cSAndroid Build Coastguard Worker BooleanThreeDim boolean3; 99*4d7e907cSAndroid Build Coastguard Worker DoubleOneDim double1; 100*4d7e907cSAndroid Build Coastguard Worker DoubleTwoDim double2; 101*4d7e907cSAndroid Build Coastguard Worker DoubleThreeDim double3; 102*4d7e907cSAndroid Build Coastguard Worker }; 103*4d7e907cSAndroid Build Coastguard Worker 104*4d7e907cSAndroid Build Coastguard Worker isJava() generates (bool isJava); 105*4d7e907cSAndroid Build Coastguard Worker 106*4d7e907cSAndroid Build Coastguard Worker someBaseMethod(); 107*4d7e907cSAndroid Build Coastguard Worker 108*4d7e907cSAndroid Build Coastguard Worker someBoolMethod(bool x) generates (bool y); 109*4d7e907cSAndroid Build Coastguard Worker someBoolArrayMethod(bool[3] x) generates (bool[4] y); 110*4d7e907cSAndroid Build Coastguard Worker someBoolVectorMethod(vec<bool> x) generates (vec<bool> y); 111*4d7e907cSAndroid Build Coastguard Worker 112*4d7e907cSAndroid Build Coastguard Worker someOtherBaseMethod(Foo foo) generates (Foo result); 113*4d7e907cSAndroid Build Coastguard Worker someMethodWithFooArrays(Foo[2] fooInput) generates (Foo[2] fooOutput); 114*4d7e907cSAndroid Build Coastguard Worker someMethodWithFooVectors(vec<Foo> fooInput) generates (vec<Foo> fooOutput); 115*4d7e907cSAndroid Build Coastguard Worker 116*4d7e907cSAndroid Build Coastguard Worker someMethodWithVectorOfArray(VectorOfArray in) generates (VectorOfArray out); 117*4d7e907cSAndroid Build Coastguard Worker 118*4d7e907cSAndroid Build Coastguard Worker someMethodTakingAVectorOfArray(vec<MacAddress> in) 119*4d7e907cSAndroid Build Coastguard Worker generates (vec<MacAddress> out); 120*4d7e907cSAndroid Build Coastguard Worker 121*4d7e907cSAndroid Build Coastguard Worker transpose(StringMatrix5x3 in) generates (StringMatrix3x5 out); 122*4d7e907cSAndroid Build Coastguard Worker transpose2(ThreeStrings[5] in) generates (FiveStrings[3] out); 123*4d7e907cSAndroid Build Coastguard Worker 124*4d7e907cSAndroid Build Coastguard Worker takeAMask(BitField bf, bitfield<BitField> first, MyMask second, Mask third) 125*4d7e907cSAndroid Build Coastguard Worker generates (BitField out, uint8_t f, uint8_t s, uint8_t t); 126*4d7e907cSAndroid Build Coastguard Worker 127*4d7e907cSAndroid Build Coastguard Worker testArrays(LotsOfPrimitiveArrays in) generates (LotsOfPrimitiveArrays out); 128*4d7e907cSAndroid Build Coastguard Worker testByteVecs(vec<ByteOneDim> in) generates (vec<ByteOneDim> out); 129*4d7e907cSAndroid Build Coastguard Worker testBooleanVecs(vec<BooleanOneDim> in) generates (vec<BooleanOneDim> out); 130*4d7e907cSAndroid Build Coastguard Worker testDoubleVecs(vec<DoubleOneDim> in) generates (vec<DoubleOneDim> out); 131*4d7e907cSAndroid Build Coastguard Worker}; 132