[go: up one dir, main page]

Menu

[r201]: / mia2 / mia / core / file.hh  Maximize  Restore  History

Download this file

129 lines (98 with data), 3.6 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/* -*- mia-c++ -*-
* Copyright (c) 2004
* Max-Planck-Institute for Human Cognitive and Brain Science
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
// $Id: miaFileIO.hh 887 2006-03-01 12:22:14Z write1 $
/*! \brief Wrapper for the stdio FILE type
A simple wrapper for the stdio FILE type that handles opening and closing
and takes care, whether \a stdin should be used for reading.
If the filename has the suffix ".gz" the in/output is piped through gzip,
and if the filename has the suffix "*.bz2" the in/output is piped through bzip2,
providing transparent compression of the data.
\file miaFileIO.hh
\author Gert Wollny <wollny@cbs.mpg.de>
*/
#ifndef mia_core_file_hh
#define mia_core_file_hh
#include <cstdio>
#include <string>
#include <mia/core/defines.hh>
NS_MIA_BEGIN
typedef FILE * PFILE;
/**
A wrapper for the \a cstdio file type.
*/
class CFile {
public:
/** constructor
\param filename of the file to handle
\param from_stdio use \a stdin or \a stdout
\param write open for writing or reading
*/
CFile(const std::string& filename, bool from_stdio, bool write);
/** destructor, closes file if necessary */
virtual ~CFile() throw();
/** \returns the stdio FILE pointer */
operator PFILE();
/** \returns true if the file is not open (i.e. the FILE pointer is NULL */
bool operator ! ()const;
private:
bool _M_must_close;
bool _M_is_pipe;
FILE *_M_file;
};
/** A simple wrapper for the stdio FILE type that handles opening and closing
and takes care, whether \a stdin sould be used for reading */
class CInputFile: public CFile {
public:
/** constructor opens the file
\param filename is the name of the file to be openend, if it is "-" then \a stdin is used
*/
CInputFile(const std::string& filename);
/** constructor opens the file
\param filename is the name of the file to be openend
\param from_stdin force usage of \a stdin
*/
CInputFile(const std::string& filename, bool from_stdin);
};
/** A simple wrapper for the stdio FILE type that handles opening and closing
ant takes care, whether \a stdout should be used for writing */
class COutputFile: public CFile {
public:
/** constructor opens the file
\param filename is the name of the file to be openend, if it is "-" then \a stdin is used
*/
COutputFile(const std::string& filename);
/** constructor opens the file
\param filename is the name of the file to be openend
\param from_stdin force usage of \a stdin
*/
COutputFile(const std::string& filename, bool from_stdin);
};
/** This class provides the base for showing sime kind of progress bar during some operation */
class CProgressCallback {
public:
virtual ~CProgressCallback();
/** this routine shows the progress
\param pos current file io position
\param length file size
*/
virtual void show_progress(int pos, int length);
};
NS_MIA_END
#endif