Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

optionServer.cpp

Go to the documentation of this file.
00001 #include "Event/optionServer.h"
00002 #include "Event/messageManager.h"
00003 
00004 //############################################
00005 optionServer::optionServer()
00006 //############################################
00007 {
00008         m_optionFileName = "";
00009         m_server = new serverVI<optionVI>();
00010 }
00011 //############################################
00012 optionServer::~optionServer()
00013 //############################################
00014 {
00015         delete m_server;
00016 }
00017 //########################################
00018 void optionServer::setOption()
00019 //########################################
00020 {
00021 
00022         std::string name = m_optionFileName;
00023         if (name == "") return;
00024         messageManager::instance()->message(" Using option file "+name);
00025         std::ifstream file(name.c_str());
00026         if (!file) {
00027                 messageManager::instance()->message(" Could not open init file "+ name);
00028                 file.close();
00029                 return;
00030         }
00031 
00032         std::string comment = "";
00033         std::string className ="";
00034         std::string parName="";
00035         std::string parType="S";
00036         std::string parString="";
00037         double parDouble = 0.;
00038         int parInteger = 0;
00039 
00040         // read-in option file
00041         while(!file.eof()) {
00042                 file >> className;              
00043                 if (className == "//") std::getline(file,comment);
00044                 else {
00045                         file >> parName;
00046                         file >> parType;
00047                         if (parType == "S") {
00048                                 file >> parString;
00049                                 setOption(className, parName, parString);
00050                         } else if (parType == "D") {
00051                                 file >> parDouble;
00052                                 setOption(className, parName,parDouble);
00053                         } else if (parType == "I") {
00054                                 file >> parInteger;
00055                                 setOption(className, parName,parInteger);
00056                         } 
00057                 }
00058                 className = "";
00059                 parName   = "";
00060                 parType   = "";
00061                 parString = "";
00062                 parDouble = 0.;
00063                 parInteger = 0;
00064         } // end of file
00065 
00066         // close option file
00067         file.close();   
00068 }
00069 //########################################
00070 void optionServer::setOption(std::string Oname, std::string par, std::string con)
00071 //########################################
00072 {
00073         optionVI* op = getOption(Oname);
00074         if (!op) {
00075                 messageManager::instance()->message(" not a option named "+Oname);
00076                 return;
00077         }
00078         if (!op->search(par)) {
00079                 messageManager::instance()->message(" not a string option named "+par);
00080                 return;
00081         }
00082         op->setOption(par,con);
00083         messageManager::instance()->message(" option applied "+Oname+"->"+par+" = "+con);
00084 }
00085 //########################################
00086 void optionServer::setOption(std::string Oname, std::string par, double con)
00087 //########################################
00088 {
00089         optionVI* op = getOption(Oname);
00090         if (!op) {
00091                 messageManager::instance()->message(" not a option named "+Oname);
00092                 return;
00093         }
00094         if (!op->search(par)) {
00095                 messageManager::instance()->message(" not a double option named "+par);
00096                 return;
00097         }
00098         op->setOption(par,con);
00099         messageManager::instance()->message(" option applied "+Oname+" -> "+par+" = ",con);
00100 }
00101 //########################################
00102 void optionServer::setOption(std::string Oname, std::string par, int con)
00103 //########################################
00104 {
00105         optionVI* op = getOption(Oname);
00106         if (!op) {
00107                 messageManager::instance()->message(" not a option named "+Oname);
00108                 return;
00109         }
00110         if (!op->search(par)) {
00111                 messageManager::instance()->message(" not an integer option named ",par);
00112                 return;
00113         }
00114         op->setOption(par,con);
00115         messageManager::instance()->message(" option applied "+Oname+" -> "+par+" = ",con);
00116 }
00117 //########################################
00118 optionVI* optionServer::getOption(std::string Oname) const
00119 //########################################
00120 {
00121         if (m_server->search(Oname)) return m_server->get(Oname);
00122         else return 0;
00123 }
00124 //########################################
00125 void optionServer::addToServer(std::string name, optionVI* op)
00126 //########################################
00127 {
00128         if (!m_server->search(name)) m_server->add(name,op);
00129         else messageManager::instance()->
00130                 message(" class already in option server "+name);
00131 
00132 }
00133 //########################################
00134 void optionServer::writeOutOptionsServer() const
00135 //########################################
00136 {
00137         std::ostream& out = messageManager::instance()->out();
00138         out << " ** information about options ** " <<"\n";
00139         for (int i=0; i < m_server->size(); i++) m_server->get(i)->writeOutOptions();
00140 }
00141 //########################################
00142 void optionServer::writeOut() const
00143 //########################################
00144 {
00145         std::ostream& out = messageManager::instance()->out();
00146         if (m_server->size() == 0) return;
00147         out << " -- info of option server -- " << "\n";
00148         out << " option File name = " << m_optionFileName;
00149         out << " >> objecs in optionSever << " << "\n";
00150         out << m_server->nameList();
00151         if (!messageManager::instance()->acceptLevel("DEBUG")) return;
00152         for (int i = 0 ; i < m_server->size(); i++) 
00153                 m_server->get(i)->writeOutOptions();
00154 }

Generated at Fri Aug 18 12:57:38 2000 for centella framework by doxygen 1.1.3 written by Dimitri van Heesch, © 1997-2000