summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Vazquez <christian.vazquez@epfl.ch>2011-05-29 10:56:33 +0000
committerChristian Vazquez <christian.vazquez@epfl.ch>2011-05-29 10:56:33 +0000
commit70d3a283b68a0b3b1928e9d8ff728f20988ff894 (patch)
treef859416c109a091dd5ab6ec1c8ef6c65753b3857
parent947022127d0a53a6a436205cbafe4e7207938de4 (diff)
downloadvhc-70d3a283b68a0b3b1928e9d8ff728f20988ff894.tar.gz
vhc-70d3a283b68a0b3b1928e9d8ff728f20988ff894.tar.bz2
vhc-70d3a283b68a0b3b1928e9d8ff728f20988ff894.zip
Mis à jour le parser.
Renommé et déplacé le fichier ParserTest.cc Renommé et déplacé le fichier accelerator.xml
-rw-r--r--src/main/Parser.cc58
-rw-r--r--src/test/ParserTest.cc (renamed from src/test/simulationTest.cc)7
-rw-r--r--src/test/accelerator.xml (renamed from src/test/simulation.xml)0
3 files changed, 46 insertions, 19 deletions
diff --git a/src/main/Parser.cc b/src/main/Parser.cc
index fa14fb7..f6f60a8 100644
--- a/src/main/Parser.cc
+++ b/src/main/Parser.cc
@@ -5,6 +5,7 @@
* Author: christian
*/
#include <iostream>
+#include <fstream>
#include <string>
#include "Parser.h"
#include "exceptions.h"
@@ -606,19 +607,22 @@ StraightElement* Parser::buildStraightElement(ifstream& file){
//=======================================================lecture atomique===============================================================
/** Cf. header. */
-//TODO lire un double
double Parser::readOneDouble(ifstream& file){
+
double tmp;
+ char ex('x');
+ string str;
file>>ws;
- file>>tmp;
- return tmp;
-}
-/** Cf. header. */
-void Parser::readComma(ifstream& file){
- char trash;
- file>>ws;
- file.get(trash);
+ do{
+ file.get(ex);
+ str=str+ex;
+
+ }while(ex != '<' && ',');
+
+ istringstream is(str);
+ is>>tmp;
+ return tmp;
}
//===========================================================lecture moléculaire========================================================
@@ -626,29 +630,46 @@ void Parser::readComma(ifstream& file){
Vector3D Parser::readVector3D(ifstream& file){
double x = readOneDouble(file);
- readComma(file);
double y = readOneDouble(file);
- readComma(file);
double z = readOneDouble(file);
- file>>ws;
return Vector3D(x,y,z);
}
/** Cf. header. */
tag Parser::readOneTag(ifstream& file){
- tag tmp;
- file>>ws;
- getline(file, tmp);
+
+ tag tmp("<");
+ char ex('x');
+
+ /* Lecture caractère par caractère du flot, et remplissage au fur et à mesure de la string,
+ * jusqu'à la fin de la balise. */
+ do{
+ file>>ws;
+ file.get(ex);
+ tmp=tmp+ex;
+
+ }while(ex != '>');
+
return tmp;
}
/** Cf. header. */
void Parser::closingTag(ifstream& file, std::string ta){
- tag tmp;
+
+ tag tmp("<");
+ char ex('x');
size_t found;
- file>>ws;
- getline(file,tmp);
+
+ /* Lecture caractère par caractère du flot, et remplissage au fur et à mesure de la string,
+ * jusqu'à la fin de la balise. */
+ do{
+ file>>ws;
+ file.get(ex);
+ tmp=tmp+ex;
+
+ }while(ex != '>');
+
//si on a pas de balise fermante (ici il devrait il y en avoir normalement une) alors on lance une exception
found=tmp.find(ta);
if(found == string::npos)
@@ -657,6 +678,7 @@ void Parser::closingTag(ifstream& file, std::string ta){
//===========================================================lecture commentaire========================================================
/**Cf. header. */
void Parser::jumpComment(ifstream& file){
+
tag tmp;
size_t found;
diff --git a/src/test/simulationTest.cc b/src/test/ParserTest.cc
index 485e3d3..42a0c3e 100644
--- a/src/test/simulationTest.cc
+++ b/src/test/ParserTest.cc
@@ -12,9 +12,14 @@
using namespace std;
using namespace vhc;
+/* Ne marche pas. L'ouverture du fichier est impossible.
+ * Pourtant j'ai essayé en exercice le même bout de code
+ * [ que dans la méthode extract() ] pour ouvrir un fichier, et ça marchait....
+ * Je suspecte un problème avec la makefile.*/
+
int main(){
try{
- Parser pars("./simulation.xml");
+ Parser pars("./accelerator.xml");
Accelerator* a = pars.extract();
diff --git a/src/test/simulation.xml b/src/test/accelerator.xml
index 61e4173..61e4173 100644
--- a/src/test/simulation.xml
+++ b/src/test/accelerator.xml