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 MODULE_H 00011 #define MODULE_H 00012 00013 #include "AppConfig.h" 00014 00015 class External; 00016 class PlugIn; 00017 00018 /** 00019 * \cond INTERNAL 00020 */ 00021 extern "C" int LINKAGE opticks_get_module_interface_version(); 00022 /// \endcond 00023 00024 /** 00025 * \cond INTERNAL 00026 * Gets descriptive information about the module. 00027 * 00028 * This method returns the module name, version, description, total 00029 * number of plug-ins within the module, and the module validation 00030 * confirmation string. 00031 * 00032 * @param name 00033 * Returns the name of the module. 00034 * @param version 00035 * Returns the version of the module. 00036 * @param description 00037 * Returns a description of the use and purpose of the module. 00038 * @param totalPlugIns 00039 * Returns the number of plug-ins within the module. 00040 * @param validationKey 00041 * Returns a key that the Studio can check to see if the plug-in 00042 * is a validated plug-in. Validation allows users to discriminate 00043 * between plug-ins in the R&D stage, custom plug-ins, and fully tested 00044 * and validated plug-ins. 00045 * @param pModuleId 00046 * Returns a unique identifier for this module. 00047 * 00048 * @return This method returns true if completed successfully. 00049 */ 00050 extern "C" bool LINKAGE get_name( char **name, 00051 char **version, 00052 char **description, 00053 unsigned int *totalPlugIns, 00054 char **validationKey, 00055 char **pModuleId); 00056 /// \endcond 00057 00058 /** 00059 * \cond INTERNAL 00060 * Initializes the module. 00061 * 00062 * This method initializes the Module. Initialization includes 00063 * instantiating the ModuleManager, setting the reference to the 00064 * main application's services interface. 00065 * 00066 * @param services 00067 * Gives the module a reference to the main application's 00068 * External services interface. 00069 * 00070 * @return This method returns true if completed successfully. 00071 */ 00072 extern "C" bool LINKAGE initialize_op( External *services ); 00073 /// \endcond 00074 00075 /** 00076 * \cond INTERNAL 00077 * Instantiates the given plug-in. 00078 * 00079 * This method instantiates the given plug-in and returns the reference 00080 * to the new plug-in. 00081 * 00082 * @param plugInNumber 00083 * Plug-in to access within the module. 00084 * @param interfaceAddress 00085 * NULL or reference to interface. 00086 * 00087 * @return This method returns true if completed successfully. 00088 */ 00089 extern "C" bool LINKAGE instantiate_interface(unsigned int plugInNumber, PlugIn** interfaceAddress); 00090 /// \endcond 00091 00092 /** 00093 * \cond INTERNAL 00094 * Destroys all plug-ins within the module. 00095 * 00096 * This method tells the module to delete all plug-ins within 00097 * it. 00098 * 00099 * @return This method returns true if completed successfully. 00100 */ 00101 extern "C" bool LINKAGE destroy_op(); 00102 /// \endcond 00103 00104 #endif