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