1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5module mojo.test; 6 7enum AnEnum { 8 FIRST, SECOND 9}; 10 11[Extensible] 12enum AnExtensibleEnum { 13 FIRST, SECOND, THIRD 14}; 15 16union PodUnion { 17 int8 f_int8; 18 int8 f_int8_other; 19 uint8 f_uint8; 20 int16 f_int16; 21 uint16 f_uint16; 22 int32 f_int32; 23 uint32 f_uint32; 24 int64 f_int64; 25 uint64 f_uint64; 26 float f_float; 27 double f_double; 28 bool f_bool; 29 AnEnum f_enum; 30 AnExtensibleEnum f_extensible_enum; 31}; 32 33union ObjectUnion { 34 int8 f_int8; 35 string f_string; 36 DummyStruct f_dummy; 37 DummyStruct? f_nullable; 38 array<int8> f_array_int8; 39 map<string, int8> f_map_int8; 40 PodUnion f_pod_union; 41 // Test that Clone() is defined after SmallStruct is declared. 42 array<SmallStruct> f_small_structs; 43}; 44 45union HandleUnion { 46 handle f_handle; 47 handle<message_pipe> f_message_pipe; 48 handle<data_pipe_consumer> f_data_pipe_consumer; 49 handle<data_pipe_producer> f_data_pipe_producer; 50 handle<shared_buffer> f_shared_buffer; 51 SmallCache f_small_cache; 52 SmallCache& f_small_cache_request; 53}; 54 55struct WrapperStruct { 56 ObjectUnion? object_union; 57 PodUnion? pod_union; 58 HandleUnion? handle_union; 59}; 60 61struct DummyStruct { 62 int8 f_int8; 63}; 64 65struct SmallStruct { 66 DummyStruct? dummy_struct; 67 PodUnion? pod_union; 68 array<PodUnion>? pod_union_array; 69 array<PodUnion?>? nullable_pod_union_array; 70 array<DummyStruct>? s_array; 71 map<string, PodUnion>? pod_union_map; 72 map<string, PodUnion?>? nullable_pod_union_map; 73}; 74 75struct SmallStructNonNullableUnion { 76 PodUnion pod_union; 77}; 78 79struct SmallObjStruct { 80 ObjectUnion obj_union; 81 int8 f_int8; 82}; 83 84interface SmallCache { 85 SetIntValue(int64 int_value); 86 GetIntValue() => (int64 int_value); 87}; 88 89interface UnionInterface { 90 Echo(PodUnion in_val) => (PodUnion out_val); 91}; 92 93struct TryNonNullStruct { 94 DummyStruct? nullable; 95 DummyStruct non_nullable; 96}; 97 98union OldUnion { 99 int8 f_int8; 100}; 101 102union NewUnion { 103 int8 f_int8; 104 int16 f_int16; 105}; 106