Alida-C++ 0.1

dataio/provider/cmdline/ALDNativeDatatypesDataIO.cc

Go to the documentation of this file.
00001 /*
00002  * This file is part of the Alida-C++ library, an
00003  *
00004  * Advanced Library for Integrated Development of Data Analysis Applications.
00005  *
00006  * Copyright (C) 2012 - @YEAR@
00007  *
00008  * This program is free software: you can redistribute it and/or modify
00009  * it under the terms of the GNU General Public License as published by
00010  * the Free Software Foundation, either version 3 of the License, or
00011  * (at your option) any later version.
00012  *
00013  * This program is distributed in the hope that it will be useful,
00014  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00015  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016  * GNU General Public License for more details.
00017  *
00018  * You should have received a copy of the GNU General Public License
00019  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
00020  *
00021  * Fore more information on Alida, visit
00022  *
00023  *    http://www.informatik.uni-halle.de/alida/
00024  *
00025  */
00026 
00027 /*
00028  * Most recent change(s):
00029  *
00030  * $Rev: 101 $
00031  * $Date: 2012-03-12 09:47:11 +0100 (Mo, 12 Mrz 2012) $
00032  * $Author: posch $
00033  *
00034  */
00035 
00036 #include <math.h>
00037 #include <stdio.h>
00038 #include <stdlib.h>
00039 
00040 #include <fstream>
00041 #include <iostream>
00042 #include <sstream>
00043 #include <string>
00044 
00045 #include "dataio/ALDDataIOManagerCmdline.h"
00046 #include "dataio/provider/cmdline/ALDNativeDatatypesDataIO.h"
00047 
00048 using namespace std;
00049 
00050 using namespace Alida;
00051 
00056 REGISTER_PROVIDER(ALDNativeDatatypesDataIO,double,Cmdline);
00057 
00062 REGISTER_PROVIDER(ALDNativeDatatypesDataIO,int,Cmdline);
00063 
00068 REGISTER_PROVIDER(ALDNativeDatatypesDataIO,float,Cmdline);
00069 
00078 void*
00079 ALDNativeDatatypesDataIO::readData(string input, string type) const
00080 {
00081     if (typeid(new float()).name() == type) {
00082         cout << "Reading a float..." << endl;
00083         float* retFloat = new float();
00084         sscanf(input.c_str(),"%f",retFloat);
00085         return retFloat;
00086     }
00087     else if (typeid(new double()).name() == type) {
00088         cout << "Reading a double..." << endl;
00089         double *retDouble = new double();
00090         (*retDouble) = atof(input.c_str());
00091         return retDouble;
00092     }
00093     else if (typeid(new int()).name() == type) {
00094         cout << "Reading an int..." << endl;
00095         int *retInt = new int();
00096         (*retInt) = atoi(input.c_str());
00097         return retInt;
00098 
00099     }
00100     else {
00101         cerr << "ALDNativeDatatypesDataIO: unknown type requested! Error!" << endl;
00102         return NULL;
00103     }
00104 }
00105 
00114 string ALDNativeDatatypesDataIO::writeData(
00115                                                             string format, string type, void *data) const
00116 {
00117     ostringstream outString;
00118     if (typeid(new float()).name() == type) {
00119         outString.setf(ios_base::scientific,ios_base::floatfield);
00120         outString.precision(10);
00121         outString << *((float*)data);
00122     }
00123     else if (typeid(new double()).name() == type) {
00124         outString.setf(ios_base::scientific,ios_base::floatfield);
00125         outString.precision(10);
00126         outString << *((double*)data);
00127     }
00128     else if (typeid(new int()).name() == type) {
00129         outString.precision(10);
00130         outString << *((int*)data);
00131     }
00132     else {
00133         outString << "ALDNativeDatatypesDataIO: unknown type in writing data!";
00134     }
00135     return outString.str();
00136 }
00137 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines