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