source: tests/queue.cfa@ 720b1a9

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 720b1a9 was 19de7864, checked in by Colby Alexander Parsons <caparsons@…>, 5 years ago

removed listed requirement for collections since it was redundant

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