source: libcfa/src/strstream.hfa @ 18ebc28

Last change on this file since 18ebc28 was f5d9c37, checked in by Peter A. Buhr <pabuhr@…>, 10 months ago

harmonize separator manipulators names with newline names: change from sep, sepTuple, sepEnable, sepDisable, sepOn, sepOff to sepVal, sepTupleVal, sepOn, sepOff, sep, nosep; fix bug printing null string with WD so no separator

  • Property mode set to 100644
File size: 2.5 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2021 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// strstream.hfa --
8//
9// Author           : Peter A. Buhr
10// Created On       : Thu Apr 22 22:20:59 2021
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Thu Jun 29 10:58:58 2023
13// Update Count     : 51
14//
15
16#pragma once
17
18#include "iostream.hfa"
19#include <stdio.h>
20
21
22// *********************************** ostrstream ***********************************
23
24
25enum { ostrstream_sepSize = 16 };
26struct ostrstream {                                                                             // satisfied basic_ostream
27        char * buf$;
28        size_t size$;
29        size_t cursor$;
30        bool sepDefault$;
31        bool sepOnOff$;
32        bool nlOnOff$;
33        bool prt$;                                                                                      // print text
34        bool sawNL$;
35        const char * sepCur$;
36        char separator$[ostrstream_sepSize];
37        char tupleSeparator$[ostrstream_sepSize];
38}; // ostrstream
39
40// Satisfies basic_ostream
41
42// private
43bool sepPrt$( ostrstream & );
44void sepReset$( ostrstream & );
45void sepReset$( ostrstream &, bool );
46const char * sepGetCur$( ostrstream & );
47void sepSetCur$( ostrstream &, const char [] );
48bool getNL$( ostrstream & );
49void setNL$( ostrstream &, bool );
50bool getANL$( ostrstream & );
51bool getPrt$( ostrstream & );
52void setPrt$( ostrstream &, bool );
53
54// public
55void nlOn( ostrstream & );
56void nlOff( ostrstream & );
57
58void sep( ostrstream & );
59void nosep( ostrstream & );
60bool sepOn( ostrstream & );
61bool sepOff( ostrstream & );
62const char * sepGet( ostrstream & );
63void sepSet( ostrstream &, const char [] );
64const char * sepGetTuple( ostrstream & );
65void sepSetTuple( ostrstream &, const char [] );
66
67void ends( ostrstream & );
68int fmt( ostrstream &, const char format[], ... ) __attribute__(( format(printf, 2, 3) ));
69
70ostrstream & write( ostrstream & os, FILE * stream ); // FIX ME: use default = stdout
71ostrstream & write( ostrstream & os );
72
73void ?{}( ostrstream &, char buf[], size_t size );
74
75
76// *********************************** istrstream ***********************************
77
78
79struct istrstream {
80        char * buf$;
81        size_t cursor$;
82        bool nlOnOff$;
83}; // istrstream
84
85// Satisfies basic_istream
86
87// private
88bool getANL$( istrstream & );
89
90// public
91void nlOn( istrstream & );
92void nlOff( istrstream & );
93void ends( istrstream & );
94
95int fmt( istrstream &, const char format[], ... ) __attribute__(( format(scanf, 2, 3) ));
96istrstream & ungetc( istrstream &, char );
97bool eof( istrstream & );
98
99void ?{}( istrstream &, char buf[] );
100
101// Local Variables: //
102// mode: c //
103// tab-width: 4 //
104// End: //
Note: See TracBrowser for help on using the repository browser.