00001 /* 00002 * The information in this file is 00003 * Copyright(c) 2007 Ball Aerospace & Technologies Corporation 00004 * and is subject to the terms and conditions of the 00005 * GNU Lesser General Public License Version 2.1 00006 * The license text is available from 00007 * http://www.gnu.org/licenses/lgpl.html 00008 */ 00009 00010 #ifndef EXTERNAL_H 00011 #define EXTERNAL_H 00012 00013 /** 00014 * \cond INTERNAL 00015 * Primary plug-in interface to the main application 00016 * 00017 * Defines the external abstract interface to the main application. 00018 * This interface can be used to gain access to services provided by 00019 * the main application. 00020 */ 00021 class External 00022 { 00023 public: 00024 /** 00025 * Get descriptive information about the Module 00026 * 00027 * The queryInterface() method is used to ask the main application 00028 * for a reference to a service. If the service is not supported 00029 * this method returns false. Otherwise the reference is returned 00030 * as the interfaceAddress parameter. 00031 * 00032 * @param interfaceName 00033 * Interface requested 00034 * @param interfaceAddress 00035 * NULL or reference to interface 00036 * 00037 * @return TRUE if the interface is supported. 00038 */ 00039 virtual bool queryInterface( const char *interfaceName, void** interfaceAddress ) = 0; 00040 00041 protected: 00042 /** 00043 * This will be cleaned up during application close. Plug-ins do not 00044 * need to destroy it. 00045 */ 00046 virtual ~External() {} 00047 }; 00048 /// \endcond 00049 00050 #endif