1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//=====================================================
2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// File   :  dump_file_x_y.hh
3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Author :  L. Plagne <laurent.plagne@edf.fr)>
4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Copyright (C) EDF R&D,  lun sep 30 14:23:20 CEST 2002
5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//=====================================================
6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//
7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This program is free software; you can redistribute it and/or
8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// modify it under the terms of the GNU General Public License
9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// as published by the Free Software Foundation; either version 2
10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// of the License, or (at your option) any later version.
11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//
12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// This program is distributed in the hope that it will be useful,
13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// but WITHOUT ANY WARRANTY; without even the implied warranty of
14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// GNU General Public License for more details.
16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// You should have received a copy of the GNU General Public License
17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// along with this program; if not, write to the Free Software
18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//
20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef XY_FILE_HH
21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define XY_FILE_HH
22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <fstream>
23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream>
24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <string>
25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <vector>
26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std;
27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathbool read_xy_file(const std::string & filename, std::vector<int> & tab_sizes,
29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath                  std::vector<double> & tab_mflops, bool quiet = false)
30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{
31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  std::ifstream input_file (filename.c_str(),std::ios::in);
33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  if (!input_file){
35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    if (!quiet) {
36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath      INFOS("!!! Error opening "<<filename);
37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    }
38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    return false;
39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  }
40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  int nb_point=0;
42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  int size=0;
43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  double mflops=0;
44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  while (input_file >> size >> mflops ){
46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    nb_point++;
47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    tab_sizes.push_back(size);
48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    tab_mflops.push_back(mflops);
49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  }
50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  SCRUTE(nb_point);
51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  input_file.close();
53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  return true;
54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// The Vector class must satisfy the following part of STL vector concept :
57c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//            resize() method
58c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath//            [] operator for seting element
59c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath// the vector element must have the << operator define
60c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
61c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std;
62c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
63c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathtemplate<class Vector_A, class Vector_B>
64c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathvoid dump_xy_file(const Vector_A & X, const Vector_B & Y, const std::string & filename){
65c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
66c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  ofstream outfile (filename.c_str(),ios::out) ;
67c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  int size=X.size();
68c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
69c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  for (int i=0;i<size;i++)
70c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath    outfile << X[i] << " " << Y[i] << endl;
71c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
72c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath  outfile.close();
73c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath}
74c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath
75c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif
76