diff options
author | Christian Vazquez <christian.vazquez@epfl.ch> | 2011-05-29 10:56:33 +0000 |
---|---|---|
committer | Christian Vazquez <christian.vazquez@epfl.ch> | 2011-05-29 10:56:33 +0000 |
commit | 70d3a283b68a0b3b1928e9d8ff728f20988ff894 (patch) | |
tree | f859416c109a091dd5ab6ec1c8ef6c65753b3857 | |
parent | 947022127d0a53a6a436205cbafe4e7207938de4 (diff) | |
download | vhc-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.cc | 58 | ||||
-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 |