summary refs log tree commit diff stats
path: root/go.mod
Commit message (Expand)AuthorAgeFilesLines
* Handle the invalid "utf8" encodingBen Burwell2019-07-121-1/+1
* Add maildir backend workerBen Burwell2019-07-121-0/+1
* Support imaps with oauthbearer authentication (Gmail)Frode Aannevik2019-07-111-1/+2
* Set the required go version for this module, aercDaniel Lublin2019-06-271-0/+2
* Update tcellDrew DeVault2019-06-151-1/+1
* Update reply to use getopt posix optind formatClayton Craft2019-06-091-1/+1
* Update dependenciesSimon Ser2019-06-041-7/+10
* Update tcell forkDrew DeVault2019-06-021-1/+1
* Use forked version of tcellDrew DeVault2019-06-011-3/+3
* Update terminal color handling per vterm changesDrew DeVault2019-05-261-1/+1
* Update to the latest go-libvtermDrew DeVault2019-05-261-1/+1
* Update go-libvtermDrew DeVault2019-05-261-1/+1
* Fix special characters in address.PersonalNameDrew DeVault2019-05-251-0/+1
* Update go-imap and go-imap-idleSimon Ser2019-05-191-5/+5
* s/aerc2/aerc/gDrew DeVault2019-05-171-1/+1
* Implement :reply -q and :reply -aDrew DeVault2019-05-161-0/+1
* Implement (basic form) of :replyDrew DeVault2019-05-161-0/+1
* Copy sent emails to the Sent folderDrew DeVault2019-05-151-0/+1
* Implement sending emails /o/Drew DeVault2019-05-141-0/+2
* Add :send-message, prepares & writes email to /tmpDrew DeVault2019-05-141-2/+1
* Update go-imap to 1.0.0-beta.4Simon Ser2019-04-291-9/+7
* go get git.sr.ht/~sircmpwn/go-libvtermElias Naur2019-04-211-1/+3
* Add basic filter implementationDrew DeVault2019-03-311-0/+3
* Don't parse mail in worker; send a reader insteadDrew DeVault2019-03-311-2/+0
* Implement :pipeDrew DeVault2019-03-301-1/+1
* Add body fetching support codeDrew DeVault2019-03-291-0/+2
* Improve cursor handling in embedded terminalDrew DeVault2019-03-211-1/+1
* Fix cursor handling in embedded terminalDrew DeVault2019-03-211-1/+1
* Forward key events to child terminalDrew DeVault2019-03-211-1/+1
* Handle terminal title, login shellDrew DeVault2019-03-171-1/+2
* Add basic terminal widgetDrew DeVault2019-03-171-0/+2
* Rename :cd -> :cf, add :cdDrew DeVault2019-03-151-0/+1
* Implement key bindings subsystemDrew DeVault2019-03-151-1/+2
* Flesh out command parsing & handlingDrew DeVault2019-03-101-0/+1
* Initialize worker in account widgetDrew DeVault2019-01-131-0/+3
* Update go.modDrew DeVault2018-06-011-7/+10
* switch to tcell from termboxMarkus Ongyerth2018-06-011-0/+1
* Switch to vgoDrew DeVault2018-03-021-0/+9
Kartik K. Agaram <vc@akkartik.com> 2016-03-27 17:43:41 -0700 2812' href='/akkartik/mu/commit/html/046global.cc.html?h=main&id=a654e4ecace2d506d1b10f1dde2c287ebe84ef37'>a654e4ec ^
204dae92 ^











201458e3 ^
204dae92 ^

















201458e3 ^
204dae92 ^

201458e3 ^
204dae92 ^









a802f0ce ^
204dae92 ^
a802f0ce ^
204dae92 ^





201458e3 ^
204dae92 ^
a802f0ce ^
204dae92 ^






201458e3 ^
204dae92 ^







201458e3 ^
204dae92 ^



201458e3 ^
204dae92 ^


83fcebf3 ^


a654e4ec ^
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



                                                                                          
                                

                                                
                                  
                                                                                                               
                                           

                       
                                                                                                 
                                                                                            

                                       

                                      
                            
                             
                             
                            
                              
                           
                                  
                                                                           
                               

        



                               






















                                                                                 

         
       
                             
                         











                                                                                                                                                 
                                                                                                                           

















                                                                                                                                                                                               
                                                                                                                                                                

                                                                                                                                                                                                                                      
                                                                                                                                                                 









                                                                                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
                                                                                                                                                                                                        
                                                                                                                                                                                                                                                             





                                                                                                                                                                                                                                                  
                                                                                                                                                                                                                                                         
                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                                       






                                                                                                                                                                                                                                                                                                                            
                                                                                                                           







                                                                                                                                                                                                                                            
                                                                                                                                                                                                                                                                                                                                   



                                                                                
                                                                                                                                                                                                                                                                       


                                                                                                                                                                                                                                                                                 


       
                                     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Mu - 046global.cc</title>
<meta name="Generator" content="Vim/7.4">
<meta name="plugin-version" content="vim7.4_v2">
<meta name="syntax" content="cpp">
<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: #eeeeee; background-color: #080808; }
body { font-size: 12pt; font-family: monospace; color: #eeeeee; background-color: #080808; }
a { text-decoration: none; }
a:hover { text-decoration: underline; }
* { font-size: 12pt; font-size: 1em; }
.Constant { color: #00a0a0; }
.Special { color: #c00000; }
.muRecipe { color: #ff8700; }
.cSpecial { color: #008000; }
.Comment { color: #9090ff; }
.Delimiter { color: #800080; }
.LineNr { color: #444444; }
.traceContains { color: #008000; }
.Normal { color: #eeeeee; background-color: #080808; padding-bottom: 1px; }
.Identifier { color: #c0a020; }
-->
</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">//: So far we have local variables, and we can nest local variables of short</span>
<span id="L2" class="LineNr"> 2 </span><span class="Comment">//: lifetimes inside longer ones. Now let's support 'global' variables that</span>
<span id="L3" class="LineNr"> 3 </span><span class="Comment">//: last for the life of a routine. If we create multiple routines they won't</span>
<span id="L4" class="LineNr"> 4 </span><span class="Comment">//: have access to each other's globals.</span>
<span id="L5" class="LineNr"> 5 </span><span class="Comment">//:</span>
<span id="L6" class="LineNr"> 6 </span><span class="Comment">//: This feature is still experimental and half-baked. You can't name global</span>
<span id="L7" class="LineNr"> 7 </span><span class="Comment">//: variables, and they don't get checked for types (the only known hole in</span>
<span id="L8" class="LineNr"> 8 </span><span class="Comment">//: the type system, can cause memory corruption). We might fix these issues</span>
<span id="L9" class="LineNr"> 9 </span><span class="Comment">//: if we ever use globals. Or we might just drop the feature entirely.</span>
<span id="L10" class="LineNr">10 </span><span class="Comment">//: [tag: todo]</span>
<span id="L11" class="LineNr">11 </span>
<span id="L12" class="LineNr">12 </span><span class="Delimiter">:(scenario global_space)</span>
<span id="L13" class="LineNr">13 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L14" class="LineNr">14 </span>  <span class="Comment"># pretend address:array:location; in practice we'll use new</span>
<span id="L15" class="LineNr">15 </span>  <span class="Constant">10</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># refcount</span>
<span id="L16" class="LineNr">16 </span>  <span class="Constant">11</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">5</span>  <span class="Comment"># length</span>
<span id="L17" class="LineNr">17 </span>  <span class="Comment"># pretend address:array:location; in practice we'll use new</span>
<span id="L18" class="LineNr">18 </span>  <span class="Constant">20</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">0</span>  <span class="Comment"># refcount</span>
<span id="L19" class="LineNr">19 </span>  <span class="Constant">21</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">5</span>  <span class="Comment"># length</span>
<span id="L20" class="LineNr">20 </span>  <span class="Comment"># actual start of this recipe</span>
<span id="L21" class="LineNr">21 </span>  global-space:space<span class="Special"> &lt;- </span>copy <span class="Constant">20</span>/unsafe
<span id="L22" class="LineNr">22 </span>  <span class="Normal">default</span>-space:space<span class="Special"> &lt;- </span>copy <span class="Constant">10</span>/unsafe
<span id="L23" class="LineNr">23 </span>  <span class="Constant">1</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
<span id="L24" class="LineNr">24 </span>  <span class="Special">1:num/space:global</span><span class="Special"> &lt;- </span>copy <span class="Constant">24</span>
<span id="L25" class="LineNr">25 </span>]
<span id="L26" class="LineNr">26 </span><span class="Comment"># store to default space: 10 + (skip refcount and length) 2 + (index) 1</span>
<span id="L27" class="LineNr">27 </span><span class="traceContains">+mem: storing 23 in location 13</span>
<span id="L28" class="LineNr">28 </span><span class="Comment"># store to chained space: (contents of location 12) 20 + (refcount and length) 2 + (index) 1</span>
<span id="L29" class="LineNr">29 </span><span class="traceContains">+mem: storing 24 in location 23</span>
<span id="L30" class="LineNr">30 </span>
<span id="L31" class="LineNr">31 </span><span class="Comment">//: to support it, create another special variable called global space</span>
<span id="L32" class="LineNr">32 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L99'>is_disqualified</a> Special-cases&quot;)</span>
<span id="L33" class="LineNr">33 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;global-space&quot;</span><span class="Delimiter">)</span>
<span id="L34" class="LineNr">34 </span>  x<span class="Delimiter">.</span>initialized = <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L35" class="LineNr">35 </span><span class="Delimiter">:(before &quot;End <a href='042name.cc.html#L156'>is_special_name</a> Special-cases&quot;)</span>
<span id="L36" class="LineNr">36 </span><span class="Normal">if</span> <span class="Delimiter">(</span>s == <span class="Constant">&quot;global-space&quot;</span><span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
<span id="L37" class="LineNr">37 </span>
<span id="L38" class="LineNr">38 </span><span class="Comment">//: writes to this variable go to a field in the current routine</span>
<span id="L39" class="LineNr">39 </span><span class="Delimiter">:(before &quot;End routine Fields&quot;)</span>
<span id="L40" class="LineNr">40 </span><span class="Normal">int</span> global_space<span class="Delimiter">;</span>
<span id="L41" class="LineNr">41 </span><span class="Delimiter">:(before &quot;End routine Constructor&quot;)</span>
<span id="L42" class="LineNr">42 </span>global_space = <span class="Constant">0</span><span class="Delimiter">;</span>
<span id="L43" class="LineNr">43 </span><span class="Delimiter">:(after &quot;Begin Preprocess write_memory(x, data)&quot;)</span>
<span id="L44" class="LineNr">44 </span><span class="Normal">if</span> <span class="Delimiter">(</span>x<span class="Delimiter">.</span>name == <span class="Constant">&quot;global-space&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L45" class="LineNr">45 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!scalar<span class="Delimiter">(</span>data<span class="Delimiter">)</span> || !is_space<span class="Delimiter">(</span>x<span class="Delimiter">))</span>
<span id="L46" class="LineNr">46 </span>    <a href='003trace.cc.html#L176'>raise</a> &lt;&lt; <a href='013update_operation.cc.html#L25'>maybe</a><span class="Delimiter">(</span>current_recipe_name<span class="Delimiter">())</span> &lt;&lt; <span class="Constant">&quot;'global-space' should be of type <a href='043space.cc.html#L76'>address</a>:array:location, but tried to write '&quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>x<span class="Delimiter">.</span>type<span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;'</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L193'>end</a><span class="Delimiter">();</span>
<span id="L47" class="LineNr">47 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>Current_routine<span class="Delimiter">-&gt;</span>global_space<span class="Delimiter">)</span>
<span id="L48" class="LineNr">48 </span>    <a href='003trace.cc.html#L176'>raise</a> &lt;&lt; <span class="Constant">&quot;routine already has a global-space; you can't over-write your globals&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
<span id="L49" class="LineNr">49 </span>  Current_routine<span class="Delimiter">-&gt;</span>global_space = data<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
<span id="L50" class="LineNr">50 </span>  <span class="Identifier">return</span><span class="Delimiter">;</span>
<span id="L51" class="LineNr">51 </span><span class="Delimiter">}</span>
<span id="L52" class="LineNr">52 </span>
<span id="L53" class="LineNr">53 </span><span class="Comment">//: now marking variables as /space:global looks them up inside this field</span>
<span id="L54" class="LineNr">54 </span><span class="Delimiter">:(after &quot;int space_base(const reagent&amp; x)&quot;)</span>
<span id="L55" class="LineNr">55 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='046global.cc.html#L79'>is_global</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Delimiter">{</span>
<span id="L56" class="LineNr">56 </span>    <span class="Normal">if</span> <span class="Delimiter">(</span>!Current_routine<span class="Delimiter">-&gt;</span>global_space<span class="Delimiter">)</span>
<span id="L57" class="LineNr">57 </span>      <a href='003trace.cc.html#L176'>raise</a> &lt;&lt; <span class="Constant">&quot;routine has no global space</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; <a href='003trace.cc.html#L193'>end</a><span class="Delimiter">();</span>
<span id="L58" class="LineNr">58 </span>    <span class="Identifier">return</span> Current_routine<span class="Delimiter">-&gt;</span>global_space + <span class="Comment">/*</span><span class="Comment">skip refcount</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span>
<span id="L59" class="LineNr">59 </span>  <span class="Delimiter">}</span>
<span id="L60" class="LineNr">60 </span>
<span id="L61" class="LineNr">61 </span><span class="Comment">//: for now let's not bother giving global variables names.</span>
<span id="L62" class="LineNr">62 </span><span class="Comment">//: don't want to make them too comfortable to use.</span>
<span id="L63" class="LineNr">63 </span>
<span id="L64" class="LineNr">64 </span><span class="Delimiter">:(scenario global_space_with_names)</span>
<span id="L65" class="LineNr">65 </span><span class="muRecipe">def</span> <a href='000organization.cc.html#L113'>main</a> [
<span id="L66" class="LineNr">66 </span>  global-space:space<span class="Special"> &lt;- </span><span class="Normal">new</span> <span class="Constant">location:type</span><span class="Delimiter">,</span> <span class="Constant">10</span>
<span id="L67" class="LineNr">67 </span>  <span class="Normal">x</span>:num<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
<span id="L68" class="LineNr">68 </span>  <span class="Special">1:num/space:global</span><span class="Special"> &lt;- </span>copy <span class="Constant">24</span>
<span id="L69" class="LineNr">69 </span>]
<span id="L70" class="LineNr">70 </span><span class="Comment"># don't complain about mixing numeric addresses and names</span>
<span id="L71" class="LineNr">71 </span>$error: <span class="Constant">0</span>
<span id="L72" class="LineNr">72 </span>
<span id="L73" class="LineNr">73 </span><span class="Delimiter">:(after &quot;bool is_numeric_location(const reagent&amp; x)&quot;)</span>
<span id="L74" class="LineNr">74 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='046global.cc.html#L79'>is_global</a><span class="Delimiter">(</span>x<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
<span id="L75" class="LineNr">75 </span>
<span id="L76" class="LineNr">76 </span><span class="Comment">//: helpers</span>
<span id="L77" class="LineNr">77 </span>
<span id="L78" class="LineNr">78 </span><span class="Delimiter">:(code)</span>
<span id="L79" class="LineNr">79 </span><span class="Normal">bool</span> <a href='046global.cc.html#L79'>is_global</a><span class="Delimiter">(</span><span class="Normal">const</span> reagent&amp; x<span class="Delimiter">)</span> <span class="Delimiter">{</span>
<span id="L80" class="LineNr">80 </span>  string_tree* s = property<span class="Delimiter">(</span>x<span class="Delimiter">,</span> <span class="Constant">&quot;space&quot;</span><span class="Delimiter">);</span>
<span id="L81" class="LineNr">81 </span>  <span class="Identifier">return</span> s &amp;&amp; s<span class="Delimiter">-&gt;</span>atom &amp;&amp; s<span class="Delimiter">-&gt;</span>value == <span class="Constant">&quot;global&quot;</span><span class="Delimiter">;</span>
<span id="L82" class="LineNr">82 </span><span class="Delimiter">}</span>
</pre>
</body>
</html>
<!-- vim: set foldmethod=manual : -->