source: tests/stack.cfa@ a00a2c1

ADT arm-eh ast-experimental enum forall-pointer-decay jacob/cs343-translation new-ast-unique-expr pthread-emulation qualifiedEnum
Last change on this file since a00a2c1 was b3c8496, checked in by Colby Alexander Parsons <caparsons@…>, 5 years ago

updated tests to reflect changes to collections

  • Property mode set to 100644
File size: 2.1 KB
RevLine 
[5e82d56]1#include <fstream.hfa>
2#include <stdlib.hfa> // new, delete
[edf3ff1]3#include <bits/stack.hfa>
[5e82d56]4
5int main() {
6 // Fred test
7
8 struct Fred {
9 inline Colable; // Plan 9 inheritance
10 int i;
11 };
12 void ?{}( Fred & fred ) { abort(); }
13 void ?{}( Fred & fred, int p ) with( fred ) {
14 i = p;
15 }
[b3c8496]16 Fred *& Next( Fred * n ) {
17 return (Fred *)Next( (Colable *)n );
18 }
19
20 bool listed( Fred * n ) {
21 return Next( (Colable *)n ) != 0p;
22 }
[5e82d56]23
24 Stack(Fred) fred;
25 StackIter(Fred) fredIter = { fred };
[3d0560d]26 Fred & f;
[5e82d56]27
28 sout | nlOff; // turn off auto newline
29
30 for ( ; fredIter >> f; ) { // empty list
[3d0560d]31 sout | f.i | ' ';
[5e82d56]32 }
33 sout | "empty" | nl;
34
[3d0560d]35 for ( i; 10 ) {
[636d3715]36 push( fred, *new( 2 * i ) );
[5e82d56]37 }
38
[3d0560d]39 for ( StackIter(Fred) iter = { fred }; iter >> f; ) {
40 sout | f.i | ' ';
[5e82d56]41 }
42 sout | nl;
43
[3d0560d]44 for ( i; 9 ) {
[636d3715]45 delete( &pop( fred ) );
[5e82d56]46 }
47
48 for ( over( fredIter, fred ); fredIter >> f; ) {
[3d0560d]49 sout | f.i | ' ';
[5e82d56]50 }
51 sout | nl;
52
[3d0560d]53 for ( i; 10 ) {
[636d3715]54 push( fred, *new( 2 * i + 1 ) );
[5e82d56]55 }
56 for ( over( fredIter, fred ); fredIter >> f; ) {
[3d0560d]57 sout | f.i | ' ';
[5e82d56]58 }
59 sout | nl;
60
61 for ( over( fredIter, fred ); fredIter >> f; ) {
[3d0560d]62 delete( &f );
[5e82d56]63 }
64
65 // Mary test
66
67 struct Mary {
68 inline Fred; // Plan 9 inheritance
69 int j;
70 };
71 void ?{}( Mary & mary ) { abort(); }
72 void ?{}( Mary & mary, int p ) with( mary ) {
73 ((Fred &)mary){ p };
74 j = i = p;
75 }
76
[b3c8496]77 Mary *& Next( Mary * n ) {
78 return (Mary *)Next( (Colable *)n );
79 }
80
81 bool listed( Mary * n ) {
82 return Next( (Colable *)n ) != 0p;
83 }
84
[5e82d56]85 Stack(Mary) mary;
86 StackIter(Mary) maryIter = { mary };
[3d0560d]87 Mary & m;
[5e82d56]88
89 for ( ; maryIter >> m; ) { // empty list
[3d0560d]90 sout | m.i | m.j | ' ';
[5e82d56]91 }
92 sout | "empty" | nl;
93
[3d0560d]94 for ( i; 10 ) {
[636d3715]95 push( mary, *new( 2 * i ) );
[5e82d56]96 }
97
[3d0560d]98 for ( StackIter(Mary) iter = { mary }; iter >> m; ) {
99 sout | m.i | m.j | ' ';
[5e82d56]100 }
101 sout | nl;
102
[3d0560d]103 for ( i; 9 ) {
[636d3715]104 delete( &pop( mary ) );
[5e82d56]105 }
106
107 for ( over( maryIter, mary ); maryIter >> m; ) {
[3d0560d]108 sout | m.i | m.j | ' ';
[5e82d56]109 }
110 sout | nl;
111
[3d0560d]112 for ( i; 10 ) {
[636d3715]113 push( mary, *new( 2 * i + 1 ) );
[5e82d56]114 }
115 for ( over( maryIter, mary ); maryIter >> m; ) {
[3d0560d]116 sout | m.i | m.j | ' ';
[5e82d56]117 }
118 sout | nl;
119
120 for ( over( maryIter, mary ); maryIter >> m; ) {
[3d0560d]121 delete( &m );
[5e82d56]122 }
123}
Note: See TracBrowser for help on using the repository browser.