summary refs log tree commit diff stats
path: root/doc/uml/141058.diagram
diff options
context:
space:
mode:
authorhut <hut@lavabit.com>2009-12-25 22:06:36 +0100
committerhut <hut@lavabit.com>2009-12-25 22:06:36 +0100
commit6004e161ad353bb0c7d3ab0d01da63cc9841c9be (patch)
tree96ade196e6d26cbeb712a10778f8cbceff4e7489 /doc/uml/141058.diagram
parent5c210a96a0e4bb74cd096edb045fc3814b78450c (diff)
downloadranger-6004e161ad353bb0c7d3ab0d01da63cc9841c9be.tar.gz
moved /uml to /doc/uml
Diffstat (limited to 'doc/uml/141058.diagram')
-rw-r--r--doc/uml/141058.diagram216
1 files changed, 216 insertions, 0 deletions
diff --git a/doc/uml/141058.diagram b/doc/uml/141058.diagram
new file mode 100644
index 00000000..9268c4c4
--- /dev/null
+++ b/doc/uml/141058.diagram
@@ -0,0 +1,216 @@
+format 70
+
+classinstance 128258 class_ref 169218 // Main
+  name ""   xyz 64 4 2000 life_line_z 2000
+classinstance 128386 class_ref 149378 // FM
+  name ""   xyz 185 32 2000 life_line_z 2000
+classinstance 128898 class_ref 128258 // DefaultUI
+  name ""   mortal  xyz 289 80 2000 life_line_z 2000
+classinstance 132226 class_ref 149122 // Environment
+  name ""   xyz 421 84 2000 life_line_z 2000
+classinstance 133122 class_ref 156034 // Widget
+  name ""   xyz 544 107 2000 life_line_z 2000
+classinstance 133762 class_ref 149250 // curses
+  name ""   xyz 632 4 2000 life_line_z 2000
+classinstance 134530 class_ref 148866 // Command
+  name ""   xyz 727 4 2000 life_line_z 2000
+durationcanvas 128514 classinstance_ref 128258 // :Main
+  xyzwh 83 82 2010 11 40
+end
+durationcanvas 128642 classinstance_ref 128386 // :FM
+  xyzwh 204 82 2010 11 25
+end
+durationcanvas 129026 classinstance_ref 128258 // :Main
+  xyzwh 83 130 2010 11 34
+end
+durationcanvas 129154 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 130 2010 11 58
+  overlappingdurationcanvas 135426
+    xyzwh 331 142 2020 11 40
+    overlappingdurationcanvas 135682
+      xyzwh 337 151 2030 11 25
+    end
+  end
+end
+durationcanvas 129410 classinstance_ref 128258 // :Main
+  xyzwh 83 180 2010 11 35
+end
+durationcanvas 129538 classinstance_ref 128386 // :FM
+  xyzwh 204 172 2010 11 468
+  overlappingdurationcanvas 136450
+    xyzwh 210 537 2020 11 25
+  end
+end
+durationcanvas 129794 classinstance_ref 128258 // :Main
+  xyzwh 83 655 2010 11 27
+end
+durationcanvas 129922 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 655 2010 11 27
+end
+durationcanvas 130178 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 265 2010 11 26
+end
+durationcanvas 130434 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 311 2010 11 26
+end
+durationcanvas 130690 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 381 2010 11 43
+end
+durationcanvas 131074 classinstance_ref 128898 // :DefaultUI
+  xyzwh 325 467 2010 11 53
+  overlappingdurationcanvas 134914
+    xyzwh 331 489 2020 11 25
+  end
+end
+durationcanvas 132354 classinstance_ref 132226 // :Environment
+  xyzwh 469 606 2010 11 32
+end
+durationcanvas 132866 classinstance_ref 132226 // :Environment
+  xyzwh 469 184 2010 11 27
+end
+durationcanvas 133250 classinstance_ref 133122 // :Widget
+  xyzwh 571 280 2010 11 25
+end
+durationcanvas 133506 classinstance_ref 133122 // :Widget
+  xyzwh 571 323 2010 11 25
+end
+durationcanvas 133890 classinstance_ref 133762 // :curses
+  xyzwh 658 389 2010 11 31
+end
+durationcanvas 135170 classinstance_ref 133122 // :Widget
+  xyzwh 571 501 2010 11 27
+end
+durationcanvas 135938 classinstance_ref 134530 // :Command
+  xyzwh 767 506 2010 11 72
+end
+durationcanvas 136706 classinstance_ref 133122 // :Widget
+  xyzwh 571 563 2010 11 34
+end
+msg 128770 synchronous
+  from durationcanvas_ref 128514
+  to durationcanvas_ref 128642
+  yz 82 2015 msg operation_ref 141826 // "initialize()"
+  show_full_operations_definition default drawing_language default
+  label_xy 117 64
+msg 129282 synchronous
+  from durationcanvas_ref 129026
+  to durationcanvas_ref 129154
+  yz 130 2015 msg operation_ref 171138 // "initialize()"
+  show_full_operations_definition default drawing_language default
+  label_xy 124 111
+msg 129666 synchronous
+  from durationcanvas_ref 129410
+  to durationcanvas_ref 129538
+  yz 180 2015 msg operation_ref 141954 // "loop()"
+  show_full_operations_definition default drawing_language default
+  label_xy 129 162
+msg 130050 synchronous
+  from durationcanvas_ref 129794
+  to durationcanvas_ref 129922
+  yz 655 2015 msg operation_ref 134914 // "destroy()"
+  show_full_operations_definition default drawing_language default
+  label_xy 119 636
+msg 130306 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 130178
+  yz 265 2015 msg operation_ref 134530 // "draw()"
+  show_full_operations_definition default drawing_language default
+  label_xy 245 247
+msg 130562 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 130434
+  yz 311 2015 msg operation_ref 149378 // "finalize()"
+  show_full_operations_definition default drawing_language default
+  label_xy 240 293
+msg 130818 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 130690
+  yz 382 2015 msg operation_ref 148738 // "get_next_key()"
+  show_full_operations_definition default drawing_language default
+  label_xy 229 361
+msg 130946 return
+  from durationcanvas_ref 130690
+  to durationcanvas_ref 129538
+  yz 412 2020 unspecifiedmsg
+  show_full_operations_definition default drawing_language default
+msg 131202 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 131074
+  yz 467 2015 msg operation_ref 148610 // "handle_key()"
+  show_full_operations_definition default drawing_language default
+  label_xy 234 449
+msg 132482 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 132354
+  yz 606 2015 msg operation_ref 171522 // "garbage_collect()"
+  show_full_operations_definition default drawing_language default
+  label_xy 260 587
+msg 132994 synchronous
+  from durationcanvas_ref 129538
+  to durationcanvas_ref 132866
+  yz 185 2020 msg operation_ref 171650 // "enter_dir()"
+  show_full_operations_definition default drawing_language default
+  label_xy 222 164
+msg 133378 synchronous
+  from durationcanvas_ref 130178
+  to durationcanvas_ref 133250
+  yz 280 2015 msg operation_ref 134530 // "draw()"
+  show_full_operations_definition default drawing_language default
+  label_xy 407 262
+msg 133634 synchronous
+  from durationcanvas_ref 130434
+  to durationcanvas_ref 133506
+  yz 323 2015 msg operation_ref 149378 // "finalize()"
+  show_full_operations_definition default drawing_language default
+  label_xy 405 303
+msg 134018 synchronous
+  from durationcanvas_ref 130690
+  to durationcanvas_ref 133890
+  yz 391 2015 msg operation_ref 171778 // "getch()"
+  show_full_operations_definition default drawing_language default
+  label_xy 713 361
+msg 134402 return
+  from durationcanvas_ref 133890
+  to durationcanvas_ref 130690
+  yz 408 2020 unspecifiedmsg
+  show_full_operations_definition default drawing_language default
+reflexivemsg 135042 synchronous
+  to durationcanvas_ref 134914
+  yz 489 2025 msg operation_ref 148482 // "handle_mouse()"
+  show_full_operations_definition default drawing_language default
+  label_xy 345 462
+msg 135298 synchronous
+  from durationcanvas_ref 134914
+  to durationcanvas_ref 135170
+  yz 502 2030 msg operation_ref 134786 // "click()"
+  show_full_operations_definition default drawing_language default
+  label_xy 474 484
+reflexivemsg 135554 synchronous
+  to durationcanvas_ref 135426
+  yz 142 2025 msg operation_ref 148866 // "setup()"
+  show_full_operations_definition default drawing_language default
+  label_xy 340 120
+reflexivemsg 135810 synchronous
+  to durationcanvas_ref 135682
+  yz 151 2035 msg operation_ref 149890 // "add_obj()"
+  show_full_operations_definition default drawing_language default
+  label_xy 372 143
+msg 136066 synchronous
+  from durationcanvas_ref 135170
+  to durationcanvas_ref 135938
+  yz 506 2015 msg operation_ref 164226 // "execute()"
+  show_full_operations_definition default drawing_language default
+  label_xy 593 488
+msg 136578 synchronous
+  from durationcanvas_ref 135938
+  to durationcanvas_ref 136450
+  yz 537 2025 explicitmsg "<command>"
+  show_full_operations_definition default drawing_language default
+  label_xy 222 520
+msg 136834 synchronous
+  from durationcanvas_ref 135938
+  to durationcanvas_ref 136706
+  yz 567 2030 explicitmsg "<command>"
+  show_full_operations_definition default drawing_language default
+  label_xy 581 554
+end
s='alt'>
1ead3562 ^
dd660682 ^
0487a30e ^



1ead3562 ^
dd660682 ^
0487a30e ^


051c4738 ^
1ead3562 ^
dd660682 ^
0487a30e ^


1848b18f ^

98f7918b ^
795f5244 ^
e236973b ^
4e49b29e ^
6c96a437 ^
4e49b29e ^
9dcbec39 ^
4e49b29e ^


bff0fa45 ^
2b250717 ^
bff0fa45 ^


9dcbec39 ^
bff0fa45 ^

4e49b29e ^

98f7918b ^

0487a30e ^
6c96a437 ^
23d3a022 ^
0487a30e ^
827898fc ^
98f7918b ^


88be3dbc ^
1ead3562 ^
dd660682 ^

d52406cc ^
98f7918b ^
57699011 ^
d7e11237 ^
051c4738 ^
1ead3562 ^
dd660682 ^
0487a30e ^



1ead3562 ^
dd660682 ^
0487a30e ^


051c4738 ^
1ead3562 ^
dd660682 ^
0487a30e ^


1848b18f ^

d7e11237 ^
795f5244 ^
e236973b ^
4e49b29e ^
67a180e3 ^
2b250717 ^
4e49b29e ^

6c96a437 ^
23d3a022 ^

4e49b29e ^


6c96a437 ^
bff0fa45 ^

9dcbec39 ^
bff0fa45 ^


4e49b29e ^

d7e11237 ^

e4630643 ^
6c96a437 ^
23d3a022 ^
0487a30e ^
d7e11237 ^


88be3dbc ^
1ead3562 ^
dd660682 ^
d52406cc ^
d7e11237 ^
57699011 ^
0487a30e ^

1ead3562 ^
dd660682 ^
0487a30e ^



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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
                      
 
                                             
    
                                        
                                
                                       
           
                                                      
                                                
                                                                                                                                                         


                                       
                                
                                                                                                                                 


                                                                                                        
                                                                                                                                              

          

        

                                                
                     
                                               
                                                         
                     
                                   

        





                                                                             
 
               
          

                      
                              
 
                             
 
                 
          
                          



                             
          
                                 


                             
                          
          
                                


                             

                                             
                                        
                              
                                       
          
                                                      
                                                
                                                                                                                                                         


                                       
                                
                                                                                                                                


                                                                                                        
                                                                                                                                             

          

        

                                                
                      
                                               
                                                         
                     
                                   


        
              
          

                      
                             
 
                             
 
                
          
                           



                             
          
                                  


                             
                         
          
                                 


                             

                                             
                                        
                                
                                       
           
                                                      
                                                                                                        

          
                                                      

                                                                                                                                                                                    


                                       
                                                   

                                                
                                                                                                                                                


                                       

        

                                                
                                     
                                                 
                                                                 
   


        
               
          
                     
                      
 
                             

                        
          
                                                 



                             
//: Boolean primitives

:(before "End Primitive Recipe Declarations")
AND,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "and", AND);
:(before "End Primitive Recipe Checks")
case AND: {
  for (int i = 0;  i < SIZE(inst.ingredients);  ++i) {
    if (!is_mu_scalar(inst.ingredients.at(i))) {
      raise << maybe(get(Recipe, r).name) << "'and' requires boolean ingredients, but got '" << inst.ingredients.at(i).original_string << "'\n" << end();
      goto finish_checking_instruction;
    }
  }
  if (SIZE(inst.products) > 1) {
    raise << maybe(get(Recipe, r).name) << "'and' yields exactly one product in '" << to_original_string(inst) << "'\n" << end();
    break;
  }
  if (!inst.products.empty() && !is_dummy(inst.products.at(0)) && !is_mu_boolean(inst.products.at(0))) {
    raise << maybe(get(Recipe, r).name) << "'and' should yield a boolean, but got '" << inst.products.at(0).original_string << "'\n" << end();
    break;
  }
  break;
}
:(before "End Primitive Recipe Implementations")
case AND: {
  bool result = true;
  for (int i = 0;  i < SIZE(ingredients);  ++i)
    result = result && scalar_ingredient(ingredients, i);
  products.resize(1);
  products.at(0).push_back(result);
  break;
}
:(code)
double scalar_ingredient(const vector<vector<double> >& ingredients, int i) {
  if (is_mu_address(current_instruction().ingredients.at(i)))
    return ingredients.at(i).at(/*skip alloc id*/1);
  return ingredients.at(i).at(0);
}

:(scenario and)
def main [
  1:bool <- copy true
  2:bool <- copy false
  3:bool <- and 1:bool, 2:bool
]
+mem: storing 0 in location 3

:(scenario and_2)
def main [
  1:bool <- and true, true
]
+mem: storing 1 in location 1

:(scenario and_multiple)
def main [
  1:bool <- and true, true, false
]
+mem: storing 0 in location 1

:(scenario and_multiple_2)
def main [
  1:bool <- and true, true, true
]
+mem: storing 1 in location 1

:(before "End Primitive Recipe Declarations")
OR,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "or", OR);
:(before "End Primitive Recipe Checks")
case OR: {
  for (int i = 0;  i < SIZE(inst.ingredients);  ++i) {
    if (!is_mu_scalar(inst.ingredients.at(i))) {
      raise << maybe(get(Recipe, r).name) << "'and' requires boolean ingredients, but got '" << inst.ingredients.at(i).original_string << "'\n" << end();
      goto finish_checking_instruction;
    }
  }
  if (SIZE(inst.products) > 1) {
    raise << maybe(get(Recipe, r).name) << "'or' yields exactly one product in '" << to_original_string(inst) << "'\n" << end();
    break;
  }
  if (!inst.products.empty() && !is_dummy(inst.products.at(0)) && !is_mu_boolean(inst.products.at(0))) {
    raise << maybe(get(Recipe, r).name) << "'or' should yield a boolean, but got '" << inst.products.at(0).original_string << "'\n" << end();
    break;
  }
  break;
}
:(before "End Primitive Recipe Implementations")
case OR: {
  bool result = false;
  for (int i = 0;  i < SIZE(ingredients);  ++i)
    result = result || scalar_ingredient(ingredients, i);
  products.resize(1);
  products.at(0).push_back(result);
  break;
}

:(scenario or)
def main [
  1:bool <- copy true
  2:bool <- copy false
  3:bool <- or 1:bool, 2:bool
]
+mem: storing 1 in location 3

:(scenario or_2)
def main [
  1:bool <- or false, false
]
+mem: storing 0 in location 1

:(scenario or_multiple)
def main [
  1:bool <- or false, false, false
]
+mem: storing 0 in location 1

:(scenario or_multiple_2)
def main [
  1:bool <- or false, false, true
]
+mem: storing 1 in location 1

:(before "End Primitive Recipe Declarations")
NOT,
:(before "End Primitive Recipe Numbers")
put(Recipe_ordinal, "not", NOT);
:(before "End Primitive Recipe Checks")
case NOT: {
  if (SIZE(inst.products) != SIZE(inst.ingredients)) {
    raise << "ingredients and products should match in '" << to_original_string(inst) << "'\n" << end();
    break;
  }
  for (int i = 0;  i < SIZE(inst.ingredients);  ++i) {
    if (!is_mu_scalar(inst.ingredients.at(i)) && !is_mu_address(inst.ingredients.at(i))) {
      raise << maybe(get(Recipe, r).name) << "'not' requires ingredients that can be interpreted as boolean, but got '" << inst.ingredients.at(i).original_string << "'\n" << end();
      goto finish_checking_instruction;
    }
  }
  for (int i = 0;  i < SIZE(inst.products);  ++i) {
    if (is_dummy(inst.products.at(i))) continue;
    if (!is_mu_boolean(inst.products.at(i))) {
      raise << maybe(get(Recipe, r).name) << "'not' should yield a boolean, but got '" << inst.products.at(i).original_string << "'\n" << end();
      goto finish_checking_instruction;
    }
  }
  break;
}
:(before "End Primitive Recipe Implementations")
case NOT: {
  products.resize(SIZE(ingredients));
  for (int i = 0;  i < SIZE(ingredients);  ++i) {
    products.at(i).push_back(!scalar_ingredient(ingredients, i));
  }
  break;
}

:(scenario not)
def main [
  1:bool <- copy true
  2:bool <- not 1:bool
]
+mem: storing 0 in location 2

:(scenario not_multiple)
def main [
  1:bool, 2:bool, 3:bool <- not true, false, true
]
+mem: storing 0 in location 1
+mem: storing 1 in location 2
+mem: storing 0 in location 3