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#ifndef LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
6#define LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
7
8#include <ppapi/c/ppb.h>
9#include <ppapi/c/ppb_core.h>
10#include <ppapi/c/ppb_message_loop.h>
11#include "pepper_interface.h"
12
13namespace nacl_io {
14
15// Forward declare interface classes.
16#include "nacl_io/pepper/undef_macros.h"
17#include "nacl_io/pepper/define_empty_macros.h"
18#undef BEGIN_INTERFACE
19#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
20  class Real##BaseClass;
21#include "nacl_io/pepper/all_interfaces.h"
22
23class RealPepperInterface : public PepperInterface {
24 public:
25  RealPepperInterface(PP_Instance instance,
26                      PPB_GetInterface get_browser_interface);
27
28  virtual PP_Instance GetInstance();
29
30// Interface getters.
31#include "nacl_io/pepper/undef_macros.h"
32#include "nacl_io/pepper/define_empty_macros.h"
33#undef BEGIN_INTERFACE
34#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
35  virtual BaseClass* Get##BaseClass();
36#include "nacl_io/pepper/all_interfaces.h"
37
38 private:
39  PP_Instance instance_;
40
41// Interface pointers.
42#include "nacl_io/pepper/undef_macros.h"
43#include "nacl_io/pepper/define_empty_macros.h"
44#undef BEGIN_INTERFACE
45#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
46  Real##BaseClass* BaseClass##interface_;
47#include "nacl_io/pepper/all_interfaces.h"
48};
49
50}  // namespace nacl_io
51
52#endif  // LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
53