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

Go to the documentation of this file.
00001 /* $Id: OSgLWriter.cpp 3729 2010-10-18 12:25:22Z Gassmann $ */
00019 #include "OSgLWriter.h"
00020 #include "OSGeneral.h"
00021 #include "OSParameters.h" 
00022 #include "OSBase64.h"
00023 #include "OSMathUtil.h"
00024 #include "CoinFinite.hpp"
00025 
00026 #include <sstream>  
00027 
00028 using std::cout;
00029 using std::endl;
00030 using std::ostringstream; 
00031 
00040 std::string writeIntVectorData(IntVector *v, bool addWhiteSpace, bool writeBase64)
00041 {
00042         ostringstream outStr;
00043         int mult, incr;
00044 
00045         if (v->numberOfEl > 0)
00046         {
00047                 if(writeBase64 == false)
00048                 {
00049                         for(int i = 0; i < v->numberOfEl;)
00050                         {
00051                                 getMultIncr(&(v->el[i]), &mult, &incr, (v->numberOfEl) - i, 0);
00052                                 if (mult == 1)
00053                                         outStr << "<el>" ;
00054                                 else if (incr == 0)
00055                                         outStr << "<el mult=\"" << mult << "\">";
00056                                 else
00057                                         outStr << "<el mult=\"" << mult << "\" incr=\"" << incr << "\">";
00058                                 outStr << v->el[i];
00059                                 outStr << "</el>" ;
00060                                 if(addWhiteSpace == true) outStr << endl;
00061                                 i += mult;
00062                         }
00063                 }
00064                 else
00065                 {
00066                         outStr << "<base64BinaryData sizeOf=\"" << sizeof(int) << "\">" ;
00067                         outStr << Base64::encodeb64( (char*)v->el, (v->numberOfEl)*sizeof(int) );
00068                         outStr << "</base64BinaryData>" ;
00069                         if(addWhiteSpace == true) outStr << endl;
00070                 }
00071         }
00072         return outStr.str();
00073 }// end writeIntVectorData
00074 
00081 std::string writeGeneralFileHeader(GeneralFileHeader *v, bool addWhiteSpace)
00082 {
00083         ostringstream outStr;
00084 
00085         if (v->name != "")
00086         {
00087                 outStr << "<name>" << v->name << "</name>" ;
00088                 if(addWhiteSpace == true) outStr << endl;
00089         }
00090 
00091         if (v->source != "")
00092         {
00093                 outStr << "<source>" << v->source << "</source>" ;
00094                 if(addWhiteSpace == true) outStr << endl;
00095         }
00096 
00097         if (v->description != "")
00098         {
00099                 outStr << "<description>" << v->description << "</description>" ;
00100                 if(addWhiteSpace == true) outStr << endl;
00101         }
00102 
00103         if (v->fileCreator != "")
00104         {
00105                 outStr << "<fileCreator>" << v->fileCreator << "</fileCreator>" ;
00106                 if(addWhiteSpace == true) outStr << endl;
00107         }
00108 
00109         if (v->licence != "")
00110         {
00111                 outStr << "<licence>" << v->licence << "</licence>" ;
00112                 if(addWhiteSpace == true) outStr << endl;
00113         }
00114         return outStr.str();
00115 }// end writeGeneralFileHeader
00116 
00117 
00126 std::string writeOtherOptionEnumeration(OtherOptionEnumeration *e, bool addWhiteSpace, bool writeBase64)
00127 {
00128         ostringstream outStr;
00129 
00130         outStr << "<enumeration ";
00131         outStr << "numberOfEl=\"" << e->numberOfEl << "\" ";
00132         if (e->value != "") outStr << "value=\"" << e->value << "\" ";
00133         if (e->description != "") outStr << "description=\"" << e->description << "\" ";
00134         outStr << ">";
00135         outStr << writeIntVectorData(e, addWhiteSpace, writeBase64);
00136         outStr << "</enumeration>";
00137         return outStr.str();
00138 }// end writeOtherOptionEnumeration
00139 
00140 
00141 
00150 std::string writeDblVectorData(DoubleVector *v, bool addWhiteSpace, bool writeBase64)
00151 {
00152         ostringstream outStr;
00153         int mult;
00154 
00155         if (v->numberOfEl > 0)
00156         {
00157                 if(writeBase64 == false)
00158                 {
00159                         for(int i = 0; i < v->numberOfEl;)
00160                         {
00161                                 mult = getMult(&(v->el[i]), (v->numberOfEl) - i);
00162                                 if (mult == 1)
00163                                         outStr << "<el>" ;
00164                                 else 
00165                                         outStr << "<el mult=\"" << mult << "\">";
00166                                 outStr << os_dtoa_format(v->el[i] );
00167                                 outStr << "</el>" ;
00168                                 if(addWhiteSpace == true) outStr << endl;
00169                                 i += mult;
00170                         }
00171                 }
00172                 else
00173                 {
00174                         outStr << "<base64BinaryData sizeOf=\"" << sizeof(double) << "\">" ;
00175                         outStr << Base64::encodeb64( (char*)v->el, (v->numberOfEl)*sizeof(double) );
00176                         outStr << "</base64BinaryData>" ;
00177                         if(addWhiteSpace == true) outStr << endl;
00178                 }
00179         }
00180         return outStr.str();
00181 }// end writeDblVectorData
00182 
00183 
00192 std::string writeBasisStatus(BasisStatus *bs, bool addWhiteSpace, bool writeBase64)
00193 {
00194         ostringstream outStr;
00195         
00196         if (bs->basic != NULL)
00197         {
00198                 outStr << "<basic numberOfEl=\"" << bs->basic->numberOfEl << "\">";
00199                 if(addWhiteSpace == true) outStr << endl;
00200                 outStr << writeIntVectorData(bs->basic, addWhiteSpace, writeBase64);
00201                 outStr << "</basic>";
00202                 if(addWhiteSpace == true) outStr << endl;
00203         }
00204         
00205         if (bs->atLower != NULL)
00206         {
00207                 outStr << "<atLower numberOfEl=\"" << bs->atLower->numberOfEl << "\">";
00208                 if(addWhiteSpace == true) outStr << endl;
00209                 outStr << writeIntVectorData(bs->atLower, addWhiteSpace, writeBase64);
00210                 outStr << "</atLower>";
00211                 if(addWhiteSpace == true) outStr << endl;
00212         }
00213         
00214         if (bs->atUpper != NULL)
00215         {
00216                 outStr << "<atUpper numberOfEl=\"" << bs->atUpper->numberOfEl << "\">";
00217                 if(addWhiteSpace == true) outStr << endl;
00218                 outStr << writeIntVectorData(bs->atUpper, addWhiteSpace, writeBase64);
00219                 outStr << "</atUpper>";
00220                 if(addWhiteSpace == true) outStr << endl;
00221         }
00222         
00223         if (bs->isFree != NULL)
00224         {
00225                 outStr << "<isFree numberOfEl=\"" << bs->isFree->numberOfEl << "\">";
00226                 if(addWhiteSpace == true) outStr << endl;
00227                 outStr << writeIntVectorData(bs->isFree, addWhiteSpace, writeBase64);
00228                 outStr << "</isFree>";
00229                 if(addWhiteSpace == true) outStr << endl;
00230         }
00231         
00232         if (bs->superbasic != NULL)
00233         {
00234                 outStr << "<superbasic numberOfEl=\"" << bs->superbasic->numberOfEl << "\">";
00235                 if(addWhiteSpace == true) outStr << endl;
00236                 outStr << writeIntVectorData(bs->superbasic, addWhiteSpace, writeBase64);
00237                 outStr << "</superbasic>";
00238                 if(addWhiteSpace == true) outStr << endl;
00239         }
00240 
00241         if (bs->unknown != NULL)
00242         {
00243                 outStr << "<unknown numberOfEl=\"" << bs->unknown->numberOfEl << "\">";
00244                 if(addWhiteSpace == true) outStr << endl;
00245                 outStr << writeIntVectorData(bs->unknown, addWhiteSpace, writeBase64);
00246                 outStr << "</unknown>";
00247                 if(addWhiteSpace == true) outStr << endl;
00248         }
00249         
00250         return outStr.str();
00251 }// end writeDblVectorData

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