Class for output files. More...
#include <OFile.h>
Classes | |
class | Field |
Class identifying a single field for fielded output. More... | |
Public Member Functions | |
OFile () | |
Constructor. More... | |
~OFile () | |
Destructor. More... | |
OFile & | link (OFile &) |
Allows linking this OFile to another one. More... | |
void | setBackupString (const std::string &) |
Set the string name to be used for automatic backup. More... | |
void | backupFile (const std::string &bstring, const std::string &fname) |
Backup a file by giving it a different name. More... | |
void | backupAllFiles (const std::string &str) |
This backs up all the files that would have been created with the name str. More... | |
OFile & | open (const std::string &name) |
Opens the file using automatic append/backup. More... | |
OFile & | setLinePrefix (const std::string &) |
Set the prefix for output. More... | |
OFile & | fmtField (const std::string &) |
Set the format for writing double precision fields. More... | |
OFile & | fmtField () |
Reset the format for writing double precision fields to its default. More... | |
OFile & | printField (const std::string &, double) |
Set the value of a double precision field. More... | |
OFile & | printField (const std::string &, int) |
Set the value of a int field. More... | |
OFile & | printField (const std::string &, const std::string &) |
Set the value of a string field. More... | |
OFile & | addConstantField (const std::string &) |
OFile & | setupPrintValue (Value *val) |
Used to setup printing of values. More... | |
OFile & | printField (Value *val, const double &v) |
Print a value. More... | |
OFile & | printField () |
Close a line. More... | |
OFile & | clearFields () |
Resets the list of fields. More... | |
int | printf (const char *fmt,...) |
Formatted output with explicit format - a la printf. More... | |
OFile & | rewind () |
Rewind a file. More... | |
FileBase & | link (FILE *) |
Link to an already open filed. More... | |
FileBase & | link (PlumedMain &) |
Link to a PlumedMain object Automatically links also the corresponding Communicator. More... | |
FileBase & | link (Communicator &) |
Link to a Communicator object. More... | |
FileBase & | link (Action &) |
Link to an Action object. More... | |
FileBase & | flush () |
Flushes the file to disk. More... | |
void | close () |
Closes the file Should be used only for explicitely opened files. More... | |
operator bool () const | |
Check for error/eof. More... | |
void | setHeavyFlush () |
Set heavyFlush flag. More... | |
FileBase & | open (const std::string &name, const std::string &mode) |
Opens the file (without auto-backup) More... | |
bool | FileExist (const std::string &path) |
Check if the file exists. More... | |
bool | isOpen () |
Check if a file is open. More... | |
Static Public Member Functions | |
static void | test () |
Runs a small testcase. More... | |
Protected Attributes | |
FILE * | fp |
file pointer More... | |
Communicator * | comm |
communicator. NULL if not set More... | |
PlumedMain * | plumed |
pointer to main plumed object. NULL if not linked More... | |
Action * | action |
pointer to corresponding action. NULL if not linked More... | |
bool | cloned |
Control closing on destructor. More... | |
bool | eof |
Set to true when end of file is encountered. More... | |
bool | err |
Set to true when error is encountered. More... | |
std::string | path |
path of the opened file More... | |
bool | heavyFlush |
Set to true if you want flush to be heavy (close/reopen) More... | |
Private Member Functions | |
size_t | llwrite (const char *, size_t) |
Low-level write. More... | |
unsigned | findField (const std::string &name) const |
Find field index given name. More... | |
Private Attributes | |
OFile * | linked |
Pointer to a linked OFile. More... | |
char * | buffer_string |
Internal buffer for printf. More... | |
char * | buffer |
Internal buffer (generic use) More... | |
int | buflen |
Internal buffer length. More... | |
unsigned | actual_buffer_length |
This variables stores the actual buffer length. More... | |
bool | fieldChanged |
True if fields has changed. More... | |
std::string | fieldFmt |
Format for fields writing. More... | |
std::vector< Field > | previous_fields |
All the previously defined variable fields. More... | |
std::vector< Field > | fields |
All the defined variable fields. More... | |
std::vector< Field > | const_fields |
All the defined constant fields. More... | |
std::string | linePrefix |
Prefix for line (e.g. "PLUMED: ") More... | |
std::ostringstream | oss |
Temporary ostringstream for << output. More... | |
std::string | backstring |
The string used for backing up files. More... | |
Friends | |
template<class T > | |
OFile & | operator<< (OFile &, const T &) |
Formatted output with << operator. More... | |
Class for output files.
This class provides features similar to those in the standard C "FILE*" type, but only for sequential output. See IFile for sequential input.
See the example here for a possible use:
#include "File.h" int main(){ PLMD::OFile pof; pof.open("ciao","w"); pof.printf("%s\n","test1"); pof.setLinePrefix("plumed: "); pof.printf("%s\n","test2"); pof.setLinePrefix(""); pof.addConstantField("x2").printField("x2",67.0); pof.printField("x1",10.0).printField("x3",20.12345678901234567890).printField(); pof.printField("x1",10.0).printField("x3",-1e70*20.12345678901234567890).printField(); pof.printField("x3",10.0).printField("x2",777.0).printField("x1",-1e70*20.12345678901234567890).printField(); pof.printField("x3",67.0).printField("x1",18.0).printField(); pof.close(); return 0; }
This program is expected to produce a file "ciao" which reads
test1 plumed: test2 #! FIELDS x1 x3 #! SET x2 67 10 20.12345678901234 10 -2.012345678901235e+71 #! FIELDS x1 x3 #! SET x2 777 -2.012345678901235e+71 10 18 67
Notes
OFile & PLMD::OFile::addConstantField | ( | const std::string & | name | ) |
void PLMD::OFile::backupAllFiles | ( | const std::string & | str | ) |
This backs up all the files that would have been created with the name str.
It is used in analysis when you are not restarting. Analysis output files at different times, which are names analysis.0.<filename>, analysis.1.<filename> and <filename>, are backed up to bck.0.analysis.0.<filename>, bck.0.analysis.1.<filename> and bck.0.<filename>
void PLMD::OFile::backupFile | ( | const std::string & | bstring, |
const std::string & | fname | ||
) |
OFile & PLMD::OFile::clearFields | ( | ) |
Resets the list of fields.
As it is only possible to add new constant fields (addConstantField()), this method can be used to clean the field list.
|
inherited |
Closes the file Should be used only for explicitely opened files.
Definition at line 140 of file FileBase.cpp.
|
inherited |
Check if the file exists.
Definition at line 118 of file FileBase.cpp.
|
private |
Find field index given name.
|
inherited |
Flushes the file to disk.
Definition at line 70 of file FileBase.cpp.
OFile & PLMD::OFile::fmtField | ( | const std::string & | fmt | ) |
OFile & PLMD::OFile::fmtField | ( | ) |
|
inherited |
Check if a file is open.
Definition at line 134 of file FileBase.cpp.
|
inherited |
Link to an already open filed.
Definition at line 64 of file FileBase.cpp.
|
inherited |
Link to a PlumedMain object Automatically links also the corresponding Communicator.
Definition at line 85 of file FileBase.cpp.
|
inherited |
Link to a Communicator object.
Definition at line 79 of file FileBase.cpp.
Link to an Action object.
Automatically links also the corresponding PlumedMain and Communicator.
Definition at line 92 of file FileBase.cpp.
|
private |
|
inherited |
Opens the file (without auto-backup)
Definition at line 99 of file FileBase.cpp.
OFile & PLMD::OFile::open | ( | const std::string & | name | ) |
|
inherited |
Check for error/eof.
Definition at line 166 of file FileBase.cpp.
int PLMD::OFile::printf | ( | const char * | fmt, |
... | |||
) |
OFile & PLMD::OFile::printField | ( | const std::string & | name, |
double | v | ||
) |
OFile & PLMD::OFile::printField | ( | const std::string & | name, |
int | v | ||
) |
OFile & PLMD::OFile::printField | ( | const std::string & | name, |
const std::string & | v | ||
) |
OFile & PLMD::OFile::printField | ( | ) |
void PLMD::OFile::setBackupString | ( | const std::string & | str | ) |
|
inlineinherited |
Set heavyFlush flag.
Definition at line 101 of file FileBase.h.
OFile & PLMD::OFile::setLinePrefix | ( | const std::string & | l | ) |
|
staticinherited |
Runs a small testcase.
Definition at line 37 of file FileBase.cpp.
|
protectedinherited |
pointer to corresponding action. NULL if not linked
Definition at line 63 of file FileBase.h.
|
private |
|
private |
|
private |
|
private |
|
protectedinherited |
Control closing on destructor.
If true, file will not be closed in destructor
Definition at line 66 of file FileBase.h.
|
protectedinherited |
communicator. NULL if not set
Definition at line 59 of file FileBase.h.
|
private |
|
protectedinherited |
Set to true when end of file is encountered.
Definition at line 71 of file FileBase.h.
|
protectedinherited |
Set to true when error is encountered.
Definition at line 73 of file FileBase.h.
|
private |
|
private |
|
private |
|
protectedinherited |
file pointer
Definition at line 57 of file FileBase.h.
|
protectedinherited |
Set to true if you want flush to be heavy (close/reopen)
Definition at line 77 of file FileBase.h.
|
private |
|
private |
|
private |
|
protectedinherited |
path of the opened file
Definition at line 75 of file FileBase.h.
|
protectedinherited |
pointer to main plumed object. NULL if not linked
Definition at line 61 of file FileBase.h.
|
private |
Hosted by GitHub
![]() |
![]() |