From 50b1120b804ec403a42ec0d1dd7d12eaf74f7531 Mon Sep 17 00:00:00 2001 From: luca Date: Tue, 27 Apr 2021 22:25:25 +0200 Subject: [PATCH] #13 sono state concluse tutte le funzioni --- include/meccanismo.h | 9 +++++++++ src/meccanismo.cpp | 36 +++++++++++++++++++++++++++++++++++- 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/include/meccanismo.h b/include/meccanismo.h index c140aff..d56119a 100644 --- a/include/meccanismo.h +++ b/include/meccanismo.h @@ -47,6 +47,15 @@ Meccanismo* meccanismo_init(double hman, double hbiel, double bpist, double ango **/ std::string meccanismo_svg(Meccanismo* meccanismo, bool misure); +/** Funzione che legge una stringa svg contenente l'immagine del meccanismo + * e ne costruisce un nuova struct + * + * @param s stringa contenente il testo letto da un file svg + * + * @return struttura pistone contenente i dati trovati all'interno del file + */ +Meccanismo* meccanismo_new(std::string file); + /** * Funzione che libera lo spazio di memoria occupato dall' intero meccanismo diff --git a/src/meccanismo.cpp b/src/meccanismo.cpp index 51e8f13..9fab281 100644 --- a/src/meccanismo.cpp +++ b/src/meccanismo.cpp @@ -58,10 +58,44 @@ std::string meccanismo_svg(Meccanismo* meccanismo, bool misure){ // si ottine una stringa contenente l'svg del meccanismo richiamando le funzioni dei vari componenti std::string s = manovella_svg(meccanismo->manovella,misure) + pist_svg(meccanismo->pistone,misure) + biella_svg(meccanismo->biella,misure); - return s; } +Meccanismo* meccanismo_new(std::string file){ + + Meccanismo* ret = new Meccanismo; + + // si creano le parti del meccanismo tramite la stringa in ingresso + try { + std::cout << "Creazione della struttura manovella."<< std::endl; + ret->manovella = manovella_new(file); + } catch (std::exception& ex) { + std::cout << "something bad happened!" << ex.what() << std::endl; + std::cout << "I caught the exception, will continue" << std::endl; + ret->manovella = NULL; + }; + + try { + std::cout << "Creazione della struttura manovella."<< std::endl; + ret->biella = biella_new(file); + } catch (std::exception& ex) { + std::cout << "something bad happened!" << ex.what() << std::endl; + std::cout << "I caught the exception, will continue" << std::endl; + ret->manovella = NULL; + }; + + try { + std::cout << "Creazione della struttura pistone."<< std::endl; + ret->pistone = pist_new(file); + } catch (std::exception& ex) { + std::cout << "something bad happened!" << ex.what() << std::endl; + std::cout << "I caught the exception, will continue" << std::endl; + ret->pistone = NULL; + }; + + return ret; +} + void meccanismo_del(Meccanismo* meccanismo){ // si richiamano le funzioni per eliminare gli elementi costituenti il meccanismo