Home | History | Annotate | Download | only in pepper
      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