test_interfaces.idl revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
1/* 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. 3 * Use of this source code is governed by a BSD-style license that can be 4 * found in the LICENSE file. 5 */ 6 7/** 8 * This file will test that the pnacl-generated wrapper functions match 9 * the comments in this IDL. 10 */ 11 12label Chrome { 13 M13 = 0.0, 14 M14 = 1.0, 15 M15 = 2.0 16}; 17 18describe { 19 void; 20 mem_t; 21 int32_t; 22}; 23 24[passByValue, returnByValue] struct some_struct { 25 mem_t X; 26 int32_t Y; 27}; 28 29struct some_struct2 { 30 mem_t X; 31 int32_t Y; 32}; 33 34[union, passByValue, returnByValue] struct some_union { 35 mem_t X; 36 int32_t Y; 37}; 38 39/* 40 * static int32_t 41 * Pnacl_M15_PPB_Iface_struct_wrap_foo1(int32_t a, struct some_struct* b) { 42 * const struct PPB_Iface_struct_wrap_2_0 *iface = 43 * Pnacl_WrapperInfo_PPB_Iface_struct_wrap_2_0.real_iface; 44 * return iface->foo1(a, *b); 45 * } 46 */ 47[version=2.0] 48interface PPB_Iface_struct_wrap { 49 int32_t foo1(int32_t a, [in] some_struct b); 50}; 51 52/* 53 * static int32_t 54 * Pnacl_M15_PPB_Iface_union_wrap_foo1(int32_t a, union some_union* b) { 55 * const struct PPB_Iface_union_wrap_2_0 *iface = 56 * Pnacl_WrapperInfo_PPB_Iface_union_wrap_2_0.real_iface; 57 * return iface->foo1(a, *b); 58 * } 59 */ 60[version=2.0] 61interface PPB_Iface_union_wrap { 62 int32_t foo1(int32_t a, [in] some_union b); 63}; 64 65 66[version=2.0] 67interface PPB_Iface_nowrap { 68 int32_t foo1(int32_t a, [in] some_struct2 b); 69}; 70 71 72/* 73 * static 74 * int32_t Pnacl_M13_PPB_SomeWrap_foo1(struct some_struct* a) { 75 * const struct PPB_SomeWrap_0_0 *iface = 76 * Pnacl_WrapperInfo_PPB_SomeWrap_0_0.real_iface; 77 * return iface->foo1(*a); 78 * } 79 * 80 * static 81 * void Pnacl_M13_PPB_SomeWrap_foo2(struct some_struct* _struct_result, 82 * int32_t a) { 83 * const struct PPB_SomeWrap_0_0 *iface = 84 * Pnacl_WrapperInfo_PPB_SomeWrap_0_0.real_iface; 85 * *_struct_result = iface->foo2(a); 86 * } 87 */ 88[version=0.0] 89interface PPB_SomeWrap { 90 int32_t foo1([in] some_struct a); 91 some_struct foo2([in] int32_t a); 92 93 /* Not generating wrapper methods for PPB_SomeWrap_1_0 */ 94 [version=1.0] 95 int32_t foo1([in] some_struct[] a); 96 [version=1.0] 97 void foo2([in] int32_t a, [out] some_struct b); 98 99 /* Not generating wrapper methods for PPB_SomeWrap */ 100 [version=2.0] 101 int32_t foo1([in] some_struct2 a); 102}; 103 104 105/* 106 * static int32_t Pnacl_M13_PPP_SomeWrap_foo1(struct some_struct a) { 107 * const struct PPP_SomeWrap_0_0 *iface = 108 * Pnacl_WrapperInfo_PPP_SomeWrap_0_0.real_iface; 109 * int32_t (*temp_fp)(struct some_struct* a) = 110 * ((int32_t (*)(struct some_struct* a))iface->foo1); 111 * return temp_fp(&a); 112 * } 113 * 114 * static struct some_struct Pnacl_M13_PPP_SomeWrap_foo2(int32_t a) { 115 * const struct PPP_SomeWrap_0_0 *iface = 116 * Pnacl_WrapperInfo_PPP_SomeWrap_0_0.real_iface; 117 * void (*temp_fp)(struct some_struct* _struct_result, int32_t a) = 118 * ((void (*)(struct some_struct* _struct_result, int32_t a))iface->foo2); 119 * struct some_struct _struct_result; 120 * temp_fp(&_struct_result, a); 121 * return _struct_result; 122 * } 123 * 124 * static struct some_struct Pnacl_M14_PPP_SomeWrap_foo2(int32_t a) { 125 * const struct PPP_SomeWrap_1_0 *iface = 126 * Pnacl_WrapperInfo_PPP_SomeWrap_1_0.real_iface; 127 * void (*temp_fp)(struct some_struct* _struct_result, int32_t a) = 128 * ((void (*)(struct some_struct* _struct_result, int32_t a))iface->foo2); 129 * struct some_struct _struct_result; 130 * temp_fp(&_struct_result, a); 131 * return _struct_result; 132 * } 133 * 134 * static int32_t Pnacl_M14_PPP_SomeWrap_foo1(const struct some_struct a[]) { 135 * const struct PPP_SomeWrap_1_0 *iface = 136 * Pnacl_WrapperInfo_PPP_SomeWrap_1_0.real_iface; 137 * int32_t (*temp_fp)(const struct some_struct a[]) = 138 * ((int32_t (*)(const struct some_struct a[]))iface->foo1); 139 * return temp_fp(a); 140 * } 141 */ 142[version=0.0] 143interface PPP_SomeWrap { 144 int32_t foo1([in] some_struct a); 145 some_struct foo2([in] int32_t a); 146 147 [version=1.0] 148 int32_t foo1([in] some_struct[] a); 149 150 /* Not generating wrapper interface for PPP_SomeWrap */ 151 [version=2.0] 152 int32_t foo1([in] some_struct2 a); 153 [version=2.0] 154 void foo2([in] int32_t a); 155}; 156