- Main Page
- Namespaces
- Classes
- Files
- Related Pages

- File List
- File Members

# /home/coin/SVN-release/OS-2.3.5/OS/v2.0/OSoLWriter.cpp

Go to the documentation of this file.

    00001
    00017 #define DEBUG
    00018
    00019 #include "OSoLWriter.h"
    00020 #include "OSOption.h"
    00021 #include "OSParameters.h"
    00022 #include "OSCommonUtil.h"
    00023 #include "OSConfig.h"
    00024 #include "OSBase64.h"
    00025 #include "OSMathUtil.h"
    00026 #include <sstream>
    00027 #include <iostream>
    00028 #include <stdio.h>
    00029
    00030 using std::cout;
    00031 using std::endl;
    00032 using std::ostringstream;
    00033
    00034 OSoLWriter::OSoLWriter( ) {
    00035 }
    00036
    00037 OSoLWriter::~OSoLWriter(){
    00038 }
    00039
    00040
    00041 /*char* OSoLWriter::writeOSoLWrap( OSOption *theosoption){
    00042         std::string sTmp = writeOSoL( theosoption);
    00043         char *ch;
    00044     ch = new char[sTmp.size() + 1];
    00045     strcpy(ch, sTmp.c_str());
    00046         return ch;
    00047 }
    00048 */
    00049
    00050
    00051 std::string OSoLWriter::writeOSoL( OSOption *theosoption)
    00052 {       m_OSOption = theosoption;
    00053         std::ostringstream outStr;
    00054         #ifdef WIN_
    00055         const char      dirsep='\\';
    00056         #else
    00057         const char      dirsep='/';
    00058         #endif
    00059         // Set directory containing stylesheet files.
    00060         std::string xsltDir;
    00061         xsltDir = dirsep == '/' ? "../stylesheets/" : "..\\stylesheets\\";
    00062         // always go with '/' -- it is a hypertext reference
    00063         xsltDir = "../stylesheets/";
    00064         if(m_OSOption == NULL)  return outStr.str();
    00065         outStr << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ;
    00066         outStr << "<?xml-stylesheet type=\"text/xsl\" href=\"";
    00067         outStr << xsltDir;
    00068         outStr << "OSoL.xslt\"?>";
    00069         outStr << "<osol xmlns=\"os.optimizationservices.org\"   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
    00070         outStr << "xsi:schemaLocation=\"os.optimizationservices.org http://www.optimizationservices.org/schemas/";
    00071         outStr << OS_SCHEMA_VERSION;
    00072         outStr  <<"/OSoL.xsd\" >" ;
    00073         outStr << endl;
    00074
    00078         if(m_OSOption->general != NULL)
    00079         {       outStr << "<general>" << endl;
    00080                 if (m_OSOption->general->serviceURI != "")
    00081                         outStr << "<serviceURI>" << m_OSOption->general->serviceURI << "</serviceURI>" << endl;
    00082                 if (m_OSOption->general->serviceName != "")
    00083                         outStr << "<serviceName>" << m_OSOption->general->serviceName << "</serviceName>" << endl;
    00084                 if (m_OSOption->general->instanceName != "")
    00085                         outStr << "<instanceName>" << m_OSOption->general->instanceName << "</instanceName>" << endl;
    00086                 if (m_OSOption->general->instanceLocation != NULL)
    00087                 {       if (m_OSOption->general->instanceLocation->locationType == "")
    00088                         {       outStr << "<instanceLocation>";
    00089                         }
    00090                         else
    00091                         {       outStr << "<instanceLocation locationType=\"" << m_OSOption->general->instanceLocation->locationType << "\">";
    00092                         };
    00093                         outStr << m_OSOption->general->instanceLocation->value << "</instanceLocation>" << endl;
    00094                 };
    00095                 if (m_OSOption->general->jobID != "")
    00096                 {       outStr << "<jobID>" << m_OSOption->general->jobID << "</jobID>" << endl;
    00097                 };
    00098                 if (m_OSOption->general->solverToInvoke != "")
    00099                 {       outStr << "<solverToInvoke>" << m_OSOption->general->solverToInvoke << "</solverToInvoke>" << endl;
    00100                 };
    00101                 if (m_OSOption->general->license != "")
    00102                 {       outStr << "<license>" << m_OSOption->general->license << "</license>" << endl;
    00103                 };
    00104                 if (m_OSOption->general->userName != "")
    00105                 {       outStr << "<userName>" << m_OSOption->general->userName << "</userName>" << endl;
    00106                 };
    00107                 if (m_OSOption->general->password != "")
    00108                 {       outStr << "<password>" << m_OSOption->general->password << "</password>" << endl;
    00109                 };
    00110                 if (m_OSOption->general->contact != NULL)
    00111                 {       if (m_OSOption->general->contact->transportType == "")
    00112                         {       outStr << "<contact>";
    00113                         }
    00114                         else
    00115                         {       outStr << "<contact transportType=\"" << m_OSOption->general->contact->transportType << "\">";
    00116                         };
    00117                         outStr << m_OSOption->general->contact->value << "</contact>" << endl;
    00118                 };
    00119                 if (m_OSOption->general->otherOptions != NULL)
    00120                 {       if (m_OSOption->general->otherOptions->numberOfOtherOptions > 0)
    00121                         {       outStr << "<otherOptions numberOfOtherOptions=\"";
    00122                                 outStr << m_OSOption->general->otherOptions->numberOfOtherOptions << "\">" << endl;
    00123                                 for (int i=0; i < m_OSOption->general->otherOptions->numberOfOtherOptions; i++)
    00124                                 {       outStr << "<other name=\"" << m_OSOption->general->otherOptions->other[i]->name << "\"";
    00125                                         if (m_OSOption->general->otherOptions->other[i]->value != "")
    00126                                                 outStr << " value=\"" << m_OSOption->general->otherOptions->other[i]->value << "\"";
    00127                                         if (m_OSOption->general->otherOptions->other[i]->description != "")
    00128                                                 outStr << " description=\"" << m_OSOption->general->otherOptions->other[i]->description << "\"";
    00129                                         outStr << "/>" << endl;
    00130                                 }
    00131                                 outStr << "</otherOptions>" << endl;
    00132                         }
    00133                 }
    00134                 outStr << "</general>" << endl;
    00135 //              cout << "Done with <general> element" << endl;
    00136         };
    00137
    00141         if(m_OSOption->system != NULL)
    00142         {       outStr << "<system>" << endl;
    00143                 if (m_OSOption->system->minDiskSpace != NULL)
    00144                 {       if (m_OSOption->system->minDiskSpace->unit == "")
    00145                                 m_OSOption->system->minDiskSpace->unit = "byte";
    00146                         outStr << "<minDiskSpace unit=\"" << m_OSOption->system->minDiskSpace->unit << "\">";
    00147                         outStr << os_dtoa_format(m_OSOption->system->minDiskSpace->value) << "</minDiskSpace>" << endl;
    00148                 }
    00149                 if (m_OSOption->system->minMemorySize != NULL)
    00150                 {       if (m_OSOption->system->minMemorySize->unit == "")
    00151                                 m_OSOption->system->minMemorySize->unit = "byte";
    00152                         outStr << "<minMemorySize unit=\"" << m_OSOption->system->minMemorySize->unit << "\">";
    00153                         outStr << os_dtoa_format(m_OSOption->system->minMemorySize->value) << "</minMemorySize>" << endl;
    00154                 }
    00155                 if (m_OSOption->system->minCPUSpeed != NULL)
    00156                 {       if (m_OSOption->system->minCPUSpeed->unit == "")
    00157                                 m_OSOption->system->minCPUSpeed->unit = "hertz";
    00158                         outStr << "<minCPUSpeed unit=\"" << m_OSOption->system->minCPUSpeed->unit << "\">";
    00159                         outStr << os_dtoa_format(m_OSOption->system->minCPUSpeed->value) << "</minCPUSpeed>" << endl;
    00160                 }
    00161                 if (m_OSOption->system->minCPUNumber != 1.0)
    00162                 {       outStr << "<minCPUNumber>" << m_OSOption->system->minCPUNumber << "</minCPUNumber>";
    00163                 };
    00164                 if (m_OSOption->system->otherOptions != NULL)
    00165                 {       if (m_OSOption->system->otherOptions->numberOfOtherOptions > 0)
    00166                         {       outStr << "<otherOptions numberOfOtherOptions=\"";
    00167                                 outStr << m_OSOption->system->otherOptions->numberOfOtherOptions << "\">" << endl;
    00168                                 for (int i=0; i < m_OSOption->system->otherOptions->numberOfOtherOptions; i++)
    00169                                 {       outStr << "<other name=\"" << m_OSOption->system->otherOptions->other[i]->name << "\"";
    00170                                         if (m_OSOption->system->otherOptions->other[i]->value != "")
    00171                                                 outStr << " value=\"" << m_OSOption->system->otherOptions->other[i]->value << "\"";
    00172                                         if (m_OSOption->system->otherOptions->other[i]->description != "")
    00173                                                 outStr << " description=\"" << m_OSOption->system->otherOptions->other[i]->description << "\"";
    00174                                         outStr << "/>" << endl;
    00175                                 }
    00176                                 outStr << "</otherOptions>" << endl;
    00177                         }
    00178                 }
    00179                 outStr << "</system>" << endl;
    00180                 cout << "Done with <system> element" << endl;
    00181         };
    00182
    00186         if(m_OSOption->service != NULL)
    00187         {       outStr << "<service>" << endl;
    00188                 if (m_OSOption->service->type != "")
    00189                 {       outStr << "<type>" << m_OSOption->service->type << "</type>" << endl;
    00190                 };
    00191                 if (m_OSOption->service->otherOptions != NULL)
    00192                 {       if (m_OSOption->service->otherOptions->numberOfOtherOptions > 0)
    00193                         {       outStr << "<otherOptions numberOfOtherOptions=\"";
    00194                                 outStr << m_OSOption->service->otherOptions->numberOfOtherOptions << "\">" << endl;
    00195                                 for (int i=0; i < m_OSOption->service->otherOptions->numberOfOtherOptions; i++)
    00196                                 {       outStr << "<other name=\"" << m_OSOption->service->otherOptions->other[i]->name << "\"";
    00197                                         if (m_OSOption->service->otherOptions->other[i]->value != "")
    00198                                                 outStr << " value=\"" << m_OSOption->service->otherOptions->other[i]->value << "\"";
    00199                                         if (m_OSOption->service->otherOptions->other[i]->description != "")
    00200                                                 outStr << " description=\"" << m_OSOption->service->otherOptions->other[i]->description << "\"";
    00201                                         outStr << "/>" << endl;
    00202                                 }
    00203                                 outStr << "</otherOptions>" << endl;
    00204                         }
    00205                 }
    00206                 outStr << "</service>" << endl;
    00207                 cout << "Done with <service> element" << endl;
    00208         };
    00209
    00213         if(m_OSOption->job != NULL)
    00214         {       outStr << "<job>" << endl;
    00215                 if (m_OSOption->job->maxTime != NULL)
    00216                 {       if (m_OSOption->job->maxTime->unit == "")
    00217                                 m_OSOption->job->maxTime->unit = "second";
    00218                         outStr << "<maxTime unit=\"" << m_OSOption->job->maxTime->unit << "\">";
    00219                         if (m_OSOption->job->maxTime->value == OSDBL_MAX)
    00220                                 outStr << "INF" << "</maxTime>" << endl;
    00221                         else
    00222                                 outStr << os_dtoa_format(m_OSOption->job->maxTime->value) << "</maxTime>" << endl;
    00223                 }
    00224                 if (m_OSOption->job->requestedStartTime != "")
    00225                         outStr << "<requestedStartTime>" << m_OSOption->job->requestedStartTime << "</requestedStartTime>" << endl;
    00226                 if (m_OSOption->job->dependencies != NULL)
    00227                 {       if (m_OSOption->job->dependencies->numberOfJobIDs > 0)
    00228                         {       outStr << "<dependencies numberOfJobIDs=\"";
    00229                                 outStr << m_OSOption->job->dependencies->numberOfJobIDs << "\">" << endl;
    00230                                 for (int i=0; i < m_OSOption->job->dependencies->numberOfJobIDs; i++)
    00231                                 {       outStr << "<jobID>" << m_OSOption->job->dependencies->jobID[i] << "</jobID>" << endl;
    00232                                 }
    00233                                 outStr << "</dependencies>" << endl;
    00234                         }
    00235                 }
    00236                 if (m_OSOption->job->requiredDirectories != NULL)
    00237                 {       if (m_OSOption->job->requiredDirectories->numberOfPaths > 0)
    00238                         {       outStr << "<requiredDirectories numberOfPaths=\"";
    00239                                 outStr << m_OSOption->job->requiredDirectories->numberOfPaths << "\">" << endl;
    00240                                 for (int i=0; i < m_OSOption->job->requiredDirectories->numberOfPaths; i++)
    00241                                         outStr << "<path>" << m_OSOption->job->requiredDirectories->path[i] << "</path>" << endl;
    00242                                 outStr << "</requiredDirectories>" << endl;
    00243                         }
    00244                 }
    00245                 if (m_OSOption->job->requiredFiles != NULL)
    00246                 {       if (m_OSOption->job->requiredFiles->numberOfPaths > 0)
    00247                         {       outStr << "<requiredFiles numberOfPaths=\"";
    00248                                 outStr << m_OSOption->job->requiredFiles->numberOfPaths << "\">" << endl;
    00249                                 for (int i=0; i < m_OSOption->job->requiredFiles->numberOfPaths; i++)
    00250                                         outStr << "<path>" << m_OSOption->job->requiredFiles->path[i] << "</path>" << endl;
    00251                                 outStr << "</requiredFiles>" << endl;
    00252                         }
    00253                 }
    00254                 if (m_OSOption->job->directoriesToMake != NULL)
    00255                 {       if (m_OSOption->job->directoriesToMake->numberOfPaths > 0)
    00256                         {       outStr << "<directoriesToMake numberOfPaths=\"";
    00257                                 outStr << m_OSOption->job->directoriesToMake->numberOfPaths << "\">" << endl;
    00258                                 for (int i=0; i < m_OSOption->job->directoriesToMake->numberOfPaths; i++)
    00259                                         outStr << "<path>" << m_OSOption->job->directoriesToMake->path[i] << "</path>" << endl;
    00260                                 outStr << "</directoriesToMake>" << endl;
    00261                         }
    00262                 }
    00263                 if (m_OSOption->job->filesToMake != NULL)
    00264                 {       if (m_OSOption->job->filesToMake->numberOfPaths > 0)
    00265                         {       outStr << "<filesToMake numberOfPaths=\"";
    00266                                 outStr << m_OSOption->job->filesToMake->numberOfPaths << "\">" << endl;
    00267                                 for (int i=0; i < m_OSOption->job->filesToMake->numberOfPaths; i++)
    00268                                         outStr << "<path>" << m_OSOption->job->filesToMake->path[i] << "</path>" << endl;
    00269                                 outStr << "</filesToMake>" << endl;
    00270                         }
    00271                 }
    00272                 if (m_OSOption->job->inputDirectoriesToMove != NULL)
    00273                 {       if (m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs > 0)
    00274                         {       outStr << "<inputDirectoriesToMove numberOfPathPairs=\"";
    00275                                 outStr << m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs << "\">" << endl;
    00276                                 for (int i=0; i < m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs; i++)
    00277                                 {       outStr << "<pathPair";
    00278                                         outStr << " from=\"" << m_OSOption->job->inputDirectoriesToMove->pathPair[i]->from << "\"";
    00279                                         outStr << " to=\"" << m_OSOption->job->inputDirectoriesToMove->pathPair[i]->to << "\"";
    00280                                         if (m_OSOption->job->inputDirectoriesToMove->pathPair[i]->makeCopy)
    00281                                                 outStr << " makeCopy=\"true\"";
    00282                                         outStr << "/>" << endl;
    00283                                 }
    00284                                 outStr << "</inputDirectoriesToMove>" << endl;
    00285                         }
    00286                 }
    00287                 if (m_OSOption->job->inputFilesToMove != NULL)
    00288                 {       if (m_OSOption->job->inputFilesToMove->numberOfPathPairs > 0)
    00289                         {       outStr << "<inputFilesToMove numberOfPathPairs=\"";
    00290                                 outStr << m_OSOption->job->inputFilesToMove->numberOfPathPairs << "\">" << endl;
    00291                                 for (int i=0; i < m_OSOption->job->inputFilesToMove->numberOfPathPairs; i++)
    00292                                 {       outStr << "<pathPair";
    00293                                         outStr << " from=\"" << m_OSOption->job->inputFilesToMove->pathPair[i]->from << "\"";
    00294                                         outStr << " to=\"" << m_OSOption->job->inputFilesToMove->pathPair[i]->to << "\"";
    00295                                         if (m_OSOption->job->inputFilesToMove->pathPair[i]->makeCopy)
    00296                                                 outStr << " makeCopy=\"true\"";
    00297                                         outStr << "/>" << endl;
    00298                                 }
    00299                                 outStr << "</inputFilesToMove>" << endl;
    00300                         }
    00301                 }
    00302                 if (m_OSOption->job->outputFilesToMove != NULL)
    00303                 {       if (m_OSOption->job->outputFilesToMove->numberOfPathPairs > 0)
    00304                         {       outStr << "<outputFilesToMove numberOfPathPairs=\"";
    00305                                 outStr << m_OSOption->job->outputFilesToMove->numberOfPathPairs << "\">" << endl;
    00306                                 for (int i=0; i < m_OSOption->job->outputFilesToMove->numberOfPathPairs; i++)
    00307                                 {       outStr << "<pathPair";
    00308                                         outStr << " from=\"" << m_OSOption->job->outputFilesToMove->pathPair[i]->from << "\"";
    00309                                         outStr << " to=\"" << m_OSOption->job->outputFilesToMove->pathPair[i]->to << "\"";
    00310                                         if (m_OSOption->job->outputFilesToMove->pathPair[i]->makeCopy)
    00311                                                 outStr << " makeCopy=\"true\"";
    00312                                         outStr << "/>" << endl;
    00313                                 }
    00314                                 outStr << "</outputFilesToMove>" << endl;
    00315                         }
    00316                 }
    00317                 if (m_OSOption->job->outputDirectoriesToMove != NULL)
    00318                 {       if (m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs > 0)
    00319                         {       outStr << "<outputDirectoriesToMove numberOfPathPairs=\"";
    00320                                 outStr << m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs << "\">" << endl;
    00321                                 for (int i=0; i < m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs; i++)
    00322                                 {       outStr << "<pathPair";
    00323                                         outStr << " from=\"" << m_OSOption->job->outputDirectoriesToMove->pathPair[i]->from << "\"";
    00324                                         outStr << " to=\"" << m_OSOption->job->outputDirectoriesToMove->pathPair[i]->to << "\"";
    00325                                         if (m_OSOption->job->outputDirectoriesToMove->pathPair[i]->makeCopy)
    00326                                                 outStr << " makeCopy=\"true\"";
    00327                                         outStr << "/>" << endl;
    00328                                 }
    00329                                 outStr << "</outputDirectoriesToMove>" << endl;
    00330                         }
    00331                 }
    00332                 if (m_OSOption->job->filesToDelete != NULL)
    00333                 {       if (m_OSOption->job->filesToDelete->numberOfPaths > 0)
    00334                         {       outStr << "<filesToDelete numberOfPaths=\"";
    00335                                 outStr << m_OSOption->job->filesToDelete->numberOfPaths << "\">" << endl;
    00336                                 for (int i=0; i < m_OSOption->job->filesToDelete->numberOfPaths; i++)
    00337                                         outStr << "<path>" << m_OSOption->job->filesToDelete->path[i] << "</path>" << endl;
    00338                                 outStr << "</filesToDelete>" << endl;
    00339                         }
    00340                 }
    00341                 if (m_OSOption->job->directoriesToDelete != NULL)
    00342                 {       if (m_OSOption->job->directoriesToDelete->numberOfPaths > 0)
    00343                         {       outStr << "<directoriesToDelete numberOfPaths=\"";
    00344                                 outStr << m_OSOption->job->directoriesToDelete->numberOfPaths << "\">" << endl;
    00345                                 for (int i=0; i < m_OSOption->job->directoriesToDelete->numberOfPaths; i++)
    00346                                         outStr << "<path>" << m_OSOption->job->directoriesToDelete->path[i] << "</path>" << endl;
    00347                                 outStr << "</directoriesToDelete>" << endl;
    00348                         }
    00349                 }
    00350                 if (m_OSOption->job->processesToKill != NULL)
    00351                 {       if (m_OSOption->job->processesToKill->numberOfProcesses > 0)
    00352                         {       outStr << "<processesToKill numberOfProcesses=\"";
    00353                                 outStr << m_OSOption->job->processesToKill->numberOfProcesses << "\">" << endl;
    00354                                 for (int i=0; i < m_OSOption->job->processesToKill->numberOfProcesses; i++)
    00355                                         outStr << "<process>" << m_OSOption->job->processesToKill->process[i] << "</process>" << endl;
    00356                                 outStr << "</processesToKill>" << endl;
    00357                         }
    00358                 }
    00359                 if (m_OSOption->job->otherOptions != NULL)
    00360                 {       if (m_OSOption->job->otherOptions->numberOfOtherOptions > 0)
    00361                         {       outStr << "<otherOptions numberOfOtherOptions=\"";
    00362                                 outStr << m_OSOption->job->otherOptions->numberOfOtherOptions << "\">" << endl;
    00363                                 for (int i=0; i < m_OSOption->job->otherOptions->numberOfOtherOptions; i++)
    00364                                 {       outStr << "<other name=\"" << m_OSOption->job->otherOptions->other[i]->name << "\"";
    00365                                         if (m_OSOption->job->otherOptions->other[i]->value != "")
    00366                                                 outStr << " value=\"" << m_OSOption->job->otherOptions->other[i]->value << "\"";
    00367                                         if (m_OSOption->job->otherOptions->other[i]->description != "")
    00368                                                 outStr << " description=\"" << m_OSOption->job->otherOptions->other[i]->description << "\"";
    00369                                         outStr << "/>" << endl;
    00370                                 }
    00371                                 outStr << "</otherOptions>" << endl;
    00372                         }
    00373                 }
    00374                 outStr << "</job>" << endl;
    00375                 cout << "Done with <job> element" << endl;
    00376         };
    00377
    00381         if (m_OSOption->optimization != NULL)
    00382         {       outStr << "<optimization";
    00383                 outStr << " numberOfVariables=\"" << m_OSOption->optimization->numberOfVariables << "\" ";
    00384                 outStr << " numberOfObjectives=\"" << m_OSOption->optimization->numberOfObjectives << "\" ";
    00385                 outStr << " numberOfConstraints=\"" << m_OSOption->optimization->numberOfConstraints << "\" ";
    00386                 outStr << ">" << endl;
    00387                 if (m_OSOption->optimization->variables != NULL)
    00388                 {       outStr << "<variables";
    00389                         if (m_OSOption->optimization->variables->numberOfOtherVariableOptions > 0)
    00390                                 outStr << " numberOfOtherVariableOptions=\"" << m_OSOption->optimization->variables->numberOfOtherVariableOptions << "\"";
    00391                         outStr << ">" << endl;
    00392 #ifdef DEBUG
    00393                         cout << "initialVariableValues: " << (m_OSOption->optimization->variables->initialVariableValues != NULL) << endl;
    00394 #endif
    00395                         if (m_OSOption->optimization->variables->initialVariableValues != NULL)
    00396                         {       outStr << "<initialVariableValues numberOfVar=\"";
    00397                                 outStr << m_OSOption->optimization->variables->initialVariableValues->numberOfVar << "\">" << endl;
    00398                                 for (int i=0; i < m_OSOption->optimization->variables->initialVariableValues->numberOfVar; i++)
    00399                                 {       outStr << "<var";
    00400                                         outStr << " idx=\"" << m_OSOption->optimization->variables->initialVariableValues->var[i]->idx << "\"";
    00401                                         if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value != OSNAN)
    00402                                         {       outStr << " value=\"";
    00403                                                 if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value == OSDBL_MAX)
    00404                                                         outStr << "INF";
    00405                                                 else if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value == -OSDBL_MAX)
    00406                                                         outStr << "-INF";
    00407                                                 else
    00408                                                         outStr << os_dtoa_format(m_OSOption->optimization->variables->initialVariableValues->var[i]->value);
    00409                                         }
    00410                                         outStr << "\"/>" << endl;
    00411                                 }
    00412                                 outStr << "</initialVariableValues>" << endl;
    00413                         }
    00414 #ifdef DEBUG
    00415                         cout << "initialVariableValuesString: " << (m_OSOption->optimization->variables->initialVariableValuesString != NULL) << endl;
    00416 #endif
    00417                         if (m_OSOption->optimization->variables->initialVariableValuesString != NULL)
    00418                         {       outStr << "<initialVariableValuesString numberOfVar=\"";
    00419                                 outStr << m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar << "\">" << endl;
    00420                                 for (int i=0; i < m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar; i++)
    00421                                 {       outStr << "<var";
    00422                                         outStr << " idx=\"" << m_OSOption->optimization->variables->initialVariableValuesString->var[i]->idx << "\"";
    00423                                         outStr << " value=\"" << m_OSOption->optimization->variables->initialVariableValuesString->var[i]->value << "\"";
    00424                                         outStr << "/>" << endl;
    00425                                 }
    00426                                 outStr << "</initialVariableValuesString>" << endl;
    00427                         }
    00428 #ifdef DEBUG
    00429                         cout << "initialBasisStatus: " << (m_OSOption->optimization->variables->initialBasisStatus != NULL) << endl;
    00430 #endif
    00431                         if (m_OSOption->optimization->variables->initialBasisStatus != NULL)
    00432                         {       outStr << "<initialBasisStatus numberOfVar=\"";
    00433                                 outStr << m_OSOption->optimization->variables->initialBasisStatus->numberOfVar << "\">" << endl;
    00434                                 for (int i=0; i < m_OSOption->optimization->variables->initialBasisStatus->numberOfVar; i++)
    00435                                 {       outStr << "<var";
    00436                                         outStr << " idx=\"" << m_OSOption->optimization->variables->initialBasisStatus->var[i]->idx << "\"";
    00437                                         outStr << " value=\"" << m_OSOption->optimization->variables->initialBasisStatus->var[i]->value << "\"";
    00438                                         outStr << "/>" << endl;
    00439                                 }
    00440                                 outStr << "</initialBasisStatus>" << endl;
    00441                         }
    00442 #ifdef DEBUG
    00443                         cout << "integerVariableBranchingWeights: " << (m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL) << endl;
    00444 #endif
    00445                         if (m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL)
    00446                         {       outStr << "<integerVariableBranchingWeights numberOfVar=\"";
    00447                                 outStr << m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar << "\">" << endl;
    00448                                 for (int i=0; i < m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar; i++)
    00449                                 {       outStr << "<var";
    00450                                         outStr << " idx=\"" << m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->idx << "\"";
    00451                                         outStr << " value=\"" << os_dtoa_format(m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->value) << "\"";
    00452                                         outStr << "/>" << endl;
    00453                                 }
    00454                                 outStr << "</integerVariableBranchingWeights>" << endl;
    00455                         }
    00456 #ifdef DEBUG
    00457                         cout << "sosVariableBranchingWeights: " << (m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL) << endl;
    00458 #endif
    00459                         if (m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL)
    00460                         {       outStr << "<sosVariableBranchingWeights numberOfSOS=\"";
    00461 #ifdef DEBUG
    00462                                 cout << "start: numberOfSOS" << endl;
    00463 #endif
    00464                                 outStr << m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS << "\">" << endl;
    00465                                 for (int i=0; i < m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS; i++)
    00466                                 {       outStr << "<sos";
    00467 #ifdef DEBUG
    00468                                 cout << "sosIdx - nvar: " << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar << endl;
    00469 #endif
    00470                                         outStr << " sosIdx=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->sosIdx << "\"";
    00471                                         outStr << " numberOfVar=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar << "\"";
    00472                                         outStr << " groupWeight=\"" << os_dtoa_format(m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->groupWeight) << "\">" << endl;
    00473                                         for (int j=0; j < m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar; j++)
    00474                                         {       outStr << "<var";
    00475 #ifdef DEBUG
    00476                                 cout << "idx" << endl;
    00477 #endif
    00478                                                 outStr << " idx=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->idx << "\"";
    00479                                                 outStr << " value=\"" << os_dtoa_format(m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->value) << "\"";
    00480                                                 outStr << "/>" << endl;
    00481                                         }
    00482                                         outStr << "</sos>" << endl;
    00483                                 }
    00484                                 outStr << "</sosVariableBranchingWeights>" << endl;
    00485                         }
    00486 #ifdef DEBUG
    00487                         printf("\n%s%d\n","Number of other variable options: ",m_OSOption->optimization->variables->numberOfOtherVariableOptions);
    00488 #endif
    00489                         if (m_OSOption->optimization->variables->numberOfOtherVariableOptions > 0)
    00490                                 for (int i=0; i < m_OSOption->optimization->variables->numberOfOtherVariableOptions; i++)
    00491                                 {       outStr << "<other name=\"" << m_OSOption->optimization->variables->other[i]->name << "\"";
    00492 #ifdef DEBUG
    00493                         cout << "option " << i << ":" << endl;
    00494                         cout << "   numberOfVar \'" << m_OSOption->optimization->variables->other[i]->numberOfVar << "\'" << endl;
    00495                         cout << "   value       \'" << m_OSOption->optimization->variables->other[i]->value << "\'" << endl;
    00496                         cout << "   solver      \'" << m_OSOption->optimization->variables->other[i]->solver << "\'" << endl;
    00497                         cout << "   category    \'" << m_OSOption->optimization->variables->other[i]->category << "\'" << endl;
    00498                         cout << "   type        \'" << m_OSOption->optimization->variables->other[i]->type << "\'" << endl;
    00499                         cout << "   description \'" << m_OSOption->optimization->variables->other[i]->description << "\'" << endl;
    00500 #endif
    00501 //                                      if (m_OSOption->optimization->variables->other[i]->numberOfVar > 0)
    00502                                                 outStr << " numberOfVar=\"" << m_OSOption->optimization->variables->other[i]->numberOfVar << "\"";
    00503                                         if (m_OSOption->optimization->variables->other[i]->value != "")
    00504                                                 outStr << " value=\"" << m_OSOption->optimization->variables->other[i]->value << "\"";
    00505                                         if (m_OSOption->optimization->variables->other[i]->solver != "")
    00506                                                 outStr << " solver=\"" << m_OSOption->optimization->variables->other[i]->solver << "\"";
    00507                                         if (m_OSOption->optimization->variables->other[i]->category != "")
    00508                                                 outStr << " category=\"" << m_OSOption->optimization->variables->other[i]->category << "\"";
    00509                                         if (m_OSOption->optimization->variables->other[i]->type != "")
    00510                                                 outStr << " type=\"" << m_OSOption->optimization->variables->other[i]->type << "\"";
    00511                                         if (m_OSOption->optimization->variables->other[i]->description != "")
    00512                                                 outStr << " description=\"" << m_OSOption->optimization->variables->other[i]->description << "\"";
    00513                                         outStr << ">" << endl;
    00514                                         if (m_OSOption->optimization->variables->other[i]->numberOfVar > 0)
    00515                                                 for (int j=0; j < m_OSOption->optimization->variables->other[i]->numberOfVar; j++)
    00516                                                 {       outStr << "<var idx=\"" << m_OSOption->optimization->variables->other[i]->var[j]->idx << "\"";
    00517                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->value != "")
    00518                                                                 outStr << " value=\"" << m_OSOption->optimization->variables->other[i]->var[j]->value << "\"";
    00519                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->lbValue != "")
    00520                                                                 outStr << " lbValue=\"" << m_OSOption->optimization->variables->other[i]->var[j]->lbValue << "\"";
    00521                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->ubValue != "")
    00522                                                                 outStr << " ubValue=\"" << m_OSOption->optimization->variables->other[i]->var[j]->ubValue << "\"";
    00523                                                         outStr << "/>" << endl;
    00524                                                 }
    00525                                         outStr << "</other>" << endl;
    00526                                 }
    00527                         outStr << "</variables>" << endl;
    00528                 }
    00529                 if (m_OSOption->optimization->objectives != NULL)
    00530                 {       outStr << "<objectives";
    00531                         if (m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions > 0)
    00532                                 outStr << " numberOfOtherObjectiveOptions=\"" << m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions << "\"";
    00533                         outStr << ">" << endl;
    00534                         if (m_OSOption->optimization->objectives->initialObjectiveValues != NULL)
    00535                         {       outStr << "<initialObjectiveValues numberOfObj=\"";
    00536                                 outStr << m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj << "\">" << endl;
    00537                                 for (int i=0; i < m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj; i++)
    00538                                 {       outStr << "<obj";
    00539                                         outStr << " idx=\"" << m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->idx << "\"";
    00540                                         if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value != OSNAN)
    00541                                         {       outStr << " value=\"";
    00542                                                 if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value == OSDBL_MAX)
    00543                                                         outStr << "INF";
    00544                                                 else if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value == -OSDBL_MAX)
    00545                                                         outStr << "-INF";
    00546                                                 else
    00547                                                         outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value);
    00548                                         }
    00549                                         outStr << "\"/>" << endl;
    00550                                 }
    00551                                 outStr << "</initialObjectiveValues>" << endl;
    00552                         }
    00553                         if (m_OSOption->optimization->objectives->initialObjectiveBounds != NULL)
    00554                         {       outStr << "<initialObjectiveBounds numberOfObj=\"";
    00555                                 outStr << m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj << "\">" << endl;
    00556                                 for (int i=0; i < m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj; i++)
    00557                                 {       outStr << "<obj";
    00558                                         outStr << " idx=\"" << m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->idx << "\"";
    00559                                         outStr << " lbValue=\"";
    00560                                         if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue == OSDBL_MAX)
    00561                                                 outStr << "INF";
    00562                                         else if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue == -OSDBL_MAX)
    00563                                                 outStr << "-INF";
    00564                                         else
    00565                                                 outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue);
    00566                                         outStr << "\" ubValue=\"";
    00567                                         if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue == OSDBL_MAX)
    00568                                                 outStr << "INF";
    00569                                         else if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue == -OSDBL_MAX)
    00570                                                 outStr << "-INF";
    00571                                         else
    00572                                                 outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue);
    00573                                         outStr << "\"/>" << endl;
    00574                                 }
    00575                                 outStr << "</initialObjectiveBounds>" << endl;
    00576                         }
    00577 #ifdef DEBUG
    00578                         printf("\n%s%d\n","Number of other objective options: ",m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions);
    00579 #endif
    00580                         if (m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions > 0)
    00581                                 for (int i=0; i < m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions; i++)
    00582                                 {       outStr << "<other name=\"" << m_OSOption->optimization->objectives->other[i]->name << "\"";
    00583 #ifdef DEBUG
    00584                         cout << "option " << i << ":" << endl;
    00585                         cout << "   numberOfObj \'" << m_OSOption->optimization->objectives->other[i]->numberOfObj << "\'" << endl;
    00586                         cout << "   value       \'" << m_OSOption->optimization->objectives->other[i]->value << "\'" << endl;
    00587                         cout << "   solver      \'" << m_OSOption->optimization->objectives->other[i]->solver << "\'" << endl;
    00588                         cout << "   category    \'" << m_OSOption->optimization->objectives->other[i]->category << "\'" << endl;
    00589                         cout << "   type        \'" << m_OSOption->optimization->objectives->other[i]->type << "\'" << endl;
    00590                         cout << "   description \'" << m_OSOption->optimization->objectives->other[i]->description << "\'" << endl;
    00591 #endif
    00592
    00593 //                                      if (m_OSOption->optimization->objectives->other[i]->numberOfObj > 0)
    00594                                                 outStr << " numberOfObj=\"" << m_OSOption->optimization->objectives->other[i]->numberOfObj << "\"";
    00595                                         if (m_OSOption->optimization->objectives->other[i]->value != "")
    00596                                                 outStr << " value=\"" << m_OSOption->optimization->objectives->other[i]->value << "\"";
    00597                                         if (m_OSOption->optimization->objectives->other[i]->solver != "")
    00598                                                 outStr << " solver=\"" << m_OSOption->optimization->objectives->other[i]->solver << "\"";
    00599                                         if (m_OSOption->optimization->objectives->other[i]->category != "")
    00600                                                 outStr << " category=\"" << m_OSOption->optimization->objectives->other[i]->category << "\"";
    00601                                         if (m_OSOption->optimization->objectives->other[i]->type != "")
    00602                                                 outStr << " type=\"" << m_OSOption->optimization->objectives->other[i]->type << "\"";
    00603                                         if (m_OSOption->optimization->objectives->other[i]->description != "")
    00604                                                 outStr << " description=\"" << m_OSOption->optimization->objectives->other[i]->description << "\"";
    00605                                         outStr << ">" << endl;
    00606                                         if (m_OSOption->optimization->objectives->other[i]->numberOfObj > 0)
    00607                                                 for (int j=0; j < m_OSOption->optimization->objectives->other[i]->numberOfObj; j++)
    00608                                                 {       outStr << "<var idx=\"" << m_OSOption->optimization->objectives->other[i]->obj[j]->idx << "\"";
    00609                                                         if (m_OSOption->optimization->objectives->other[i]->obj[j]->value != "")
    00610                                                                 outStr << " value=\"" << m_OSOption->optimization->objectives->other[i]->obj[j]->value << "\"";
    00611                                                         outStr << "/>" << endl;
    00612                                                 }
    00613                                         outStr << "</other>" << endl;
    00614                                 }
    00615                         outStr << "</objectives>" << endl;
    00616                 }
    00617                 if (m_OSOption->optimization->constraints != NULL)
    00618                 {       outStr << "<constraints";
    00619                         if (m_OSOption->optimization->constraints->numberOfOtherConstraintOptions > 0)
    00620                                 outStr << " numberOfOtherConstraintOptions=\"" << m_OSOption->optimization->constraints->numberOfOtherConstraintOptions << "\"";
    00621                         outStr << ">" << endl;
    00622                         if (m_OSOption->optimization->constraints->initialConstraintValues != NULL)
    00623                         {       outStr << "<initialConstraintValues numberOfCon=\"";
    00624                                 outStr << m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon << "\">" << endl;
    00625                                 for (int i=0; i < m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon; i++)
    00626                                 {       outStr << "<con";
    00627                                         outStr << " idx=\"" << m_OSOption->optimization->constraints->initialConstraintValues->con[i]->idx << "\"";
    00628                                         if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value != OSNAN)
    00629                                         {       outStr << " value=\"";
    00630                                                 if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value == OSDBL_MAX)
    00631                                                         outStr << "INF";
    00632                                                 else if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value == -OSDBL_MAX)
    00633                                                         outStr << "-INF";
    00634                                                 else
    00635                                                         outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value);
    00636                                         }
    00637                                         outStr << "\"/>" << endl;
    00638                                 }
    00639                                 outStr << "</initialConstraintValues>" << endl;
    00640                         }
    00641                         if (m_OSOption->optimization->constraints->initialDualValues != NULL)
    00642                         {       outStr << "<initialDualValues numberOfCon=\"";
    00643                                 outStr << m_OSOption->optimization->constraints->initialDualValues->numberOfCon << "\">" << endl;
    00644                                 for (int i=0; i < m_OSOption->optimization->constraints->initialDualValues->numberOfCon; i++)
    00645                                 {       outStr << "<con";
    00646                                         outStr << " idx=\"" << m_OSOption->optimization->constraints->initialDualValues->con[i]->idx << "\"";
    00647                                         outStr << " lbDualValue=\"";
    00648                                         if (m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue == OSDBL_MAX)
    00649                                                 outStr << "INF";
    00650                                         else if (m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue == -OSDBL_MAX)
    00651                                                 outStr << "-INF";
    00652                                         else
    00653                                                 outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue);
    00654                                         outStr << "\" ubDualValue=\"";
    00655                                         if (m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue == OSDBL_MAX)
    00656                                                 outStr << "INF";
    00657                                         else if (m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue == -OSDBL_MAX)
    00658                                                 outStr << "-INF";
    00659                                         else
    00660                                                 outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue);
    00661                                         outStr << "\"/>" << endl;
    00662                                 }
    00663                                 outStr << "</initialDualValues>" << endl;
    00664                         }
    00665 #ifdef DEBUG
    00666                         printf("\n%s%d\n","Number of other constraint options: ",m_OSOption->optimization->constraints->numberOfOtherConstraintOptions);
    00667 #endif
    00668                         if (m_OSOption->optimization->constraints->numberOfOtherConstraintOptions > 0)
    00669                                 for (int i=0; i < m_OSOption->optimization->constraints->numberOfOtherConstraintOptions; i++)
    00670                                 {       outStr << "<other name=\"" << m_OSOption->optimization->constraints->other[i]->name << "\"";
    00671 #ifdef DEBUG
    00672                         cout << "option " << i << ":" << endl;
    00673                         cout << "   numberOfCon \'" << m_OSOption->optimization->constraints->other[i]->numberOfCon << "\'" << endl;
    00674                         cout << "   value       \'" << m_OSOption->optimization->constraints->other[i]->value << "\'" << endl;
    00675                         cout << "   solver      \'" << m_OSOption->optimization->constraints->other[i]->solver << "\'" << endl;
    00676                         cout << "   category    \'" << m_OSOption->optimization->constraints->other[i]->category << "\'" << endl;
    00677                         cout << "   type        \'" << m_OSOption->optimization->constraints->other[i]->type << "\'" << endl;
    00678                         cout << "   description \'" << m_OSOption->optimization->constraints->other[i]->description << "\'" << endl;
    00679 #endif
    00680
    00681 //                                      if (m_OSOption->optimization->constraints->other[i]->numberOfCon > 0)
    00682                                                 outStr << " numberOfCon=\"" << m_OSOption->optimization->constraints->other[i]->numberOfCon << "\"";
    00683                                         if (m_OSOption->optimization->constraints->other[i]->value != "")
    00684                                                 outStr << " value=\"" << m_OSOption->optimization->constraints->other[i]->value << "\"";
    00685                                         if (m_OSOption->optimization->constraints->other[i]->solver != "")
    00686                                                 outStr << " solver=\"" << m_OSOption->optimization->constraints->other[i]->solver << "\"";
    00687                                         if (m_OSOption->optimization->constraints->other[i]->category != "")
    00688                                                 outStr << " category=\"" << m_OSOption->optimization->constraints->other[i]->category << "\"";
    00689                                         if (m_OSOption->optimization->constraints->other[i]->type != "")
    00690                                                 outStr << " type=\"" << m_OSOption->optimization->constraints->other[i]->type << "\"";
    00691                                         if (m_OSOption->optimization->constraints->other[i]->description != "")
    00692                                                 outStr << " description=\"" << m_OSOption->optimization->constraints->other[i]->description << "\"";
    00693                                         outStr << ">" << endl;
    00694                                         if (m_OSOption->optimization->constraints->other[i]->numberOfCon > 0)
    00695                                                 for (int j=0; j < m_OSOption->optimization->constraints->other[i]->numberOfCon; j++)
    00696                                                 {       outStr << "<con idx=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->idx << "\"";
    00697                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->value != "")
    00698                                                                 outStr << " value=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->value << "\"";
    00699                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->lbValue != "")
    00700                                                                 outStr << " lbValue=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->lbValue << "\"";
    00701                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->ubValue != "")
    00702                                                                 outStr << " ubValue=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->ubValue << "\"";
    00703                                                         outStr << "/>" << endl;
    00704                                                 }
    00705                                         outStr << "</other>" << endl;
    00706                                 }
    00707                         outStr << "</constraints>" << endl;
    00708                 }
    00709                 if (m_OSOption->optimization->solverOptions != NULL)
    00710                 {       if (m_OSOption->optimization->solverOptions->numberOfSolverOptions > 0)
    00711                         {       outStr << "<solverOptions numberOfSolverOptions=\"";
    00712                                 outStr << m_OSOption->optimization->solverOptions->numberOfSolverOptions << "\">" << endl;
    00713                                 for (int i=0; i < m_OSOption->optimization->solverOptions->numberOfSolverOptions; i++)
    00714                                 {       outStr << "<solverOption name=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->name << "\"";
    00715                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->value != "")
    00716                                                 outStr << " value=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->value << "\"";
    00717                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->solver != "")
    00718                                                 outStr << " solver=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->solver << "\"";
    00719                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->category != "")
    00720                                                 outStr << " category=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->category << "\"";
    00721                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->type != "")
    00722                                                 outStr << " type=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->type << "\"";
    00723                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->description != "")
    00724                                                 outStr << " description=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->description << "\"";
    00725                                         outStr << "/>" << endl;
    00726                                 }
    00727                                 outStr << "</solverOptions>" << endl;
    00728                         }
    00729                 }
    00730                 outStr << "</optimization>" << endl;
    00731         };
    00732         outStr << "</osol>" << endl;
    00733         return outStr.str();
    00734 }// end writeOSoL
    00735
    00736
    00737