/home/coin/SVN-release/OS-2.3.5/OS/src/OSCommonInterfaces/OSoLWriter.cpp

Go to the documentation of this file.
00001 /* $Id: OSoLWriter.cpp 4120 2011-03-30 06:28:16Z kmartin $ */
00016 //#define DEBUG
00017  
00018 #include "OSoLWriter.h"
00019 #include "OSOption.h"
00020 #include "OSgLWriter.h"
00021 #include "OSGeneral.h"
00022 #include "OSParameters.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         m_bWriteBase64 = false;
00036         m_bWhiteSpace = false;
00037 }
00038 
00039 OSoLWriter::~OSoLWriter(){
00040 }
00041 
00042 
00043 /*char* OSoLWriter::writeOSoLWrap( OSOption *theosoption){
00044         std::string sTmp = writeOSoL( theosoption);
00045         char *ch;
00046     ch = new char[sTmp.size() + 1];
00047     strcpy(ch, sTmp.c_str());
00048         return ch;
00049 }
00050 */
00051 
00052  
00053 std::string OSoLWriter::writeOSoL( OSOption *theosoption)
00054 {       m_OSOption = theosoption;
00055         std::ostringstream outStr;  
00056         #ifdef WIN_
00057         const char      dirsep='\\';
00058         #else
00059         const char      dirsep='/';
00060         #endif
00061         // Set directory containing stylesheet files.
00062         std::string xsltDir;
00063         xsltDir = dirsep == '/' ? "../stylesheets/" : "..\\stylesheets\\";
00064         // always go with '/' -- it is a hypertext reference
00065         xsltDir = "http://www.coin-or.org/OS/stylesheets/";
00066 
00067         bool generalTagPrinted;
00068 #ifdef DEBUG
00069         cout << "in OSoLWriter" << endl;
00070 #endif
00071 
00072         if(m_OSOption == NULL)  return outStr.str(); 
00073         outStr << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ; 
00074         outStr << "<?xml-stylesheet type=\"text/xsl\" href=\"";
00075         outStr << xsltDir;
00076         outStr << "OSoL.xslt\"?>";
00077         outStr << endl;
00078         outStr << "<osol xmlns=\"os.optimizationservices.org\"   xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
00079         outStr << "xsi:schemaLocation=\"os.optimizationservices.org http://www.optimizationservices.org/schemas/";
00080         outStr << OS_SCHEMA_VERSION;
00081         outStr << "/OSoL.xsd\" >" ;
00082         outStr << endl;
00083 
00084 #ifdef DEBUG
00085         cout << "output <optionHeader>" << endl;
00086 #endif
00087         if(m_OSOption->optionHeader != NULL)
00088         {
00089                 outStr << "<optionHeader>" << endl;
00090                 outStr << writeGeneralFileHeader(m_OSOption->optionHeader, true);
00091                 outStr << "</optionHeader>" << endl;
00092         }
00093 
00094 #ifdef DEBUG
00095         cout << "output <general>" << endl;
00096 #endif
00097         if(m_OSOption->general != NULL)
00098         {       
00099                 generalTagPrinted = false;
00100                 if (m_OSOption->general->serviceURI != "")
00101                 {
00102                         if (generalTagPrinted == false)
00103                         {       
00104                                 outStr << "<general>" << endl;
00105                                 generalTagPrinted = true;
00106                         }
00107                         outStr << "<serviceURI>" << m_OSOption->general->serviceURI << "</serviceURI>" << endl;
00108                 }
00109                 if (m_OSOption->general->serviceName != "")
00110                 {
00111                         if (generalTagPrinted == false)
00112                         {       
00113                                 outStr << "<general>" << endl;
00114                                 generalTagPrinted = true;
00115                         }
00116                         outStr << "<serviceName>" << m_OSOption->general->serviceName << "</serviceName>" << endl;
00117                 }
00118                 if (m_OSOption->general->instanceName != "")
00119                 {
00120                         if (generalTagPrinted == false)
00121                         {       
00122                                 outStr << "<general>" << endl;
00123                                 generalTagPrinted = true;
00124                         }
00125                         outStr << "<instanceName>" << m_OSOption->general->instanceName << "</instanceName>" << endl;
00126                 }
00127                 if (m_OSOption->general->instanceLocation != NULL)
00128                 {
00129                         if (generalTagPrinted == false)
00130                         {       
00131                                 outStr << "<general>" << endl;
00132                                 generalTagPrinted = true;
00133                         }
00134                         if (m_OSOption->general->instanceLocation->locationType == "")
00135                         {       outStr << "<instanceLocation>";
00136                         }
00137                         else 
00138                         {       outStr << "<instanceLocation locationType=\"" << m_OSOption->general->instanceLocation->locationType << "\">";
00139                         };
00140                         outStr << m_OSOption->general->instanceLocation->value << "</instanceLocation>" << endl;
00141                 }
00142                 if (m_OSOption->general->jobID != "")
00143                 {
00144                         if (generalTagPrinted == false)
00145                         {       
00146                                 outStr << "<general>" << endl;
00147                                 generalTagPrinted = true;
00148                         }
00149                         outStr << "<jobID>" << m_OSOption->general->jobID << "</jobID>" << endl;
00150                 }
00151                 if (m_OSOption->general->solverToInvoke != "")
00152                 {
00153                         if (generalTagPrinted == false)
00154                         {       
00155                                 outStr << "<general>" << endl;
00156                                 generalTagPrinted = true;
00157                         }
00158                         outStr << "<solverToInvoke>" << m_OSOption->general->solverToInvoke << "</solverToInvoke>" << endl;
00159                 }
00160                 if (m_OSOption->general->license != "")
00161                 {
00162                         if (generalTagPrinted == false)
00163                         {       
00164                                 outStr << "<general>" << endl;
00165                                 generalTagPrinted = true;
00166                         }
00167                         outStr << "<license>" << m_OSOption->general->license << "</license>" << endl;
00168                 }
00169                 if (m_OSOption->general->userName != "")
00170                 {
00171                         if (generalTagPrinted == false)
00172                         {       
00173                                 outStr << "<general>" << endl;
00174                                 generalTagPrinted = true;
00175                         }
00176                         outStr << "<userName>" << m_OSOption->general->userName << "</userName>" << endl;
00177                 }
00178                 if (m_OSOption->general->password != "")
00179                 {
00180                         if (generalTagPrinted == false)
00181                         {       
00182                                 outStr << "<general>" << endl;
00183                                 generalTagPrinted = true;
00184                         }
00185                         outStr << "<password>" << m_OSOption->general->password << "</password>" << endl;
00186                 }
00187                 if (m_OSOption->general->contact != NULL)
00188                 {
00189                         if (generalTagPrinted == false)
00190                         {       
00191                                 outStr << "<general>" << endl;
00192                                 generalTagPrinted = true;
00193                         }
00194                         if (m_OSOption->general->contact->transportType == "")
00195                         {       outStr << "<contact>";
00196                         }
00197                         else 
00198                         {       outStr << "<contact transportType=\"" << m_OSOption->general->contact->transportType << "\">";
00199                         };
00200                         outStr << m_OSOption->general->contact->value << "</contact>" << endl;
00201                 }
00202                 if (m_OSOption->general->otherOptions != NULL)
00203                 {
00204                         if (generalTagPrinted == false)
00205                         {       
00206                                 outStr << "<general>" << endl;
00207                                 generalTagPrinted = true;
00208                         }
00209                         outStr << "<otherOptions numberOfOtherOptions=\""; 
00210                         outStr << m_OSOption->general->otherOptions->numberOfOtherOptions << "\">" << endl;
00211                         for (int i=0; i < m_OSOption->general->otherOptions->numberOfOtherOptions; i++)
00212                         {       outStr << "<other name=\"" << m_OSOption->general->otherOptions->other[i]->name << "\"";
00213                                 if (m_OSOption->general->otherOptions->other[i]->value != "")
00214                                         outStr << " value=\"" << m_OSOption->general->otherOptions->other[i]->value << "\"";
00215                                 if (m_OSOption->general->otherOptions->other[i]->description != "")
00216                                         outStr << " description=\"" << m_OSOption->general->otherOptions->other[i]->description << "\"";
00217                                 outStr << "/>" << endl;
00218                         }
00219                         outStr << "</otherOptions>" << endl;
00220                 }
00221                 if (generalTagPrinted == false)
00222                         outStr << "<general>" << endl;
00223 
00224                 outStr << "</general>" << endl;
00225 #ifdef DEBUG
00226                 cout << "Done with <general> element" << endl;
00227 #endif
00228         };
00229 
00233         if(m_OSOption->system != NULL)
00234         {
00235                 outStr << "<system>" << endl;
00236                 if (m_OSOption->system->minDiskSpace != NULL)
00237                 {
00238                         outStr << "<minDiskSpace";
00239                         if (m_OSOption->system->minDiskSpace->unit != "byte")
00240                                 outStr << " unit=\"" << m_OSOption->system->minDiskSpace->unit << "\"";
00241                         if (m_OSOption->system->minDiskSpace->description != "")
00242                                 outStr << " description=\"" << m_OSOption->system->minDiskSpace->description << "\"";
00243                         outStr << ">";
00244                         outStr << os_dtoa_format(m_OSOption->system->minDiskSpace->value) << "</minDiskSpace>" << endl;
00245                 }
00246                 if (m_OSOption->system->minMemorySize != NULL)
00247                 {
00248                         outStr << "<minMemorySize";
00249                         if (m_OSOption->system->minMemorySize->unit != "byte")
00250                                 outStr << " unit=\"" << m_OSOption->system->minMemorySize->unit << "\"";
00251                         if (m_OSOption->system->minMemorySize->description != "")
00252                                 outStr << " description=\"" << m_OSOption->system->minMemorySize->description << "\"";
00253                         outStr << ">";
00254                         outStr << os_dtoa_format(m_OSOption->system->minMemorySize->value) << "</minMemorySize>" << endl;
00255                 }
00256                 if (m_OSOption->system->minCPUSpeed != NULL)
00257                 {
00258                         outStr << "<minCPUSpeed";
00259                         if (m_OSOption->system->minCPUSpeed->unit != "hertz")
00260                                 outStr << " unit=\"" << m_OSOption->system->minCPUSpeed->unit << "\"";
00261                         if (m_OSOption->system->minCPUSpeed->description != "")
00262                                 outStr << " description=\"" << m_OSOption->system->minCPUSpeed->description << "\"";
00263                         outStr << ">";
00264                         outStr << os_dtoa_format(m_OSOption->system->minCPUSpeed->value) << "</minCPUSpeed>" << endl;
00265                 }
00266                 if (m_OSOption->system->minCPUNumber != NULL)
00267                 {
00268                         outStr << "<minCPUNumber";
00269                         if (m_OSOption->system->minCPUNumber->description != "")
00270                                 outStr << " description=\"" << m_OSOption->system->minCPUNumber->description << "\"";
00271                         outStr << ">";
00272                         outStr << m_OSOption->system->minCPUNumber->value << "</minCPUNumber>" << endl;
00273                 };
00274                 if (m_OSOption->system->otherOptions != NULL)
00275                 {
00276                         outStr << "<otherOptions numberOfOtherOptions=\""; 
00277                         outStr << m_OSOption->system->otherOptions->numberOfOtherOptions << "\">" << endl;
00278                         for (int i=0; i < m_OSOption->system->otherOptions->numberOfOtherOptions; i++)
00279                         {       outStr << "<other name=\"" << m_OSOption->system->otherOptions->other[i]->name << "\"";
00280                                 if (m_OSOption->system->otherOptions->other[i]->value != "")
00281                                         outStr << " value=\"" << m_OSOption->system->otherOptions->other[i]->value << "\"";
00282                                 if (m_OSOption->system->otherOptions->other[i]->description != "")
00283                                         outStr << " description=\"" << m_OSOption->system->otherOptions->other[i]->description << "\"";
00284                                 outStr << "/>" << endl;
00285                         }
00286                         outStr << "</otherOptions>" << endl;
00287                 }
00288                 outStr << "</system>" << endl;
00289 #ifdef DEBUG
00290                 cout << "Done with <system> element" << endl;
00291 #endif
00292         }
00293 
00297         if(m_OSOption->service != NULL)
00298         {       outStr << "<service>" << endl;
00299                 if (m_OSOption->service->type != "")
00300                 {       outStr << "<type>" << m_OSOption->service->type << "</type>" << endl;
00301                 }
00302                 if (m_OSOption->service->otherOptions != NULL)
00303                 {
00304                         outStr << "<otherOptions numberOfOtherOptions=\""; 
00305                         outStr << m_OSOption->service->otherOptions->numberOfOtherOptions << "\">" << endl;
00306                         for (int i=0; i < m_OSOption->service->otherOptions->numberOfOtherOptions; i++)
00307                         {       outStr << "<other name=\"" << m_OSOption->service->otherOptions->other[i]->name << "\"";
00308                                 if (m_OSOption->service->otherOptions->other[i]->value != "")
00309                                         outStr << " value=\"" << m_OSOption->service->otherOptions->other[i]->value << "\"";
00310                                 if (m_OSOption->service->otherOptions->other[i]->description != "")
00311                                         outStr << " description=\"" << m_OSOption->service->otherOptions->other[i]->description << "\"";
00312                                 outStr << "/>" << endl;
00313                         }
00314                         outStr << "</otherOptions>" << endl;
00315                 }
00316                 outStr << "</service>" << endl;
00317 #ifdef DEBUG
00318                 cout << "Done with <service> element" << endl;
00319 #endif
00320         };
00321 
00325         if(m_OSOption->job != NULL)
00326         {       outStr << "<job>" << endl;
00327                 if (m_OSOption->job->maxTime != NULL)
00328                 {       if (m_OSOption->job->maxTime->unit == "")
00329                                 m_OSOption->job->maxTime->unit = "second";
00330                         outStr << "<maxTime unit=\"" << m_OSOption->job->maxTime->unit << "\">";
00331 //                      if (m_OSOption->job->maxTime->value == OSDBL_MAX)
00332 //                              outStr << "INF" << "</maxTime>" << endl;
00333 //                      else
00334                                 outStr << os_dtoa_format(m_OSOption->job->maxTime->value) << "</maxTime>" << endl;
00335                 }
00336                 if (m_OSOption->job->requestedStartTime != "")
00337                         outStr << "<requestedStartTime>" << m_OSOption->job->requestedStartTime << "</requestedStartTime>" << endl;
00338                 if (m_OSOption->job->dependencies != NULL)
00339                 {
00340                         outStr << "<dependencies numberOfJobIDs=\"";
00341                         outStr << m_OSOption->job->dependencies->numberOfJobIDs << "\">" << endl; 
00342                         for (int i=0; i < m_OSOption->job->dependencies->numberOfJobIDs; i++)
00343                                 outStr << "<jobID>" << m_OSOption->job->dependencies->jobID[i] << "</jobID>" << endl;
00344                         outStr << "</dependencies>" << endl;
00345                 }
00346                 if (m_OSOption->job->requiredDirectories != NULL)
00347                 {
00348                         outStr << "<requiredDirectories numberOfPaths=\"";
00349                         outStr << m_OSOption->job->requiredDirectories->numberOfPaths << "\">" << endl; 
00350                         for (int i=0; i < m_OSOption->job->requiredDirectories->numberOfPaths; i++)
00351                                 outStr << "<path>" << m_OSOption->job->requiredDirectories->path[i] << "</path>" << endl;
00352                         outStr << "</requiredDirectories>" << endl;
00353                 }
00354                 if (m_OSOption->job->requiredFiles != NULL)
00355                 {
00356                         outStr << "<requiredFiles numberOfPaths=\"";
00357                         outStr << m_OSOption->job->requiredFiles->numberOfPaths << "\">" << endl; 
00358                         for (int i=0; i < m_OSOption->job->requiredFiles->numberOfPaths; i++)
00359                                 outStr << "<path>" << m_OSOption->job->requiredFiles->path[i] << "</path>" << endl;
00360                         outStr << "</requiredFiles>" << endl;
00361                 }
00362                 if (m_OSOption->job->directoriesToMake != NULL)
00363                 {
00364                         outStr << "<directoriesToMake numberOfPaths=\"";
00365                         outStr << m_OSOption->job->directoriesToMake->numberOfPaths << "\">" << endl; 
00366                         for (int i=0; i < m_OSOption->job->directoriesToMake->numberOfPaths; i++)
00367                                 outStr << "<path>" << m_OSOption->job->directoriesToMake->path[i] << "</path>" << endl;
00368                         outStr << "</directoriesToMake>" << endl;
00369                 }
00370                 if (m_OSOption->job->filesToMake != NULL)
00371                 {
00372                         outStr << "<filesToMake numberOfPaths=\"";
00373                         outStr << m_OSOption->job->filesToMake->numberOfPaths << "\">" << endl; 
00374                         for (int i=0; i < m_OSOption->job->filesToMake->numberOfPaths; i++)
00375                                 outStr << "<path>" << m_OSOption->job->filesToMake->path[i] << "</path>" << endl;
00376                         outStr << "</filesToMake>" << endl;
00377                 }
00378                 if (m_OSOption->job->inputDirectoriesToMove != NULL)
00379                 {
00380                         outStr << "<inputDirectoriesToMove numberOfPathPairs=\"";
00381                         outStr << m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs << "\">" << endl; 
00382                         for (int i=0; i < m_OSOption->job->inputDirectoriesToMove->numberOfPathPairs; i++)
00383                         {       outStr << "<pathPair";
00384                                 outStr << " from=\"" << m_OSOption->job->inputDirectoriesToMove->pathPair[i]->from << "\"";
00385                                 outStr << " to=\"" << m_OSOption->job->inputDirectoriesToMove->pathPair[i]->to << "\"";
00386                                 if (m_OSOption->job->inputDirectoriesToMove->pathPair[i]->makeCopy)
00387                                         outStr << " makeCopy=\"true\""; 
00388                                 outStr << "/>" << endl;
00389                         }
00390                         outStr << "</inputDirectoriesToMove>" << endl;
00391                 }
00392                 if (m_OSOption->job->inputFilesToMove != NULL)
00393                 {
00394                         outStr << "<inputFilesToMove numberOfPathPairs=\"";
00395                         outStr << m_OSOption->job->inputFilesToMove->numberOfPathPairs << "\">" << endl; 
00396                         for (int i=0; i < m_OSOption->job->inputFilesToMove->numberOfPathPairs; i++)
00397                         {       outStr << "<pathPair";
00398                                 outStr << " from=\"" << m_OSOption->job->inputFilesToMove->pathPair[i]->from << "\"";
00399                                 outStr << " to=\"" << m_OSOption->job->inputFilesToMove->pathPair[i]->to << "\"";
00400                                 if (m_OSOption->job->inputFilesToMove->pathPair[i]->makeCopy)
00401                                         outStr << " makeCopy=\"true\""; 
00402                                 outStr << "/>" << endl;
00403                         }
00404                         outStr << "</inputFilesToMove>" << endl;
00405                 }
00406                 if (m_OSOption->job->outputFilesToMove != NULL)
00407                 {
00408                         outStr << "<outputFilesToMove numberOfPathPairs=\"";
00409                         outStr << m_OSOption->job->outputFilesToMove->numberOfPathPairs << "\">" << endl; 
00410                         for (int i=0; i < m_OSOption->job->outputFilesToMove->numberOfPathPairs; i++)
00411                         {       outStr << "<pathPair";
00412                                 outStr << " from=\"" << m_OSOption->job->outputFilesToMove->pathPair[i]->from << "\"";
00413                                 outStr << " to=\"" << m_OSOption->job->outputFilesToMove->pathPair[i]->to << "\"";
00414                                 if (m_OSOption->job->outputFilesToMove->pathPair[i]->makeCopy)
00415                                         outStr << " makeCopy=\"true\""; 
00416                                 outStr << "/>" << endl;
00417                         }
00418                         outStr << "</outputFilesToMove>" << endl;
00419                 }
00420                 if (m_OSOption->job->outputDirectoriesToMove != NULL)
00421                 {
00422                         outStr << "<outputDirectoriesToMove numberOfPathPairs=\"";
00423                         outStr << m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs << "\">" << endl; 
00424                         for (int i=0; i < m_OSOption->job->outputDirectoriesToMove->numberOfPathPairs; i++)
00425                         {       outStr << "<pathPair";
00426                                 outStr << " from=\"" << m_OSOption->job->outputDirectoriesToMove->pathPair[i]->from << "\"";
00427                                 outStr << " to=\"" << m_OSOption->job->outputDirectoriesToMove->pathPair[i]->to << "\"";
00428                                 if (m_OSOption->job->outputDirectoriesToMove->pathPair[i]->makeCopy)
00429                                         outStr << " makeCopy=\"true\""; 
00430                                 outStr << "/>" << endl;
00431                         }
00432                         outStr << "</outputDirectoriesToMove>" << endl;
00433                 }
00434                 if (m_OSOption->job->filesToDelete != NULL)
00435                 {
00436                         outStr << "<filesToDelete numberOfPaths=\"";
00437                         outStr << m_OSOption->job->filesToDelete->numberOfPaths << "\">" << endl; 
00438                         for (int i=0; i < m_OSOption->job->filesToDelete->numberOfPaths; i++)
00439                                 outStr << "<path>" << m_OSOption->job->filesToDelete->path[i] << "</path>" << endl;
00440                         outStr << "</filesToDelete>" << endl;
00441                 }
00442                 if (m_OSOption->job->directoriesToDelete != NULL)
00443                 {
00444                         outStr << "<directoriesToDelete numberOfPaths=\"";
00445                         outStr << m_OSOption->job->directoriesToDelete->numberOfPaths << "\">" << endl; 
00446                         for (int i=0; i < m_OSOption->job->directoriesToDelete->numberOfPaths; i++)
00447                                 outStr << "<path>" << m_OSOption->job->directoriesToDelete->path[i] << "</path>" << endl;
00448                         outStr << "</directoriesToDelete>" << endl;
00449                 }
00450                 if (m_OSOption->job->processesToKill != NULL)
00451                 {
00452                         outStr << "<processesToKill numberOfProcesses=\"";
00453                         outStr << m_OSOption->job->processesToKill->numberOfProcesses << "\">" << endl; 
00454                         for (int i=0; i < m_OSOption->job->processesToKill->numberOfProcesses; i++)
00455                                 outStr << "<process>" << m_OSOption->job->processesToKill->process[i] << "</process>" << endl;
00456                         outStr << "</processesToKill>" << endl;
00457                 }
00458                 if (m_OSOption->job->otherOptions != NULL)
00459                 {
00460                         outStr << "<otherOptions numberOfOtherOptions=\""; 
00461                         outStr << m_OSOption->job->otherOptions->numberOfOtherOptions << "\">" << endl;
00462                         for (int i=0; i < m_OSOption->job->otherOptions->numberOfOtherOptions; i++)
00463                         {       outStr << "<other name=\"" << m_OSOption->job->otherOptions->other[i]->name << "\"";
00464                                 if (m_OSOption->job->otherOptions->other[i]->value != "")
00465                                         outStr << " value=\"" << m_OSOption->job->otherOptions->other[i]->value << "\"";
00466                                 if (m_OSOption->job->otherOptions->other[i]->description != "")
00467                                         outStr << " description=\"" << m_OSOption->job->otherOptions->other[i]->description << "\"";
00468                                 outStr << "/>" << endl;
00469                         }
00470                         outStr << "</otherOptions>" << endl;
00471                 }
00472                 outStr << "</job>" << endl;
00473 #ifdef DEBUG
00474                 cout << "Done with <job> element" << endl;
00475 #endif
00476         };
00477 
00481         if (m_OSOption->optimization != NULL)
00482         {       outStr << "<optimization";
00483                 if (m_OSOption->optimization->numberOfVariables >= 0)
00484                         outStr << " numberOfVariables=\"" << m_OSOption->optimization->numberOfVariables << "\" ";
00485                 if (m_OSOption->optimization->numberOfObjectives >= 0)
00486                         outStr << " numberOfObjectives=\"" << m_OSOption->optimization->numberOfObjectives << "\" ";
00487                 if (m_OSOption->optimization->numberOfConstraints >= 0)
00488                         outStr << " numberOfConstraints=\"" << m_OSOption->optimization->numberOfConstraints << "\" ";
00489                 outStr << ">" << endl;
00490                 if (m_OSOption->optimization->variables != NULL)
00491                 {       outStr << "<variables";
00492                         if (m_OSOption->optimization->variables->numberOfOtherVariableOptions > 0)
00493                                 outStr << " numberOfOtherVariableOptions=\"" << m_OSOption->optimization->variables->numberOfOtherVariableOptions << "\"";
00494                         outStr << ">" << endl;
00495 #ifdef DEBUG
00496                         cout << "initialVariableValues: " << (m_OSOption->optimization->variables->initialVariableValues != NULL) << endl;
00497 #endif
00498                         if (m_OSOption->optimization->variables->initialVariableValues != NULL)
00499                         {       outStr << "<initialVariableValues numberOfVar=\"";
00500                                 outStr << m_OSOption->optimization->variables->initialVariableValues->numberOfVar << "\">" << endl;
00501                                 for (int i=0; i < m_OSOption->optimization->variables->initialVariableValues->numberOfVar; i++)
00502                                 {       outStr << "<var";
00503                                         outStr << " idx=\"" << m_OSOption->optimization->variables->initialVariableValues->var[i]->idx << "\"";
00504                                         if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value != OSNAN)
00505                                         {       outStr << " value=\"";
00506                                                 if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value == OSDBL_MAX)
00507                                                         outStr << "INF";
00508 //                                              else if (m_OSOption->optimization->variables->initialVariableValues->var[i]->value == -OSDBL_MAX)
00509 //                                                      outStr << "-INF";
00510 //                                              else
00511                                                         outStr << os_dtoa_format(m_OSOption->optimization->variables->initialVariableValues->var[i]->value);
00512                                         }
00513                                         outStr << "\"/>" << endl;
00514                                 }
00515                                 outStr << "</initialVariableValues>" << endl;
00516                         }
00517 #ifdef DEBUG
00518                         cout << "initialVariableValuesString: " << (m_OSOption->optimization->variables->initialVariableValuesString != NULL) << endl;
00519 #endif
00520                         if (m_OSOption->optimization->variables->initialVariableValuesString != NULL)
00521                         {       outStr << "<initialVariableValuesString numberOfVar=\"";
00522                                 outStr << m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar << "\">" << endl;
00523                                 for (int i=0; i < m_OSOption->optimization->variables->initialVariableValuesString->numberOfVar; i++)
00524                                 {       outStr << "<var";
00525                                         outStr << " idx=\"" << m_OSOption->optimization->variables->initialVariableValuesString->var[i]->idx << "\"";
00526                                         outStr << " value=\"" << m_OSOption->optimization->variables->initialVariableValuesString->var[i]->value << "\"";
00527                                         outStr << "/>" << endl;
00528                                 }
00529                                 outStr << "</initialVariableValuesString>" << endl;
00530                         }
00531 
00532                         if (m_OSOption->optimization->variables->initialBasisStatus != NULL)
00533                         {
00534 #ifdef DEBUG
00535         cout << "output <variables> <basisStatus>" << endl;
00536 #endif
00537                                 outStr << "<initialBasisStatus>" << endl;
00538                                 outStr << writeBasisStatus(m_OSOption->optimization->variables->initialBasisStatus, m_bWhiteSpace, m_bWriteBase64);
00539                                 outStr << "</initialBasisStatus>" << endl;
00540                         }
00541 
00542 #ifdef DEBUG
00543                         cout << "integerVariableBranchingWeights: " << (m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL) << endl;
00544 #endif
00545                         if (m_OSOption->optimization->variables->integerVariableBranchingWeights != NULL)
00546                         {       outStr << "<integerVariableBranchingWeights numberOfVar=\"";
00547                                 outStr << m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar << "\">" << endl;
00548                                 for (int i=0; i < m_OSOption->optimization->variables->integerVariableBranchingWeights->numberOfVar; i++)
00549                                 {       outStr << "<var";
00550                                         outStr << " idx=\"" << m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->idx << "\"";
00551                                         outStr << " value=\"" << os_dtoa_format(m_OSOption->optimization->variables->integerVariableBranchingWeights->var[i]->value) << "\"";
00552                                         outStr << "/>" << endl;
00553                                 }
00554                                 outStr << "</integerVariableBranchingWeights>" << endl;
00555                         }
00556 #ifdef DEBUG
00557                         cout << "sosVariableBranchingWeights: " << (m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL) << endl;
00558 #endif
00559                         if (m_OSOption->optimization->variables->sosVariableBranchingWeights != NULL)
00560                         {       outStr << "<sosVariableBranchingWeights numberOfSOS=\"";
00561 #ifdef DEBUG
00562                                 cout << "start: numberOfSOS" << endl;
00563 #endif
00564                                 outStr << m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS << "\">" << endl;
00565                                 for (int i=0; i < m_OSOption->optimization->variables->sosVariableBranchingWeights->numberOfSOS; i++)
00566                                 {       outStr << "<sos";
00567 #ifdef DEBUG
00568                                 cout << "sosIdx - nvar: " << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar << endl;
00569 #endif
00570                                         outStr << " sosIdx=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->sosIdx << "\"";
00571                                         outStr << " numberOfVar=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar << "\"";
00572                                         outStr << " groupWeight=\"" << os_dtoa_format(m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->groupWeight) << "\">" << endl;
00573                                         for (int j=0; j < m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->numberOfVar; j++)
00574                                         {       outStr << "<var";
00575 #ifdef DEBUG
00576                                 cout << "idx" << endl;
00577 #endif
00578                                                 outStr << " idx=\"" << m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->idx << "\"";
00579                                                 outStr << " value=\"" << os_dtoa_format(m_OSOption->optimization->variables->sosVariableBranchingWeights->sos[i]->var[j]->value) << "\"";
00580                                                 outStr << "/>" << endl;
00581                                         }
00582                                         outStr << "</sos>" << endl;
00583                                 }
00584                                 outStr << "</sosVariableBranchingWeights>" << endl;
00585                         }
00586 #ifdef DEBUG
00587                         printf("\n%s%d\n","Number of other variable options: ",m_OSOption->optimization->variables->numberOfOtherVariableOptions);
00588 #endif
00589 //                      if (m_OSOption->optimization->variables->numberOfOtherVariableOptions > 0)
00590                                 for (int i=0; i < m_OSOption->optimization->variables->numberOfOtherVariableOptions; i++)
00591                                 {       outStr << "<other name=\"" << m_OSOption->optimization->variables->other[i]->name << "\"";
00592 //                                      if (m_OSOption->optimization->variables->other[i]->numberOfVar > 0)
00593                                                 outStr << " numberOfVar=\"" << m_OSOption->optimization->variables->other[i]->numberOfVar << "\"";
00594 //                                      if (m_OSOption->optimization->variables->other[i]->numberOfEnumerations > 0)
00595                                                 outStr << " numberOfEnumerations=\"" << m_OSOption->optimization->variables->other[i]->numberOfEnumerations << "\"";
00596                                         if (m_OSOption->optimization->variables->other[i]->value != "")
00597                                                 outStr << " value=\"" << m_OSOption->optimization->variables->other[i]->value << "\"";
00598                                         if (m_OSOption->optimization->variables->other[i]->solver != "")
00599                                                 outStr << " solver=\"" << m_OSOption->optimization->variables->other[i]->solver << "\"";
00600                                         if (m_OSOption->optimization->variables->other[i]->category != "")
00601                                                 outStr << " category=\"" << m_OSOption->optimization->variables->other[i]->category << "\"";
00602                                         if (m_OSOption->optimization->variables->other[i]->type != "")
00603                                                 outStr << " type=\"" << m_OSOption->optimization->variables->other[i]->type << "\"";
00604                                         if (m_OSOption->optimization->variables->other[i]->description != "")
00605                                                 outStr << " description=\"" << m_OSOption->optimization->variables->other[i]->description << "\"";
00606                                         outStr << ">" << endl;
00607 //                                      if (m_OSOption->optimization->variables->other[i]->numberOfVar > 0)
00608                                                 for (int j=0; j < m_OSOption->optimization->variables->other[i]->numberOfVar; j++)
00609                                                 {       outStr << "<var idx=\"" << m_OSOption->optimization->variables->other[i]->var[j]->idx << "\"";
00610                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->value != "")
00611                                                                 outStr << " value=\"" << m_OSOption->optimization->variables->other[i]->var[j]->value << "\"";
00612                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->lbValue != "")
00613                                                                 outStr << " lbValue=\"" << m_OSOption->optimization->variables->other[i]->var[j]->lbValue << "\"";
00614                                                         if (m_OSOption->optimization->variables->other[i]->var[j]->ubValue != "")
00615                                                                 outStr << " ubValue=\"" << m_OSOption->optimization->variables->other[i]->var[j]->ubValue << "\"";
00616                                                         outStr << "/>" << endl;
00617                                                 }
00618 //                                      else 
00619                                         {
00620 //                                              if (m_OSOption->optimization->variables->other[i]->numberOfEnumerations > 0)
00621                                                 for (int j=0; j < m_OSOption->optimization->variables->other[i]->numberOfEnumerations; j++)
00622                                                         outStr << writeOtherOptionEnumeration(m_OSOption->optimization->variables->other[i]->enumeration[j], m_bWhiteSpace, m_bWriteBase64);
00623                                         }
00624                                         outStr << "</other>" << endl;
00625                                 }
00626                         outStr << "</variables>" << endl;
00627                 }
00628                 if (m_OSOption->optimization->objectives != NULL)
00629                 {       outStr << "<objectives";
00630 //                      if (m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions > 0)
00631                                 outStr << " numberOfOtherObjectiveOptions=\"" << m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions << "\"";
00632                         outStr << ">" << endl;
00633                         if (m_OSOption->optimization->objectives->initialObjectiveValues != NULL)
00634                         {       outStr << "<initialObjectiveValues numberOfObj=\"";
00635                                 outStr << m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj << "\">" << endl;
00636                                 for (int i=0; i < m_OSOption->optimization->objectives->initialObjectiveValues->numberOfObj; i++)
00637                                 {       outStr << "<obj";
00638                                         outStr << " idx=\"" << m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->idx << "\"";
00639                                         if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value != OSNAN)
00640                                         {       outStr << " value=\"";
00641 //                                              if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value == OSDBL_MAX)
00642 //                                                      outStr << "INF";
00643 //                                              else if (m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value == -OSDBL_MAX)
00644 //                                                      outStr << "-INF";
00645 //                                              else
00646                                                         outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveValues->obj[i]->value);
00647                                                 outStr << "\"" << endl;
00648                                         }
00649                                         outStr << "/>" << endl;
00650                                 }
00651                                 outStr << "</initialObjectiveValues>" << endl;
00652                         }
00653                         if (m_OSOption->optimization->objectives->initialObjectiveBounds != NULL)
00654                         {       outStr << "<initialObjectiveBounds numberOfObj=\"";
00655                                 outStr << m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj << "\">" << endl;
00656                                 for (int i=0; i < m_OSOption->optimization->objectives->initialObjectiveBounds->numberOfObj; i++)
00657                                 {       outStr << "<obj";
00658                                         outStr << " idx=\"" << m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->idx << "\"";
00659                                         outStr << " lbValue=\"";
00660 //                                      if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue == OSDBL_MAX)
00661 //                                              outStr << "INF";
00662 //                                      else if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue == -OSDBL_MAX)
00663 //                                              outStr << "-INF";
00664 //                                      else
00665                                                 outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->lbValue);
00666                                         outStr << "\" ubValue=\"";
00667 //                                      if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue == OSDBL_MAX)
00668 //                                              outStr << "INF";
00669 //                                      else if (m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue == -OSDBL_MAX)
00670 //                                              outStr << "-INF";
00671 //                                      else
00672                                                 outStr << os_dtoa_format(m_OSOption->optimization->objectives->initialObjectiveBounds->obj[i]->ubValue);
00673                                         outStr << "\"/>" << endl;
00674                                 }
00675                                 outStr << "</initialObjectiveBounds>" << endl;
00676                         }
00677 
00678                         if (m_OSOption->optimization->objectives->initialBasisStatus != NULL)
00679                         {
00680 #ifdef DEBUG
00681         cout << "output <objectives> <basisStatus>" << endl;
00682 #endif
00683                                 outStr << "<initialBasisStatus>" << endl;
00684                                 outStr << writeBasisStatus(m_OSOption->optimization->objectives->initialBasisStatus, m_bWhiteSpace, m_bWriteBase64);
00685                                 outStr << "</initialBasisStatus>" << endl;
00686                         }
00687 
00688 #ifdef DEBUG
00689                         printf("\n%s%d\n","Number of other objective options: ",m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions);
00690 #endif
00691 //                      if (m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions > 0)
00692                                 for (int i=0; i < m_OSOption->optimization->objectives->numberOfOtherObjectiveOptions; i++)
00693                                 {
00694                                         outStr << "<other name=\"" << m_OSOption->optimization->objectives->other[i]->name << "\"";
00695 //                                      if (m_OSOption->optimization->objectives->other[i]->numberOfObj > 0)
00696                                                 outStr << " numberOfObj=\"" << m_OSOption->optimization->objectives->other[i]->numberOfObj << "\"";
00697 //                                      if (m_OSOption->optimization->objectives->other[i]->numberOfEnumerations > 0)
00698                                                 outStr << " numberOfEnumerations=\"" << m_OSOption->optimization->objectives->other[i]->numberOfEnumerations << "\"";
00699                                         if (m_OSOption->optimization->objectives->other[i]->value != "")
00700                                                 outStr << " value=\"" << m_OSOption->optimization->objectives->other[i]->value << "\"";
00701                                         if (m_OSOption->optimization->objectives->other[i]->solver != "")
00702                                                 outStr << " solver=\"" << m_OSOption->optimization->objectives->other[i]->solver << "\"";
00703                                         if (m_OSOption->optimization->objectives->other[i]->category != "")
00704                                                 outStr << " category=\"" << m_OSOption->optimization->objectives->other[i]->category << "\"";
00705                                         if (m_OSOption->optimization->objectives->other[i]->type != "")
00706                                                 outStr << " type=\"" << m_OSOption->optimization->objectives->other[i]->type << "\"";
00707                                         if (m_OSOption->optimization->objectives->other[i]->description != "")
00708                                                 outStr << " description=\"" << m_OSOption->optimization->objectives->other[i]->description << "\"";
00709                                         outStr << ">" << endl;
00710 //                                      if (m_OSOption->optimization->objectives->other[i]->numberOfObj > 0)
00711                                                 for (int j=0; j < m_OSOption->optimization->objectives->other[i]->numberOfObj; j++)
00712                                                 {       outStr << "<var idx=\"" << m_OSOption->optimization->objectives->other[i]->obj[j]->idx << "\"";
00713                                                         if (m_OSOption->optimization->objectives->other[i]->obj[j]->value != "")
00714                                                                 outStr << " value=\"" << m_OSOption->optimization->objectives->other[i]->obj[j]->value << "\"";
00715                                                         outStr << "/>" << endl;
00716                                                 }
00717 //                                      else if (m_OSOption->optimization->objectives->other[i]->numberOfEnumerations > 0)
00718                                                 for (int j=0; j < m_OSOption->optimization->objectives->other[i]->numberOfEnumerations; j++)
00719                                                         outStr << writeOtherOptionEnumeration(m_OSOption->optimization->objectives->other[i]->enumeration[j], m_bWhiteSpace, m_bWriteBase64);
00720 
00721                                         outStr << "</other>" << endl;
00722                                 }
00723                         outStr << "</objectives>" << endl;
00724                 }
00725 #ifdef DEBUG
00726         cout << "Done with <objectives> element" << endl;
00727 #endif
00728                 if (m_OSOption->optimization->constraints != NULL)
00729                 {       outStr << "<constraints";
00730 //                      if (m_OSOption->optimization->constraints->numberOfOtherConstraintOptions > 0)
00731                                 outStr << " numberOfOtherConstraintOptions=\"" << m_OSOption->optimization->constraints->numberOfOtherConstraintOptions << "\"";
00732                         outStr << ">" << endl;
00733                         if (m_OSOption->optimization->constraints->initialConstraintValues != NULL)
00734                         {       outStr << "<initialConstraintValues numberOfCon=\"";
00735                                 outStr << m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon << "\">" << endl;
00736                                 for (int i=0; i < m_OSOption->optimization->constraints->initialConstraintValues->numberOfCon; i++)
00737                                 {       outStr << "<con";
00738                                         outStr << " idx=\"" << m_OSOption->optimization->constraints->initialConstraintValues->con[i]->idx << "\"";
00739                                         if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value != OSNAN)
00740                                         {       outStr << " value=\"";
00741 //                                              if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value == OSDBL_MAX)
00742 //                                                      outStr << "INF";
00743 //                                              else if (m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value == -OSDBL_MAX)
00744 //                                                      outStr << "-INF";
00745 //                                              else
00746                                                         outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialConstraintValues->con[i]->value);
00747                                         }
00748                                         outStr << "\"/>" << endl;
00749                                 }
00750                                 outStr << "</initialConstraintValues>" << endl;
00751                         }
00752 
00753                         if (m_OSOption->optimization->constraints->initialDualValues != NULL)
00754                         {       outStr << "<initialDualValues numberOfCon=\"";
00755                                 outStr << m_OSOption->optimization->constraints->initialDualValues->numberOfCon << "\">" << endl;
00756                                 for (int i=0; i < m_OSOption->optimization->constraints->initialDualValues->numberOfCon; i++)
00757                                 {       outStr << "<con";
00758                                         outStr << " idx=\"" << m_OSOption->optimization->constraints->initialDualValues->con[i]->idx << "\"";
00759                                         outStr << " lbDualValue=\"";
00760 //                                      if (m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue == OSDBL_MAX)
00761 //                                              outStr << "INF";
00762 //                                      else if (m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue == -OSDBL_MAX)
00763 //                                              outStr << "-INF";
00764 //                                      else
00765                                                 outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialDualValues->con[i]->lbDualValue);
00766                                         outStr << "\" ubDualValue=\"";
00767 //                                      if (m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue == OSDBL_MAX)
00768 //                                              outStr << "INF";
00769 //                                      else if (m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue == -OSDBL_MAX)
00770 //                                              outStr << "-INF";
00771 //                                      else
00772                                                 outStr << os_dtoa_format(m_OSOption->optimization->constraints->initialDualValues->con[i]->ubDualValue);
00773                                         outStr << "\"/>" << endl;
00774                                 }
00775                                 outStr << "</initialDualValues>" << endl;
00776                         }
00777 
00778                         if (m_OSOption->optimization->constraints->initialBasisStatus != NULL)
00779                         {
00780 #ifdef DEBUG
00781         cout << "output <constraints> <basisStatus>" << endl;
00782 #endif
00783                                 outStr << "<initialBasisStatus>" << endl;
00784                                 outStr << writeBasisStatus(m_OSOption->optimization->constraints->initialBasisStatus, m_bWhiteSpace, m_bWriteBase64);
00785                                 outStr << "</initialBasisStatus>" << endl;
00786                         }
00787 
00788 #ifdef DEBUG
00789                         printf("\n%s%d\n","Number of other constraint options: ",m_OSOption->optimization->constraints->numberOfOtherConstraintOptions);
00790 #endif
00791 //                      if (m_OSOption->optimization->constraints->numberOfOtherConstraintOptions > 0)
00792                                 for (int i=0; i < m_OSOption->optimization->constraints->numberOfOtherConstraintOptions; i++)
00793                                 {       outStr << "<other name=\"" << m_OSOption->optimization->constraints->other[i]->name << "\"";
00794 
00795 //                                      if (m_OSOption->optimization->constraints->other[i]->numberOfCon > 0)
00796                                                 outStr << " numberOfCon=\"" << m_OSOption->optimization->constraints->other[i]->numberOfCon << "\"";
00797 //                                      if (m_OSOption->optimization->constraints->other[i]->numberOfEnumerations > 0)
00798                                                 outStr << " numberOfEnumerations=\"" << m_OSOption->optimization->constraints->other[i]->numberOfEnumerations << "\"";
00799                                         if (m_OSOption->optimization->constraints->other[i]->value != "")
00800                                                 outStr << " value=\"" << m_OSOption->optimization->constraints->other[i]->value << "\"";
00801                                         if (m_OSOption->optimization->constraints->other[i]->solver != "")
00802                                                 outStr << " solver=\"" << m_OSOption->optimization->constraints->other[i]->solver << "\"";
00803                                         if (m_OSOption->optimization->constraints->other[i]->category != "")
00804                                                 outStr << " category=\"" << m_OSOption->optimization->constraints->other[i]->category << "\"";
00805                                         if (m_OSOption->optimization->constraints->other[i]->type != "")
00806                                                 outStr << " type=\"" << m_OSOption->optimization->constraints->other[i]->type << "\"";
00807                                         if (m_OSOption->optimization->constraints->other[i]->description != "")
00808                                                 outStr << " description=\"" << m_OSOption->optimization->constraints->other[i]->description << "\"";
00809                                         outStr << ">" << endl;
00810 //                                      if (m_OSOption->optimization->constraints->other[i]->numberOfCon > 0)
00811                                                 for (int j=0; j < m_OSOption->optimization->constraints->other[i]->numberOfCon; j++)
00812                                                 {       outStr << "<con idx=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->idx << "\"";
00813                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->value != "")
00814                                                                 outStr << " value=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->value << "\"";
00815                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->lbValue != "")
00816                                                                 outStr << " lbValue=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->lbValue << "\"";
00817                                                         if (m_OSOption->optimization->constraints->other[i]->con[j]->ubValue != "")
00818                                                                 outStr << " ubValue=\"" << m_OSOption->optimization->constraints->other[i]->con[j]->ubValue << "\"";
00819                                                         outStr << "/>" << endl;
00820                                                 }
00821 //                                      else if (m_OSOption->optimization->constraints->other[i]->numberOfEnumerations > 0)
00822                                                 for (int j=0; j < m_OSOption->optimization->constraints->other[i]->numberOfEnumerations; j++)
00823                                                         outStr << writeOtherOptionEnumeration(m_OSOption->optimization->constraints->other[i]->enumeration[j], m_bWhiteSpace, m_bWriteBase64);
00824 
00825                                         outStr << "</other>" << endl;
00826                                 }
00827                         outStr << "</constraints>" << endl;
00828                 }
00829 #ifdef DEBUG
00830                 cout << "Done with <constraint> element" << endl;
00831 #endif
00832                 if (m_OSOption->optimization->solverOptions != NULL)
00833                 {
00834 //                      if (m_OSOption->optimization->solverOptions->numberOfSolverOptions > 0)
00835                         {       outStr << "<solverOptions numberOfSolverOptions=\""; 
00836                                 outStr << m_OSOption->optimization->solverOptions->numberOfSolverOptions << "\">" << endl;
00837                                 for (int i=0; i < m_OSOption->optimization->solverOptions->numberOfSolverOptions; i++)
00838                                 {
00839                                         outStr << "<solverOption name=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->name << "\"";
00840                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->value != "")
00841                                                 outStr << " value=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->value << "\"";
00842                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->solver != "")
00843                                                 outStr << " solver=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->solver << "\"";
00844                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->category != "")
00845                                                 outStr << " category=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->category << "\"";
00846                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->type != "")
00847                                                 outStr << " type=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->type << "\"";
00848                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->description != "")
00849                                                 outStr << " description=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->description << "\"";
00850                                         if (m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems == 0)
00851                                                 outStr << "/>" << endl;
00852                                         else
00853                                         {
00854                                                 outStr << " numberOfItems=\"" << m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems << "\">";
00855                                                 for (int k=0; k<m_OSOption->optimization->solverOptions->solverOption[i]->numberOfItems; k++)
00856                                                         outStr << "<item>" << m_OSOption->optimization->solverOptions->solverOption[i]->item[k] << "</item>" << endl;
00857                                                 outStr << "</solverOption>" << endl;
00858                                 }
00859                                 }
00860                                 outStr << "</solverOptions>" << endl;
00861                         }
00862                 }
00863                 outStr << "</optimization>" << endl;
00864         };
00865         outStr << "</osol>" << endl;
00866 #ifdef DEBUG
00867         cout << "Done with <optimization> element" << endl;
00868 #endif
00869         return outStr.str();
00870 }// end writeOSoL
00871 
00872 
00873 

Generated on Thu Mar 31 03:12:51 2011 by  doxygen 1.4.7