1
2
3
4
5 :(scenario static_dispatch)
6 def main [
7 7:num/raw <- test 3
8 ]
9 def test a:num -> z:num [
10 z <- copy 1
11 ]
12 def test a:num, b:num -> z:num [
13 z <- copy 2
14 ]
15 +mem: storing 1 in location 7
16
17
18
19
20 :(before "End Globals")
21 map<string, vector<recipe_ordinal> > Recipe_variants;
22 :(before "End One-time Setup")
23 put(Recipe_variants, "main", vector<recipe_ordinal>());
24
25 :(before "End Globals")
26 map<string, vector<recipe_ordinal> > Recipe_variants_snapshot;
27 :(before "End save_snapshots")
28 Recipe_variants_snapshot = Recipe_variants;
29 :(before "End restore_snapshots")
30 Recipe_variants = Recipe_variants_snapshot;
31
32 :(before "End Load Recipe Header(result)")
33
34 if (result.name != "main" && contains_key(Recipe_ordinal, result.name)) {
35 const recipe_ordinal r = get(Recipe_ordinal, result.name);
36 if (!contains_key(Recipe, r) || get(Recipe, r).has_header) {
37 ¦ string new_name = matching_variant_name(result);
38 ¦ if (new_name.empty()) {
39 ¦ ¦
40 ¦ ¦ new_name = next_unused_recipe_name(result.name);
41 ¦ ¦ put(Recipe_ordinal, new_name, Next_recipe_ordinal++);
42 ¦ ¦ get_or_insert(Recipe_variants, result.name).push_back(get(Recipe_ordinal, new_name));
43 ¦ }
44 ¦ trace(9999, "load") << "switching " << result.name << " to " << new_name << end();
45 ¦ result.name = new_name;
46 ¦ result.is_autogenerated = true;
47 }
48 }
49 else {
50
51 put(Recipe_ordinal, result.name, Next_recipe_ordinal++);
52 get_or_insert(Recipe_variants, result.name).push_back(get(Recipe_ordinal, result.name));
53 }
54
55 :(code)
56 string matching_variant_name(const recipe& rr) {
57 const vector<recipe_ordinal>& variants = get_or_insert(Recipe_variants, rr.name);
58 for (int i = 0; i < SIZE(variants); ++ititle>Mu - screen.mu</title>
<meta name="Generator" content="Vim/7.4">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="none">
<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
<meta name="colorscheme" content="minimal">
<style type="text/css">
<!--
pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
a { color:#eeeeee; text-decoration: none; }
a:hover { text-decoration: underline; }
* { font-size: 12pt; font-size: 1em; }
.muRecipe { color: #ff8700; }
.Special { color: #c00000; }
.Comment { color: #9090ff; }
.Comment a { color:#0000ee; text-decoration:underline; }
.Constant { color: #00a0a0; }
.LineNr { color: #444444; }
-->
</style>
<script type='text/javascript'>
<!--
/* function to open any folds containing a jumped-to line before jumping to it */
function JumpToLine()
{
var lineNum;
lineNum = window.location.hash;
lineNum = lineNum.substr(1); /* strip off '#' */
if (lineNum.indexOf('L') == -1) {
lineNum = 'L'+lineNum;
}
lineElem = document.getElementById(lineNum);
/* Always jump to new location even if the line was hidden inside a fold, or
* we corrected the raw number to a line ID.
*/
if (lineElem) {
lineElem.scrollIntoView(true);
}
return true;
}
if ('onhashchange' in window) {
window.onhashchange = JumpToLine;
}
-->
</script>
</head>
<body onload='JumpToLine();'>
<pre id='vimCodeElement'>
<span id="L1" class="LineNr"> 1 </span><span class="Comment"># example program: managing the display using 'screen' objects</span>
<span id="L2" class="LineNr"> 2 </span>
<span id="L3" class="LineNr"> 3 </span><span class="Comment"># The zero screen below means 'use the real screen'. Tests can also use fake</span>
<span id="L4" class="LineNr"> 4 </span><span class="Comment"># screens.</span>
<span id="L5" class="LineNr"> 5 </span><span class="muRecipe">def</span> <a href='screen.mu.html#L5'>main</a> [
<span id="L6" class="LineNr"> 6 </span> open-console
<span id="L7" class="LineNr"> 7 </span> <a href='081print.mu.html#L46'>clear-screen</a> <span class="Constant">0/screen</span> <span class="Comment"># non-scrolling app</span>
<span id="L8" class="LineNr"> 8 </span> 10:char <span class="Special"><-</span> copy <span class="Constant">97/a</span>
<span id="L9" class="LineNr"> 9 </span> print <span class="Constant">0/screen</span>, 10:char/a, <span class="Constant">1/red</span>, <span class="Constant">2/green</span>
<span id="L10" class="LineNr">10 </span> 1:num/<span class="Special">raw</span>, 2:num/<span class="Special">raw</span> <span class="Special"><-</span> <a href='081print.mu.html#L577'>cursor-position</a> <span class="Constant">0/screen</span>
<span id="L11" class="LineNr">11 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L12" class="LineNr">12 </span> <a href='081print.mu.html#L46'>clear-screen</a> <span class="Constant">0/screen</span>
<span id="L13" class="LineNr">13 </span> <a href='081print.mu.html#L591'>move-cursor</a> <span class="Constant">0/screen</span>, <span class="Constant">0/row</span>, <span class="Constant">4/column</span>
<span id="L14" class="LineNr">14 </span> 10:char <span class="Special"><-</span> copy <span class="Constant">98/b</span>
<span id="L15" class="LineNr">15 </span> print <span class="Constant">0/screen</span>, 10:char
<span id="L16" class="LineNr">16 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L17" class="LineNr">17 </span> <a href='081print.mu.html#L591'>move-cursor</a> <span class="Constant">0/screen</span>, <span class="Constant">0/row</span>, <span class="Constant">0/column</span>
<span id="L18" class="LineNr">18 </span> <a href='081print.mu.html#L524'>clear-line</a> <span class="Constant">0/screen</span>
<span id="L19" class="LineNr">19 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L20" class="LineNr">20 </span> <a href='081print.mu.html#L645'>cursor-down</a> <span class="Constant">0/screen</span>
<span id="L21" class="LineNr">21 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L22" class="LineNr">22 </span> <a href='081print.mu.html#L706'>cursor-right</a> <span class="Constant">0/screen</span>
<span id="L23" class="LineNr">23 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L24" class="LineNr">24 </span> <a href='081print.mu.html#L726'>cursor-left</a> <span class="Constant">0/screen</span>
<span id="L25" class="LineNr">25 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L26" class="LineNr">26 </span> <a href='081print.mu.html#L688'>cursor-up</a> <span class="Constant">0/screen</span>
<span id="L27" class="LineNr">27 </span> <a href='084console.mu.html#L88'>wait-for-event</a> <span class="Constant">0/console</span>
<span id="L28" class="LineNr">28 </span> close-console
<span id="L29" class="LineNr">29 </span>]
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->