Flow123d  jenkins-Flow123d-linux-release-multijob-282
Macros | Functions
xio.cc File Reference

I/O functions with filename storing, able to track current line in opened file. All standard stdio functions working with files (not stdin, stdout, stderr) should be replaced by their equivalents from XIO library. More...

#include <string.h>
#include <strings.h>
#include <stdarg.h>
#include <errno.h>
#include <limits.h>
#include <iostream>
#include <algorithm>
#include <iterator>
#include "xio.h"

Go to the source code of this file.

Macros

#define XIO_WARN(f)   xprintf(Warn, "File pointer '%p' not in xfiles_map. Opened with regular fopen() or already closed?\n", (f) )
 
#define XIO_PRINT_INFO(f)   printf( "XIO: In function '%s', %s\n", __func__, xio_getfulldescription( f ) )
 
#define XIO_DEBUG(f)   do { if ( Xio::get_instance()->get_verbosity() > 0 ) XIO_PRINT_INFO(f); } while (0)
 

Functions

static XFILExio_getfptr (FILE *f)
 Internal XIO locator. More...
 
char * xio_getfname (FILE *f)
 Get file name from pointer to FILE structure. More...
 
char * xio_getfmode (FILE *f)
 Get file mode from file stream. More...
 
int xio_getlinesread (FILE *f)
 Get number of lines that were completely read from file since fopen() or rewind() More...
 
char * xio_getfulldescription (FILE *f)
 Get pointer to string with full file description. More...
 
FILE * xfopen (const std::string &fname, const char *mode)
 
FILE * xfopen (const char *fname, const char *mode)
 fopen() with error handling and filename store More...
 
int xfflush (FILE *f)
 Flush file stream. More...
 
int xfclose (FILE *stream)
 FCLOSE WITH ERROR HANDLING. More...
 
FILE * xfreopen (const char *filename, const char *mode, FILE *stream)
 Reopen stream with different file or mode. More...
 
int xfprintf (FILE *out, const char *fmt,...)
 FPRINTF WITH ERROR HANDLING. More...
 
int xfscanf (FILE *in, const char *fmt,...)
 FSCANF WITH ERROR HANDLING. More...
 
int xgetc (FILE *f)
 getc() with error handling and line count More...
 
int xfgetc (FILE *f)
 fgetc() with error handling and line count More...
 
int xungetc (int c, FILE *f)
 ungetc() with error handling and line count More...
 
int xrename (const char *oldname, const char *newname)
 Changes the name of the file or directory specified by oldname to newname. More...
 
size_t xfread (void *ptr, size_t size, size_t count, FILE *stream)
 Read block of data from stream, handle errors. More...
 
size_t xfwrite (const void *ptr, size_t size, size_t count, FILE *stream)
 Write block of data to stream, handle errors. More...
 
char * xfgets (char *s, int n, FILE *in)
 FGETS WITH ERROR HANDLING and line count. More...
 
void xrewind (FILE *f)
 Rewind file, handle line count. More...
 
int xfeof (FILE *f)
 Check END OF FILE. More...
 

Variables

static XFILE xstdin = {&std::string("stdin")[0], &std::string("r")[0], 0}
 basic definitions More...
 
static XFILE xstdout = {&std::string("stdout")[0], &std::string("w")[0], 0}
 
static XFILE xstderr = {&std::string("stderr")[0], &std::string("w")[0], 0}
 

Detailed Description

I/O functions with filename storing, able to track current line in opened file. All standard stdio functions working with files (not stdin, stdout, stderr) should be replaced by their equivalents from XIO library.

Copyright (C) 2007 Technical University of Liberec. All rights reserved.

Please make a following refer to Flow123d on your project site if you use the program for any purpose, especially for academic research: Flow123d, Research Centre: Advanced Remedial Technologies, Technical University of Liberec, Czech Republic

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

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 021110-1307, USA.

$Id$ $Revision$ $LastChangedBy$ $LastChangedDate$

Date
6.4.2010
Author
Jiri Jenicek
Todo:
Better error handling ( perror()? strerror()? )

Definition in file xio.cc.

Macro Definition Documentation

#define XIO_DEBUG (   f)    do { if ( Xio::get_instance()->get_verbosity() > 0 ) XIO_PRINT_INFO(f); } while (0)

Definition at line 66 of file xio.cc.

#define XIO_PRINT_INFO (   f)    printf( "XIO: In function '%s', %s\n", __func__, xio_getfulldescription( f ) )

Definition at line 65 of file xio.cc.

#define XIO_WARN (   f)    xprintf(Warn, "File pointer '%p' not in xfiles_map. Opened with regular fopen() or already closed?\n", (f) )

Definition at line 64 of file xio.cc.

Function Documentation

int xfclose ( FILE *  stream)

FCLOSE WITH ERROR HANDLING.

Close file (function)

Parameters
[in,out]streampointer to FILE structure
Returns
same as ISO C fclose()

Definition at line 309 of file xio.cc.

Here is the caller graph for this function:

int xfeof ( FILE *  f)

Check END OF FILE.

Error-handling.

Parameters
[in]fpointer to FILE structure
Returns
same as ISO C feof()

Definition at line 645 of file xio.cc.

int xfflush ( FILE *  f)

Flush file stream.

Flush stream (function)

Parameters
[in,out]fpointer to FILE structure
Returns
same as ISO C fflush()

Definition at line 287 of file xio.cc.

int xfgetc ( FILE *  f)

fgetc() with error handling and line count

Get character from stream (function)

Parameters
[in,out]fpointer to FILE structure
Returns
same as ISO C fgetc()

Definition at line 448 of file xio.cc.

Here is the caller graph for this function:

char* xfgets ( char *  s,
int  n,
FILE *  in 
)

FGETS WITH ERROR HANDLING and line count.

Character input/output.

Parameters
[out]sPointer to an array of chars where the string read is stored
[in]nMaximum number of characters to be read (including the final null-character)
[in,out]inPointer to a FILE
Returns
same as ISO C fgets()

Definition at line 580 of file xio.cc.

Here is the caller graph for this function:

FILE* xfopen ( const std::string &  fname,
const char *  mode 
)

Definition at line 246 of file xio.cc.

Here is the caller graph for this function:

FILE* xfopen ( const char *  fname,
const char *  mode 
)

fopen() with error handling and filename store

File access.

Parameters
[in]fnamefilename to open
[in]modeopening mode
Returns
same as ISO C fopen()

Definition at line 258 of file xio.cc.

int xfprintf ( FILE *  out,
const char *  fmt,
  ... 
)

FPRINTF WITH ERROR HANDLING.

Formatted input/output.

Definition at line 395 of file xio.cc.

Here is the caller graph for this function:

size_t xfread ( void *  ptr,
size_t  size,
size_t  count,
FILE *  stream 
)

Read block of data from stream, handle errors.

Direct input/output.

Parameters
[out]ptrPointer to a block of memory with a minimum size of (size*count) bytes.
[in]sizeSize in bytes of each element to be read.
[in]countNumber of elements, each one with a size of size bytes.
[in,out]streamPointer to a FILE object that specifies an input stream.
Returns
same as ISO C fread()

Definition at line 535 of file xio.cc.

FILE* xfreopen ( const char *  filename,
const char *  mode,
FILE *  stream 
)

Reopen stream with different file or mode.

Parameters
[in]filenameName of the file to be opened
[in]modeFile access mode
[in,out]streamPointer to a FILE object that identifies the stream to be reopened
Returns
Same as ISO C freopen()

Definition at line 348 of file xio.cc.

int xfscanf ( FILE *  in,
const char *  fmt,
  ... 
)

FSCANF WITH ERROR HANDLING.

Read formatted data from stream (function)

Definition at line 412 of file xio.cc.

size_t xfwrite ( const void *  ptr,
size_t  size,
size_t  count,
FILE *  stream 
)

Write block of data to stream, handle errors.

Parameters
[in]ptrPointer to a block of memory with a minimum size of (size*count) bytes.
[in]sizeSize in bytes of each element to be written.
[in]countNumber of elements, each one with a size of size bytes.
[in,out]streamPointer to a FILE object that specifies an output stream.
Returns
same as ISO C fwrite()

Definition at line 558 of file xio.cc.

int xgetc ( FILE *  f)

getc() with error handling and line count

Get character from stream (function)

Parameters
[in,out]fpointer to FILE structure
Returns
same as ISO C getc()

Definition at line 431 of file xio.cc.

char* xio_getfmode ( FILE *  f)

Get file mode from file stream.

Parameters
[in]fpointer to FILE structure
Returns
pointer to file opening mode if OK, NULL if file stream is not known

Definition at line 143 of file xio.cc.

char* xio_getfname ( FILE *  f)

Get file name from pointer to FILE structure.

XIO library extensions.

Parameters
[in]fpointer to FILE structure
Returns
pointer to file name if OK, NULL if file stream is not known

Definition at line 120 of file xio.cc.

Here is the caller graph for this function:

static XFILE * xio_getfptr ( FILE *  f)
static

Internal XIO locator.

Parameters
[in]fpointer to FILE structure
Returns
pointer to XFILE structure if OK, NULL if file stream is not known

Definition at line 234 of file xio.cc.

Here is the caller graph for this function:

char* xio_getfulldescription ( FILE *  f)

Get pointer to string with full file description.

Parameters
[in]fpointer to FILE structure
Returns
pointer to string with description, null terminated, no LF

Definition at line 189 of file xio.cc.

int xio_getlinesread ( FILE *  f)

Get number of lines that were completely read from file since fopen() or rewind()

Get number of read lines from stream.

Parameters
[in]fpointer to FILE structure
Returns
number of lines read if OK, -1 if file stream is not known

Definition at line 166 of file xio.cc.

int xrename ( const char *  oldname,
const char *  newname 
)

Changes the name of the file or directory specified by oldname to newname.

Parameters
[in]oldnamename of the file to be renamed and/or moved
[in]newnamenew name
Returns
same as ISO C rename()

Definition at line 515 of file xio.cc.

void xrewind ( FILE *  f)

Rewind file, handle line count.

File positioning.

Parameters
[in,out]fpointer to FILE structure

Definition at line 619 of file xio.cc.

int xungetc ( int  c,
FILE *  f 
)

ungetc() with error handling and line count

Unget character from stream (function)

Parameters
[in]ccharacter to push back
[in,out]fpointer to FILE structure with INPUT stream
Returns
same as ISO C ungetc()

Definition at line 482 of file xio.cc.

Variable Documentation

XFILE xstderr = {&std::string("stderr")[0], &std::string("w")[0], 0}
static

Definition at line 59 of file xio.cc.

XFILE xstdin = {&std::string("stdin")[0], &std::string("r")[0], 0}
static

basic definitions

Definition at line 57 of file xio.cc.

XFILE xstdout = {&std::string("stdout")[0], &std::string("w")[0], 0}
static

Definition at line 58 of file xio.cc.