1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-03 07:24:58 +03:00

Began package reform

This commit is contained in:
Graham Nelson 2019-07-26 10:14:17 +01:00
parent ab4646111b
commit dc11921249
37 changed files with 127 additions and 121 deletions

View file

@ -121,7 +121,7 @@ the pipeline:
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Package::which</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a package"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_bin</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"Move %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_bin</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"Move %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">));</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -63,15 +63,16 @@ be included.
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ptype</span><span class="plain"> == </span><span class="identifier">property_ptype_symbol</span><span class="plain">)</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's a _property package"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ptype</span><span class="plain"> == </span><span class="identifier">function_ptype_symbol</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Main_fn"</span><span class="plain">))</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Main_fn"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's Main"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"DefArt_fn"</span><span class="plain">))</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"DefArt_fn"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's a veneer replacement"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CDefArt_fn"</span><span class="plain">))</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CDefArt_fn"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's a veneer replacement"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"IndefArt_fn"</span><span class="plain">))</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"IndefArt_fn"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's a veneer replacement"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CIndefArt_fn"</span><span class="plain">))</span>
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"CIndefArt_fn"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::Eliminate::require</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"it's a veneer replacement"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>

View file

@ -92,7 +92,7 @@
<span class="identifier">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">D</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">ID_IFLD</span><span class="plain">] == </span><span class="identifier">PACKAGE_IST</span><span class="plain">) {</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::ne</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">))</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::ne</span><span class="plain">(</span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">))</span>
<span class="functiontext">CodeGen::MergeTemplate::build_r</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>

View file

@ -131,16 +131,14 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::FC::local</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DEFN_LOCAL_IFLD</span><span class="plain">]);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DEFN_LOCAL_IFLD</span><span class="plain">]);</span>
<span class="functiontext">CodeGen::Targets::declare_local_variable</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">var_name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::FC::label</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="functiontext">CodeGen::current</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">lab_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="plain">}</span>
@ -186,9 +184,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::FC::lab</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Package::is</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad lab"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lab</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad lab"</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="functiontext">CodeGen::current</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">query_labels_mode</span><span class="plain">) </span><span class="identifier">PUT</span><span class="plain">(</span><span class="character">'?'</span><span class="plain">);</span>
@ -235,8 +231,7 @@
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-&gt;</span><span class="identifier">W</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">VAL2_VAL_IFLD</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_stored_in_data</span><span class="plain">(</span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">)) {</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symb</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="identifier">Inter::Packages::scope_of</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">val2</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symb</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad val"</span><span class="plain">);</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="functiontext">CodeGen::current</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>

View file

@ -38,7 +38,7 @@ tell the generator that nothing more need be done.
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype</span><span class="plain"> = </span><span class="identifier">Inter::Packages::type</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">ptype</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"_module"</span><span class="plain">)) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Module '%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Module '%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">));</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain"> = </span><span class="identifier">Inter::Packages::read_metadata</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`title"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">title</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"From extension '%S by %S' version %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">,</span>
<span class="identifier">Inter::Packages::read_metadata</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`author"</span><span class="plain">),</span>
@ -50,7 +50,7 @@ tell the generator that nothing more need be done.
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">contents</span><span class="plain"> = 0;</span>
<span class="identifier">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">) </span><span class="identifier">contents</span><span class="plain">++;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">contents</span><span class="plain"> &gt; 0) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S:\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">));</span>
<span class="identifier">INDENT</span><span class="plain">;</span>
<span class="identifier">Inter::Packages::unmark_all</span><span class="plain">();</span>
<span class="identifier">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">) {</span>
@ -76,7 +76,7 @@ tell the generator that nothing more need be done.
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Packages::type</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">) == </span><span class="identifier">ptype</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain"> = </span><span class="identifier">Inter::Packages::read_metadata</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"`name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">name</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">name</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">name</span><span class="plain"> = </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">R2</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pos</span><span class="plain"> &gt; 0) &amp;&amp; (</span><span class="identifier">first</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">", "</span><span class="plain">);</span>
<span class="identifier">pos</span><span class="plain"> += </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pos</span><span class="plain"> &gt; 80) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) + 2; }</span>

View file

@ -252,13 +252,13 @@ insert them into the Inter stream close to the top.
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_symbol_t</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">-&gt;</span><span class="identifier">stored_in</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="identifier">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">), </span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_symbol_w</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">, </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">-&gt;</span><span class="identifier">stored_in</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="identifier">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">), </span><span class="identifier">symb</span><span class="plain">-&gt;</span><span class="identifier">owning_table</span><span class="plain">-&gt;</span><span class="identifier">owning_package</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">);</span>
<span class="plain">}</span>
@ -1655,7 +1655,7 @@ insert them into the Inter stream close to the top.
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">PR</span><span class="plain"> = </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">context</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">PR</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-&gt;</span><span class="identifier">stored_in</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="plain">}</span>

View file

@ -75,7 +75,7 @@ than forward slashes are used as dividers.
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain">++ &gt; 0) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">"\</span><span class="plain">\</span><span class="string">"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;actual_package</span><span class="plain">)</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;actual_package</span><span class="plain">-&gt;</span><span class="identifier">package_name</span><span class="plain">-&gt;</span><span class="identifier">symbol_name</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;actual_package</span><span class="plain">));</span>
<span class="reserved">else</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"'%n'"</span><span class="plain">, </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;eventual_name</span><span class="plain">);</span>
<span class="identifier">R</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">-</span><span class="element">&gt;parent_request</span><span class="plain">;</span>

View file

@ -56,7 +56,7 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IBM</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no bookmark supplied"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid package supplied"</span><span class="plain">);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Symbols::definition</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">D</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain">-</span><span class="element">&gt;root_node</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">)-</span><span class="element">&gt;root_node</span><span class="plain">;</span>
<span class="identifier">IBM</span><span class="plain">-</span><span class="element">&gt;R</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::last_child</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">);</span>
<span class="identifier">IBM</span><span class="plain">-</span><span class="element">&gt;placement_wrt_R</span><span class="plain"> = </span><span class="constant">AFTER_ICPLACEMENT</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IBM</span><span class="plain">-</span><span class="element">&gt;R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
@ -146,7 +146,7 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no frame to insert"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IBM</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"nowhere to insert"</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">);</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain">;</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">INTER_FRAMES</span><span class="plain">, </span><span class="string">"Insert frame %F\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, *</span><span class="identifier">F</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">F_level</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LEVEL_IFLD</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F_level</span><span class="plain"> == 0) {</span>

View file

@ -41,6 +41,7 @@
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">root_package_ID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">, </span><span class="identifier">root_package_ID</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_node</span><span class="plain"> = </span><span class="functiontext">Inter::Node::root_frame</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_node</span><span class="plain">;</span>
<span class="functiontext">Inter::Packages::make_rootlike</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">);</span>
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">, </span><span class="identifier">globals</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_node</span><span class="plain">-</span><span class="element">&gt;package</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;root_package</span><span class="plain">;</span>

View file

@ -18,7 +18,7 @@
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_package</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">stored_in</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">package_head</span><span class="plain">;</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">index_n</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">package_scope</span><span class="plain">;</span>
@ -29,7 +29,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_package is accessed in 2/it, 2/bkm, 2/st, 3/dfn, 3/iibf, 5/tlc, 5/tlc2, 5/trc, 5/tlc3 and here.</p>
<p class="endnote">The structure inter_package is accessed in 2/it, 2/bkm, 2/st, 3/iibf, 4/tpc3, 5/trc and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
@ -44,9 +44,11 @@
<pre class="display">
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">default_ptree</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::new</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain">);</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_scope</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_flags</span><span class="plain"> = 0;</span>
@ -54,6 +56,16 @@
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">default_ptree</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">default_ptree</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Inter::Packages::is_codelike</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">pack</span><span class="plain">) &amp;&amp; (</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_flags</span><span class="plain"> &amp; </span><span class="constant">CODELIKE_PACKAGE_FLAG</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
@ -116,15 +128,13 @@
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"null package name"</span><span class="plain">);</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"main"</span><span class="plain">)))</span>
<span class="functiontext">Inter::Tree::set_main_package</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="functiontext">Inter::Tree::set_main_package</span><span class="plain">(</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Packages::log</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vp</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = (</span><span class="reserved">inter_package</span><span class="plain"> *) </span><span class="identifier">vp</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;null-package&gt;"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::basics</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
@ -220,20 +230,20 @@
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">found</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Inter::Symbols::is_defined</span><span class="plain">(</span><span class="identifier">found</span><span class="plain">))) {</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Symbols::definition</span><span class="plain">(</span><span class="identifier">found</span><span class="plain">);</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">D</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">VAL1_MD_IFLD</span><span class="plain"> + 1];</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="functiontext">Inter::Tree::warehouse</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain">), </span><span class="identifier">val2</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="functiontext">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">)), </span><span class="identifier">val2</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Packages::wrap</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Packages::new is used in 2/tw (<a href="2-tw.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>).</p>
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">&#167;1.1.3</a>, <a href="3-iibf.html#SP1_1_4">&#167;1.1.4</a>).</p>
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Inter::Packages::is_codelike is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">&#167;1.1.3.3</a>).</p>
<p class="endnote">The function Inter::Packages::make_codelike is used in 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
@ -282,8 +292,6 @@
<p class="endnote">The function Inter::Packages::read_metadata appears nowhere else.</p>
<p class="endnote">The function Inter::Packages::wrap appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-st.html">Back to 'Symbols Tables'</a></li><li><a href="2-sym.html">Continue with 'Symbols'</a></li></ul><hr class="tocbar">
<!--End of weave-->

View file

@ -292,7 +292,8 @@ to access this: one following equations, the other not.
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="functiontext">Inter::Node::globals</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="identifier">x</span><span class="plain">]);</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="plain">}</span>
@ -465,7 +466,7 @@ a global symbol in any non-global context.
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;symbol_array</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">symb</span><span class="plain">) &amp;&amp; (</span><span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain">)) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S_to</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">S_to</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">), </span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S_to</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="functiontext">Inter::Errors::issue</span><span class="plain">(</span><span class="functiontext">Inter::Errors::quoted</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"unable to locate symbol"</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">));</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Inter::SymbolsTables::equate</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">S_to</span><span class="plain">);</span>
<span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -530,7 +531,7 @@ a global symbol in any non-global context.
<span class="identifier">chain</span><span class="plain">[</span><span class="identifier">chain_length</span><span class="plain">++] = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::parent</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">chain_length</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain">&gt;=0; </span><span class="identifier">i</span><span class="plain">--) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"/%S"</span><span class="plain">, </span><span class="identifier">chain</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=</span><span class="identifier">chain_length</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain">&gt;=0; </span><span class="identifier">i</span><span class="plain">--) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"/%S"</span><span class="plain">, </span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">chain</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]));</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"/%S"</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="plain">}</span>

View file

@ -32,7 +32,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_symbol is accessed in 2/st, 2/pck, 3/dfn, 3/iibf, 3/iitf, 3/vi, 3/idt, 4/tmc, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc2 and here.</p>
<p class="endnote">The structure inter_symbol is accessed in 2/st, 2/pck, 3/iibf, 3/iitf, 3/vi, 3/idt, 4/tmc, 4/tpc, 4/tac, 4/tpc2, 4/tpc3, 4/tkc, 4/tdc, 4/tvc2, 4/tcc2, 4/trc, 4/tic, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 5/tlc, 5/tlc2, 5/tic, 5/trc, 5/tvc, 5/tlc3, 5/tcc2 and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>

View file

@ -362,8 +362,8 @@
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"' (%d) cannot be used "</span><span class="plain">, </span><span class="identifier">IC</span><span class="plain">-</span><span class="element">&gt;construct_ID</span><span class="plain">);</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">need</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OUTSIDE_OF_PACKAGES</span><span class="plain">: </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"outside packages"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INSIDE_PLAIN_PACKAGE</span><span class="plain">: </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"inside non-code packages such as %S"</span><span class="plain">, (</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">)?(</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">):</span><span class="identifier">I</span><span class="string">"&lt;nameless&gt;"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INSIDE_CODE_PACKAGE</span><span class="plain">: </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"inside code packages such as %S"</span><span class="plain">, (</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">)?(</span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">):</span><span class="identifier">I</span><span class="string">"&lt;nameless&gt;"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INSIDE_PLAIN_PACKAGE</span><span class="plain">: </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"inside non-code packages such as %S"</span><span class="plain">, </span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INSIDE_CODE_PACKAGE</span><span class="plain">: </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="string">"inside code packages such as %S"</span><span class="plain">, </span><span class="functiontext">Inter::Packages::name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">M</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="plain">}</span>

View file

@ -31,6 +31,7 @@ complete in itself.
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> = </span><span class="functiontext">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">default_ptree</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
<span class="constant">inter_t</span><span class="plain"> *</span><span class="identifier">grid</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">grid_extent</span><span class="plain"> = 0;</span>
@ -44,6 +45,7 @@ complete in itself.
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">Memory::I7_array_free</span><span class="plain">(</span><span class="identifier">grid</span><span class="plain">, </span><span class="constant">INTER_BYTECODE_MREASON</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">grid_extent</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="constant">inter_t</span><span class="plain">));</span>
<span class="identifier">BinaryFiles::close</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">);</span>
<span class="identifier">default_ptree</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
@ -254,7 +256,7 @@ that's the end of the list and therefore the block. (There is no resource 0.)
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">max</span><span class="plain"> = -1, </span><span class="identifier">count</span><span class="plain"> = 0;</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = 1; </span><span class="identifier">n</span><span class="plain"> &lt; </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">n</span><span class="plain">++) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.owning_package</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain"> != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">) != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="identifier">count</span><span class="plain">++;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain">+1 &gt; </span><span class="identifier">max</span><span class="plain">) </span><span class="identifier">max</span><span class="plain"> = </span><span class="identifier">n</span><span class="plain">+1;</span>
<span class="plain">}</span>
@ -263,12 +265,12 @@ that's the end of the list and therefore the block. (There is no resource 0.)
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">max</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = 1; </span><span class="identifier">n</span><span class="plain"> &lt; </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">n</span><span class="plain">++) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.owning_package</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain"> != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">) != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">n</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = 1; </span><span class="identifier">n</span><span class="plain"> &lt; </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">n</span><span class="plain">++) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.owning_package</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain"> != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">) != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_bin</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDOUT</span><span class="plain">, </span><span class="string">"Writing resource %d type %d owner %s\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">, </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.irsrc</span><span class="plain">,</span>
<span class="plain">(</span><span class="identifier">owner</span><span class="plain">)?</span><span class="string">"yes"</span><span class="plain">:</span><span class="string">"no"</span><span class="plain">);</span>
<span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">n</span><span class="plain">);</span>
@ -579,7 +581,7 @@ enough that the slot exists for the eventual list to be stored in.
<pre class="displaydefn">
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = 1; </span><span class="identifier">n</span><span class="plain"> &lt; </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;size</span><span class="plain">; </span><span class="identifier">n</span><span class="plain">++) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain"> = </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.owning_package</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;stored_in</span><span class="plain"> != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">owner</span><span class="plain">) &amp;&amp; (</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">) != </span><span class="identifier">I</span><span class="plain">)) </span><span class="reserved">continue</span><span class="plain">;</span>
<span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &amp;(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">&gt;stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_symbols_table</span><span class="plain">) {</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">from_T</span><span class="plain"> = </span><span class="identifier">res</span><span class="plain">-</span><span class="element">&gt;stored_symbols_table</span><span class="plain">;</span>

View file

@ -21,11 +21,13 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Textual::read</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
<span class="identifier">LOGIF</span><span class="plain">(</span><span class="identifier">INTER_FILE_READ</span><span class="plain">, </span><span class="string">"(Reading textual inter file %f)\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
<span class="identifier">default_ptree</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
<span class="identifier">no_blank_lines_stacked</span><span class="plain"> = 0;</span>
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">IBM</span><span class="plain"> = </span><span class="functiontext">Inter::Bookmarks::at_start_of_this_repository</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="reserved">inter_error_location</span><span class="plain"> </span><span class="identifier">eloc</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::file_location</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">TextFiles::read</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="string">"can't open inter file"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="functiontext">Inter::Textual::read_line</span><span class="plain">, 0, &amp;</span><span class="identifier">IBM</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::resolve_forward_references</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, &amp;</span><span class="identifier">eloc</span><span class="plain">);</span>
<span class="identifier">default_ptree</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="functiontext">Inter::Tree::traverse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="functiontext">Inter::Textual::lint_visitor</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, -</span><span class="constant">PACKAGE_IST</span><span class="plain">);</span>
<span class="plain">}</span>

View file

@ -76,6 +76,7 @@
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">PID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">PID</span><span class="plain">);</span>
<span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="functiontext">Inter::Packages::set_name</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ptype_name</span><span class="plain"> == </span><span class="identifier">code_packagetype</span><span class="plain">) </span><span class="functiontext">Inter::Packages::make_codelike</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">linkage_packagetype</span><span class="plain">) &amp;&amp; (</span><span class="identifier">ptype_name</span><span class="plain"> == </span><span class="identifier">linkage_packagetype</span><span class="plain">))</span>
@ -187,7 +188,7 @@
<p class="endnote">The function Inter::Package::write_symbols is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Inter::Package::is is used in 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Package::is appears nowhere else.</p>
<p class="endnote">The function Inter::Package::which is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>

View file

@ -71,8 +71,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Label::verify</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.extent</span><span class="plain"> != </span><span class="constant">EXTENT_LABEL_IFR</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"extent wrong"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Symbols::is_label</span><span class="plain">(</span><span class="identifier">lab_name</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"not a label"</span><span class="plain">, (</span><span class="identifier">lab_name</span><span class="plain">)?(</span><span class="identifier">lab_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">):</span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
@ -85,8 +84,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Label::write</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LABEL_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lab_name</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">lab_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"cannot write label"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>

View file

@ -87,8 +87,7 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Local::write</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LOCAL_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">DEFN_LOCAL_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_kind</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="constant">KIND_LOCAL_IFLD</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">var_name</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"local %S %S"</span><span class="plain">, </span><span class="identifier">var_name</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">var_kind</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>

View file

@ -73,15 +73,13 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Lab::verify</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.extent</span><span class="plain"> != </span><span class="constant">EXTENT_LAB_IFR</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"extent wrong"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">owner</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Symbols::is_label</span><span class="plain">(</span><span class="identifier">label</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"no such label"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Lab::write</span><span class="plain">(</span><span class="reserved">inter_construct</span><span class="plain"> *</span><span class="identifier">IC</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_error_message</span><span class="plain"> **</span><span class="identifier">E</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">label</span><span class="plain">) {</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"lab %S"</span><span class="plain">, </span><span class="identifier">label</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Node::error</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"cannot write lab"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
@ -89,9 +87,7 @@
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Lab::label_symbol</span><span class="plain">(</span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::container</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">routine</span><span class="plain"> = </span><span class="identifier">pack</span><span class="plain">-</span><span class="element">&gt;package_name</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Package::is</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad lab"</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">routine</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::local_symbol_from_id</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">LABEL_LAB_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lab</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad lab"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lab</span><span class="plain">;</span>
<span class="plain">}</span>

View file

@ -210,13 +210,13 @@ inter_symbol *Emit::new_local_symbol(inter_symbol *rsymb, text_stream *name) {
void Emit::annotate_symbol_t(inter_symbol *symb, inter_t annot_ID, text_stream *S) {
Inter::Symbols::annotate_t(symb->owning_table->owning_package->stored_in, symb->owning_table->owning_package, symb, annot_ID, S);
Inter::Symbols::annotate_t(Inter::Packages::tree(symb->owning_table->owning_package), symb->owning_table->owning_package, symb, annot_ID, S);
}
void Emit::annotate_symbol_w(inter_symbol *symb, inter_t annot_ID, wording W) {
TEMPORARY_TEXT(temp);
WRITE_TO(temp, "%W", W);
Inter::Symbols::annotate_t(symb->owning_table->owning_package->stored_in, symb->owning_table->owning_package, symb, annot_ID, temp);
Inter::Symbols::annotate_t(Inter::Packages::tree(symb->owning_table->owning_package), symb->owning_table->owning_package, symb, annot_ID, temp);
DISCARD_TEXT(temp);
}
@ -1345,7 +1345,7 @@ void Emit::to_ival_in_context(inter_name *context, inter_t *val1, inter_t *val2,
package_request *PR = InterNames::location(context);
inter_package *pack = Packaging::incarnate(PR);
inter_symbol *S = InterNames::to_symbol(iname);
if (S) { Inter::Symbols::to_data(pack->stored_in, pack, S, val1, val2); return; }
if (S) { Inter::Symbols::to_data(Inter::Packages::tree(pack), pack, S, val1, val2); return; }
*val1 = LITERAL_IVAL; *val2 = 0;
}

View file

@ -47,7 +47,7 @@ void Packaging::log(package_request *R) {
while (R) {
if (c++ > 0) LOG("\\");
if (R->actual_package)
LOG("%S", R->actual_package->package_name->symbol_name);
LOG("%S", Inter::Packages::name(R->actual_package));
else
LOG("'%n'", R->eventual_name);
R = R->parent_request;

View file

@ -92,7 +92,7 @@ int CodeGen::Stage::run_move_stage(pipeline_step *step) {
inter_package *pack = Inter::Package::which(S);
if (pack == NULL) internal_error("not a package");
if (trace_bin) WRITE_TO(STDOUT, "Move %S\n", pack->package_name->symbol_name);
if (trace_bin) WRITE_TO(STDOUT, "Move %S\n", Inter::Packages::name(pack));
return TRUE;
}

View file

@ -44,15 +44,16 @@ void CodeGen::Eliminate::package_preserver(inter_tree *I, inter_tree_node *P, vo
else if (ptype == property_ptype_symbol)
CodeGen::Eliminate::require(pack, NULL, I"it's a _property package");
else if (ptype == function_ptype_symbol) {
if (Str::eq(pack->package_name->symbol_name, I"Main_fn"))
text_stream *N = Inter::Packages::name(pack);
if (Str::eq(N, I"Main_fn"))
CodeGen::Eliminate::require(pack, NULL, I"it's Main");
else if (Str::eq(pack->package_name->symbol_name, I"DefArt_fn"))
else if (Str::eq(N, I"DefArt_fn"))
CodeGen::Eliminate::require(pack, NULL, I"it's a veneer replacement");
else if (Str::eq(pack->package_name->symbol_name, I"CDefArt_fn"))
else if (Str::eq(N, I"CDefArt_fn"))
CodeGen::Eliminate::require(pack, NULL, I"it's a veneer replacement");
else if (Str::eq(pack->package_name->symbol_name, I"IndefArt_fn"))
else if (Str::eq(N, I"IndefArt_fn"))
CodeGen::Eliminate::require(pack, NULL, I"it's a veneer replacement");
else if (Str::eq(pack->package_name->symbol_name, I"CIndefArt_fn"))
else if (Str::eq(N, I"CIndefArt_fn"))
CodeGen::Eliminate::require(pack, NULL, I"it's a veneer replacement");
}
}

View file

@ -80,7 +80,7 @@ inter_symbol *CodeGen::MergeTemplate::find_in_namespace(inter_tree *I, text_stre
LOOP_THROUGH_INTER_CHILDREN(C, D) {
if (C->W.data[ID_IFLD] == PACKAGE_IST) {
inter_package *P = Inter::Package::defined_by_frame(C);
if (Str::ne(P->package_name->symbol_name, I"template"))
if (Str::ne(Inter::Packages::name(P), I"template"))
CodeGen::MergeTemplate::build_r(P);
}
}

View file

@ -109,16 +109,14 @@ void CodeGen::FC::splat(code_generation *gen, inter_tree_node *P) {
void CodeGen::FC::local(code_generation *gen, inter_tree_node *P) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *var_name = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[DEFN_LOCAL_IFLD]);
inter_symbol *var_name = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[DEFN_LOCAL_IFLD]);
CodeGen::Targets::declare_local_variable(gen, P, var_name);
}
void CodeGen::FC::label(code_generation *gen, inter_tree_node *P) {
text_stream *OUT = CodeGen::current(gen);
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[DEFN_LABEL_IFLD]);
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[DEFN_LABEL_IFLD]);
WRITE("%S;\n", lab_name->symbol_name);
}
@ -164,9 +162,7 @@ void CodeGen::FC::cast(code_generation *gen, inter_tree_node *P) {
void CodeGen::FC::lab(code_generation *gen, inter_tree_node *P) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
if (Inter::Package::is(routine) == FALSE) internal_error("bad lab");
inter_symbol *lab = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[LABEL_LAB_IFLD]);
inter_symbol *lab = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[LABEL_LAB_IFLD]);
if (lab == NULL) internal_error("bad lab");
text_stream *OUT = CodeGen::current(gen);
if (query_labels_mode) PUT('?');
@ -213,8 +209,7 @@ void CodeGen::FC::val(code_generation *gen, inter_tree_node *P) {
inter_t val2 = P->W.data[VAL2_VAL_IFLD];
if (Inter::Symbols::is_stored_in_data(val1, val2)) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *symb = Inter::SymbolsTables::local_symbol_from_id(routine, val2);
inter_symbol *symb = Inter::SymbolsTables::local_symbol_from_id(pack, val2);
if (symb == NULL) symb = Inter::SymbolsTables::symbol_from_id(Inter::Packages::scope_of(P), val2);
if (symb == NULL) internal_error("bad val");
text_stream *OUT = CodeGen::current(gen);

View file

@ -27,7 +27,7 @@ void CodeGen::Inventory::visitor(inter_tree *I, inter_tree_node *P, void *state)
inter_symbol *ptype = Inter::Packages::type(from);
if (Str::eq(ptype->symbol_name, I"_module")) {
WRITE("Module '%S'\n", from->package_name->symbol_name);
WRITE("Module '%S'\n", Inter::Packages::name(from));
text_stream *title = Inter::Packages::read_metadata(from, I"`title");
if (title) WRITE("From extension '%S by %S' version %S\n", title,
Inter::Packages::read_metadata(from, I"`author"),
@ -39,7 +39,7 @@ void CodeGen::Inventory::visitor(inter_tree *I, inter_tree_node *P, void *state)
int contents = 0;
LOOP_THROUGH_INTER_CHILDREN(C, P) contents++;
if (contents > 0) {
WRITE("%S:\n", from->package_name->symbol_name);
WRITE("%S:\n", Inter::Packages::name(from));
INDENT;
Inter::Packages::unmark_all();
LOOP_THROUGH_INTER_CHILDREN(C, P) {
@ -65,7 +65,7 @@ void CodeGen::Inventory::visitor(inter_tree *I, inter_tree_node *P, void *state)
inter_package *R2 = Inter::Package::defined_by_frame(D);
if (Inter::Packages::type(R2) == ptype) {
text_stream *name = Inter::Packages::read_metadata(R2, I"`name");
if (name == NULL) name = R2->package_name->symbol_name;
if (name == NULL) name = Inter::Packages::name(R2);
if ((pos > 0) && (first == FALSE)) WRITE(", ");
pos += Str::len(name) + 2;
if (pos > 80) { WRITE("\n"); pos = Str::len(name) + 2; }

View file

@ -44,7 +44,7 @@ void Inter::Bookmarks::set_current_package(inter_bookmark *IBM, inter_package *P
if (IBM == NULL) internal_error("no bookmark supplied");
if (P == NULL) internal_error("invalid package supplied");
inter_tree_node *D = Inter::Symbols::definition(P->package_name);
if (D == NULL) D = P->stored_in->root_node;
if (D == NULL) D = Inter::Packages::tree(P)->root_node;
IBM->R = Inter::Tree::last_child(D);
IBM->placement_wrt_R = AFTER_ICPLACEMENT;
if (IBM->R == NULL) {
@ -134,7 +134,7 @@ void Inter::Bookmarks::insert(inter_bookmark *IBM, inter_tree_node *F) {
if (F == NULL) internal_error("no frame to insert");
if (IBM == NULL) internal_error("nowhere to insert");
inter_package *pack = Inter::Bookmarks::package(IBM);
inter_tree *I = pack->stored_in;
inter_tree *I = Inter::Packages::tree(pack);
LOGIF(INTER_FRAMES, "Insert frame %F\n", *F);
inter_t F_level = F->W.data[LEVEL_IFLD];
if (F_level == 0) {

View file

@ -24,6 +24,7 @@ inter_tree *Inter::Tree::new(void) {
inter_t root_package_ID = Inter::Warehouse::create_package(I->housed, I);
I->root_package = Inter::Warehouse::get_package(I->housed, root_package_ID);
I->root_node = Inter::Node::root_frame(I->housed, I);
I->root_package->package_head = I->root_node;
Inter::Packages::make_rootlike(I->root_package);
Inter::Packages::set_scope(I->root_package, globals);
I->root_node->package = I->root_package;

View file

@ -6,7 +6,7 @@ To manage packages of inter code.
=
typedef struct inter_package {
struct inter_tree *stored_in;
struct inter_tree_node *package_head;
inter_t index_n;
struct inter_symbol *package_name;
struct inter_symbols_table *package_scope;
@ -22,9 +22,11 @@ typedef struct inter_package {
@d ROOT_PACKAGE_FLAG 8
@ =
inter_tree *default_ptree = NULL;
inter_package *Inter::Packages::new(inter_tree *I, inter_t n) {
inter_package *pack = CREATE(inter_package);
pack->stored_in = I;
pack->package_head = NULL;
pack->package_scope = NULL;
pack->package_name = NULL;
pack->package_flags = 0;
@ -32,6 +34,16 @@ inter_package *Inter::Packages::new(inter_tree *I, inter_t n) {
return pack;
}
inter_tree *Inter::Packages::tree(inter_package *pack) {
if (default_ptree) return default_ptree;
return pack->package_head->tree;
}
text_stream *Inter::Packages::name(inter_package *pack) {
if (pack == NULL) return NULL;
return pack->package_name->symbol_name;
}
int Inter::Packages::is_codelike(inter_package *pack) {
if ((pack) && (pack->package_flags & CODELIKE_PACKAGE_FLAG)) return TRUE;
return FALSE;
@ -94,15 +106,13 @@ void Inter::Packages::set_name(inter_package *P, inter_symbol *N) {
if (N == NULL) internal_error("null package name");
P->package_name = N;
if ((N) && (Str::eq(N->symbol_name, I"main")))
Inter::Tree::set_main_package(P->stored_in, P);
Inter::Tree::set_main_package(Inter::Packages::tree(P), P);
}
void Inter::Packages::log(OUTPUT_STREAM, void *vp) {
inter_package *pack = (inter_package *) vp;
if (pack == NULL) WRITE("<null-package>");
else {
WRITE("%S", pack->package_name->symbol_name);
}
else WRITE("%S", Inter::Packages::name(pack));
}
inter_package *Inter::Packages::basics(inter_tree *I) {
@ -198,11 +208,7 @@ text_stream *Inter::Packages::read_metadata(inter_package *P, text_stream *key)
if ((found) && (Inter::Symbols::is_defined(found))) {
inter_tree_node *D = Inter::Symbols::definition(found);
inter_t val2 = D->W.data[VAL1_MD_IFLD + 1];
return Inter::Warehouse::get_text(Inter::Tree::warehouse(P->stored_in), val2);
return Inter::Warehouse::get_text(Inter::Tree::warehouse(Inter::Packages::tree(P)), val2);
}
return NULL;
}
void Inter::Packages::wrap(inter_package *P) {
}

View file

@ -213,7 +213,8 @@ inter_symbol *Inter::SymbolsTables::global_symbol_from_frame_data(inter_tree_nod
return Inter::SymbolsTables::symbol_from_id(Inter::Node::globals(P), P->W.data[x]);
}
inter_symbol *Inter::SymbolsTables::local_symbol_from_id(inter_symbol *routine, inter_t ID) {
inter_symbol *Inter::SymbolsTables::local_symbol_from_id(inter_package *owner, inter_t ID) {
inter_symbol *routine = owner->package_name;
return Inter::SymbolsTables::symbol_from_id(Inter::Package::local_symbols(routine), ID);
}
@ -348,7 +349,7 @@ void Inter::SymbolsTables::rfr_visitor(inter_tree *I, inter_tree_node *P, void *
for (int i=0; i<T->size; i++) {
inter_symbol *symb = T->symbol_array[i];
if ((symb) && (symb->equated_name)) {
inter_symbol *S_to = Inter::SymbolsTables::url_name_to_symbol(pack->stored_in, T, symb->equated_name);
inter_symbol *S_to = Inter::SymbolsTables::url_name_to_symbol(Inter::Packages::tree(pack), T, symb->equated_name);
if (S_to == NULL) Inter::Errors::issue(Inter::Errors::quoted(I"unable to locate symbol", symb->equated_name, eloc));
else Inter::SymbolsTables::equate(symb, S_to);
symb->equated_name = NULL;
@ -397,7 +398,7 @@ void Inter::SymbolsTables::symbol_to_url_name(OUTPUT_STREAM, inter_symbol *S) {
chain[chain_length++] = P;
P = Inter::Packages::parent(P);
}
for (int i=chain_length-1; i>=0; i--) WRITE("/%S", chain[i]->package_name->symbol_name);
for (int i=chain_length-1; i>=0; i--) WRITE("/%S", Inter::Packages::name(chain[i]));
WRITE("/%S", S->symbol_name);
}

View file

@ -321,8 +321,8 @@ inter_error_message *Inter::Defn::verify_children_inner(inter_tree_node *P) {
WRITE_TO(M, "' (%d) cannot be used ", IC->construct_ID);
switch (need) {
case OUTSIDE_OF_PACKAGES: WRITE_TO(M, "outside packages"); break;
case INSIDE_PLAIN_PACKAGE: WRITE_TO(M, "inside non-code packages such as %S", (pack->package_name)?(pack->package_name->symbol_name):I"<nameless>"); break;
case INSIDE_CODE_PACKAGE: WRITE_TO(M, "inside code packages such as %S", (pack->package_name)?(pack->package_name->symbol_name):I"<nameless>"); break;
case INSIDE_PLAIN_PACKAGE: WRITE_TO(M, "inside non-code packages such as %S", Inter::Packages::name(pack)); break;
case INSIDE_CODE_PACKAGE: WRITE_TO(M, "inside code packages such as %S", Inter::Packages::name(pack)); break;
}
return Inter::Node::error(P, M, NULL);
}

View file

@ -19,6 +19,7 @@ void Inter::Binary::read(inter_tree *I, filename *F) {
inter_bookmark at = Inter::Bookmarks::at_start_of_this_repository(I);
inter_warehouse *warehouse = Inter::Tree::warehouse(I);
default_ptree = I;
inter_t *grid = NULL;
inter_t grid_extent = 0;
@ -32,6 +33,7 @@ void Inter::Binary::read(inter_tree *I, filename *F) {
if (grid) Memory::I7_array_free(grid, INTER_BYTECODE_MREASON, (int) grid_extent, sizeof(inter_t));
BinaryFiles::close(fh);
default_ptree = NULL;
}
@ Symmetrically:
@ -167,7 +169,7 @@ that's the end of the list and therefore the block. (There is no resource 0.)
int max = -1, count = 0;
for (int n = 1; n < warehouse->size; n++) {
inter_package *owner = warehouse->stored_resources[n].owning_package;
if ((owner) && (owner->stored_in != I)) continue;
if ((owner) && (Inter::Packages::tree(owner) != I)) continue;
count++;
if (n+1 > max) max = n+1;
}
@ -176,12 +178,12 @@ that's the end of the list and therefore the block. (There is no resource 0.)
BinaryFiles::write_int32(fh, (unsigned int) max);
for (int n = 1; n < warehouse->size; n++) {
inter_package *owner = warehouse->stored_resources[n].owning_package;
if ((owner) && (owner->stored_in != I)) continue;
if ((owner) && (Inter::Packages::tree(owner) != I)) continue;
BinaryFiles::write_int32(fh, (unsigned int) n);
}
for (int n = 1; n < warehouse->size; n++) {
inter_package *owner = warehouse->stored_resources[n].owning_package;
if ((owner) && (owner->stored_in != I)) continue;
if ((owner) && (Inter::Packages::tree(owner) != I)) continue;
if (trace_bin) WRITE_TO(STDOUT, "Writing resource %d type %d owner %s\n", n, warehouse->stored_resources[n].irsrc,
(owner)?"yes":"no");
BinaryFiles::write_int32(fh, (unsigned int) n);
@ -388,7 +390,7 @@ enough that the slot exists for the eventual list to be stored in.
@<Write the symbol equations@> =
for (int n = 1; n < warehouse->size; n++) {
inter_package *owner = warehouse->stored_resources[n].owning_package;
if ((owner) && (owner->stored_in != I)) continue;
if ((owner) && (Inter::Packages::tree(owner) != I)) continue;
inter_resource_holder *res = &(warehouse->stored_resources[n]);
if (res->stored_symbols_table) {
inter_symbols_table *from_T = res->stored_symbols_table;

View file

@ -9,11 +9,13 @@ int no_blank_lines_stacked = 0;
void Inter::Textual::read(inter_tree *I, filename *F) {
LOGIF(INTER_FILE_READ, "(Reading textual inter file %f)\n", F);
default_ptree = I;
no_blank_lines_stacked = 0;
inter_bookmark IBM = Inter::Bookmarks::at_start_of_this_repository(I);
inter_error_location eloc = Inter::Errors::file_location(NULL, NULL);
TextFiles::read(F, FALSE, "can't open inter file", FALSE, Inter::Textual::read_line, 0, &IBM);
Inter::SymbolsTables::resolve_forward_references(I, &eloc);
default_ptree = NULL;
Inter::Tree::traverse(I, Inter::Textual::lint_visitor, NULL, NULL, -PACKAGE_IST);
}

View file

@ -56,6 +56,7 @@ inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, inter_symb
inter_t PID = Inter::Warehouse::create_package(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::tree(IBM));
inter_package *pack = Inter::Warehouse::get_package(Inter::Bookmarks::warehouse(IBM), PID);
pack->package_head = P;
Inter::Packages::set_name(pack, package_name);
if (ptype_name == code_packagetype) Inter::Packages::make_codelike(pack);
if ((linkage_packagetype) && (ptype_name == linkage_packagetype))

View file

@ -54,15 +54,13 @@ inter_error_message *Inter::Lab::new(inter_bookmark *IBM, inter_symbol *routine,
void Inter::Lab::verify(inter_construct *IC, inter_tree_node *P, inter_package *owner, inter_error_message **E) {
if (P->W.extent != EXTENT_LAB_IFR) { *E = Inter::Node::error(P, I"extent wrong", NULL); return; }
inter_symbol *routine = owner->package_name;
inter_symbol *label = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[LABEL_LAB_IFLD]);
inter_symbol *label = Inter::SymbolsTables::local_symbol_from_id(owner, P->W.data[LABEL_LAB_IFLD]);
if (Inter::Symbols::is_label(label) == FALSE) { *E = Inter::Node::error(P, I"no such label", NULL); return; }
}
void Inter::Lab::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, inter_error_message **E) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *label = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[LABEL_LAB_IFLD]);
inter_symbol *label = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[LABEL_LAB_IFLD]);
if (label) {
WRITE("lab %S", label->symbol_name);
} else { *E = Inter::Node::error(P, I"cannot write lab", NULL); return; }
@ -70,9 +68,7 @@ void Inter::Lab::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, i
inter_symbol *Inter::Lab::label_symbol(inter_tree_node *P) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
if (Inter::Package::is(routine) == FALSE) internal_error("bad lab");
inter_symbol *lab = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[LABEL_LAB_IFLD]);
inter_symbol *lab = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[LABEL_LAB_IFLD]);
if (lab == NULL) internal_error("bad lab");
return lab;
}

View file

@ -52,8 +52,7 @@ inter_error_message *Inter::Label::new(inter_bookmark *IBM, inter_symbol *routin
void Inter::Label::verify(inter_construct *IC, inter_tree_node *P, inter_package *owner, inter_error_message **E) {
if (P->W.extent != EXTENT_LABEL_IFR) { *E = Inter::Node::error(P, I"extent wrong", NULL); return; }
inter_symbol *routine = owner->package_name;
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[DEFN_LABEL_IFLD]);
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(owner, P->W.data[DEFN_LABEL_IFLD]);
if (Inter::Symbols::is_label(lab_name) == FALSE) {
*E = Inter::Node::error(P, I"not a label", (lab_name)?(lab_name->symbol_name):NULL);
return;
@ -66,8 +65,7 @@ void Inter::Label::verify(inter_construct *IC, inter_tree_node *P, inter_package
void Inter::Label::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, inter_error_message **E) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[DEFN_LABEL_IFLD]);
inter_symbol *lab_name = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[DEFN_LABEL_IFLD]);
if (lab_name) {
WRITE("%S", lab_name->symbol_name);
} else { *E = Inter::Node::error(P, I"cannot write label", NULL); return; }

View file

@ -68,8 +68,7 @@ void Inter::Local::verify(inter_construct *IC, inter_tree_node *P, inter_package
void Inter::Local::write(inter_construct *IC, OUTPUT_STREAM, inter_tree_node *P, inter_error_message **E) {
inter_package *pack = Inter::Packages::container(P);
inter_symbol *routine = pack->package_name;
inter_symbol *var_name = Inter::SymbolsTables::local_symbol_from_id(routine, P->W.data[DEFN_LOCAL_IFLD]);
inter_symbol *var_name = Inter::SymbolsTables::local_symbol_from_id(pack, P->W.data[DEFN_LOCAL_IFLD]);
inter_symbol *var_kind = Inter::SymbolsTables::symbol_from_frame_data(P, KIND_LOCAL_IFLD);
if (var_name) {
WRITE("local %S %S", var_name->symbol_name, var_kind->symbol_name);