1 using System;
2 using System.Collections;
3 using System.IO;
4
5 public void PrintIntList(const List<int>& intList)
6 {
7 Console.WriteLine("intList:");
8 for (int i : intList)
9 {
10 Console.WriteLine(i);
11 }
12 }
13
14 public void AddOneToAll(List<int>& intList)
15 {
16 for (int& x : intList)
17 {
18 x = x + 1;
19 }
20 }
21
22 public void PrintStringList(const List<string>& stringList)
23 {
24 Console.WriteLine("stringList:");
25 for (const string& s : stringList)
26 {
27 Console.WriteLine(s);
28 }
29 }
30
31 public class Foo
32 {
33 public Foo(int x_) : x(x_)
34 {
35 }
36 public int X() const
37 {
38 return x;
39 }
40 private int x;
41 }
42
43 public TextWriter& operator<<(TextWriter& writer, const Foo& foo)
44 {
45 return writer << "Foo: " << foo.X();
46 }
47
48 public class MyCollection
49 {
50 public typedef List<Foo>.ConstIterator ConstIterator;
51 public typedef List<Foo>.Iterator Iterator;
52 public ConstIterator CBegin() const
53 {
54 return fooList.CBegin();
55 }
56 public ConstIterator Begin() const
57 {
58 return fooList.CBegin();
59 }
60 public Iterator Begin()
61 {
62 return fooList.Begin();
63 }
64 public ConstIterator CEnd() const
65 {
66 return fooList.CEnd();
67 }
68 public ConstIterator End() const
69 {
70 return fooList.CEnd();
71 }
72 public Iterator End()
73 {
74 return fooList.End();
75 }
76 public void Add(const Foo& foo)
77 {
78 fooList.Add(foo);
79 }
80 private List<Foo> fooList;
81 }
82
83 public void PrintMyCollection(const MyCollection& myCollection)
84 {
85 Console.WriteLine("myCollection:");
86 for (const Foo& foo : myCollection)
87 {
88 Console.Out() << foo << endl();
89 }
90 }
91
92 void main()
93 {
94 try
95 {
96 List<int> intList;
97 intList.Add(1);
98 intList.Add(2);
99 intList.Add(3);
100 PrintIntList(intList);
101 AddOneToAll(intList);
102 PrintIntList(intList);
103 List<string> stringList;
104 stringList.Add("foo");
105 stringList.Add("bar");
106 PrintStringList(stringList);
107 MyCollection myCollection;
108 myCollection.Add(Foo(1));
109 myCollection.Add(Foo(2));
110 myCollection.Add(Foo(3));
111 PrintMyCollection(myCollection);
112 }
113 catch (const Exception& ex)
114 {
115 Console.Error() << ex.ToString() << endl();
116 }
117 }