1ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch// found in the LICENSE file.
4ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#ifndef LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <ppapi/c/ppb.h>
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <ppapi/c/ppb_core.h>
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <ppapi/c/ppb_message_loop.h>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "pepper_interface.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
13ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochnamespace nacl_io {
14ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Forward declare interface classes.
16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "nacl_io/pepper/undef_macros.h"
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/define_empty_macros.h"
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#undef BEGIN_INTERFACE
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
2046d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  class Real##BaseClass;
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/all_interfaces.h"
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class RealPepperInterface : public PepperInterface {
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public:
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  RealPepperInterface(PP_Instance instance,
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                      PPB_GetInterface get_browser_interface);
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  virtual PP_Instance GetInstance();
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Interface getters.
31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "nacl_io/pepper/undef_macros.h"
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/define_empty_macros.h"
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#undef BEGIN_INTERFACE
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
3546d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual BaseClass* Get##BaseClass();
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/all_interfaces.h"
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private:
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  PP_Instance instance_;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Interface pointers.
42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "nacl_io/pepper/undef_macros.h"
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/define_empty_macros.h"
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#undef BEGIN_INTERFACE
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
4646d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  Real##BaseClass* BaseClass##interface_;
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "nacl_io/pepper/all_interfaces.h"
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)};
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
50ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}  // namespace nacl_io
51ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif  // LIBRARIES_NACL_IO_REAL_PEPPER_INTERFACE_H_
53