00001 #ifndef EST_ANALYZER_FACTORY_H 00002 #define EST_ANALYZER_FACTORY_H 00003 00004 //-------------------------------------------------------------------- 00005 // 00006 // This file is part of PEACE. 00007 // 00008 // PEACE is free software: you can redistribute it and/or modify it 00009 // under the terms of the GNU General Public License as published by 00010 // the Free Software Foundation, either version 3 of the License, or 00011 // (at your option) any later version. 00012 // 00013 // PEACE is distributed in the hope that it will be useful, but 00014 // WITHOUT ANY WARRANTY; without even the implied warranty of 00015 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00016 // General Public License for more details. 00017 // 00018 // You should have received a copy of the GNU General Public License 00019 // along with PEACE. If not, see <http://www.gnu.org/licenses/>. 00020 // 00021 // Miami University makes no representations or warranties about the 00022 // suitability of the software, either express or implied, including 00023 // but not limited to the implied warranties of merchantability, 00024 // fitness for a particular purpose, or non-infringement. Miami 00025 // University shall not be liable for any damages suffered by licensee 00026 // as a result of using, result of using, modifying or distributing 00027 // this software or its derivatives. 00028 // 00029 // By using or copying this Software, Licensee agrees to abide by the 00030 // intellectual property laws, and all other applicable laws of the 00031 // U.S., and the terms of GNU General Public License (version 3). 00032 // 00033 // Authors: Dhananjai M. Rao raodm@muohio.edu 00034 // 00035 //--------------------------------------------------------------------- 00036 00037 #include <iostream> 00038 00039 // For declaration to make compiler happy. 00040 class ESTAnalyzer; 00041 00042 class ESTAnalyzerFactory { 00043 public: 00044 /** Method to instantiate a suitable EST Analyzer. 00045 00046 This method must be used to instantiate a suitable EST 00047 analyzer instance. This method uses the name (parameter) to 00048 suitably instantiate an EST analyzer. If the name is not 00049 valid, then this method returns NULL. 00050 00051 \param[in] name The name of the EST analyzer to be 00052 instantiated. 00053 00054 \param[in] refESTidx The reference EST index value to be used 00055 when instantiating an EST analyzer. Index values start from 0 00056 (zero). If this value is negative then this method returns 00057 NULL. 00058 00059 \param[in] outputFileName The target file to which the 00060 analysis report is to be written (if any). Note that this 00061 parameter may be ignored if this EST analyzer is used to 00062 generate clusters. If the value of outputFileName is "" 00063 (empty string) then the outputs are streamed to standard out. 00064 */ 00065 static ESTAnalyzer* create(const char* name, const int refESTidx, 00066 const std::string& outputFileName); 00067 00068 /** Method to display the list of EST analyzers available. 00069 00070 This method is typically used to display the list of EST 00071 analyzers currently available. This method is typically used 00072 in the main() method when displaying usage information. 00073 00074 \param[out] os The output stream to which the list of EST 00075 names must be written. 00076 */ 00077 static void displayList(std::ostream& os); 00078 00079 protected: 00080 // Currently this class has no protected members. 00081 00082 private: 00083 /** The default constructor. 00084 00085 The default constructor has is private in order to ensure that 00086 this class is never instantiated. Instead, the static methods 00087 in this class must be directly used to instantiate a EST 00088 analyzerw. 00089 */ 00090 ESTAnalyzerFactory() {} 00091 00092 /** The destructor. 00093 00094 The destructor is private to ensure that objects of this class 00095 are never deleted. 00096 */ 00097 ~ESTAnalyzerFactory() {} 00098 }; 00099 00100 00101 #endif