1 /* Copyright (c) 2013 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_PEPPER_INTERFACE_DUMMY_H_ 6 #define LIBRARIES_NACL_IO_PEPPER_INTERFACE_DUMMY_H_ 7 8 #include "nacl_io/pepper_interface.h" 9 10 // This class simplifies implementing a PepperInterface-derived class where you 11 // don't care about certain interfaces. All interface-getters return NULL by 12 // default. 13 // 14 // For example: 15 // 16 // class FooPepperInterface : public PepperInterfaceDummy { 17 // public: 18 // CoreInterface* GetCoreInterface() { ... }; 19 // }; 20 // 21 // // FooPepperInterface is not abstract -- all pure virtual functions have 22 // been defined to return NULL. 23 24 namespace nacl_io { 25 26 class PepperInterfaceDummy : public PepperInterface { 27 public: 28 PepperInterfaceDummy() {} 29 virtual ~PepperInterfaceDummy() {} 30 virtual PP_Instance GetInstance() { return 0; } 31 32 // Interface getters. 33 #include "nacl_io/pepper/undef_macros.h" 34 #include "nacl_io/pepper/define_empty_macros.h" 35 #undef BEGIN_INTERFACE 36 #define BEGIN_INTERFACE(BaseClass, PPInterface, InterfaceString) \ 37 virtual BaseClass* Get##BaseClass() { return NULL; } 38 #include "nacl_io/pepper/all_interfaces.h" 39 }; 40 41 } // namespace nacl_io 42 43 #endif // LIBRARIES_NACL_IO_PEPPER_INTERFACE_DUMMY_H_ 44