source: tests/io2.cfa@ 98b4b12

ADT arm-eh ast-experimental cleanup-dtors enum forall-pointer-decay jacob/cs343-translation jenkins-sandbox new-ast new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since 98b4b12 was 342136ab, checked in by Peter A. Buhr <pabuhr@…>, 6 years ago

formatting

  • Property mode set to 100644
File size: 4.2 KB
Line 
1//
2// Cforall Version 1.0.0 Copyright (C) 2016 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// io2.cfa --
8//
9// Author : Peter A. Buhr
10// Created On : Wed Mar 2 16:56:02 2016
11// Last Modified By : Peter A. Buhr
12// Last Modified On : Thu Apr 18 08:03:30 2019
13// Update Count : 113
14//
15
16#include <fstream.hfa>
17
18#define xstr(s) str(s)
19#define str(s) #s
20
21int main() {
22 _Bool b; // basic types
23 char c;
24 signed char sc;
25 unsigned char usc;
26 short int si;
27 unsigned short int usi;
28 int i;
29 unsigned int ui;
30 long int li;
31 unsigned long int uli;
32 long long int lli;
33 unsigned long long int ulli;
34 float f;
35 double d;
36 long double ld;
37 float _Complex fc;
38 double _Complex dc;
39 long double _Complex ldc;
40 enum { size = 10 };
41 char s1[size], s2[size];
42
43 ifstream in = { xstr(IN_DIR) "io.data" }; // create / open file
44
45 sout | "input bacis types";
46 in | b; // boolean
47 in | c | sc | usc; // character
48 in | si | usi | i | ui | li | uli | lli | ulli; // integral
49 in | f | d | ld; // floating point
50 in | fc | dc | ldc; // floating-point complex
51 in | cstr( s1 ) | cstr( s2, size ); // C string, length unchecked and checked
52 sout | nl;
53
54 sout | "output basic types";
55 sout | b; // boolean
56 sout | c | ' ' | sc | ' ' | usc; // character
57 sout | si | usi | i | ui | li | uli | lli | ulli; // integral
58 sout | f | d | ld; // floating point
59 sout | fc | dc | ldc; // complex
60 sout | nl;
61
62 sout | "tuples";
63 [int, [ int, int ] ] t1 = [ 1, [ 2, 3 ] ], t2 = [ 4, [ 5, 6 ] ];
64 sout | t1 | t2; // print tuple
65 sout | nl;
66
67 sout | "toggle separator";
68 sout | f | "" | d | "" | ld; // floating point without separator
69 sout | sepDisable | fc | dc | ldc; // complex without separator
70 sout | fc | sepOn | dc | ldc; // local separator add
71 sout | sepEnable | fc | dc | ldc; // complex with separator
72 sout | fc | sepOff | dc | ldc; // local separator removal
73 sout | s1 | sepOff | s2; // local separator removal
74 sout | s1 | "" | s2; // local separator removal
75 sout | nl;
76
77 sout | "change separator";
78 sout | "from \"" | sep | "\"" | nonl;
79 sepSet( sout, ", $" ); // change separator, maximum of 15 characters
80 sout | " to \"" | sep | "\"";
81 sout | f | d | ld;
82 sout | fc | dc | ldc;
83 sout | s1 | s2;
84 sout | t1 | t2; // print tuple
85 sout | nl;
86 sout | "from \"" | sep | "\" " | nonl;
87 sepSet( sout, " " ); // restore separator
88 sout | "to \"" | sep | "\"";
89 sout | f | d | ld;
90 sout | fc | dc | ldc;
91 sout | s1 | s2;
92 sout | t1 | t2; // print tuple
93 sout | nl;
94
95 sout | "check sepOn/sepOff";
96 sout | sepOn | 1 | 2 | 3 | sepOn; // no separator at start/end of line
97 sout | 1 | sepOff | 2 | 3; // locally turn off implicit separator
98 sout | sepOn | sepOn | 1 | 2 | 3 | sepOn | sepOff | sepOn | '\n' | nonl; // no separator at start/end of line
99 sout | 1 | 2 | 3 | "\n\n" | sepOn | nonl; // no separator at start of next line
100 sout | 1 | 2 | 3;
101 sout | nl;
102
103 sout | "check enable/disable";
104 sout | sepDisable | 1 | 2 | 3; // globally turn off implicit separation
105 sout | 1 | sepOn | 2 | 3; // locally turn on implicit separator
106 sout | sepEnable | 1 | 2 | 3 | sepDisable; // globally turn on/off implicit separation
107 sout | 1 | 2 | 3 | sepEnable; // globally turn on implicit separation
108 sout | 1 | 2 | 3 | sepOn | sepDisable; // ignore seperate at end of line
109 sout | 1 | 2 | 3 | sepOn | sepEnable; // separator at end of line
110 sout | 1 | 2 | 3;
111 sout | nl;
112
113// sout | fmt( d, "%8.3f" );
114
115 sepSetTuple( sout, " " ); // set tuple separator from ", " to " "
116 sout | t1 | t2 | " \"" | sep | "\"";
117 sepSetTuple( sout, ", " ); // reset tuple separator to ", "
118 sout | t1 | t2 | " \"" | sep | "\"";
119 sout | t1 | t2; // print tuple
120 sout | nl;
121
122 [int, int, const char *, double] t3 = { 3, 4, "a", 7.2 };
123 sout | [ 3, 4, "a", 7.2 ];
124 sout | t3;
125 sepSetTuple( sout, " " );
126 sout | t3;
127 sout | sepOn | t3 | sepDisable | t3 | sepEnable | t3;
128 sepSet( sout, "^" );
129 sepSetTuple( sout, "-" );
130 sout | t3 | 3 | 4 | t3;
131}
132
133// Local Variables: //
134// tab-width: 4 //
135// compile-command: "cfa -DIN_DIR=".in/" io2.cfa" //
136// End: //
Note: See TracBrowser for help on using the repository browser.