source: libcfa/src/fstream.hfa@ 55b060d

Last change on this file since 55b060d was d0cfcbe1, checked in by Peter A. Buhr <pabuhr@…>, 2 years ago

change setter routines in basic_i/ostream to return previous state

  • Property mode set to 100644
File size: 4.9 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2015 University of Waterloo
3//
4// The contents of this file are covered under the licence agreement in the
5// file "LICENCE" distributed with Cforall.
6//
7// fstream --
8//
9// Author : Peter A. Buhr
10// Created On : Wed May 27 17:56:53 2015
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Fri Aug 18 10:41:15 2023
13// Update Count : 258
14//
15
16#pragma once
17
18#include "bits/weakso_locks.hfa" // mutex_lock
19#include "iostream.hfa"
20
21
22// *********************************** ofstream ***********************************
23
24
25enum { ofstream_sepSize = 16 };
26struct ofstream {
27 void * file$;
28 bool sepDefault$;
29 bool sepOnOff$;
30 bool nlOnOff$;
31 bool prt$; // print text
32 bool sawNL$;
33 const char * sepCur$;
34 char separator$[ofstream_sepSize];
35 char tupleSeparator$[ofstream_sepSize];
36 multiple_acquisition_lock lock$; // used by trait is_lock for mutex statement
37}; // ofstream
38
39// Satisfies ostream
40
41// private
42bool getNL$( ofstream & );
43bool setNL$( ofstream &, bool );
44bool getANL$( ofstream & );
45bool setANL$( ofstream &, bool );
46
47bool sepPrt$( ofstream & );
48void sepReset$( ofstream & );
49void sepReset$( ofstream &, bool );
50const char * sepGetCur$( ofstream & );
51void sepSetCur$( ofstream &, const char [] );
52
53bool getPrt$( ofstream & );
54bool setPrt$( ofstream &, bool );
55
56void lock( ofstream & );
57void unlock( ofstream & );
58
59// public
60void nlOn( ofstream & );
61void nlOff( ofstream & );
62
63void sep( ofstream & );
64void nosep( ofstream & );
65bool sepOn( ofstream & );
66bool sepOff( ofstream & );
67const char * sepGet( ofstream & );
68void sepSet( ofstream &, const char [] );
69const char * sepGetTuple( ofstream & );
70void sepSetTuple( ofstream &, const char [] );
71
72void ends( ofstream & );
73int fmt( ofstream &, const char format[], ... ) __attribute__(( format(printf, 2, 3) ));
74
75bool fail( ofstream & );
76void clear( ofstream & );
77int flush( ofstream & );
78void open( ofstream &, const char name[], const char mode[] ); // FIX ME: use default = "w"
79void open( ofstream &, const char name[] );
80void close( ofstream & );
81
82ofstream & write( ofstream &, const char data[], size_t size );
83
84void ?{}( ofstream & );
85void ?{}( ofstream &, const char name[], const char mode[] ); // FIX ME: use default = "w"
86void ?{}( ofstream &, const char name[] );
87void ^?{}( ofstream & );
88
89// private
90static inline ofstream & nl$( ofstream & os ) { return nl( os ); } // remember basic_ostream nl
91// public
92ofstream & nl( ofstream & os ); // override basic_ostream nl
93
94extern ofstream & sout, & stdout, & serr, & stderr; // aliases
95extern ofstream & exit, & abort;
96
97
98// *********************************** ifstream ***********************************
99
100
101struct ifstream {
102 void * file$;
103 bool nlOnOff$;
104 multiple_acquisition_lock lock$; // used by trait is_lock for mutex statement
105}; // ifstream
106
107// Satisfies istream
108
109// private
110bool getANL$( ifstream & );
111bool setANL$( ifstream &, bool );
112
113void lock( ifstream & );
114void unlock( ifstream & );
115
116// public
117void nlOn( ifstream & );
118void nlOff( ifstream & );
119void ends( ifstream & );
120int fmt( ifstream &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
121
122bool fail( ifstream & is );
123void clear( ifstream & );
124bool eof( ifstream & is );
125void open( ifstream & is, const char name[], const char mode[] ); // FIX ME: use default = "r"
126void open( ifstream & is, const char name[] );
127void close( ifstream & is );
128
129ifstream & read( ifstream & is, char data[], size_t size );
130ifstream & ungetc( ifstream & is, char c );
131
132void ?{}( ifstream & is );
133void ?{}( ifstream & is, const char name[], const char mode[] ); // FIX ME: use default = "r"
134void ?{}( ifstream & is, const char name[] );
135void ^?{}( ifstream & is );
136
137extern ifstream & sin, & stdin; // aliases
138
139
140// *********************************** exceptions ***********************************
141
142
143exception open_failure {
144 union {
145 ofstream * ostream;
146 ifstream * istream;
147 };
148 // TEMPORARY: need polymorphic exceptions
149 int tag; // 1 => ostream; 0 => istream
150};
151
152void ?{}( open_failure & this, ofstream & );
153void ?{}( open_failure & this, ifstream & );
154
155exception close_failure {
156 union {
157 ofstream * ostream;
158 ifstream * istream;
159 };
160 // TEMPORARY: need polymorphic exceptions
161 int tag; // 1 => ostream; 0 => istream
162};
163
164void ?{}( close_failure & this, ofstream & );
165void ?{}( close_failure & this, ifstream & );
166
167exception write_failure {
168 union {
169 ofstream * ostream;
170 ifstream * istream;
171 };
172 // TEMPORARY: need polymorphic exceptions
173 int tag; // 1 => ostream; 0 => istream
174};
175
176void ?{}( write_failure & this, ofstream & );
177void ?{}( write_failure & this, ifstream & );
178
179exception read_failure {
180 union {
181 ofstream * ostream;
182 ifstream * istream;
183 };
184 // TEMPORARY: need polymorphic exceptions
185 int tag; // 1 => ostream; 0 => istream
186};
187
188void ?{}( read_failure & this, ofstream & );
189void ?{}( read_failure & this, ifstream & );
190
191// Local Variables: //
192// mode: c //
193// tab-width: 4 //
194// End: //
Note: See TracBrowser for help on using the repository browser.