//
// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
//
// The contents of this file are covered under the licence agreement in the
// file "LICENCE" distributed with Cforall.
//
// fstream -- 
//
// Author           : Peter A. Buhr
// Created On       : Wed May 27 17:56:53 2015
// Last Modified By : Peter A. Buhr
// Last Modified On : Wed Mar  2 15:08:14 2016
// Update Count     : 78
//

#ifndef __FSTREAM_H__
#define __FSTREAM_H__

#include "iostream"

enum { separateSize = 16 };
struct ofstream { void *file; int separate; char separator[separateSize]; };

_Bool sepPrt( ofstream * );
void sepOn( ofstream * );
void sepOff( ofstream * );
void sepSet( ofstream *, const char * );
const char * sepGet( ofstream * );
void sepDisable( ofstream * );
void sepEnable( ofstream * );
int fail( ofstream * );
int flush( ofstream * );
void open( ofstream *, const char * name, const char * mode );
void close( ofstream * );
ofstream * write( ofstream *, const char * data, unsigned long int size );
int prtfmt( ofstream *, const char fmt[], ... );

extern ofstream * sout, * serr;

// implement context istream
struct ifstream { void *file; };

int fail( ifstream * is );
int eof( ifstream * is );
void open( ifstream * is, const char * name, const char * mode );
void close( ifstream * is );
ifstream * read( ifstream * is, char * data, unsigned long int size );
ifstream * ungetc( ifstream * is, char c );
int scanfmt( ifstream *, const char fmt[], ... );

extern ifstream *sin;

#endif // __FSTREAM_H__

// Local Variables: //
// mode: c //
// tab-width: 4 //
// End: //

