File: example1.e

package info (click to toggle)
smarteiffel 1.1-11
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 12,288 kB
  • ctags: 40,785
  • sloc: ansic: 35,791; lisp: 4,036; sh: 1,783; java: 895; ruby: 613; python: 209; makefile: 115; csh: 78; cpp: 50
file content (116 lines) | stat: -rw-r--r-- 2,636 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
class EXAMPLE1
   --
   -- Using ITERATOR allows the user to traverse any aggregate object
   -- in a more abstract way.
   --

creation make

feature

   my_loop(type: STRING; my_iterator: ITERATOR[CHARACTER]) is
      local
	 element: CHARACTER;
      do
         io.put_string("Loop on ");
         io.put_string(type);
         io.put_string(": ");
	 from
	    my_iterator.start;
	 until
	    my_iterator.is_off
	 loop
	    element := my_iterator.item;
            io.put_character(element);
	    my_iterator.next;
	 end;
         io.put_new_line;
      end;

feature {NONE}

   make is
      do
	 use_iterator_on_string;
	 use_iterator_on_array;
	 use_iterator_on_fixed_array;
	 use_iterator_on_linked_list;
	 use_iterator_on_two_way_linked_list;
         io.put_string("Do you like ITERATORs ?%N");

         io.put_string("So let's see what happends with a DICTIONARY.%N");
	 use_iterator_on_dictionary;
         io.put_string("And this is not a bug!%N");
      end;

   use_iterator_on_string is
      local
         iterator: ITERATOR[CHARACTER];
      do
	 iterator := ("foo").get_new_iterator;
	 my_loop("STRING",iterator);
      end;

   use_iterator_on_array is
      local
	 iterator: ITERATOR[CHARACTER];
      do
	 iterator := (<<'b','a','r'>>).get_new_iterator;
	 my_loop("ARRAY",iterator);
      end;

   use_iterator_on_fixed_array is
      local
	 iterator: ITERATOR[CHARACTER];
         my_fa: FIXED_ARRAY[CHARACTER];
      do
         !!my_fa.with_capacity(4);
         my_fa.add_last('f');
         my_fa.add_last('O');
         my_fa.add_last('o');
         iterator := my_fa.get_new_iterator;
	 my_loop("FIXED_ARRAY",iterator);
      end;

   use_iterator_on_linked_list is
      local
	 iterator: ITERATOR[CHARACTER];
	 ll: LINKED_LIST[CHARACTER];
      do
	 !!ll.make;
	 ll.add_last('B');
	 ll.add_last('a');
	 ll.add_last('R');
	 iterator := ll.get_new_iterator;
	 my_loop("LINKED_LIST",iterator);
      end;

   use_iterator_on_two_way_linked_list is
      local
	 iterator: ITERATOR[CHARACTER];
	 twll: TWO_WAY_LINKED_LIST[CHARACTER];
      do
	 !!twll.make;
	 twll.add_last('F');
	 twll.add_last('o');
	 twll.add_last('O');
	 iterator := twll.get_new_iterator;
	 my_loop("TWO_WAY_LINKED_LIST",iterator);
      end;

   use_iterator_on_dictionary is
      local
	 iterator: ITERATOR[CHARACTER];
	 d: DICTIONARY[CHARACTER,CHARACTER];
      do
	 !!d.make;
	 d.put('o','B');
	 d.put('f','a');
	 d.put('O','R');
         iterator := d.get_new_iterator_on_items;
	 my_loop("DICTIONARY (items)",iterator);
         iterator := d.get_new_iterator_on_keys;
	 my_loop("DICTIONARY (keys)",iterator);
      end;

end