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.
5 /* Given an interface like this:
7 * struct PPB_Frob_1_1 {
8 * void (*Flange)(int32_t param1, char* param2);
9 * int32_t (*Shlep)(PP_CompletionCallback);
12 * Write a set of macros like this:
14 * BEGIN_INTERFACE(FrobInterface, PPB_Frob_1_1, PPB_FROB_INTERFACE_1_1)
15 * METHOD2(FrobInterface, void, Flange, int32_t, char*)
16 * METHOD1(FrobInterface, int32_t, Shlep, PP_CompletionCallback)
17 * END_INTERFACE(FrobInterface, PPB_Frob_1_1)
19 * NOTE: Use versioned struct name and macro to ensure they match.
22 /* Chrome M25 required */
23 BEGIN_INTERFACE(ConsoleInterface
, PPB_Console_1_0
, PPB_CONSOLE_INTERFACE_1_0
)
24 METHOD3(ConsoleInterface
, void, Log
, PP_Instance
, PP_LogLevel
, PP_Var
)
25 END_INTERFACE(ConsoleInterface
, PPB_Console_1_0
)
27 /* Chrome M14 required */
28 BEGIN_INTERFACE(CoreInterface
, PPB_Core_1_0
, PPB_CORE_INTERFACE_1_0
)
29 METHOD1(CoreInterface
, void, AddRefResource
, PP_Resource
)
30 METHOD1(CoreInterface
, void, ReleaseResource
, PP_Resource
)
31 METHOD0(CoreInterface
, PP_Bool
, IsMainThread
)
32 END_INTERFACE(CoreInterface
, PPB_Core_1_0
)
34 /* Chrome M14 required */
35 BEGIN_INTERFACE(FileIoInterface
, PPB_FileIO_1_0
, PPB_FILEIO_INTERFACE_1_0
)
36 METHOD1(FileIoInterface
, void, Close
, PP_Resource
)
37 METHOD1(FileIoInterface
, PP_Resource
, Create
, PP_Resource
)
38 METHOD2(FileIoInterface
, int32_t, Flush
, PP_Resource
,
39 PP_CompletionCallback
)
40 METHOD4(FileIoInterface
, int32_t, Open
, PP_Resource
, PP_Resource
, int32_t,
41 PP_CompletionCallback
)
42 METHOD3(FileIoInterface
, int32_t, Query
, PP_Resource
, PP_FileInfo
*,
43 PP_CompletionCallback
)
44 METHOD5(FileIoInterface
, int32_t, Read
, PP_Resource
, int64_t, char*,
45 int32_t, PP_CompletionCallback
)
46 METHOD3(FileIoInterface
, int32_t, SetLength
, PP_Resource
, int64_t,
47 PP_CompletionCallback
)
48 METHOD5(FileIoInterface
, int32_t, Write
, PP_Resource
, int64_t,
49 const char*, int32_t, PP_CompletionCallback
)
50 END_INTERFACE(FileIoInterface
, PPB_FileIO_1_0
)
52 /* Chrome M28 required */
53 BEGIN_INTERFACE(FileRefInterface
, PPB_FileRef_1_1
, PPB_FILEREF_INTERFACE_1_1
)
54 METHOD2(FileRefInterface
, PP_Resource
, Create
, PP_Resource
, const char*)
55 METHOD2(FileRefInterface
, int32_t, Delete
, PP_Resource
, PP_CompletionCallback
)
56 METHOD1(FileRefInterface
, PP_Var
, GetName
, PP_Resource
)
57 METHOD3(FileRefInterface
, int32_t, MakeDirectory
, PP_Resource
, PP_Bool
,
58 PP_CompletionCallback
)
59 METHOD3(FileRefInterface
, int32_t, Query
, PP_Resource
, PP_FileInfo
*,
60 PP_CompletionCallback
)
61 METHOD3(FileRefInterface
, int32_t, ReadDirectoryEntries
, PP_Resource
,
62 const PP_ArrayOutput
&, PP_CompletionCallback
)
63 METHOD3(FileRefInterface
, int32_t, Rename
, PP_Resource
, PP_Resource
,
64 PP_CompletionCallback
)
65 END_INTERFACE(FileRefInterface
, PPB_FileRef_1_1
)
67 /* Chrome M14 required */
68 BEGIN_INTERFACE(FileSystemInterface
, PPB_FileSystem_1_0
,
69 PPB_FILESYSTEM_INTERFACE_1_0
)
70 METHOD1(FileSystemInterface
, PP_Bool
, IsFileSystem
, PP_Resource
)
71 METHOD2(FileSystemInterface
, PP_Resource
, Create
, PP_Instance
,
73 METHOD3(FileSystemInterface
, int32_t, Open
, PP_Resource
, int64_t,
74 PP_CompletionCallback
)
75 END_INTERFACE(FileSystemInterface
, PPB_FileSystem_1_0
)
77 /* Chrome M25 required */
78 BEGIN_INTERFACE(MessageLoopInterface
, PPB_MessageLoop_1_0
,
79 PPB_MESSAGELOOP_INTERFACE_1_0
)
80 METHOD1(MessageLoopInterface
, PP_Resource
, Create
, PP_Instance
)
81 METHOD1(MessageLoopInterface
, int32_t, AttachToCurrentThread
, PP_Resource
)
82 METHOD1(MessageLoopInterface
, int32_t, Run
, PP_Resource
)
83 METHOD3(MessageLoopInterface
, int32_t, PostWork
, PP_Resource
,
84 struct PP_CompletionCallback
, int64_t)
85 METHOD2(MessageLoopInterface
, int32_t, PostQuit
, PP_Resource
, PP_Bool
)
86 METHOD0(MessageLoopInterface
, PP_Resource
, GetCurrent
)
87 METHOD0(MessageLoopInterface
, PP_Resource
, GetForMainThread
)
88 END_INTERFACE(MessageLoopInterface
, PPB_MessageLoop_1_0
)
90 /* Chrome M14 required */
91 BEGIN_INTERFACE(MessagingInterface
, PPB_Messaging_1_0
,
92 PPB_MESSAGING_INTERFACE_1_0
)
93 METHOD2(MessagingInterface
, void, PostMessage
, PP_Instance
, PP_Var
)
94 END_INTERFACE(MessagingInterface
, PPB_Messaging_1_0
)
96 /* Chrome M29 required */
97 BEGIN_INTERFACE(VarArrayInterface
, PPB_VarArray_1_0
,
98 PPB_VAR_ARRAY_INTERFACE_1_0
)
99 METHOD0(VarArrayInterface
, PP_Var
, Create
)
100 METHOD2(VarArrayInterface
, PP_Var
, Get
, PP_Var
, uint32_t)
101 METHOD3(VarArrayInterface
, PP_Bool
, Set
, PP_Var
, uint32_t, PP_Var
)
102 METHOD1(VarArrayInterface
, uint32_t, GetLength
, PP_Var
)
103 METHOD2(VarArrayInterface
, PP_Bool
, SetLength
, PP_Var
, uint32_t)
104 END_INTERFACE(VarArrayInterface
, PPB_VarArray_1_0
)
106 /* Chrome M18 required */
107 BEGIN_INTERFACE(VarArrayBufferInterface
, PPB_VarArrayBuffer_1_0
,
108 PPB_VAR_ARRAY_BUFFER_INTERFACE_1_0
)
109 METHOD1(VarArrayBufferInterface
, PP_Var
, Create
, uint32_t)
110 METHOD2(VarArrayBufferInterface
, PP_Bool
, ByteLength
, PP_Var
, uint32_t*)
111 METHOD1(VarArrayBufferInterface
, void*, Map
, PP_Var
)
112 METHOD1(VarArrayBufferInterface
, void, Unmap
, PP_Var
)
113 END_INTERFACE(VarArrayBufferInterface
, PPB_VarArrayBuffer_1_0
)
115 BEGIN_INTERFACE(VarDictionaryInterface
, PPB_VarDictionary_1_0
,
116 PPB_VAR_DICTIONARY_INTERFACE_1_0
)
117 METHOD0(VarDictionaryInterface
, PP_Var
, Create
)
118 METHOD3(VarDictionaryInterface
, PP_Bool
, Set
, PP_Var
, PP_Var
, PP_Var
)
119 METHOD2(VarDictionaryInterface
, PP_Var
, Get
, PP_Var
, PP_Var
)
120 METHOD1(VarDictionaryInterface
, PP_Var
, GetKeys
, PP_Var
)
121 END_INTERFACE(VarDictionaryInterface
, PPB_VarDictionary_1_0
)
123 /* Chrome M18 required */
124 BEGIN_INTERFACE(VarInterface
, PPB_Var_1_1
, PPB_VAR_INTERFACE_1_1
)
125 METHOD1(VarInterface
, void, AddRef
, PP_Var
)
126 METHOD1(VarInterface
, void, Release
, PP_Var
)
127 METHOD2(VarInterface
, PP_Var
, VarFromUtf8
, const char *, uint32_t)
128 METHOD2(VarInterface
, const char*, VarToUtf8
, PP_Var
, uint32_t*)
129 END_INTERFACE(VarInterface
, PPB_Var_1_1
)
131 /* Chrome M29 required */
132 BEGIN_INTERFACE(HostResolverInterface
, PPB_HostResolver_1_0
,
133 PPB_HOSTRESOLVER_INTERFACE_1_0
)
134 METHOD1(HostResolverInterface
, PP_Resource
, Create
, PP_Instance
)
135 METHOD5(HostResolverInterface
, int32_t, Resolve
, PP_Resource
, const char*,
136 uint16_t, const struct PP_HostResolver_Hint
*,
137 struct PP_CompletionCallback
)
138 METHOD1(HostResolverInterface
, PP_Var
, GetCanonicalName
, PP_Resource
)
139 METHOD1(HostResolverInterface
, uint32_t, GetNetAddressCount
, PP_Resource
)
140 METHOD2(HostResolverInterface
, PP_Resource
, GetNetAddress
,
141 PP_Resource
, uint32_t)
142 END_INTERFACE(HostResolverInterface
, PPB_HostResolver_1_0
)
144 /* Chrome M29 required */
145 BEGIN_INTERFACE(NetAddressInterface
, PPB_NetAddress_1_0
,
146 PPB_NETADDRESS_INTERFACE_1_0
)
147 METHOD2(NetAddressInterface
, PP_Resource
, CreateFromIPv4Address
,
148 PP_Instance
, PP_NetAddress_IPv4
*)
149 METHOD2(NetAddressInterface
, PP_Resource
, CreateFromIPv6Address
,
150 PP_Instance
, PP_NetAddress_IPv6
*)
151 METHOD1(NetAddressInterface
, PP_Bool
, IsNetAddress
, PP_Resource
)
152 METHOD1(NetAddressInterface
, PP_NetAddress_Family
, GetFamily
, PP_Resource
)
153 METHOD2(NetAddressInterface
, PP_Bool
, DescribeAsIPv4Address
, PP_Resource
,
154 struct PP_NetAddress_IPv4
*)
155 METHOD2(NetAddressInterface
, PP_Bool
, DescribeAsIPv6Address
, PP_Resource
,
156 struct PP_NetAddress_IPv6
*)
157 METHOD2(NetAddressInterface
, PP_Var
, DescribeAsString
, PP_Resource
, PP_Bool
)
158 END_INTERFACE(NetAddressInterface
, PPB_NetAddress_1_0
)
160 /* Chrome M14 required */
161 BEGIN_INTERFACE(URLLoaderInterface
, PPB_URLLoader_1_0
,
162 PPB_URLLOADER_INTERFACE_1_0
)
163 METHOD1(URLLoaderInterface
, PP_Resource
, Create
, PP_Instance
)
164 METHOD3(URLLoaderInterface
, int32_t, Open
, PP_Resource
, PP_Resource
,
165 PP_CompletionCallback
)
166 METHOD1(URLLoaderInterface
, PP_Resource
, GetResponseInfo
, PP_Resource
)
167 METHOD4(URLLoaderInterface
, int32_t, ReadResponseBody
, PP_Resource
, void*,
168 int32_t, PP_CompletionCallback
)
169 METHOD1(URLLoaderInterface
, void, Close
, PP_Resource
)
170 END_INTERFACE(URLLoaderInterface
, PPB_URLLoader_1_0
)
172 /* Chrome M14 required */
173 BEGIN_INTERFACE(URLRequestInfoInterface
, PPB_URLRequestInfo_1_0
,
174 PPB_URLREQUESTINFO_INTERFACE_1_0
)
175 METHOD1(URLRequestInfoInterface
, PP_Resource
, Create
, PP_Instance
)
176 METHOD3(URLRequestInfoInterface
, PP_Bool
, SetProperty
, PP_Resource
,
177 PP_URLRequestProperty
, PP_Var
)
178 END_INTERFACE(URLRequestInfoInterface
, PPB_URLRequestInfo_1_0
)
180 /* Chrome M14 required */
181 BEGIN_INTERFACE(URLResponseInfoInterface
, PPB_URLResponseInfo_1_0
,
182 PPB_URLRESPONSEINFO_INTERFACE_1_0
)
183 METHOD2(URLResponseInfoInterface
, PP_Var
, GetProperty
, PP_Resource
,
184 PP_URLResponseProperty
)
185 END_INTERFACE(URLResponseInfoInterface
, PPB_URLResponseInfo_1_0
)
187 /* Chrome M31 required */
188 BEGIN_INTERFACE(TCPSocketInterface
, PPB_TCPSocket_1_1
,
189 PPB_TCPSOCKET_INTERFACE_1_1
)
190 METHOD1(TCPSocketInterface
, PP_Resource
, Create
, PP_Instance
)
191 METHOD3(TCPSocketInterface
, int32_t, Bind
, PP_Resource
, PP_Resource
,
192 PP_CompletionCallback
)
193 METHOD3(TCPSocketInterface
, int32_t, Listen
, PP_Resource
, int32_t,
194 PP_CompletionCallback
)
195 METHOD3(TCPSocketInterface
, int32_t, Accept
, PP_Resource
, PP_Resource
*,
196 PP_CompletionCallback
)
197 METHOD1(TCPSocketInterface
, PP_Bool
, IsTCPSocket
, PP_Resource
)
198 METHOD3(TCPSocketInterface
, int32_t, Connect
, PP_Resource
, PP_Resource
,
199 PP_CompletionCallback
)
200 METHOD1(TCPSocketInterface
, PP_Resource
, GetLocalAddress
, PP_Resource
)
201 METHOD1(TCPSocketInterface
, PP_Resource
, GetRemoteAddress
, PP_Resource
)
202 METHOD4(TCPSocketInterface
, int32_t, Read
, PP_Resource
, char*, int32_t,
203 PP_CompletionCallback
)
204 METHOD4(TCPSocketInterface
, int32_t, Write
, PP_Resource
, const char*,
205 int32_t, PP_CompletionCallback
)
206 METHOD1(TCPSocketInterface
, void, Close
, PP_Resource
)
207 METHOD4(TCPSocketInterface
, int32_t, SetOption
, PP_Resource
,
208 PP_TCPSocket_Option
, PP_Var
, PP_CompletionCallback
)
209 END_INTERFACE(TCPSocketInterface
, PPB_TCPSocket_1_1
)
211 /* Chrome M29 required */
212 BEGIN_INTERFACE(UDPSocketInterface
, PPB_UDPSocket_1_0
,
213 PPB_UDPSOCKET_INTERFACE_1_0
)
214 METHOD1(UDPSocketInterface
, PP_Resource
, Create
, PP_Instance
)
215 METHOD1(UDPSocketInterface
, PP_Bool
, IsUDPSocket
, PP_Resource
)
216 METHOD3(UDPSocketInterface
, int32_t, Bind
, PP_Resource
, PP_Resource
,
217 PP_CompletionCallback
)
218 METHOD1(UDPSocketInterface
, PP_Resource
, GetBoundAddress
, PP_Resource
)
219 METHOD5(UDPSocketInterface
, int32_t, RecvFrom
, PP_Resource
, char*, int32_t,
220 PP_Resource
*, PP_CompletionCallback
)
221 METHOD5(UDPSocketInterface
, int32_t, SendTo
, PP_Resource
, const char*,
222 int32_t, PP_Resource
, PP_CompletionCallback
)
223 METHOD1(UDPSocketInterface
, void, Close
, PP_Resource
)
224 METHOD4(UDPSocketInterface
, int32_t, SetOption
, PP_Resource
,
225 PP_UDPSocket_Option
, PP_Var
, PP_CompletionCallback
)
226 END_INTERFACE(UDPSocketInterface
, PPB_UDPSocket_1_0
)