13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)/* Copyright (c) 2013 The Chromium Authors. All rights reserved.
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * Use of this source code is governed by a BSD-style license that can be
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) * found in the LICENSE file.
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) */
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef LIBRARIES_NACL_IO_PEPPER_INTERFACE_DUMMY_H_
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define LIBRARIES_NACL_IO_PEPPER_INTERFACE_DUMMY_H_
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/pepper_interface.h"
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// This class simplifies implementing a PepperInterface-derived class where you
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// don't care about certain interfaces. All interface-getters return NULL by
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// default.
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// For example:
153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// class FooPepperInterface : public PepperInterfaceDummy {
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//  public:
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//   CoreInterface* GetCoreInterface() { ... };
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// };
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// // FooPepperInterface is not abstract -- all pure virtual functions have
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// been defined to return NULL.
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace nacl_io {
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class PepperInterfaceDummy : public PepperInterface {
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public:
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  PepperInterfaceDummy() {}
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual ~PepperInterfaceDummy() {}
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  virtual PP_Instance GetInstance() { return 0; }
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Interface getters.
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/pepper/undef_macros.h"
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/pepper/define_empty_macros.h"
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#undef BEGIN_INTERFACE
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \
3746d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)  virtual BaseClass* Get##BaseClass() { return NULL; }
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "nacl_io/pepper/all_interfaces.h"
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)};
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}  // namespace nacl_io
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif  // LIBRARIES_NACL_IO_PEPPER_INTERFACE_DUMMY_H_
44