1 // Copyright (c) 2012 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 5 6 /* Given an interface like this: 7 * 8 * struct PPB_Frob { 9 * void (*Flange)(int32_t param1, char* param2); 10 * int32_t (*Shlep)(PP_CompletionCallback); 11 * }; 12 * 13 * Write a set of macros like this: 14 * 15 * BEGIN_INTERFACE(FrobInterface, PPB_Frob, PPB_FROB_INTERFACE) 16 * METHOD2(FrobInterface, void, Flange, int32_t, char*) 17 * METHOD1(FrobInterface, int32_t, Shlep, PP_CompletionCallback) 18 * END_INTERFACE(FrobInterface, PPB_Frob) 19 */ 20 21 BEGIN_INTERFACE(ConsoleInterface, PPB_Console, PPB_CONSOLE_INTERFACE_1_0) 22 METHOD3(ConsoleInterface, void, Log, PP_Instance, PP_LogLevel, struct PP_Var) 23 END_INTERFACE(ConsoleInterface, PPB_Console) 24 25 BEGIN_INTERFACE(FileIoInterface, PPB_FileIO, PPB_FILEIO_INTERFACE_1_0) 26 METHOD1(FileIoInterface, void, Close, PP_Resource) 27 METHOD1(FileIoInterface, PP_Resource, Create, PP_Resource) 28 METHOD2(FileIoInterface, int32_t, Flush, PP_Resource, 29 PP_CompletionCallback) 30 METHOD4(FileIoInterface, int32_t, Open, PP_Resource, PP_Resource, int32_t, 31 PP_CompletionCallback) 32 METHOD3(FileIoInterface, int32_t, Query, PP_Resource, PP_FileInfo*, 33 PP_CompletionCallback) 34 METHOD5(FileIoInterface, int32_t, Read, PP_Resource, int64_t, char*, 35 int32_t, PP_CompletionCallback) 36 METHOD3(FileIoInterface, int32_t, SetLength, PP_Resource, int64_t, 37 PP_CompletionCallback) 38 METHOD5(FileIoInterface, int32_t, Write, PP_Resource, int64_t, 39 const char*, int32_t, PP_CompletionCallback) 40 END_INTERFACE(FileIoInterface, PPB_FileIO) 41 42 BEGIN_INTERFACE(FileRefInterface, PPB_FileRef, PPB_FILEREF_INTERFACE_1_1) 43 METHOD2(FileRefInterface, PP_Resource, Create, PP_Resource, const char*) 44 METHOD2(FileRefInterface, int32_t, Delete, PP_Resource, PP_CompletionCallback) 45 METHOD1(FileRefInterface, PP_Var, GetName, PP_Resource) 46 METHOD3(FileRefInterface, int32_t, MakeDirectory, PP_Resource, PP_Bool, 47 PP_CompletionCallback) 48 METHOD3(FileRefInterface, int32_t, Query, PP_Resource, PP_FileInfo*, 49 PP_CompletionCallback) 50 METHOD3(FileRefInterface, int32_t, ReadDirectoryEntries, PP_Resource, 51 const PP_ArrayOutput&, PP_CompletionCallback) 52 END_INTERFACE(FileRefInterface, PPB_FileRef) 53 54 BEGIN_INTERFACE(FileSystemInterface, PPB_FileSystem, 55 PPB_FILESYSTEM_INTERFACE_1_0) 56 METHOD2(FileSystemInterface, PP_Resource, Create, PP_Instance, 57 PP_FileSystemType) 58 METHOD3(FileSystemInterface, int32_t, Open, PP_Resource, int64_t, 59 PP_CompletionCallback) 60 END_INTERFACE(FileSystemInterface, PPB_FileSystem) 61 62 BEGIN_INTERFACE(MessagingInterface, PPB_Messaging, PPB_MESSAGING_INTERFACE_1_0) 63 METHOD2(MessagingInterface, void, PostMessage, PP_Instance, struct PP_Var) 64 END_INTERFACE(MessagingInterface, PPB_Messaging) 65 66 BEGIN_INTERFACE(VarInterface, PPB_Var, PPB_VAR_INTERFACE_1_1) 67 METHOD1(VarInterface, void, Release, struct PP_Var) 68 METHOD2(VarInterface, struct PP_Var, VarFromUtf8, const char *, uint32_t) 69 METHOD2(VarInterface, const char*, VarToUtf8, PP_Var, uint32_t*) 70 END_INTERFACE(VarInterface, PPB_Var) 71 72 BEGIN_INTERFACE(HostResolverInterface, PPB_HostResolver, 73 PPB_HOSTRESOLVER_INTERFACE_1_0) 74 METHOD1(HostResolverInterface, PP_Resource, Create, PP_Instance) 75 METHOD5(HostResolverInterface, int32_t, Resolve, PP_Resource, const char*, 76 uint16_t, const struct PP_HostResolver_Hint*, 77 struct PP_CompletionCallback) 78 METHOD1(HostResolverInterface, PP_Var, GetCanonicalName, PP_Resource) 79 METHOD1(HostResolverInterface, uint32_t, GetNetAddressCount, PP_Resource) 80 METHOD2(HostResolverInterface, PP_Resource, GetNetAddress, 81 PP_Resource, uint32_t) 82 END_INTERFACE(HostResolverInterface, PPB_HostResolver) 83 84 BEGIN_INTERFACE(NetAddressInterface, PPB_NetAddress, 85 PPB_NETADDRESS_INTERFACE_1_0) 86 METHOD1(NetAddressInterface, PP_Bool, IsNetAddress, PP_Resource) 87 METHOD1(NetAddressInterface, PP_NetAddress_Family, GetFamily, PP_Resource) 88 METHOD2(NetAddressInterface, PP_Bool, DescribeAsIPv4Address, PP_Resource, 89 struct PP_NetAddress_IPv4*) 90 METHOD2(NetAddressInterface, PP_Bool, DescribeAsIPv6Address, PP_Resource, 91 struct PP_NetAddress_IPv6*) 92 END_INTERFACE(NetAddressInterface, PPB_NetAddress) 93 94 BEGIN_INTERFACE(URLLoaderInterface, PPB_URLLoader, PPB_URLLOADER_INTERFACE_1_0) 95 METHOD1(URLLoaderInterface, PP_Resource, Create, PP_Instance) 96 METHOD3(URLLoaderInterface, int32_t, Open, PP_Resource, PP_Resource, 97 PP_CompletionCallback) 98 METHOD1(URLLoaderInterface, PP_Resource, GetResponseInfo, PP_Resource) 99 METHOD4(URLLoaderInterface, int32_t, ReadResponseBody, PP_Resource, void*, 100 int32_t, PP_CompletionCallback) 101 METHOD1(URLLoaderInterface, void, Close, PP_Resource) 102 END_INTERFACE(URLLoaderInterface, PPB_URLLoader) 103 104 BEGIN_INTERFACE(URLRequestInfoInterface, PPB_URLRequestInfo, 105 PPB_URLREQUESTINFO_INTERFACE_1_0) 106 METHOD1(URLRequestInfoInterface, PP_Resource, Create, PP_Instance) 107 METHOD3(URLRequestInfoInterface, PP_Bool, SetProperty, PP_Resource, 108 PP_URLRequestProperty, PP_Var) 109 END_INTERFACE(URLRequestInfoInterface, PPB_URLRequestInfo) 110 111 BEGIN_INTERFACE(URLResponseInfoInterface, PPB_URLResponseInfo, 112 PPB_URLRESPONSEINFO_INTERFACE_1_0) 113 METHOD2(URLResponseInfoInterface, PP_Var, GetProperty, PP_Resource, 114 PP_URLResponseProperty) 115 END_INTERFACE(URLResponseInfoInterface, PPB_URLResponseInfo) 116