Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members  

SIG_GPPVMData.cpp

00001 #include "SIGEL_GP/SIG_GPPVMData.h"
00002 
00003 #include <qtextstream.h>
00004 #include <pvm3.h>
00005 
00006 #include "SIGEL_Tools/SIG_IO.h"
00007 
00008 SIGEL_GP::SIG_GPPVMData::SIG_GPPVMData(SIGEL_Robot::SIG_Robot& robot,
00009                                        SIGEL_Environment::SIG_Environment& environment,
00010                                        SIGEL_Simulation::SIG_SimulationParameters& simulationParameter,
00011                                        QString fitnessName,
00012                                        bool visualize)
00013   : robot(robot),
00014     environment(environment),
00015     simulationParameter(simulationParameter),
00016     fitnessName(fitnessName),
00017     visualize(visualize) {};
00018 
00019 SIGEL_GP::SIG_GPPVMData::~SIG_GPPVMData() {};
00020 
00021 
00022 void SIGEL_GP::SIG_GPPVMData::sendQStringToPVM(QString str, int taskId, int messageId)
00023 {
00024   int finalLength = str.length() + 1;
00025 
00026   pvm_initsend(PvmDataDefault);
00027   pvm_pkint(&finalLength,1,1);
00028 
00029   QCString qCStringBuffer = str.utf8();
00030   char const *cStringBuffer = qCStringBuffer;
00031   pvm_pkstr( const_cast<char*>( cStringBuffer ) );
00032   pvm_send(taskId, messageId);
00033 };
00034 
00035 QString SIGEL_GP::SIG_GPPVMData::getQStringFromPVM(int taskId, int messageId)
00036 {
00037   int length;
00038 
00039   pvm_recv(taskId,messageId);
00040   pvm_upkint(&length,1,1);
00041 
00042   QArray< char > buffer( length );
00043 
00044   pvm_upkstr( buffer.data() );
00045 
00046   QString result( buffer.data() );
00047 
00048   return result;
00049 };
00050 
00051 QString SIGEL_GP::SIG_GPPVMData::cutAfterFiveHashes(QTextStream& source)
00052 {
00053   QString fiveHashes( "#####" );
00054   QString bufferString;
00055   QString resultString;
00056 
00057   while ( (bufferString = source.readLine()) != fiveHashes )
00058     resultString += ( bufferString + "\n" );
00059 
00060   return resultString;
00061 };
00062 
00063 void SIGEL_GP::SIG_GPPVMData::loadPVMDataTransfer(QTextStream & file,
00064                                                   SIGEL_Program::SIG_Program & program)
00065 {
00066   file.precision( 50 );
00067 
00068   QString simParString = cutAfterFiveHashes( file );
00069   QString environmentString = cutAfterFiveHashes( file );
00070   QString programString = cutAfterFiveHashes( file );
00071   QString robotString = cutAfterFiveHashes( file );
00072   QString miscString = cutAfterFiveHashes( file );
00073 
00074   QTextStream simParStream( &simParString, IO_ReadOnly );
00075   QTextStream environmentStream( &environmentString, IO_ReadOnly );
00076   QTextStream programStream( &programString, IO_ReadOnly );
00077   QTextStream robotStream( &robotString, IO_ReadOnly );
00078   QTextStream miscStream( &miscString, IO_ReadOnly );
00079 
00080   simulationParameter.readFromFile( simParStream );
00081   environment.readFromFile( environmentStream );
00082   program.readFromFile( programStream );
00083   robot.readFromFileTransfer( robotStream );
00084 
00085   QString bufferString;
00086   bufferString = miscStream.readLine(); // FITNESSNAME
00087   bufferString = miscStream.readLine();
00088   fitnessName = bufferString;
00089   bufferString = miscStream.readLine(); //VISUALIZE
00090   bufferString = miscStream.readLine();
00091   int visuInt = bufferString.toInt();
00092   if (visuInt == 1)
00093     visualize=true;
00094   else
00095     visualize=false;  
00096 };
00097 
00098 void SIGEL_GP::SIG_GPPVMData::savePVMDataTransfer(QTextStream & file,
00099                                                   SIGEL_Program::SIG_Program const &program)
00100 {
00101   file.precision( 50 );
00102 
00103   SIGEL_Program::SIG_Program &usedProgram = const_cast< SIGEL_Program::SIG_Program& >(program);
00104 
00105   QString fiveHashesLine("\n#####\n");
00106   simulationParameter.writeToFile(file);
00107   file << fiveHashesLine;
00108   environment.writeToFile(file);
00109   file << fiveHashesLine;
00110   usedProgram.writeToFile(file);
00111   file << fiveHashesLine;
00112   robot.writeToFileTransfer(file);
00113   file << fiveHashesLine;
00114   file << "FITNESSNAME\n";
00115   file << fitnessName << "\n";
00116   file << "VISUALIZE\n";
00117   if (visualize)
00118     file << 1 << "\n";
00119   else
00120     file << 0 << "\n"; 
00121   file << fiveHashesLine;
00122 };
00123 
00124 void SIGEL_GP::SIG_GPPVMData::setVisualize(bool visu)
00125 {
00126   visualize=visu;
00127 };
00128 
00129 bool SIGEL_GP::SIG_GPPVMData::getVisualize()
00130 {
00131   return visualize;
00132 };
00133 
00134 QString SIGEL_GP::SIG_GPPVMData::getFitnessFunctionName()
00135 {
00136   return fitnessName;
00137 };
00138 
00139 void SIGEL_GP::SIG_GPPVMData::setFitnessFunctionName( QString name )
00140 {
00141   fitnessName = name;
00142 };

Generated at Mon Sep 3 01:32:25 2001 for PG 368 - SIGEL by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000