/* * Copyright (c) 2011 The Chromium Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ /** * This file will test that the pnacl-generated wrapper functions match * the comments in this IDL. */ label Chrome { M13 = 0.0, M14 = 1.0, M15 = 2.0 }; describe { void; mem_t; int32_t; }; [passByValue, returnByValue] struct some_struct { mem_t X; int32_t Y; }; struct some_struct2 { mem_t X; int32_t Y; }; [union, passByValue, returnByValue] struct some_union { mem_t X; int32_t Y; }; /* * static __attribute__((pnaclcall)) int32_t * Pnacl_M15_PPB_Iface_struct_wrap_foo1(int32_t a, struct some_struct b) { * const struct PPB_Iface_struct_wrap_2_0 *iface = * Pnacl_WrapperInfo_PPB_Iface_struct_wrap_2_0.real_iface; * return iface->foo1(a, b); * } */ [version=2.0] interface PPB_Iface_struct_wrap { int32_t foo1(int32_t a, [in] some_struct b); }; /* * static __attribute__((pnaclcall)) int32_t * Pnacl_M15_PPB_Iface_union_wrap_foo1(int32_t a, union some_union b) { * const struct PPB_Iface_union_wrap_2_0 *iface = * Pnacl_WrapperInfo_PPB_Iface_union_wrap_2_0.real_iface; * return iface->foo1(a, b); * } */ [version=2.0] interface PPB_Iface_union_wrap { int32_t foo1(int32_t a, [in] some_union b); }; [version=2.0] interface PPB_Iface_nowrap { int32_t foo1(int32_t a, [in] some_struct2 b); }; /* * static __attribute__((pnaclcall)) * int32_t Pnacl_M13_PPB_SomeWrap_foo1(struct some_struct a) { * const struct PPB_SomeWrap_0_0 *iface = * Pnacl_WrapperInfo_PPB_SomeWrap_0_0.real_iface; * return iface->foo1(a); * } * * static __attribute__((pnaclcall)) * struct some_struct Pnacl_M13_PPB_SomeWrap_foo2(int32_t a) { * const struct PPB_SomeWrap_0_0 *iface = * Pnacl_WrapperInfo_PPB_SomeWrap_0_0.real_iface; * return iface->foo2(a); * } */ [version=0.0] interface PPB_SomeWrap { int32_t foo1([in] some_struct a); some_struct foo2([in] int32_t a); /* Not generating wrapper methods for PPB_SomeWrap_1_0 */ [version=1.0] int32_t foo1([in] some_struct[] a); [version=1.0] void foo2([in] int32_t a, [out] some_struct b); /* Not generating wrapper methods for PPB_SomeWrap */ [version=2.0] int32_t foo1([in] some_struct2 a); }; /* * static int32_t Pnacl_M13_PPP_SomeWrap_foo1(struct some_struct a) { * const struct PPP_SomeWrap_0_0 *iface = * Pnacl_WrapperInfo_PPP_SomeWrap_0_0.real_iface; * int32_t (__attribute__((pnaclcall)) *temp_fp)(struct some_struct a) = * ((int32_t (__attribute__((pnaclcall)) *)(struct some_struct a))iface->foo1); * return temp_fp(a); * } * * static struct some_struct Pnacl_M13_PPP_SomeWrap_foo2(int32_t a) { * const struct PPP_SomeWrap_0_0 *iface = * Pnacl_WrapperInfo_PPP_SomeWrap_0_0.real_iface; * struct some_struct (__attribute__((pnaclcall)) *temp_fp)(int32_t a) = * ((struct some_struct (__attribute__((pnaclcall)) *)(int32_t a))iface->foo2); * return temp_fp(a); * } * * static struct some_struct Pnacl_M14_PPP_SomeWrap_foo2(int32_t a) { * const struct PPP_SomeWrap_1_0 *iface = * Pnacl_WrapperInfo_PPP_SomeWrap_1_0.real_iface; * struct some_struct (__attribute__((pnaclcall)) *temp_fp)(int32_t a) = * ((struct some_struct (__attribute__((pnaclcall)) *)(int32_t a))iface->foo2); * return temp_fp(a); * } * * static int32_t Pnacl_M14_PPP_SomeWrap_foo1(const struct some_struct a[]) { * const struct PPP_SomeWrap_1_0 *iface = * Pnacl_WrapperInfo_PPP_SomeWrap_1_0.real_iface; * int32_t (__attribute__((pnaclcall)) *temp_fp)(const struct some_struct a[]) = * ((int32_t (__attribute__((pnaclcall)) *)(const struct some_struct a[]))iface->foo1); * return temp_fp(a); * } */ [version=0.0] interface PPP_SomeWrap { int32_t foo1([in] some_struct a); some_struct foo2([in] int32_t a); [version=1.0] int32_t foo1([in] some_struct[] a); /* Not generating wrapper interface for PPP_SomeWrap */ [version=2.0] int32_t foo1([in] some_struct2 a); [version=2.0] void foo2([in] int32_t a); };