Index: ppapi/generators/test_gen_pnacl/test_interfaces.idl |
diff --git a/ppapi/generators/test_gen_pnacl/test_interfaces.idl b/ppapi/generators/test_gen_pnacl/test_interfaces.idl |
new file mode 100644 |
index 0000000000000000000000000000000000000000..731fce0941c2618467e6a56f16f3fb94fc9761c9 |
--- /dev/null |
+++ b/ppapi/generators/test_gen_pnacl/test_interfaces.idl |
@@ -0,0 +1,150 @@ |
+/* |
+ * 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 *iface = |
+ * Pnacl_WrapperInfo_PPB_Iface_struct_wrap.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 *iface = |
+ * Pnacl_WrapperInfo_PPB_Iface_union_wrap.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); |
+}; |