MercuryDPM  Alpha
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
File.cc File Reference
#include "File.h"
#include <string>
#include <sstream>
#include <iostream>
#include <iomanip>
#include "Logger.h"

Go to the source code of this file.

Functions

std::string to_string_padded (unsigned int value)
 Pads the number This function tries to pad the number to 4 digits, which is used when you create multiple files with padded numbers. Any numbers larger than 4 digits return unmodified. More...
 
std::ostream & operator<< (std::ostream &os, FileType fileType)
 Writes the FileType as a human-readable string into the output stream 'os'. More...
 
std::istream & operator>> (std::istream &is, FileType &fileType)
 Reads the FileType from an input stream 'is'. More...
 
std::ostream & operator<< (std::ostream &os, const File &o)
 
std::istream & operator>> (std::istream &is, File &o)
 

Function Documentation

std::ostream& operator<< ( std::ostream &  os,
FileType  fileType 
)

Writes the FileType as a human-readable string into the output stream 'os'.

Parameters
[in,out]osoutput stream to which the fileType is written
[in]fileTypethe fileType that has to be written to the output stream
Returns
the output stream "os" that is returned after adding the fileType string

Definition at line 73 of file File.cc.

References MULTIPLE_FILES, MULTIPLE_FILES_PADDED, NO_FILE, and ONE_FILE.

74 {
75  if (fileType == FileType::NO_FILE)
76  os << "NO_FILE";
77  else if (fileType == FileType::ONE_FILE)
78  os << "ONE_FILE";
79  else if (fileType == FileType::MULTIPLE_FILES)
80  os << "MULTIPLE_FILES";
81  else if (fileType == FileType::MULTIPLE_FILES_PADDED)
82  os << "MULTIPLE_FILES_PADDED";
83  else
84  {
85  std::cerr << "FileType not recognized" << std::endl;
86  exit(-1);
87  }
88  return os;
89 }
each time-step will be written into/read from separate files numbered consecutively, with numbers padded by zeros to a minimum of four digits: name_.0000, name_.0001, ..
file will not be created/read
all data will be written into/ read from a single file called name_
each time-step will be written into/read from separate files numbered consecutively: name_...
std::ostream& operator<< ( std::ostream &  os,
const File o 
)
Parameters
[in,out]os
[in]o
Returns
std::ostream& os

Definition at line 404 of file File.cc.

References File::write().

405 {
406  o.write(os);
407  return os;
408 }
void write(std::ostream &os) const
print function, which accepts an std::stringstream as input.
Definition: File.cc:388
std::istream& operator>> ( std::istream &  is,
FileType fileType 
)

Reads the FileType from an input stream 'is'.

Parameters
[in,out]isThe input stream from which the fileType is read
[in]fileTypeThe fileType that has to be read from the input stream
Returns
the input stream "is" (that is returned after the fileType string is read out)

Definition at line 96 of file File.cc.

References MULTIPLE_FILES, MULTIPLE_FILES_PADDED, NO_FILE, and ONE_FILE.

97 {
98  std::string fileTypeString;
99  is >> fileTypeString;
100  if (!fileTypeString.compare("NO_FILE"))
101  fileType = FileType::NO_FILE;
102  else if (!fileTypeString.compare("ONE_FILE"))
103  fileType = FileType::ONE_FILE;
104  else if (!fileTypeString.compare("MULTIPLE_FILES"))
105  fileType = FileType::MULTIPLE_FILES;
106  else if (!fileTypeString.compare("MULTIPLE_FILES_PADDED"))
108  else
109  {
110  std::cerr << "FileType not recognized" << std::endl;
111  exit(-1);
112  }
113  return is;
114 }
each time-step will be written into/read from separate files numbered consecutively, with numbers padded by zeros to a minimum of four digits: name_.0000, name_.0001, ..
file will not be created/read
all data will be written into/ read from a single file called name_
each time-step will be written into/read from separate files numbered consecutively: name_...
std::istream& operator>> ( std::istream &  is,
File o 
)
Parameters
[in,out]is
[in]o
Returns
std::istream&

Definition at line 414 of file File.cc.

References File::read().

415 {
416  o.read(is);
417  return (is);
418 }
void read(std::istream &is)
read function, which accepts an input stream std::istream.
Definition: File.cc:372
std::string to_string_padded ( unsigned int  value)

Pads the number This function tries to pad the number to 4 digits, which is used when you create multiple files with padded numbers. Any numbers larger than 4 digits return unmodified.

Todo:
TW: I am not able to define the operator >> for enum class type (the implementation works fine for the old enum)
Parameters
valueThe value to modify
Returns
A padded string

Definition at line 61 of file File.cc.

Referenced by DPMBase::readNextArgument().

62 {
63  std::ostringstream out;
64  out << std::setw(4) << std::setfill('0') << value;
65  return out.str();
66 }