48 std::ostringstream outStr;
50 const char dirsep=
'\\';
52 const char dirsep=
'/';
67 bool generalTagPrinted;
68 bool systemTagPrinted;
69 bool serviceTagPrinted;
76 outStr <<
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>" ;
77 outStr <<
"<?xml-stylesheet type=\"text/xsl\" href=\"";
79 outStr <<
"OSrL.xslt\"?>";
81 outStr <<
"<osrl xmlns=\"os.optimizationservices.org\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ";
82 outStr <<
"xsi:schemaLocation=\"os.optimizationservices.org http://www.optimizationservices.org/schemas/";
84 outStr <<
"/OSrL.xsd\" >" ;
98 outStr <<
"<resultHeader>" << endl;
100 outStr <<
"</resultHeader>" << endl;
110 generalTagPrinted =
false;
111 if(
m_OSResult->general->generalStatus != NULL)
113 if (generalTagPrinted ==
false)
115 outStr <<
"<general>" << endl;
116 generalTagPrinted =
true;
118 outStr <<
"<generalStatus";
119 if(
m_OSResult->general->generalStatus->type.length() > 0)
121 outStr <<
" type=\"";
122 outStr <<
m_OSResult->general->generalStatus->type ;
125 if(
m_OSResult->general->generalStatus->description.length() > 0)
127 outStr <<
" description=";
130 if (
m_OSResult->general->generalStatus->numberOfSubstatuses > 0)
132 outStr <<
" numberOfSubstatuses=\"";
133 outStr <<
m_OSResult->general->generalStatus->numberOfSubstatuses;
136 outStr <<
">" << endl;
137 for (
int i=0; i <
m_OSResult->general->generalStatus->numberOfSubstatuses; i++)
139 outStr <<
"<substatus";
140 if (
m_OSResult->general->generalStatus->substatus[i]->name.length() > 0)
142 outStr <<
" name=\"";
143 outStr <<
m_OSResult->general->generalStatus->substatus[i]->name ;
146 if (
m_OSResult->general->generalStatus->substatus[i]->description.length() > 0)
148 outStr <<
" description=\"";
149 outStr <<
m_OSResult->general->generalStatus->substatus[i]->description ;
152 outStr <<
"/>" << endl;
154 outStr <<
"</generalStatus>" << endl;
159 if (generalTagPrinted ==
false)
161 outStr <<
"<general>" << endl;
162 generalTagPrinted =
true;
164 outStr <<
"<message>" +
m_OSResult->general->message +
"</message>" << endl;
166 if(
m_OSResult->general->serviceURI.length() > 0)
168 if (generalTagPrinted ==
false)
170 outStr <<
"<general>" << endl;
171 generalTagPrinted =
true;
173 outStr <<
"<serviceURI>" +
m_OSResult->general->serviceURI +
"</serviceURI>" << endl;
175 if(
m_OSResult->general->serviceName.length() > 0)
177 if (generalTagPrinted ==
false)
179 outStr <<
"<general>" << endl;
180 generalTagPrinted =
true;
182 outStr <<
"<serviceName>" +
m_OSResult->general->serviceName +
"</serviceName>" << endl;
184 if(
m_OSResult->general->instanceName.length() > 0)
186 if (generalTagPrinted ==
false)
188 outStr <<
"<general>" << endl;
189 generalTagPrinted =
true;
191 outStr <<
"<instanceName>" +
m_OSResult->general->instanceName +
"</instanceName>" << endl;
195 if (generalTagPrinted ==
false)
197 outStr <<
"<general>" << endl;
198 generalTagPrinted =
true;
200 outStr <<
"<jobID>" +
m_OSResult->general->jobID +
"</jobID>" << endl;
202 if(
m_OSResult->general->solverInvoked.length() > 0)
204 if (generalTagPrinted ==
false)
206 outStr <<
"<general>" << endl;
207 generalTagPrinted =
true;
209 outStr <<
"<solverInvoked>" +
m_OSResult->general->solverInvoked +
"</solverInvoked>" << endl;
211 if(
m_OSResult->general->timeStamp.length() > 0)
213 if (generalTagPrinted ==
false)
215 outStr <<
"<general>" << endl;
216 generalTagPrinted =
true;
218 outStr <<
"<timeStamp>" +
m_OSResult->general->timeStamp +
"</timeStamp>" << endl;
223 if(
m_OSResult->general->otherResults->numberOfOtherResults > 0)
225 if (generalTagPrinted ==
false)
227 outStr <<
"<general>" << endl;
228 generalTagPrinted =
true;
230 outStr <<
"<otherResults numberOfOtherResults=\"";
231 outStr <<
m_OSResult->general->otherResults->numberOfOtherResults;
232 outStr <<
"\">" << endl;
233 for (
int i=0; i <
m_OSResult->general->otherResults->numberOfOtherResults; i++)
236 if (
m_OSResult->general->otherResults->other[i]->name.length() > 0)
241 if (
m_OSResult->general->otherResults->other[i]->value.length() > 0)
246 if (
m_OSResult->general->otherResults->other[i]->description.length() > 0)
248 outStr <<
" description=";
251 outStr <<
" />" << endl;
253 outStr <<
"</otherResults>" << endl;;
256 if (generalTagPrinted ==
true)
257 outStr <<
"</general>" << endl;
266 systemTagPrinted =
false;
267 if(
m_OSResult->system->systemInformation.length() > 0)
269 if (systemTagPrinted ==
false)
271 outStr <<
"<system>" << endl;
272 systemTagPrinted =
true;
274 outStr <<
"<systemInformation>" +
m_OSResult->system->systemInformation +
"</systemInformation>" << endl;
277 if(
m_OSResult->system->availableDiskSpace != NULL)
279 if (systemTagPrinted ==
false)
281 outStr <<
"<system>" << endl;
282 systemTagPrinted =
true;
284 outStr <<
"<availableDiskSpace";
285 if(
m_OSResult->system->availableDiskSpace->unit.length() > 0)
287 outStr <<
" unit=\"";
288 outStr <<
m_OSResult->system->availableDiskSpace->unit;
291 if(
m_OSResult->system->availableDiskSpace->description.length() > 0)
293 outStr <<
" description=";
298 outStr <<
"</availableDiskSpace>" << endl;
301 if(
m_OSResult->system->availableMemory != NULL)
303 if (systemTagPrinted ==
false)
305 outStr <<
"<system>" << endl;
306 systemTagPrinted =
true;
308 outStr <<
"<availableMemory";
309 if(
m_OSResult->system->availableMemory->unit.length() > 0)
311 outStr <<
" unit=\"";
312 outStr <<
m_OSResult->system->availableMemory->unit;
315 if(
m_OSResult->system->availableMemory->description.length() > 0)
317 outStr <<
" description=";
322 outStr <<
"</availableMemory>" << endl;
325 if(
m_OSResult->system->availableCPUSpeed != NULL)
327 if (systemTagPrinted ==
false)
329 outStr <<
"<system>" << endl;
330 systemTagPrinted =
true;
332 outStr <<
"<availableCPUSpeed";
333 if(
m_OSResult->system->availableCPUSpeed->unit.length() > 0)
335 outStr <<
" unit=\"";
336 outStr <<
m_OSResult->system->availableCPUSpeed->unit ;
339 if(
m_OSResult->system->availableCPUSpeed->description.length() > 0)
341 outStr <<
" description=";
346 outStr <<
"</availableCPUSpeed>" << endl;
349 if(
m_OSResult->system->availableCPUNumber != NULL)
351 if (systemTagPrinted ==
false)
353 outStr <<
"<system>" << endl;
354 systemTagPrinted =
true;
356 outStr <<
"<availableCPUNumber";
357 if(
m_OSResult->system->availableCPUNumber->description.length() > 0)
359 outStr <<
" description=";
363 outStr <<
m_OSResult->system->availableCPUNumber->value;
364 outStr <<
"</availableCPUNumber>" << endl;
369 if(
m_OSResult->system->otherResults->numberOfOtherResults > 0)
371 if (systemTagPrinted ==
false)
373 outStr <<
"<system>" << endl;
374 systemTagPrinted =
true;
376 outStr <<
"<otherResults numberOfOtherResults=\"";
377 outStr <<
m_OSResult->system->otherResults->numberOfOtherResults;
378 outStr <<
"\">" << endl;
379 for (
int i=0; i <
m_OSResult->system->otherResults->numberOfOtherResults; i++)
382 if (
m_OSResult->system->otherResults->other[i]->name.length() > 0)
387 if (
m_OSResult->system->otherResults->other[i]->value.length() > 0)
392 if (
m_OSResult->system->otherResults->other[i]->description.length() > 0)
394 outStr <<
" description=";
397 outStr <<
" />" << endl;
399 outStr <<
"</otherResults>" << endl;
402 if (systemTagPrinted ==
true)
403 outStr <<
"</system>" << endl;
412 serviceTagPrinted =
false;
413 if(
m_OSResult->service->currentState.length() > 0 &&
m_OSResult->service->currentState !=
"unknown")
415 if (serviceTagPrinted ==
false)
417 outStr <<
"<service>" << endl;
418 serviceTagPrinted =
true;
420 outStr <<
"<currentState>" <<
m_OSResult->service->currentState <<
"</currentState>" << endl;
424 if (serviceTagPrinted ==
false)
426 outStr <<
"<service>" << endl;
427 serviceTagPrinted =
true;
429 outStr <<
"<currentJobCount>" <<
m_OSResult->service->currentJobCount <<
"</currentJobCount>" << endl;
433 if (serviceTagPrinted ==
false)
435 outStr <<
"<service>" << endl;
436 serviceTagPrinted =
true;
438 outStr <<
"<totalJobsSoFar>" <<
m_OSResult->service->totalJobsSoFar <<
"</totalJobsSoFar>" << endl;
440 if(
m_OSResult->service->timeServiceStarted.length() > 0 &&
m_OSResult->service->timeServiceStarted !=
"1970-01-01T00:00:00-00:00")
442 if (serviceTagPrinted ==
false)
444 outStr <<
"<service>" << endl;
445 serviceTagPrinted =
true;
447 outStr <<
"<timeServiceStarted>" <<
m_OSResult->service->timeServiceStarted <<
"</timeServiceStarted>" << endl;
449 if(
m_OSResult->service->serviceUtilization != -1.0)
451 if (serviceTagPrinted ==
false)
453 outStr <<
"<service>" << endl;
454 serviceTagPrinted =
true;
456 outStr <<
"<serviceUtilization>" <<
os_dtoa_format(
m_OSResult->service->serviceUtilization) <<
"</serviceUtilization>" << endl;
461 if(
m_OSResult->service->otherResults->numberOfOtherResults > 0)
463 if (serviceTagPrinted ==
false)
465 outStr <<
"<service>" << endl;
466 serviceTagPrinted =
true;
468 outStr <<
"<otherResults numberOfOtherResults=\"";
469 outStr <<
m_OSResult->service->otherResults->numberOfOtherResults;
470 outStr <<
"\">" << endl;
471 for (
int i=0; i <
m_OSResult->service->otherResults->numberOfOtherResults; i++)
474 if (
m_OSResult->service->otherResults->other[i]->name.length() > 0)
479 if (
m_OSResult->service->otherResults->other[i]->value.length() > 0)
484 if (
m_OSResult->service->otherResults->other[i]->description.length() > 0)
486 outStr <<
" description=";
489 outStr <<
" />" << endl;
491 outStr <<
"</otherResults>" << endl;
494 if (serviceTagPrinted ==
true)
495 outStr <<
"</service>" << endl;
504 jobTagPrinted =
false;
508 if (jobTagPrinted ==
false)
510 outStr <<
"<job>" << endl;
511 jobTagPrinted =
true;
513 outStr <<
"<status>" +
m_OSResult->job->status +
"</status>" << endl;
515 if(
m_OSResult->job->submitTime.length() > 0 &&
m_OSResult->job->submitTime !=
"1970-01-01T00:00:00-00:00")
517 if (jobTagPrinted ==
false)
519 outStr <<
"<job>" << endl;
520 jobTagPrinted =
true;
522 outStr <<
"<submitTime>" +
m_OSResult->job->submitTime +
"</submitTime>" << endl;
524 if(
m_OSResult->job->scheduledStartTime.length() > 0 &&
m_OSResult->job->scheduledStartTime !=
"1970-01-01T00:00:00-00:00")
526 if (jobTagPrinted ==
false)
528 outStr <<
"<job>" << endl;
529 jobTagPrinted =
true;
531 outStr <<
"<scheduledStartTime>" +
m_OSResult->job->scheduledStartTime +
"</scheduledStartTime>" << endl;
533 if(
m_OSResult->job->actualStartTime.length() > 0 &&
m_OSResult->job->actualStartTime !=
"1970-01-01T00:00:00-00:00")
535 if (jobTagPrinted ==
false)
537 outStr <<
"<job>" << endl;
538 jobTagPrinted =
true;
540 outStr <<
"<actualStartTime>" +
m_OSResult->job->actualStartTime +
"</actualStartTime>" << endl;
542 if(
m_OSResult->job->endTime.length() > 0 &&
m_OSResult->job->endTime !=
"1970-01-01T00:00:00-00:00")
544 if (jobTagPrinted ==
false)
546 outStr <<
"<job>" << endl;
547 jobTagPrinted =
true;
549 outStr <<
"<endTime>" +
m_OSResult->job->endTime +
"</endTime>" << endl;
552 if (
m_OSResult->job->timingInformation != NULL)
554 if (jobTagPrinted ==
false)
556 outStr <<
"<job>" << endl;
557 jobTagPrinted =
true;
559 outStr <<
"<timingInformation numberOfTimes=\"";
560 outStr <<
m_OSResult->job->timingInformation->numberOfTimes <<
"\">" << endl;
561 for (i=0; i<
m_OSResult->job->timingInformation->numberOfTimes; i++)
564 if (
m_OSResult->job->timingInformation->time[i]->type !=
"")
565 outStr <<
" type=\"" <<
m_OSResult->job->timingInformation->time[i]->type <<
"\"";
566 if (
m_OSResult->job->timingInformation->time[i]->unit !=
"")
567 outStr <<
" unit=\"" <<
m_OSResult->job->timingInformation->time[i]->unit <<
"\"";
568 if (
m_OSResult->job->timingInformation->time[i]->category !=
"")
569 outStr <<
" category=\"" <<
m_OSResult->job->timingInformation->time[i]->category <<
"\"";
570 if (
m_OSResult->job->timingInformation->time[i]->description !=
"")
572 outStr <<
">" << endl;
574 outStr <<
"</time>" << endl;
576 outStr <<
"</timingInformation>" << endl;
581 if (jobTagPrinted ==
false)
583 outStr <<
"<job>" << endl;
584 jobTagPrinted =
true;
586 outStr <<
"<usedDiskSpace";
587 if(
m_OSResult->job->usedDiskSpace->unit.length() > 0)
589 outStr <<
" unit=\"";
590 outStr <<
m_OSResult->job->usedDiskSpace->unit ;
593 if(
m_OSResult->job->usedDiskSpace->description.length() > 0)
595 outStr <<
" description=";
600 outStr <<
"</usedDiskSpace>" << endl;
605 if (jobTagPrinted ==
false)
607 outStr <<
"<job>" << endl;
608 jobTagPrinted =
true;
610 outStr <<
"<usedMemory";
611 if(
m_OSResult->job->usedMemory->unit.length() > 0)
613 outStr <<
" unit=\"";
617 if(
m_OSResult->job->usedMemory->description.length() > 0)
619 outStr <<
" description=";
624 outStr <<
"</usedMemory>" << endl;
629 if (jobTagPrinted ==
false)
631 outStr <<
"<job>" << endl;
632 jobTagPrinted =
true;
634 outStr <<
"<usedCPUSpeed";
635 if(
m_OSResult->job->usedCPUSpeed->unit.length() > 0)
637 outStr <<
" unit=\"";
638 outStr <<
m_OSResult->job->usedCPUSpeed->unit ;
641 if(
m_OSResult->job->usedCPUSpeed->description.length() > 0)
643 outStr <<
" description=";
648 outStr <<
"</usedCPUSpeed>" << endl;
653 if (jobTagPrinted ==
false)
655 outStr <<
"<job>" << endl;
656 jobTagPrinted =
true;
658 outStr <<
"<usedCPUNumber";
659 if(
m_OSResult->job->usedCPUNumber->description.length() > 0)
661 outStr <<
" description=";
665 outStr <<
m_OSResult->job->usedCPUNumber->value;
666 outStr <<
"</usedCPUNumber>" << endl;
671 if(
m_OSResult->job->otherResults->numberOfOtherResults > 0)
673 if (jobTagPrinted ==
false)
675 outStr <<
"<job>" << endl;
676 jobTagPrinted =
true;
678 outStr <<
"<otherResults numberOfOtherResults=\"";
679 outStr <<
m_OSResult->job->otherResults->numberOfOtherResults;
680 outStr <<
"\">" << endl;
681 for (
int i=0; i <
m_OSResult->job->otherResults->numberOfOtherResults; i++)
684 if (
m_OSResult->job->otherResults->other[i]->name.length() > 0)
689 if (
m_OSResult->job->otherResults->other[i]->value.length() > 0)
694 if (
m_OSResult->job->otherResults->other[i]->description.length() > 0)
696 outStr <<
" description=";
699 outStr <<
" />" << endl;
701 outStr <<
"</otherResults>" << endl;
704 if (jobTagPrinted ==
true)
705 outStr <<
"</job>" << endl;
714 outStr <<
"<optimization " ;
715 outStr <<
"numberOfSolutions=\"";
716 outStr <<
m_OSResult->optimization->numberOfSolutions ;
718 if (
m_OSResult->optimization->numberOfVariables >= 0)
720 outStr <<
" numberOfVariables=\"";
721 outStr <<
m_OSResult->optimization->numberOfVariables ;
724 if (
m_OSResult->optimization->numberOfConstraints >= 0)
726 outStr <<
" numberOfConstraints=\"";
727 outStr <<
m_OSResult->optimization->numberOfConstraints ;
730 if (
m_OSResult->optimization->numberOfObjectives >= 0)
732 outStr <<
" numberOfObjectives=\"";
733 outStr <<
m_OSResult->optimization->numberOfObjectives ;
736 outStr <<
">" << endl;
738 for(i = 0; i <
m_OSResult->optimization->numberOfSolutions; i++)
740 if(
m_OSResult->optimization->solution[i] != NULL)
742 outStr <<
"<solution" ;
743 outStr <<
" targetObjectiveIdx=\"";
744 outStr <<
m_OSResult->optimization->solution[i]->targetObjectiveIdx ;
746 if (
m_OSResult->optimization->solution[i]->targetObjectiveName.length() > 0)
748 outStr <<
" targetObjectiveName=";
751 if (
m_OSResult->optimization->solution[i]->weightedObjectives)
752 outStr <<
" weightedObjectives=\"true\"";
753 outStr <<
">" << endl;
754 if(
m_OSResult->optimization->solution[i]->status != NULL)
757 if (
m_OSResult->optimization->solution[i]->status->numberOfSubstatuses > 0)
759 outStr <<
" numberOfSubstatuses=\"";
760 outStr <<
m_OSResult->optimization->solution[i]->status->numberOfSubstatuses ;
763 if(
m_OSResult->optimization->solution[i]->status->type.length() > 0)
765 outStr <<
" type=\"";
766 outStr <<
m_OSResult->optimization->solution[i]->status->type;
769 if(
m_OSResult->optimization->solution[i]->status->description.length() > 0)
771 outStr <<
" description=";
774 outStr <<
">" << endl;
775 for (
int j=0; j <
m_OSResult->optimization->solution[i]->status->numberOfSubstatuses; j++)
777 outStr <<
"<substatus";
778 if(
m_OSResult->optimization->solution[i]->status->substatus[j]->type.length() > 0)
780 outStr <<
" type=\"";
781 outStr <<
m_OSResult->optimization->solution[i]->status->substatus[j]->type;
784 if(
m_OSResult->optimization->solution[i]->status->substatus[j]->description.length() > 0)
786 outStr <<
" description=";
789 outStr <<
"/>" << endl;
791 outStr <<
"</status>" << endl;
794 if(
m_OSResult->optimization->solution[i]->message !=
"")
796 outStr <<
"<message>";
797 outStr <<
m_OSResult->optimization->solution[i]->message;
798 outStr <<
"</message>" << endl;
800 if(
m_OSResult->optimization->solution[i]->variables != NULL)
802 outStr <<
"<variables ";
803 if (
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults > 0)
804 outStr <<
"numberOfOtherVariableResults=\"" <<
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults <<
"\"";
805 outStr <<
">" << endl;
806 if(
m_OSResult->optimization->solution[i]->variables->values != NULL)
810 "output <variables> <values>");
812 outStr <<
"<values numberOfVar=\"" <<
m_OSResult->optimization->solution[i]->variables->values->numberOfVar <<
"\">" << endl;
813 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->values->numberOfVar; j++)
815 if(
m_OSResult->optimization->solution[i]->variables->values->var[j] != NULL)
819 outStr <<
m_OSResult->optimization->solution[i]->variables->values->var[j]->idx;
821 if (
m_OSResult->optimization->solution[i]->variables->values->var[j]->name !=
"")
825 outStr <<
"</var>" << endl;
828 outStr <<
"</values>" << endl;
831 if(
m_OSResult->optimization->solution[i]->variables->valuesString != NULL)
835 "output <variables> <valuesString>");
837 outStr <<
"<valuesString numberOfVar=\"" <<
m_OSResult->optimization->solution[i]->variables->valuesString->numberOfVar <<
"\">" << endl;
838 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->valuesString->numberOfVar; j++)
840 if(
m_OSResult->optimization->solution[i]->variables->valuesString->var[j] != NULL)
844 outStr <<
m_OSResult->optimization->solution[i]->variables->valuesString->var[j]->idx;
846 if (
m_OSResult->optimization->solution[i]->variables->valuesString->var[j]->name !=
"")
849 outStr <<
m_OSResult->optimization->solution[i]->variables->valuesString->var[j]->value;
850 outStr <<
"</var>" << endl;
853 outStr <<
"</valuesString>" << endl;
856 if(
m_OSResult->optimization->solution[i]->variables->basisStatus != NULL)
860 "output <variables> <basisStatus>");
862 outStr <<
"<basisStatus>" << endl;
864 outStr <<
"</basisStatus>" << endl;
870 if(
m_OSResult->optimization->solution[i]->variables->other != NULL)
872 if(
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults > 0)
874 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->variables->numberOfOtherVariableResults; k++)
877 if (
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar > 0)
879 outStr <<
" numberOfVar=\"";
880 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar;
883 else if(
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfEnumerations > 0)
885 outStr <<
" numberOfEnumerations=\"";
886 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfEnumerations;
891 if (
m_OSResult->optimization->solution[i]->variables->other[k]->value !=
"")
893 outStr <<
" value=\"";
894 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->value;
897 if (
m_OSResult->optimization->solution[i]->variables->other[k]->type !=
"")
899 outStr <<
" type=\"";
900 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->type;
903 if (
m_OSResult->optimization->solution[i]->variables->other[k]->description !=
"")
905 outStr <<
" description=";
908 if (
m_OSResult->optimization->solution[i]->variables->other[k]->varType !=
"")
910 outStr <<
" varType=\"";
911 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->varType;
914 if (
m_OSResult->optimization->solution[i]->variables->other[k]->enumType !=
"")
916 outStr <<
" enumType=\"";
917 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->enumType;
920 outStr <<
">" << endl;
921 if(
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar > 0)
923 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfVar; j++)
927 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->var[j]->idx ;
929 if (
m_OSResult->optimization->solution[i]->variables->other[k]->var[j]->name !=
"")
932 outStr <<
m_OSResult->optimization->solution[i]->variables->other[k]->var[j]->value;
933 outStr <<
"</var>" << endl;
936 else if (
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfEnumerations > 0)
938 for(j = 0; j <
m_OSResult->optimization->solution[i]->variables->other[k]->numberOfEnumerations; j++)
944 outStr <<
"</other>" << endl;
948 outStr <<
"</variables>" << endl;
950 if(
m_OSResult->optimization->solution[i]->objectives != NULL)
952 outStr <<
"<objectives ";
953 if (
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults > 0)
954 outStr <<
"numberOfOtherObjectiveResults=\"" <<
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults <<
"\"";
955 outStr <<
">" << endl;
958 "output <objectives> <values>");
960 if(
m_OSResult->optimization->solution[i]->objectives->values != NULL)
962 outStr <<
"<values numberOfObj=\"" <<
m_OSResult->optimization->solution[i]->objectives->values->numberOfObj <<
"\">" << endl;
963 for(j = 0; j <
m_OSResult->optimization->solution[i]->objectives->values->numberOfObj; j++)
965 if(
m_OSResult->optimization->solution[i]->objectives->values->obj[j] != NULL)
969 outStr <<
m_OSResult->optimization->solution[i]->objectives->values->obj[j]->idx;
971 if (
m_OSResult->optimization->solution[i]->objectives->values->obj[j]->name !=
"")
975 outStr <<
"</obj>" << endl;
979 outStr <<
"</values>" << endl;
982 if(
m_OSResult->optimization->solution[i]->objectives->basisStatus != NULL)
986 "output <objectives> <basisStatus>");
988 outStr <<
"<basisStatus>" << endl;
990 outStr <<
"</basisStatus>" << endl;
995 "output <objectives> <other>");
997 if(
m_OSResult->optimization->solution[i]->objectives->other != NULL)
999 if(
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults > 0)
1001 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->objectives->numberOfOtherObjectiveResults; k++)
1003 outStr <<
"<other" ;
1004 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfObj > 0)
1006 outStr <<
" numberOfObj=\"";
1007 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfObj;
1010 else if(
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfEnumerations > 0)
1012 outStr <<
" numberOfEnumerations=\"";
1013 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfEnumerations;
1016 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->name !=
"")
1022 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->value !=
"")
1024 outStr <<
" value=\"";
1026 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->value;
1029 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->type !=
"")
1031 outStr <<
" type=\"";
1032 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->type;
1035 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->description !=
"")
1037 outStr <<
" description=";
1040 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->objType !=
"")
1042 outStr <<
" objType=\"";
1043 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->objType;
1046 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->enumType !=
"")
1048 outStr <<
" enumType=\"";
1049 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->enumType;
1052 outStr <<
">" << endl;
1053 if(
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfObj > 0)
1055 for(j = 0; j <
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfObj; j++)
1058 outStr <<
" idx=\"";
1059 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->obj[j]->idx;
1061 if (
m_OSResult->optimization->solution[i]->objectives->other[k]->obj[j]->name !=
"")
1064 outStr <<
m_OSResult->optimization->solution[i]->objectives->other[k]->obj[j]->value;
1065 outStr <<
"</obj>" << endl;
1068 else if (
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfEnumerations > 0)
1070 for(j = 0; j <
m_OSResult->optimization->solution[i]->objectives->other[k]->numberOfEnumerations; j++)
1076 outStr <<
"</other>" << endl;
1080 outStr <<
"</objectives>" << endl;
1083 if(
m_OSResult->optimization->solution[i]->constraints != NULL)
1085 outStr <<
"<constraints ";
1086 if (
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults > 0)
1087 outStr <<
"numberOfOtherConstraintResults=\"" <<
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults <<
"\"";
1088 outStr <<
">" << endl;
1091 "output <constraints> <dualValues>");
1093 if(
m_OSResult->optimization->solution[i]->constraints->dualValues != NULL)
1095 outStr <<
"<dualValues numberOfCon=\"" <<
m_OSResult->optimization->solution[i]->constraints->dualValues->numberOfCon <<
"\">" << endl;
1096 for(j = 0; j <
m_OSResult->optimization->solution[i]->constraints->dualValues->numberOfCon; j++)
1098 if(
m_OSResult->optimization->solution[i]->constraints->dualValues->con[j] != NULL)
1101 outStr <<
" idx=\"";
1102 outStr <<
m_OSResult->optimization->solution[i]->constraints->dualValues->con[j]->idx;
1104 if (
m_OSResult->optimization->solution[i]->constraints->dualValues->con[j]->name !=
"")
1108 outStr <<
"</con>" << endl;
1111 outStr <<
"</dualValues>" << endl;
1114 if(
m_OSResult->optimization->solution[i]->constraints->basisStatus != NULL)
1118 "output <constraints> <basisStatus>");
1120 outStr <<
"<basisStatus>" << endl;
1122 outStr <<
"</basisStatus>" << endl;
1127 "output <constraints> <other>");
1129 if(
m_OSResult->optimization->solution[i]->constraints->other != NULL)
1131 if(
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults > 0)
1133 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->constraints->numberOfOtherConstraintResults; k++)
1136 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfCon > 0)
1138 outStr <<
" numberOfCon=\"";
1139 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfCon;
1142 else if(
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfEnumerations > 0)
1144 outStr <<
" numberOfEnumerations=\"";
1145 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfEnumerations;
1151 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->value !=
"")
1153 outStr <<
" value=\"";
1155 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->value;
1158 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->type !=
"")
1160 outStr <<
" type=\"";
1161 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->type;
1165 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->description !=
"")
1167 outStr <<
" description=";
1170 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->conType !=
"")
1172 outStr <<
" conType=\"";
1173 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->conType;
1176 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->enumType !=
"")
1178 outStr <<
" enumType=\"";
1179 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->enumType;
1182 outStr <<
">" << endl;
1183 if(
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfCon > 0)
1185 for(j = 0; j <
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfCon; j++)
1188 outStr <<
" idx=\"";
1189 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->con[j]->idx;
1191 if (
m_OSResult->optimization->solution[i]->constraints->other[k]->con[j]->name !=
"")
1194 outStr <<
m_OSResult->optimization->solution[i]->constraints->other[k]->con[j]->value;
1195 outStr <<
"</con>" << endl;
1198 else if (
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfEnumerations > 0)
1200 for(j = 0; j <
m_OSResult->optimization->solution[i]->constraints->other[k]->numberOfEnumerations; j++)
1206 outStr <<
"</other>" << endl;
1210 outStr <<
"</constraints>" << endl;
1213 if(
m_OSResult->optimization->solution[i]->matrixProgramming != NULL)
1217 "output <matrixProgramming>");
1219 outStr <<
"<matrixProgramming";
1220 if (
m_OSResult->optimization->solution[i]->matrixProgramming
1221 ->numberOfOtherMatrixProgrammingResults > 0)
1222 outStr <<
" numberOfOtherMatrixProgrammingResults=\""
1223 <<
m_OSResult->optimization->solution[i]->matrixProgramming
1224 ->numberOfOtherMatrixProgrammingResults <<
"\"";
1225 outStr <<
">" << endl;
1227 if(
m_OSResult->optimization->solution[i]->matrixProgramming->matrixVariables != NULL)
1230 =
m_OSResult->optimization->solution[i]->matrixProgramming->matrixVariables;
1233 "output <matrixVariables>");
1235 outStr <<
"<matrixVariables";
1237 outStr <<
" numberOfOtherMatrixVariableResults=\""
1239 outStr <<
">" << endl;
1241 if (tmpVar->
values != NULL)
1243 outStr <<
"<values numberOfMatrixVar=\""
1248 outStr <<
"</values>" << endl;
1250 tmpVar->
other != NULL)
1254 outStr <<
"<other name=\"" << tmpVar->
other[j]->
name <<
"\"";
1258 outStr <<
" value=\"" << tmpVar->
other[j]->
value <<
"\"";
1260 outStr <<
" type=\"" << tmpVar->
other[j]->
type <<
"\"";
1262 outStr <<
" solver=\"" << tmpVar->
other[j]->
solver <<
"\"";
1264 outStr <<
" category=\"" << tmpVar->
other[j]->
category <<
"\"";
1266 outStr <<
" numberOfMatrixVar=\""
1271 outStr <<
" numberOfEnumerations=\""
1274 outStr <<
" enumType=\"" << tmpVar->
other[j]->
enumType <<
"\"";
1279 outStr <<
"/>" << endl;
1283 outStr <<
">" << endl;
1296 outStr <<
"</other>" << endl;
1300 outStr <<
"</matrixVariables>" << endl;
1302 outStr <<
"</matrixProgramming>" << endl;
1308 if (
m_OSResult->optimization->solution[i]->otherSolutionResults != NULL)
1310 outStr <<
"<otherSolutionResults numberOfOtherSolutionResults=\"";
1311 outStr <<
m_OSResult->optimization->solution[i]->otherSolutionResults->numberOfOtherSolutionResults;
1312 outStr <<
"\">" << std::endl;
1313 for(
int k = 0; k <
m_OSResult->optimization->solution[i]->otherSolutionResults->numberOfOtherSolutionResults; k++)
1315 outStr <<
"<otherSolutionResult";
1318 outStr <<
" value=";
1320 outStr <<
" numberOfItems=\"";
1321 outStr <<
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->numberOfItems;
1323 if (
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->category !=
"")
1324 outStr <<
" category=\"" <<
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->category <<
"\"";
1325 if (
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->description !=
"")
1326 outStr <<
" description=" <<
writeStringData(
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->description);
1327 outStr <<
">" << std::endl;
1328 for(
int j = 0; j <
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->numberOfItems; j++)
1329 outStr <<
"<item>" <<
m_OSResult->optimization->solution[i]->otherSolutionResults->otherSolutionResult[k]->item[j] <<
"</item>" << std::endl;
1330 outStr <<
"</otherSolutionResult>" << std::endl;
1332 outStr <<
"</otherSolutionResults>" << std::endl;
1334 outStr <<
"</solution>" << endl;
1342 if (
m_OSResult->optimization->otherSolverOutput != NULL)
1345 outStr <<
"<otherSolverOutput numberOfSolverOutputs=\"";
1346 outStr <<
m_OSResult->optimization->otherSolverOutput->numberOfSolverOutputs;
1347 outStr <<
"\">" << std::endl;
1348 for(
int k = 0; k <
m_OSResult->optimization->otherSolverOutput->numberOfSolverOutputs; k++)
1350 outStr <<
"<solverOutput";
1351 outStr <<
" name=\"";
1352 outStr <<
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->name;
1354 outStr <<
" numberOfItems=\"";
1355 outStr <<
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->numberOfItems;
1357 if (
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->category !=
"")
1358 outStr <<
" category=\"" <<
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->category <<
"\"";
1359 if (
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->description !=
"")
1360 outStr <<
" description=" <<
writeStringData(
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->description);
1361 outStr <<
">" << std::endl;
1362 for(
int j = 0; j <
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->numberOfItems; j++)
1364 outStr <<
"<item>" <<
m_OSResult->optimization->otherSolverOutput->solverOutput[k]->item[j] <<
"</item>" << std::endl;
1366 outStr <<
"</solverOutput>" << std::endl;
1368 outStr <<
"</otherSolverOutput>" << std::endl;
1371 outStr <<
"</optimization>" << endl;
1373 outStr <<
"</osrl>" << endl ;
1377 return outStr.str();