mirror of
https://github.com/ganelson/inform.git
synced 2024-06-29 05:24:57 +03:00
Moved all trees to a single shared warehouse
This commit is contained in:
parent
99053bbe57
commit
73b2e39208
|
@ -34,6 +34,7 @@ have no meaningful contents when the step is not running.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">repository_argument</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text_out_file</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">repository</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">codegen_pipeline</span><span class="plain"> *</span><span class="identifier">pipeline</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">pipeline_step</span><span class="plain">;</span>
|
||||
|
||||
|
@ -67,6 +68,7 @@ have no meaningful contents when the step is not running.
|
|||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>from_memory</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>the_PP</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -293,6 +295,7 @@ logging:
|
|||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>the_N</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>the_PP</span><span class="plain"> = </span><span class="identifier">PP</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
||||
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">STAGE_NAME</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STAGE_NAME</span><span class="plain">, </span><span class="string">"inter step %d/%d (at %dcs): "</span><span class="plain">, ++</span><span class="identifier">step_count</span><span class="plain">, </span><span class="identifier">step_total</span><span class="plain">,</span>
|
||||
|
@ -371,7 +374,7 @@ logging:
|
|||
|
||||
<p class="endnote">The function CodeGen::Pipeline::run appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The structure codegen_pipeline is private to this section.</p>
|
||||
<p class="endnote">The structure codegen_pipeline is accessed in 1/stg and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. Following. </b></p>
|
||||
|
||||
|
@ -459,6 +462,9 @@ logging:
|
|||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Frame gives package as $3, but its location is in package $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">Inter::Frame::ID_to_package</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">)-></span><span class="identifier">package_name</span><span class="plain">,</span>
|
||||
<span class="identifier">Inter::Frame::ID_to_package</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">a</span><span class="plain">)-></span><span class="identifier">package_name</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Frame gives package as %d, but its location is in package %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
||||
<span class="identifier">Inter::Frame::ID_to_package</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">)-></span><span class="identifier">index_n</span><span class="plain">,</span>
|
||||
<span class="identifier">Inter::Frame::ID_to_package</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">a</span><span class="plain">)-></span><span class="identifier">index_n</span><span class="plain">);</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"zap"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
|
|
@ -68,6 +68,7 @@ to the routine below.
|
|||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"stop"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_stop_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
|
||||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"read"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_read_stage</span><span class="plain">, </span><span class="constant">FILE_STAGE_ARG</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"move"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_move_stage</span><span class="plain">, </span><span class="constant">GENERAL_STAGE_ARG</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"mask"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_mask_stage</span><span class="plain">, </span><span class="constant">GENERAL_STAGE_ARG</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"unmask"</span><span class="plain">, </span><span class="functiontext">CodeGen::Stage::run_unmask_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
|
||||
|
@ -106,6 +107,27 @@ the pipeline:
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_move_stage</span><span class="plain">(</span><span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">step</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Arg is %S.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>step_argument</span><span class="plain">);</span>
|
||||
<span class="identifier">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="identifier">Regexp::create_mr</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="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>step_argument</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%d):(%c+)"</span><span class="plain">)) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">from_rep</span><span class="plain"> = </span><span class="identifier">Str::atoi</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0], 0);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain">-</span><span class="element">>repositories</span><span class="plain">[</span><span class="identifier">from_rep</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 such repository"</span><span class="plain">);</span>
|
||||
<span class="identifier">S</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span>
|
||||
<span class="identifier">step</span><span class="plain">-</span><span class="element">>pipeline</span><span class="plain">-</span><span class="element">>repositories</span><span class="plain">[</span><span class="identifier">from_rep</span><span class="plain">], </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</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">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no such location"</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::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">-></span><span class="identifier">package_name</span><span class="plain">-></span><span class="identifier">symbol_name</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>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::Stage::run_mask_stage</span><span class="plain">(</span><span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">step</span><span class="plain">) {</span>
|
||||
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Arg is %S.\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>step_argument</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="identifier">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">>repository</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">>step_argument</span><span class="plain">);</span>
|
||||
|
@ -128,6 +150,8 @@ the pipeline:
|
|||
|
||||
<p class="endnote">The function CodeGen::Stage::run_read_stage is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_move_stage is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_mask_stage is used in <a href="#SP2">§2</a>.</p>
|
||||
|
||||
<p class="endnote">The function CodeGen::Stage::run_unmask_stage is used in <a href="#SP2">§2</a>.</p>
|
||||
|
|
|
@ -699,7 +699,7 @@
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">);</span>
|
||||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">dw</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">dw</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">DWORD_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
|
||||
|
@ -716,7 +716,7 @@
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">);</span>
|
||||
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">dw</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">dw</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_TEXT_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
|
||||
|
@ -817,7 +817,7 @@
|
|||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Forced to glob: %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">sch</span><span class="plain">-</span><span class="element">>converted_from</span><span class="plain">);</span>
|
||||
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"Reduced to glob in assimilation"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">sch</span><span class="plain">-</span><span class="element">>converted_from</span><span class="plain">);</span>
|
||||
|
||||
|
|
|
@ -156,7 +156,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::MergeTemplate::entire_splat</span><span class="plain">(</span><span class="identifier">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">origin</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">code_block</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">SID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
||||
<span class="functiontext">CodeGen::MergeTemplate::guard</span><span class="plain">(</span><span class="identifier">Inter::Splat::new</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">code_block</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, 0, </span><span class="identifier">level</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">));</span>
|
||||
|
|
|
@ -111,7 +111,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::comment</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -190,18 +190,19 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::pragma</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="functiontext">Emit::tree</span><span class="plain">();</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</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="identifier">root_package</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">target_name</span><span class="plain"> =</span>
|
||||
<span class="identifier">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span>
|
||||
<span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">I</span><span class="string">"target_I6"</span><span class="plain">);</span>
|
||||
<span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"target_I6"</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Pragma::new</span><span class="plain">(&</span><span class="identifier">pragmas_bookmark</span><span class="plain">, </span><span class="identifier">target_name</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, 0, </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">Emit::append</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Append::new</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
|
||||
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
|
||||
|
@ -249,13 +250,14 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<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="functiontext">Emit::tree</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">symb</span><span class="plain">-></span><span class="identifier">owning_table</span><span class="plain">-></span><span class="identifier">owning_package</span><span class="plain">-></span><span class="identifier">stored_in</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-></span><span class="identifier">owning_table</span><span class="plain">-></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="functiontext">Emit::tree</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">symb</span><span class="plain">-></span><span class="identifier">owning_table</span><span class="plain">-></span><span class="identifier">owning_package</span><span class="plain">-></span><span class="identifier">stored_in</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">-></span><span class="identifier">owning_table</span><span class="plain">-></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>
|
||||
|
||||
|
@ -395,7 +397,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_string_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">contents</span><span class="plain">) {</span>
|
||||
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">contents</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">Emit::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_textual</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), </span><span class="identifier">string_interk</span><span class="plain">), </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
|
||||
|
@ -403,7 +405,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::metadata</span><span class="plain">(</span><span class="reserved">package_request</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">key</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">value</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">value</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">key</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">key_name</span><span class="plain"> = </span><span class="functiontext">Emit::define_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
|
||||
|
@ -662,7 +664,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_divider</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">divider_text</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">S</span><span class="plain">), </span><span class="identifier">divider_text</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::add_entry</span><span class="plain">(</span><span class="identifier">DIVIDER_IVAL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -872,7 +874,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">loc_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">comm</span><span class="plain">) && (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">comm</span><span class="plain">) > 0)) {</span>
|
||||
<span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">comm</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">annot</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">loc_name</span><span class="plain">, </span><span class="identifier">annot</span><span class="plain">, 0);</span>
|
||||
|
@ -918,7 +920,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::inv_assembly</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">opcode</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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 in an inter routine"</span><span class="plain">);</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">SID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">opcode</span><span class="plain">);</span>
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Inv::new_assembly</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
|
||||
|
@ -980,7 +982,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<p class="endnote">The function Emit::new_local_symbol appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_symbol_t is used in <a href="#SP5">§5</a>.</p>
|
||||
<p class="endnote">The function Emit::annotate_symbol_t appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_symbol_w is used in <a href="#SP5">§5</a>.</p>
|
||||
|
||||
|
@ -1365,7 +1367,7 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::entire_splat</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">content</span><span class="plain">) == 0) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">SID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
||||
|
||||
|
@ -1386,7 +1388,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::glob_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">clue</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">GLOB_IVAL</span><span class="plain">;</span>
|
||||
|
@ -1397,7 +1399,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::text_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">text_storage</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">LITERAL_TEXT_IVAL</span><span class="plain">;</span>
|
||||
|
@ -1409,7 +1411,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::real_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="reserved">double</span><span class="plain"> </span><span class="identifier">g</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">g</span><span class="plain"> > 0) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="string">"+"</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="string">"%g"</span><span class="plain">, </span><span class="identifier">g</span><span class="plain">);</span>
|
||||
|
@ -1418,7 +1420,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::real_value_from_text</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</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_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</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">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) != </span><span class="character">'$'</span><span class="plain">)</span>
|
||||
|
@ -1428,7 +1430,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::dword_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">DWORD_IVAL</span><span class="plain">;</span>
|
||||
|
@ -1436,7 +1438,7 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::plural_dword_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">PDWORD_IVAL</span><span class="plain">;</span>
|
||||
|
@ -1444,21 +1446,24 @@ insert them into the Inter stream close to the top.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::intervention</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">stage</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">part</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">i6</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">seg</span><span class="plain">) {</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID1</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="identifier">Inter::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID1</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID1</span><span class="plain">), </span><span class="identifier">segment</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID2</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID2</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID2</span><span class="plain">), </span><span class="identifier">part</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID3</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID3</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID3</span><span class="plain">), </span><span class="identifier">i6</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID4</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID4</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ID4</span><span class="plain">), </span><span class="identifier">seg</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ref</span><span class="plain"> = </span><span class="identifier">Inter::create_ref</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
|
||||
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ref</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_ref</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
<span class="identifier">Inter::set_ref</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">ref</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">current_sentence</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">ref</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()));</span>
|
||||
|
||||
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Link::new</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">(), (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">stage</span><span class="plain">, </span><span class="identifier">ID1</span><span class="plain">, </span><span class="identifier">ID2</span><span class="plain">, </span><span class="identifier">ID3</span><span class="plain">, </span><span class="identifier">ID4</span><span class="plain">, </span><span class="identifier">ref</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Packaging::at</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -1618,10 +1623,6 @@ insert them into the Inter stream close to the top.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</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="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_t</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</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">text</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_t</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="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_w</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</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="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_w</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="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -1714,8 +1715,6 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
<p class="endnote">The function Emit::annotate_i is used in 13/rsfk (<a href="13-rsfk.html#SP24">§24</a>), 15/pr (<a href="15-pr.html#SP27">§27</a>), 15/epv (<a href="15-epv.html#SP1">§1</a>, <a href="15-epv.html#SP1_1_1">§1.1.1</a>), 17/tl (<a href="17-tl.html#SP7">§7</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_t appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Emit::annotate_w is used in 15/pr (<a href="15-pr.html#SP27">§27</a>).</p>
|
||||
|
||||
<p class="endnote">The function Emit::read_annotation appears nowhere else.</p>
|
||||
|
|
|
@ -44,6 +44,10 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">IBM</span><span class="plain">-</span><span class="element">>current_package</span><span class="plain">-</span><span class="element">>stored_in</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_warehouse</span><span class="plain"> *</span><span class="functiontext">Inter::Bookmarks::warehouse</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::warehouse</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="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="functiontext">Inter::Bookmarks::at_end_of_this_package</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="identifier">internal_error</span><span class="plain">(</span><span class="string">"no package supplied"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">IBM</span><span class="plain">;</span>
|
||||
|
@ -134,6 +138,8 @@
|
|||
|
||||
<p class="endnote">The function Inter::Bookmarks::tree is used in 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>), 2/frm (<a href="2-frm.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::warehouse is used in 3/dfn (<a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::at_end_of_this_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::after_this_frame appears nowhere else.</p>
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::warehouse is used in <a href="#SP5">§5</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::warehouse is used in <a href="#SP5">§5</a>, 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::ID_to_symbols_table is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
|
@ -116,7 +116,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Frame::globals is used in 2/st (<a href="2-st.html#SP7">§7</a>, <a href="2-st.html#SP9">§9</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::around is used in <a href="#SP6">§6</a>, 2/ie (<a href="2-ie.html#SP1">§1</a>), 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/tw (<a href="2-tw.html#SP2">§2</a>), 2/sym (<a href="2-sym.html#SP2">§2</a>, <a href="2-sym.html#SP4">§4</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::around is used in <a href="#SP6">§6</a>, 2/ie (<a href="2-ie.html#SP1">§1</a>), 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/sym (<a href="2-sym.html#SP2">§2</a>, <a href="2-sym.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::valid is used in <a href="#SP5">§5</a>, 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
|
||||
|
@ -126,8 +126,8 @@
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="functiontext">Inter::Frame::root_frame</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="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::find_room</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="functiontext">Inter::get_global_symbols</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), 2, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="functiontext">Inter::Frame::root_frame</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="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">globals</span><span class="plain">) {</span>
|
||||
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::find_room</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">globals</span><span class="plain">, 2, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">ID_IFLD</span><span class="plain">] = (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="constant">NOP_IST</span><span class="plain">;</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">LEVEL_IFLD</span><span class="plain">] = 0;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
|
||||
|
@ -532,7 +532,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::insert is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::insert is used in 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::retrieve_origin appears nowhere else.</p>
|
||||
|
||||
|
@ -540,7 +540,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Frame::get_comment is used in 2/iibf (<a href="2-iibf.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::attach_comment is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::attach_comment is used in 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::get_package is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP2">§2</a>).</p>
|
||||
|
||||
|
@ -548,7 +548,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Frame::backtrace is used in 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::attach_package is used in 2/tw (<a href="2-tw.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Frame::attach_package is used in 2/tw (<a href="2-tw.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Frame::get_first_child_index is used in <a href="#SP6_1">§6.1</a>, <a href="#SP6_2">§6.2</a>, <a href="#SP6_5">§6.5</a>.</p>
|
||||
|
||||
|
|
|
@ -220,32 +220,32 @@
|
|||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">UNDEF_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0; </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">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"\</span><span class="plain">"</span><span class="string">"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"\</span><span class="plain">"</span><span class="string">"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">LITERAL_TEXT_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">LITERAL_TEXT_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 1, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"r\</span><span class="plain">"</span><span class="string">"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"\</span><span class="plain">"</span><span class="string">"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">REAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">REAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 2, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"&\</span><span class="plain">"</span><span class="string">"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"\</span><span class="plain">"</span><span class="string">"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">GLOB_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">GLOB_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 2, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"dw'"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"'"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">DWORD_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">DWORD_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 3, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"dwp'"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"'"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">PDWORD_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">PDWORD_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 4, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Str::begins_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"^\</span><span class="plain">"</span><span class="string">"</span><span class="plain">)) && (</span><span class="identifier">Str::ends_with_wide_string</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"\</span><span class="plain">"</span><span class="string">"</span><span class="plain">))) {</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">DIVIDER_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="constant">DIVIDER_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">divider_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">IC</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::Constant::parse_text</span><span class="plain">(</span><span class="identifier">divider_storage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 2, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -102,15 +102,15 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::file_location is used in 2/tw (<a href="2-tw.html#SP2">§2</a>), 2/frm (<a href="2-frm.html#SP5">§5</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::file_location is used in 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/frm (<a href="2-frm.html#SP5">§5</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::interb_location is used in 2/tw (<a href="2-tw.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::interb_location is used in 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::quoted is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::plain is used in 2/iibf (<a href="2-iibf.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>, <a href="3-dfn.html#SP5">§5</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>, <a href="2-iibf.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>, <a href="2-iitf.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>, <a href="2-iibf.html#SP3">§3</a>), 2/iitf (<a href="2-iitf.html#SP1">§1</a>, <a href="2-iitf.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::issue_to appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -19,6 +19,8 @@ complete in itself.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">trace_bin</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Binary::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 binary 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="reserved">long</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">max_offset</span><span class="plain"> = </span><span class="identifier">BinaryFiles::size</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">);</span>
|
||||
|
@ -30,13 +32,16 @@ complete in itself.
|
|||
|
||||
<span class="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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>
|
||||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">X</span><span class="plain"> = 0;</span>
|
||||
|
||||
<<span class="cwebmacro">Read the shibboleth</span> <span class="cwebmacronumber">1.2</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the annotations</span> <span class="cwebmacronumber">1.3</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the resources</span> <span class="cwebmacronumber">1.5</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the symbol equations</span> <span class="cwebmacronumber">1.6</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the bytecode</span> <span class="cwebmacronumber">1.7</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the resources</span> <span class="cwebmacronumber">1.4</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the symbol equations</span> <span class="cwebmacronumber">1.5</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Read the bytecode</span> <span class="cwebmacronumber">1.6</span>><span class="plain">;</span>
|
||||
<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="plain">}</span>
|
||||
|
@ -52,6 +57,7 @@ complete in itself.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Binary::write</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="reserved">inter_tree</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">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 binary 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">LOGIF</span><span class="plain">(</span><span class="identifier">INTER_FILE_READ</span><span class="plain">, </span><span class="string">"(Writing binary 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="reserved">FILE</span><span class="plain"> *</span><span class="identifier">fh</span><span class="plain"> = </span><span class="identifier">BinaryFiles::open_for_writing</span><span class="plain">(</span><span class="identifier">F</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::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
|
@ -165,38 +171,72 @@ resource block later on.
|
|||
<p class="endnote">This code is used in <a href="#SP1_1">§1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_4"></a><b>§1.4. </b>There follows a block of resources, which is a list in which each entry opens
|
||||
with a word identifying which resource is meant; when <code class="display"><span class="extract">NO_IRSRC</span></code> is reached,
|
||||
that's the end of the list and therefore the block.
|
||||
with a word identifying which resource number is meant; when this is zero,
|
||||
that's the end of the list and therefore the block. (There is no resource 0.)
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">NO_IRSRC</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">STRING_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SYMBOLS_TABLE_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">FRAME_LIST_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">PACKAGE_IRSRC</span>
|
||||
</pre>
|
||||
<p class="inwebparagraph"><a id="SP1_5"></a><b>§1.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the resources</span> <span class="cwebmacronumber">1.5</span>> =
|
||||
<p class="macrodefinition"><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the resources</span> <span class="cwebmacronumber">1.4</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">resource_counter</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">X</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> == </span><span class="constant">NO_IRSRC</span><span class="plain">) </span><span class="reserved">break</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">count</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">count</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">count</span><span class="plain"> > 0) {</span>
|
||||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">grid_extent</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">grid_extent</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid_extent</span><span class="plain"> == 0) {</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"max zero"</span><span class="plain">);</span>
|
||||
<span class="identifier">grid_extent</span><span class="plain"> = 1000;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">grid</span><span class="plain"> = (</span><span class="constant">inter_t</span><span class="plain"> *) </span><span class="identifier">Memory::I7_calloc</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="constant">INTER_BYTECODE_MREASON</span><span class="plain">);</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">grid_extent</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = 0;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">count</span><span class="plain">; </span><span class="identifier">i</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">from_N</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">from_N</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">switch</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> 0: </span><span class="identifier">n</span><span class="plain"> = (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain">-</span><span class="element">>package_scope</span><span class="plain">-</span><span class="element">>n_index</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">case</span><span class="plain"> 1: </span><span class="identifier">n</span><span class="plain"> = (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain">-</span><span class="element">>index_n</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</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">"Reading resource %d <--- %d\</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">from_N</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">from_N</span><span class="plain"> >= </span><span class="identifier">grid_extent</span><span class="plain">) {</span>
|
||||
<span class="identifier">from_N</span><span class="plain"> = </span><span class="identifier">grid_extent</span><span class="plain">-1;</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"max incorrect"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">grid</span><span class="plain">[</span><span class="identifier">from_N</span><span class="plain">] = </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">grid_extent</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">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">"%d "</span><span class="plain">, </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]);</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">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
|
||||
<span class="identifier">resource_counter</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="constant">inter_t</span><span class="plain">) </span><span class="identifier">resource_counter</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">resource_counter</span><span class="plain"> >= 3) </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]);</span>
|
||||
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">STRING_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a string resource</span> <span class="cwebmacronumber">1.5.1</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">SYMBOLS_TABLE_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a symbols table resource</span> <span class="cwebmacronumber">1.5.2</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">FRAME_LIST_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a frame list resource</span> <span class="cwebmacronumber">1.5.4</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">PACKAGE_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a package resource</span> <span class="cwebmacronumber">1.5.3</span>><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">count</span><span class="plain">; </span><span class="identifier">i</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">from_N</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">from_N</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">from_N</span><span class="plain"> == 0) || (</span><span class="identifier">from_N</span><span class="plain"> >= </span><span class="identifier">grid_extent</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"from-N out of range"</span><span class="plain">);</span>
|
||||
<span class="identifier">from_N</span><span class="plain"> = </span><span class="identifier">grid_extent</span><span class="plain"> - 1;</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="identifier">grid</span><span class="plain">[</span><span class="identifier">from_N</span><span class="plain">];</span>
|
||||
<span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</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">X</span><span class="plain"> = </span><span class="constant">NO_IRSRC</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">X</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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">"Reading resource %d -> %d type %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">from_N</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">);</span>
|
||||
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain">) {</span>
|
||||
<span class="reserved">case</span><span class="plain"> </span><span class="constant">STRING_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a string resource</span> <span class="cwebmacronumber">1.4.1</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">SYMBOLS_TABLE_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a symbols table resource</span> <span class="cwebmacronumber">1.4.2</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">FRAME_LIST_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a frame list resource</span> <span class="cwebmacronumber">1.4.4</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">PACKAGE_IRSRC</span><span class="plain">: </span><<span class="cwebmacro">Read a package resource</span> <span class="cwebmacronumber">1.4.3</span>><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -211,31 +251,51 @@ that's the end of the list and therefore the block.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<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"> < </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</span><span class="plain">; </span><span class="identifier">n</span><span class="plain">++) {</span>
|
||||
<span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>stored_text_stream</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="constant">STRING_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a string resource</span> <span class="cwebmacronumber">1.1.3.1</span>><span class="plain">;</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">res</span><span class="plain">-</span><span class="element">>stored_symbols_table</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="constant">SYMBOLS_TABLE_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a symbols table resource</span> <span class="cwebmacronumber">1.1.3.2</span>><span class="plain">;</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">res</span><span class="plain">-</span><span class="element">>stored_package</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="constant">PACKAGE_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a package resource</span> <span class="cwebmacronumber">1.1.3.3</span>><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</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="constant">FRAME_LIST_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a frame list resource</span> <span class="cwebmacronumber">1.1.3.4</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">>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">) && (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>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="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 > </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>
|
||||
<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">count</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">count</span><span class="plain"> >= 0) {</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">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"> < </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>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">) && (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>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="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"> < </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>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">) && (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>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">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">>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>
|
||||
<span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>stored_text_stream</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="constant">STRING_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a string resource</span> <span class="cwebmacronumber">1.1.3.1</span>><span class="plain">;</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">res</span><span class="plain">-</span><span class="element">>stored_symbols_table</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="constant">SYMBOLS_TABLE_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a symbols table resource</span> <span class="cwebmacronumber">1.1.3.2</span>><span class="plain">;</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">res</span><span class="plain">-</span><span class="element">>stored_package</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="constant">PACKAGE_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a package resource</span> <span class="cwebmacronumber">1.1.3.3</span>><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</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="constant">FRAME_LIST_IRSRC</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Write a frame list resource</span> <span class="cwebmacronumber">1.1.3.4</span>><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</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="constant">NO_IRSRC</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1">§1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_5_1"></a><b>§1.5.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a string resource</span> <span class="cwebmacronumber">1.5.1</span>> =
|
||||
<p class="inwebparagraph"><a id="SP1_4_1"></a><b>§1.4.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a string resource</span> <span class="cwebmacronumber">1.4.1</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -252,7 +312,7 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP1_5">§1.5</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP1_4">§1.4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1_3_1"></a><b>§1.1.3.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Write a string resource</span> <span class="cwebmacronumber">1.1.3.1</span>> =
|
||||
|
@ -269,8 +329,8 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1_3">§1.1.3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_5_2"></a><b>§1.5.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a symbols table resource</span> <span class="cwebmacronumber">1.5.2</span>> =
|
||||
<p class="inwebparagraph"><a id="SP1_4_2"></a><b>§1.4.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a symbols table resource</span> <span class="cwebmacronumber">1.4.2</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -333,7 +393,7 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP1_5">§1.5</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP1_4">§1.4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1_3_2"></a><b>§1.1.3.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Write a symbols table resource</span> <span class="cwebmacronumber">1.1.3.2</span>> =
|
||||
|
@ -377,12 +437,12 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1_3">§1.1.3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_5_3"></a><b>§1.5.3. </b>And similarly for packages.
|
||||
<p class="inwebparagraph"><a id="SP1_4_3"></a><b>§1.4.3. </b>And similarly for packages.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="macrodefinition"><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a package resource</span> <span class="cwebmacronumber">1.5.3</span>> =
|
||||
<<span class="cwebmacrodefn">Read a package resource</span> <span class="cwebmacronumber">1.4.3</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -391,18 +451,23 @@ that's the end of the list and therefore the block.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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">cl</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">cl</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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">rl</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">rl</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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">sc</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">sc</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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">nid</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">nid</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">parent</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain"> != 0) </span><span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Inter::get_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">p</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">p</span><span class="plain"> != 0) </span><span class="identifier">parent</span><span class="plain"> = </span><span class="functiontext">Inter::get_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">p</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">>stored_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::new</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cl</span><span class="plain">) </span><span class="functiontext">Inter::Packages::make_codelike</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nid</span><span class="plain"> == 0) </span><span class="functiontext">Inter::Packages::make_rootlike</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sc</span><span class="plain"> != 0) </span><span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">, </span><span class="functiontext">Inter::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">sc</span><span class="plain">));</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rl</span><span class="plain">) </span><span class="functiontext">Inter::Packages::make_rootlike</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sc</span><span class="plain"> != 0) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">sc</span><span class="plain"> = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">sc</span><span class="plain">];</span>
|
||||
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">res</span><span class="plain">-</span><span class="element">>stored_package</span><span class="plain">, </span><span class="functiontext">Inter::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">sc</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nid</span><span class="plain"> != 0) {</span>
|
||||
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">pack_name</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="identifier">parent</span><span class="plain">?(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">parent</span><span class="plain">)):</span><span class="functiontext">Inter::get_global_symbols</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">nid</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack_name</span><span class="plain">)</span>
|
||||
|
@ -414,7 +479,7 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP1_5">§1.5</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP1_4">§1.4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1_3_3"></a><b>§1.1.3.3. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Write a package resource</span> <span class="cwebmacronumber">1.1.3.3</span>> =
|
||||
|
@ -428,6 +493,7 @@ that's the end of the list and therefore the block.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">par</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">BinaryFiles::write_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, 0);</span>
|
||||
<span class="reserved">else</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">par</span><span class="plain">-</span><span class="element">>index_n</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="functiontext">Inter::Packages::is_codelike</span><span class="plain">(</span><span class="identifier">P</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="functiontext">Inter::Packages::is_rootlike</span><span class="plain">(</span><span class="identifier">P</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">P</span><span class="plain">-</span><span class="element">>package_scope</span><span class="plain">-</span><span class="element">>n_index</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">>package_name</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">P</span><span class="plain">-</span><span class="element">>package_name</span><span class="plain">-</span><span class="element">>symbol_ID</span><span class="plain">);</span>
|
||||
|
@ -440,13 +506,13 @@ that's the end of the list and therefore the block.
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1_3">§1.1.3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_5_4"></a><b>§1.5.4. </b>We do nothing here, because frame lists are built new on reading. It's
|
||||
<p class="inwebparagraph"><a id="SP1_4_4"></a><b>§1.4.4. </b>We do nothing here, because frame lists are built new on reading. It's
|
||||
enough that the slot exists for the eventual list to be stored in.
|
||||
</p>
|
||||
|
||||
|
||||
<p class="macrodefinition"><code class="display">
|
||||
<<span class="cwebmacrodefn">Read a frame list resource</span> <span class="cwebmacronumber">1.5.4</span>> =
|
||||
<<span class="cwebmacrodefn">Read a frame list resource</span> <span class="cwebmacronumber">1.4.4</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -456,7 +522,7 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP1_5">§1.5</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP1_4">§1.4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1_3_4"></a><b>§1.1.3.4. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Write a frame list resource</span> <span class="cwebmacronumber">1.1.3.4</span>> =
|
||||
|
@ -471,14 +537,15 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1_3">§1.1.3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_6"></a><b>§1.6. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the symbol equations</span> <span class="cwebmacronumber">1.6</span>> =
|
||||
<p class="inwebparagraph"><a id="SP1_5"></a><b>§1.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the symbol equations</span> <span class="cwebmacronumber">1.5</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">X</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">X</span><span class="plain"> == 0) </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">X</span><span class="plain"> = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">X</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="functiontext">Inter::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">from_T</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"It's %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">);</span>
|
||||
|
@ -491,6 +558,8 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">to_ID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">to_T_id</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">to_T_id</span><span class="plain"> = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">to_T_id</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">"Read eqn %d -> %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">X</span><span class="plain">, </span><span class="identifier">to_T_id</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">to_ID</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
<span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">to_T</span><span class="plain"> = </span><span class="functiontext">Inter::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">to_T_id</span><span class="plain">);</span>
|
||||
|
@ -502,7 +571,6 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
<span class="functiontext">Inter::SymbolsTables::equate</span><span class="plain">(</span><span class="identifier">from_S</span><span class="plain">, </span><span class="identifier">to_S</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -516,6 +584,8 @@ 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"> < </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>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">) && (</span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>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">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">res</span><span class="plain"> = &(</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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">>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">>stored_symbols_table</span><span class="plain">;</span>
|
||||
|
@ -525,6 +595,7 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">symb</span><span class="plain">) && (</span><span class="identifier">symb</span><span class="plain">-</span><span class="element">>equated_to</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="identifier">symb</span><span class="plain">-</span><span class="element">>symbol_ID</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">symb</span><span class="plain">-</span><span class="element">>equated_to</span><span class="plain">-</span><span class="element">>owning_table</span><span class="plain">-</span><span class="element">>n_index</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">"Write eqn %d -> %d\</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">symb</span><span class="plain">-</span><span class="element">>equated_to</span><span class="plain">-</span><span class="element">>owning_table</span><span class="plain">-</span><span class="element">>n_index</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="identifier">symb</span><span class="plain">-</span><span class="element">>equated_to</span><span class="plain">-</span><span class="element">>symbol_ID</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -538,8 +609,8 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
|
||||
<p class="endnote">This code is used in <a href="#SP1_1">§1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_7"></a><b>§1.7. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the bytecode</span> <span class="cwebmacronumber">1.7</span>> =
|
||||
<p class="inwebparagraph"><a id="SP1_6"></a><b>§1.6. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Read the bytecode</span> <span class="cwebmacronumber">1.6</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
|
@ -548,10 +619,17 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
<span class="identifier">eloc</span><span class="element">.error_offset</span><span class="plain"> = (</span><span class="identifier">size_t</span><span class="plain">) </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">) - </span><span class="constant">PREFRAME_SIZE</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">extent</span><span class="plain"> = (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">X</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">extent</span><span class="plain"> < 2) || ((</span><span class="reserved">long</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">extent</span><span class="plain"> >= </span><span class="identifier">max_offset</span><span class="plain">)) </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"overlarge line"</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">"Reading bytecode, extent %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">extent</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">NULL</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">PID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">PID</span><span class="plain">)) </span><span class="identifier">owner</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::from_PID</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">PID</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">PID</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">PID</span><span class="plain"> = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">PID</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">"PID %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">PID</span><span class="plain">);</span>
|
||||
<span class="identifier">owner</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::from_PID</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">PID</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">"Owner has ID %d, table %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>index_n</span><span class="plain">, </span><span class="identifier">owner</span><span class="plain">-</span><span class="element">>package_scope</span><span class="plain">-</span><span class="element">>n_index</span><span class="plain">);</span>
|
||||
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::find_room</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="functiontext">Inter::get_global_symbols</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">extent</span><span class="plain">-1, &</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">owner</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">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">extent</span><span class="plain">-1; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
|
@ -563,9 +641,13 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">BinaryFiles::read_int32</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">, &</span><span class="identifier">comment</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">comment</span><span class="plain"> != 0) </span><span class="functiontext">Inter::Frame::attach_comment</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">comment</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Inter::Binary::read_error</span><span class="plain">(&</span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">ftell</span><span class="plain">(</span><span class="identifier">fh</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"bytecode incomplete"</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="functiontext">Inter::Defn::verify_construct</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="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">"Verify\</span><span class="plain">n</span><span class="string">"</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="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">grid</span><span class="plain">) </span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::transpose_construct</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="identifier">grid</span><span class="plain">, </span><span class="identifier">grid_extent</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) { </span><span class="functiontext">Inter::Errors::issue</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">); </span><span class="identifier">exit</span><span class="plain">(1); }</span>
|
||||
<span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::verify_construct</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="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) { </span><span class="functiontext">Inter::Errors::issue</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">); </span><span class="identifier">exit</span><span class="plain">(1); }</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">"Done\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, &</span><span class="identifier">at</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
@ -621,7 +703,7 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Binary::read_error is used in <a href="#SP1_2">§1.2</a>, <a href="#SP1_3">§1.3</a>, <a href="#SP1_5_1">§1.5.1</a>, <a href="#SP1_5_2">§1.5.2</a>, <a href="#SP1_5_3">§1.5.3</a>, <a href="#SP1_6">§1.6</a>, <a href="#SP1_7">§1.7</a>.</p>
|
||||
<p class="endnote">The function Inter::Binary::read_error is used in <a href="#SP1_2">§1.2</a>, <a href="#SP1_3">§1.3</a>, <a href="#SP1_4">§1.4</a>, <a href="#SP1_4_1">§1.4.1</a>, <a href="#SP1_4_2">§1.4.2</a>, <a href="#SP1_4_3">§1.4.3</a>, <a href="#SP1_5">§1.5</a>, <a href="#SP1_6">§1.6</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>This tests a file to see if it looks like Inter binary:
|
||||
</p>
|
||||
|
|
|
@ -42,7 +42,6 @@
|
|||
|
||||
<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_tree</span><span class="plain"> {</span>
|
||||
<span class="reserved">struct</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="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">root_definition_frame</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="identifier">root_package</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="identifier">main_package</span><span class="plain">;</span>
|
||||
|
@ -52,7 +51,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inter_tree is accessed in 2/pck, 2/frm, 2/bkm and here.</p>
|
||||
<p class="endnote">The structure inter_tree is accessed in 2/pck, 2/frm, 2/bkm, 2/iibf, 3/dfn and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
@ -62,27 +61,19 @@
|
|||
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">CREATE</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="element">>main_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
||||
<span class="identifier">I</span><span class="plain">-</span><span class="element">>warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::new</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="functiontext">Inter::create_symbols_table</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">>root_package</span><span class="plain"> = </span><span class="functiontext">Inter::get_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="functiontext">Inter::create_package</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">>root_definition_frame</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::root_frame</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::Warehouse::new</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="functiontext">Inter::Warehouse::create_symbols_table</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">globals</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_symbols_table</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
|
||||
<span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="functiontext">Inter::Warehouse::create_package</span><span class="plain">(</span><span class="identifier">warehouse</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">>root_definition_frame</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::root_frame</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">globals</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">>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">>root_package</span><span class="plain">, </span><span class="functiontext">Inter::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">N</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">>root_package</span><span class="plain">, </span><span class="identifier">globals</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_warehouse</span><span class="plain"> *</span><span class="functiontext">Inter::warehouse</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="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>warehouse</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::create_symbols_table</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::new</span><span class="plain">();</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain">-</span><span class="element">>n_index</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">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::warehouse</span><span class="plain">(&(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_definition_frame</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Inter::get_global_symbols</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
|
||||
|
@ -93,39 +84,18 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_symbols_table</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::create_package</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::new</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::get_package</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">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_package</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::create_text</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_text_stream</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_text_stream</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Inter::get_text</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">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::create_ref</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_ref</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">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> *</span><span class="functiontext">Inter::get_ref</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">return</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::get_ref</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -146,18 +116,6 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">ifl</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::create_frame_list</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="functiontext">Inter::warehouse</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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_frame_list</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">-</span><span class="element">>spare_storage</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">-</span><span class="element">>storage_used</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">-</span><span class="element">>storage_capacity</span><span class="plain"> = 0;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">-</span><span class="element">>first_in_ifl</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">-</span><span class="element">>last_in_ifl</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">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_frame_list</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">storage_used</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">storage_capacity</span><span class="plain">;</span>
|
||||
|
@ -179,31 +137,23 @@
|
|||
|
||||
<p class="endnote">The function Inter::create appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::warehouse is used in <a href="#SP4">§4</a>, 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1">§1</a>, <a href="2-iibf.html#SP1_1">§1.1</a>).</p>
|
||||
<p class="endnote">The function Inter::warehouse is used in <a href="#SP4">§4</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1">§1</a>, <a href="2-iibf.html#SP1_1">§1.1</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_symbols_table is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::get_global_symbols is used in 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP11">§11</a>), 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_global_symbols is used in 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP11">§11</a>), 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::get_symbols_table is used in 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>, <a href="2-iibf.html#SP1_5">§1.5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_symbols_table is used in 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>, <a href="2-iibf.html#SP1_6">§1.6</a>).</p>
|
||||
<p class="endnote">The function Inter::get_package is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_package is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_package is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_text is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>, <a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::create_text appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_text is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>, <a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_ref appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::get_ref appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::set_ref appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::new_frame_list is used in 2/iibf (<a href="2-iibf.html#SP1_5_4">§1.5.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::create_frame_list is used in 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::new_frame_list is used in 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_4">§1.4.4</a>).</p>
|
||||
|
||||
<p class="endnote">The structure inter_frame_list is private to this section.</p>
|
||||
|
||||
|
|
|
@ -246,27 +246,27 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::new is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::new is used in 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::is_codelike is used in 2/iibf (<a href="2-iibf.html#SP1_1_3_3">§1.1.3.3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::make_codelike is used in 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::make_codelike is used in 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::is_linklike is used in 2/st (<a href="2-st.html#SP10">§10</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::make_linklike is used in 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::is_rootlike is used in 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::is_rootlike is used in 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_1_3_3">§1.1.3.3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::make_rootlike is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::make_rootlike is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::parent is used in 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/st (<a href="2-st.html#SP11">§11</a>), 2/iibf (<a href="2-iibf.html#SP1_1_3_3">§1.1.3.3</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::unmark_all appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::set_scope is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::set_scope is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::set_name is used in 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::set_name is used in 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::log is used in 1/im (<a href="1-im.html#SP3_6">§3.6</a>).</p>
|
||||
|
||||
|
@ -284,13 +284,13 @@
|
|||
|
||||
<p class="endnote">The function Inter::Packages::search_resources_exhaustively appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::to_PID is used in 2/tw (<a href="2-tw.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::to_PID is used in 2/tw (<a href="2-tw.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::from_PID is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::from_PID is used in 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::container is used in 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 3/dfn (<a href="3-dfn.html#SP5">§5</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::scope is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::scope is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 2/bkm (<a href="2-bkm.html#SP2">§2</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">§7</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -67,7 +67,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::new is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::new is used in 2/tw (<a href="2-tw.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::log is used in 1/im (<a href="1-im.html#SP3_6">§3.6</a>).</p>
|
||||
|
||||
|
@ -206,7 +206,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating is used in <a href="#SP5">§5</a>, 2/iitf (<a href="2-iitf.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating_at_ID is used in 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating_at_ID is used in 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_in_main appears nowhere else.</p>
|
||||
|
||||
|
@ -277,7 +277,7 @@ to access this: one following equations, the other not.
|
|||
|
||||
<p class="endnote">The function Inter::SymbolsTables::unequated_symbol_from_id is used in 2/vi (<a href="2-vi.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iibf (<a href="2-iibf.html#SP1_5_3">§1.5.3</a>, <a href="2-iibf.html#SP1_6">§1.6</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iibf (<a href="2-iibf.html#SP1_4_3">§1.4.3</a>, <a href="2-iibf.html#SP1_5">§1.5</a>), 2/vi (<a href="2-vi.html#SP1">§1</a>), 2/idt (<a href="2-idt.html#SP2">§2</a>, <a href="2-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>It's convenient to have some abbreviations for common ways to access the above.
|
||||
</p>
|
||||
|
@ -476,7 +476,7 @@ a global symbol in any non-global context.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::equate is used in <a href="#SP9">§9</a>, 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::equate is used in <a href="#SP9">§9</a>, 2/iibf (<a href="2-iibf.html#SP1_5">§1.5</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::equate_textual is used in 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
|
|
|
@ -323,8 +323,8 @@
|
|||
<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::Symbols::annotate_t</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="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain">, </span><span class="constant">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="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Symbols::annotate_t</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="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">owner</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="constant">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="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="functiontext">Inter::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">owner</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">), </span><span class="identifier">S</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_annotation</span><span class="plain"> </span><span class="identifier">IA</span><span class="plain"> = </span><span class="functiontext">Inter::Defn::annotation_from_bytecode</span><span class="plain">(</span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Symbols::annotate</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">IA</span><span class="plain">);</span>
|
||||
|
@ -371,7 +371,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Symbols::get_bridge appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::set_translate is used in 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Symbols::set_translate is used in 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::get_translate appears nowhere else.</p>
|
||||
|
||||
|
@ -383,7 +383,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Symbols::get_append appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::annotate is used in 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Symbols::annotate is used in 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Symbols::annotate_i appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -23,8 +23,28 @@
|
|||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_resource_holder</span><span class="plain"> *</span><span class="identifier">stored_resources</span><span class="plain">;</span>
|
||||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inter_warehouse</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inter_warehouse is accessed in 2/iim, 2/st, 2/frm, 2/iibf and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">NO_IRSRC</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">STRING_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">SYMBOLS_TABLE_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">FRAME_LIST_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">PACKAGE_IRSRC</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">REF_IRSRC</span>
|
||||
</pre>
|
||||
|
||||
<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_resource_holder</span><span class="plain"> {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">irsrc</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="identifier">owning_package</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">stored_symbols_table</span><span class="plain">;</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_frame_list</span><span class="plain"> *</span><span class="identifier">stored_frame_list</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="identifier">stored_package</span><span class="plain">;</span>
|
||||
|
@ -45,13 +65,11 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The structure inter_warehouse is accessed in 2/iim, 2/st, 2/frm, 2/iibf and here.</p>
|
||||
|
||||
<p class="endnote">The structure inter_resource_holder is accessed in 2/iim, 2/iibf and here.</p>
|
||||
<p class="endnote">The structure inter_resource_holder is accessed in 2/iim, 2/st, 2/pck, 2/iibf and here.</p>
|
||||
|
||||
<p class="endnote">The structure inter_warehouse_room is accessed in 2/iim, 2/st, 2/frm, 2/iibf, 4/tac, 4/tic, 4/tpc5, 4/tpc6 and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
|
@ -139,6 +157,8 @@
|
|||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>capacity</span><span class="plain"> = </span><span class="identifier">new_size</span><span class="plain">;</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="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</span><span class="plain"> ++;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">NO_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_ref</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
@ -195,28 +215,78 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_symbols_table</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">SYMBOLS_TABLE_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::new</span><span class="plain">();</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_symbols_table</span><span class="plain">-</span><span class="element">>n_index</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">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::attribute_resource</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="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">owner</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> >= (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"out of range"</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="identifier">owner</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Inter::Warehouse::get_text</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="constant">inter_t</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"> >= (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</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">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_text_stream</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_text</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="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">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_text_stream</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">STRING_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_text_stream</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="identifier">owner</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Warehouse::get_package</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="constant">inter_t</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"> >= (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</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">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> == 0) </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">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_package</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="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="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">PACKAGE_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::new</span><span class="plain">(</span><span class="identifier">I</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">>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="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_package</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> *</span><span class="functiontext">Inter::Warehouse::get_ref</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="constant">inter_t</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"> >= (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>size</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">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_ref</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_ref</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">REF_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_ref</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">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_frame_list</span><span class="plain"> *</span><span class="functiontext">Inter::Warehouse::get_frame_list</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="constant">inter_t</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">warehouse</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">int</span><span class="plain"> </span><span class="identifier">n</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="reserved">if</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">>size</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">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="functiontext">Inter::Warehouse::create_frame_list</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">n</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>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="constant">FRAME_LIST_IRSRC</span><span class="plain">;</span>
|
||||
<span class="identifier">warehouse</span><span class="plain">-</span><span class="element">>stored_resources</span><span class="plain">[</span><span class="identifier">n</span><span class="plain">]</span><span class="element">.stored_frame_list</span><span class="plain"> = </span><span class="functiontext">Inter::new_frame_list</span><span class="plain">();</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">n</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -229,9 +299,9 @@
|
|||
|
||||
<p class="endnote">The function Inter::Warehouse::enlarge_size is used in 2/frm (<a href="2-frm.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::find_room is used in 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>).</p>
|
||||
<p class="endnote">The function Inter::Warehouse::find_room is used in 2/frm (<a href="2-frm.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_resource is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/iibf (<a href="2-iibf.html#SP1_5">§1.5</a>).</p>
|
||||
<p class="endnote">The function Inter::Warehouse::create_resource is used in 2/iibf (<a href="2-iibf.html#SP1_4">§1.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::store_origin appears nowhere else.</p>
|
||||
|
||||
|
@ -241,14 +311,26 @@
|
|||
|
||||
<p class="endnote">The function Inter::Warehouse::get_symbols_table is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/frm (<a href="2-frm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_symbols_table is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::attribute_resource is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::get_text is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/frm (<a href="2-frm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_text is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/idt (<a href="2-idt.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>, <a href="3-dfn.html#SP5">§5</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::get_package is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/frm (<a href="2-frm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_package is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::get_ref is used in 2/iim (<a href="2-iim.html#SP3">§3</a>), 2/frm (<a href="2-frm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_ref appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::get_frame_list is used in 2/iim (<a href="2-iim.html#SP4">§4</a>), 2/frm (<a href="2-frm.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Warehouse::create_frame_list is used in 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-iim.html">Back to 'Inter in Memory'</a></li><li><a href="2-st.html">Continue with 'Symbols Tables'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
|
|
@ -104,6 +104,7 @@
|
|||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CONSTRUCT_READ_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CONSTRUCT_TRANSPOSE_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CONSTRUCT_VERIFY_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">CONSTRUCT_WRITE_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">VERIFY_INTER_CHILDREN_MTID</span>
|
||||
|
@ -111,6 +112,7 @@
|
|||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CONSTRUCT_READ_MTID</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_bookmark</span><span class="plain"> *, </span><span class="reserved">inter_line_parse</span><span class="plain"> *, </span><span class="reserved">inter_error_location</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="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">max</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="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CONSTRUCT_VERIFY_MTID</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_frame</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="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CONSTRUCT_WRITE_MTID</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">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inter_frame</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="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">VERIFY_INTER_CHILDREN_MTID</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_frame</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>
|
||||
|
@ -202,7 +204,8 @@
|
|||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="identifier">EP</span><span class="plain"> =</span>
|
||||
<span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">, </span><span class="identifier">keyword</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.index</span><span class="plain">+2, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">keyword</span><span class="plain">)-2, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="identifier">val</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
||||
<span class="identifier">val</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">-</span><span class="element">>root_package</span><span class="plain">);</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="functiontext">Inter::get_text</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">), </span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">EP</span><span class="plain">) *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">EP</span><span class="plain">;</span>
|
||||
|
@ -273,9 +276,9 @@
|
|||
|
||||
<p class="endnote">The function Inter::Defn::read_annotation is used in <a href="#SP5">§5</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::annotation_from_bytecode is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::annotation_from_bytecode is used in 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::is_invalid is used in 2/iibf (<a href="2-iibf.html#SP1_5_2">§1.5.2</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::is_invalid is used in 2/iibf (<a href="2-iibf.html#SP1_4_2">§1.4.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::annotation_to_bytecode is used in 2/iibf (<a href="2-iibf.html#SP1_1_3_2">§1.1.3.2</a>).</p>
|
||||
|
||||
|
@ -300,6 +303,14 @@
|
|||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::transpose_construct</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">max</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">NULL</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="functiontext">Inter::Defn::get_construct</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, &</span><span class="identifier">IC</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">grid</span><span class="plain">, </span><span class="identifier">max</span><span class="plain">, &</span><span class="identifier">E</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Defn::get_construct</span><span class="plain">(</span><span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">inter_construct</span><span class="plain"> **</span><span class="identifier">to</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Frame::valid</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"invalid frame"</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
|
@ -360,7 +371,7 @@
|
|||
<span class="identifier">literal</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'\</span><span class="plain">\</span><span class="character">'</span><span class="plain">) </span><span class="identifier">literal</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">c</span><span class="plain"> == </span><span class="character">'#'</span><span class="plain">) && ((</span><span class="identifier">P</span><span class="element">.index</span><span class="plain"> == 0) || (</span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">ilp</span><span class="element">.line</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.index</span><span class="plain">-1) != </span><span class="character">'#'</span><span class="plain">)) && (</span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">ilp</span><span class="element">.line</span><span class="plain">, </span><span class="identifier">P</span><span class="element">.index</span><span class="plain">+1) != </span><span class="character">'#'</span><span class="plain">) && (</span><span class="identifier">quoted</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
||||
<span class="identifier">ilp</span><span class="element">.terminal_comment</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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="identifier">ilp</span><span class="element">.terminal_comment</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">at</span><span class="plain"> = </span><span class="identifier">Str::index</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="identifier">Str::forward</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">) </span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Str::forward</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
|
||||
|
@ -458,7 +469,9 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/iibf (<a href="2-iibf.html#SP1_7">§1.7</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::transpose_construct is used in 2/iibf (<a href="2-iibf.html#SP1_6">§1.6</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::get_construct appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
<span class="reserved">return</span><span class="plain">;</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="functiontext">Inter::create_text</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="functiontext">Inter::get_text</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="identifier">ID</span><span class="plain">), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], 0, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]), </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
|
||||
|
|
|
@ -184,7 +184,7 @@
|
|||
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 1, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="functiontext">Inter::get_text</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="identifier">ID</span><span class="plain">), </span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
<span class="identifier">L</span><span class="string">"instance (%i+) (%c+)"</span><span class="plain">,</span>
|
||||
<span class="identifier">I</span><span class="string">"instance"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"instances"</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_READ_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Instance::read</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Instance::transpose</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_VERIFY_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Instance::verify</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_WRITE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Instance::write</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -77,13 +78,23 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Instance::new</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">KID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">V1</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">V2</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</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="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_6</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">INSTANCE_IST</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">KID</span><span class="plain">, </span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">, </span><span class="functiontext">Inter::create_frame_list</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="functiontext">Inter::create_frame_list</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="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">L1</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_frame_list</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">L2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_frame_list</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">L1</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="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">L2</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_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_6</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">INSTANCE_IST</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">KID</span><span class="plain">, </span><span class="identifier">V1</span><span class="plain">, </span><span class="identifier">V2</span><span class="plain">, </span><span class="identifier">L1</span><span class="plain">, </span><span class="identifier">L2</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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="functiontext">Inter::Defn::verify_construct</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="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">IBM</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::Instance::transpose</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">grid_extent</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="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PLIST_INST_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PLIST_INST_IFLD</span><span class="plain">]];</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_INST_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_INST_IFLD</span><span class="plain">]];</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Instance::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_frame</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="element">.extent</span><span class="plain"> != </span><span class="constant">EXTENT_INST_IFR</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::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="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Inter__Verify__defn</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="constant">DEFN_INST_IFLD</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -148,6 +159,8 @@
|
|||
|
||||
<p class="endnote">The function Inter::Instance::new appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::transpose is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::verify is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Instance::permissions_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
<span class="identifier">L</span><span class="string">"kind (%i+) (%c+)"</span><span class="plain">,</span>
|
||||
<span class="identifier">I</span><span class="string">"kind"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kinds"</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_READ_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Kind::read</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Kind::transpose</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_VERIFY_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Kind::verify</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_WRITE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Kind::write</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -176,8 +177,13 @@
|
|||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Kind::new</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">TID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SUP</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">constructor</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> *</span><span class="identifier">operands</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</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="reserved">inter_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">L1</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_frame_list</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">L2</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_frame_list</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">L1</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="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">L2</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_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_8</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">,</span>
|
||||
<span class="constant">KIND_IST</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">TID</span><span class="plain">, 0, 0, </span><span class="identifier">SUP</span><span class="plain">, </span><span class="functiontext">Inter::create_frame_list</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="functiontext">Inter::create_frame_list</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="constant">KIND_IST</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">TID</span><span class="plain">, 0, 0, </span><span class="identifier">SUP</span><span class="plain">, </span><span class="identifier">L1</span><span class="plain">, </span><span class="identifier">L2</span><span class="plain">,</span>
|
||||
<span class="plain">(</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">constructor</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">arity</span><span class="plain"> > 0) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Inter::Frame::extend</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="identifier">arity</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
||||
|
@ -189,6 +195,11 @@
|
|||
<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::Kind::transpose</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">grid_extent</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="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_KIND_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_KIND_IFLD</span><span class="plain">]];</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PLIST_KIND_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PLIST_KIND_IFLD</span><span class="plain">]];</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Kind::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_frame</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="element">.extent</span><span class="plain"> < </span><span class="constant">MIN_EXTENT_KIND_IFR</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::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="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Inter__Verify__defn</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="constant">DEFN_KIND_IFLD</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -427,6 +438,8 @@
|
|||
|
||||
<p class="endnote">The function Inter::Kind::new appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::transpose is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::verify is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Kind::permissions_list is used in 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
|
|
@ -69,7 +69,7 @@
|
|||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SIDS</span><span class="plain">[5];</span>
|
||||
<span class="identifier">SIDS</span><span class="plain">[0] = </span><span class="identifier">stage</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">=1; </span><span class="identifier">i</span><span class="plain"><=4; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
<span class="identifier">SIDS</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="functiontext">Inter::create_text</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="identifier">SIDS</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="functiontext">Inter::get_text</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="identifier">SIDS</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]), </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">], 0, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]), </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, 1, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)-2, </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = 0;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
||||
<span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="functiontext">Inter::get_text</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="identifier">ID</span><span class="plain">), </span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">parsed_text</span><span class="plain">);</span>
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</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">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1];</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">literal_mode</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = (</span><span class="reserved">int</span><span class="plain">) </span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">);</span>
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
<span class="identifier">I</span><span class="string">"package"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"packages"</span><span class="plain">);</span>
|
||||
<span class="identifier">IC</span><span class="plain">-</span><span class="element">>usage_permissions</span><span class="plain"> = </span><span class="constant">OUTSIDE_OF_PACKAGES</span><span class="plain"> + </span><span class="constant">INSIDE_PLAIN_PACKAGE</span><span class="plain"> + </span><span class="constant">CAN_HAVE_CHILDREN</span><span class="plain">;</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_READ_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Package::read</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Package::transpose</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_VERIFY_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Package::verify</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_WRITE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Package::write</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">VERIFY_INTER_CHILDREN_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Package::verify_children</span><span class="plain">);</span>
|
||||
|
@ -65,7 +66,7 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</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">inter_symbol</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</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="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">created</span><span class="plain">) {</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">STID</span><span class="plain"> = </span><span class="functiontext">Inter::create_symbols_table</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">STID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_symbols_table</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">LOGIF</span><span class="plain">(</span><span class="identifier">INTER_SYMBOLS</span><span class="plain">, </span><span class="string">"Package $3 at IBM $5\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">, </span><span class="identifier">IBM</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_4</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">,</span>
|
||||
<span class="constant">PACKAGE_IST</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_name</span><span class="plain">), </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol</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="identifier">NULL</span><span class="plain">, </span><span class="identifier">ptype_name</span><span class="plain">), </span><span class="identifier">STID</span><span class="plain">, 0, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">);</span>
|
||||
|
@ -73,7 +74,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">IBM</span><span class="plain">);</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">PID</span><span class="plain"> = </span><span class="functiontext">Inter::create_package</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="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::Packages::from_PID</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="identifier">PID</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>
|
||||
|
@ -81,12 +82,18 @@
|
|||
<span class="functiontext">Inter::Packages::make_linklike</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Packages::set_scope</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="functiontext">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">package_name</span><span class="plain">));</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">] = </span><span class="identifier">PID</span><span class="plain">;</span>
|
||||
<span class="functiontext">Inter::Warehouse::attribute_resource</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">STID</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">created</span><span class="plain">) *</span><span class="identifier">created</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">NULL</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Package::transpose</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">grid_extent</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="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PID_PACKAGE_IFLD</span><span class="plain">]];</span>
|
||||
<span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">SYMBOLS_PACKAGE_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">SYMBOLS_PACKAGE_IFLD</span><span class="plain">]];</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Package::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_frame</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="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Inter__Verify__defn</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="constant">DEFN_PACKAGE_IFLD</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">);</span>
|
||||
|
@ -173,6 +180,8 @@
|
|||
|
||||
<p class="endnote">The function Inter::Package::new_package appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Package::transpose is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Package::verify is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Package::write is used in <a href="#SP1">§1</a>.</p>
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
<span class="identifier">L</span><span class="string">"property (%i+) (%i+)"</span><span class="plain">,</span>
|
||||
<span class="identifier">I</span><span class="string">"property"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"properties"</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_READ_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Property::read</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_TRANSPOSE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Property::transpose</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_VERIFY_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Property::verify</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">IC</span><span class="plain">, </span><span class="constant">CONSTRUCT_WRITE_MTID</span><span class="plain">, </span><span class="functiontext">Inter::Property::write</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -61,13 +62,20 @@
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">inter_error_message</span><span class="plain"> *</span><span class="functiontext">Inter::Property::new</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">PID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">KID</span><span class="plain">, </span><span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">level</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="reserved">inter_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_3</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">PROPERTY_IST</span><span class="plain">, </span><span class="identifier">PID</span><span class="plain">, </span><span class="identifier">KID</span><span class="plain">, </span><span class="functiontext">Inter::create_frame_list</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="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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::Bookmarks::warehouse</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">);</span>
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">L1</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_frame_list</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
|
||||
<span class="functiontext">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">L1</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_frame</span><span class="plain"> </span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::fill_3</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="constant">PROPERTY_IST</span><span class="plain">, </span><span class="identifier">PID</span><span class="plain">, </span><span class="identifier">KID</span><span class="plain">, </span><span class="identifier">L1</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">, </span><span class="identifier">level</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="functiontext">Inter::Defn::verify_construct</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="identifier">P</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">E</span><span class="plain">;</span>
|
||||
<span class="functiontext">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">IBM</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::Property::transpose</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_frame</span><span class="plain"> </span><span class="identifier">P</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">grid_extent</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="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_PROP_IFLD</span><span class="plain">] = </span><span class="identifier">grid</span><span class="plain">[</span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">PERM_LIST_PROP_IFLD</span><span class="plain">]];</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Property::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_frame</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="element">.extent</span><span class="plain"> != </span><span class="constant">EXTENT_PROP_IFR</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::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="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">Inter__Verify__defn</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="constant">DEFN_PROP_IFLD</span><span class="plain">); </span><span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
|
@ -105,6 +113,8 @@
|
|||
|
||||
<p class="endnote">The function Inter::Property::new appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Property::transpose is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Property::verify is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Property::permissions_list is used in 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prop_X</span><span class="plain"> == </span><span class="identifier">prop_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"duplicate permission"</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">-</span><span class="element">>symbol_name</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">owner_X</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">X</span><span class="plain">, </span><span class="constant">OWNER_PERM_IFLD</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_P</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">), </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">OWNER_PERM_IFLD</span><span class="plain">]);;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">owner_X</span><span class="plain"> != </span><span class="identifier">owner_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kind permission list malformed A"</span><span class="plain">, </span><span class="identifier">owner_name</span><span class="plain">-</span><span class="element">>symbol_name</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">owner_X</span><span class="plain"> != </span><span class="identifier">owner_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kind permission list malformed"</span><span class="plain">, </span><span class="identifier">owner_name</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">FL</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::ID_to_frame_list</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="functiontext">Inter::Instance::permissions_list</span><span class="plain">(</span><span class="identifier">owner_name</span><span class="plain">));</span>
|
||||
|
@ -154,7 +154,7 @@
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prop_X</span><span class="plain"> == </span><span class="identifier">prop_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"duplicate permission"</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">-</span><span class="element">>symbol_name</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">owner_X</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_frame_data</span><span class="plain">(</span><span class="identifier">X</span><span class="plain">, </span><span class="constant">OWNER_PERM_IFLD</span><span class="plain">);</span>
|
||||
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_P</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">owner</span><span class="plain">), </span><span class="identifier">P</span><span class="element">.data</span><span class="plain">[</span><span class="constant">OWNER_PERM_IFLD</span><span class="plain">]);;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">owner_X</span><span class="plain"> != </span><span class="identifier">owner_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kind permission list malformed A"</span><span class="plain">, </span><span class="identifier">owner_name</span><span class="plain">-</span><span class="element">>symbol_name</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">owner_X</span><span class="plain"> != </span><span class="identifier">owner_P</span><span class="plain">) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Frame::error</span><span class="plain">(&</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"instance permission list malformed"</span><span class="plain">, </span><span class="identifier">owner_name</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">plm</span><span class="plain"> = </span><span class="functiontext">Inter::Splat::parse_plm</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[0]);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">plm</span><span class="plain"> == 1000000) { *</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Errors::plain</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"unknown PLM code before text matter"</span><span class="plain">, </span><span class="identifier">eloc</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
|
||||
|
||||
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="functiontext">Inter::create_text</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="constant">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_text</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::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">));</span>
|
||||
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="functiontext">Inter::get_text</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="identifier">SID</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">E</span><span class="plain"> = </span><span class="functiontext">Inter::Constant::parse_text</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1], 0, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">ilp</span><span class="plain">-</span><span class="element">>mr</span><span class="plain">.</span><span class="identifier">exp</span><span class="plain">[1]), </span><span class="identifier">eloc</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (*</span><span class="identifier">E</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
||||
|
|
|
@ -101,7 +101,7 @@ inter_symbol *Emit::packagetype(text_stream *name, int enclosing) {
|
|||
}
|
||||
|
||||
void Emit::comment(text_stream *text) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), text);
|
||||
Emit::guard(Inter::Comment::new(Packaging::at(), Emit::baseline(Packaging::at()), NULL, ID));
|
||||
}
|
||||
|
@ -148,18 +148,19 @@ insert them into the Inter stream close to the top.
|
|||
|
||||
=
|
||||
void Emit::pragma(text_stream *text) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), text);
|
||||
inter_tree *I = Emit::tree();
|
||||
inter_t ID = Inter::Warehouse::create_text(I, I->root_package);
|
||||
Str::copy(Inter::get_text(I, ID), text);
|
||||
inter_symbol *target_name =
|
||||
Inter::SymbolsTables::symbol_from_name_creating(
|
||||
Inter::get_global_symbols(Emit::tree()), I"target_I6");
|
||||
Inter::get_global_symbols(I), I"target_I6");
|
||||
Emit::guard(Inter::Pragma::new(&pragmas_bookmark, target_name, ID, 0, NULL));
|
||||
}
|
||||
|
||||
void Emit::append(inter_name *iname, text_stream *text) {
|
||||
packaging_state save = Packaging::enter_home_of(iname);
|
||||
inter_symbol *symbol = InterNames::to_symbol(iname);
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), text);
|
||||
Emit::guard(Inter::Append::new(Packaging::at(), symbol, ID, Emit::baseline(Packaging::at()), NULL));
|
||||
Packaging::exit(save);
|
||||
|
@ -207,13 +208,14 @@ 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(Emit::tree(), symb, annot_ID, S);
|
||||
|
||||
Inter::Symbols::annotate_t(symb->owning_table->owning_package->stored_in, 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(Emit::tree(), symb, annot_ID, temp);
|
||||
Inter::Symbols::annotate_t(symb->owning_table->owning_package->stored_in, symb->owning_table->owning_package, symb, annot_ID, temp);
|
||||
DISCARD_TEXT(temp);
|
||||
}
|
||||
|
||||
|
@ -353,7 +355,7 @@ void Emit::instance_propertyvalue(property *P, instance *I, inter_t v1, inter_t
|
|||
|
||||
void Emit::named_string_constant(inter_name *name, text_stream *contents) {
|
||||
packaging_state save = Packaging::enter_home_of(name);
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), contents);
|
||||
inter_symbol *con_name = Emit::define_symbol(name);
|
||||
Emit::guard(Inter::Constant::new_textual(Packaging::at(), Inter::SymbolsTables::id_from_IRS_and_symbol(Packaging::at(), con_name), Inter::SymbolsTables::id_from_IRS_and_symbol(Packaging::at(), string_interk), ID, Emit::baseline(Packaging::at()), NULL));
|
||||
|
@ -361,7 +363,7 @@ void Emit::named_string_constant(inter_name *name, text_stream *contents) {
|
|||
}
|
||||
|
||||
void Emit::metadata(package_request *P, text_stream *key, text_stream *value) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), value);
|
||||
inter_name *iname = InterNames::explicitly_named(key, P);
|
||||
inter_symbol *key_name = Emit::define_symbol(iname);
|
||||
|
@ -620,7 +622,7 @@ void Emit::array_numeric_entry(inter_t N) {
|
|||
|
||||
void Emit::array_divider(text_stream *divider_text) {
|
||||
if (current_A == NULL) internal_error("entry outside of inter array");
|
||||
inter_t S = Inter::create_text(Emit::tree());
|
||||
inter_t S = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), S), divider_text);
|
||||
Emit::add_entry(DIVIDER_IVAL, S);
|
||||
}
|
||||
|
@ -712,14 +714,14 @@ inter_bookmark begin_bookmark;
|
|||
inter_bookmark code_bookmark;
|
||||
|
||||
void Emit::early_comment(text_stream *text) {
|
||||
/* inter_t ID = Inter::create_text(Emit::tree());
|
||||
/* inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), text);
|
||||
Emit::guard(Inter::Comment::new(Packaging::at(), Emit::baseline(Packaging::at()) + 1, NULL, ID));
|
||||
*/
|
||||
}
|
||||
|
||||
void Emit::code_comment(text_stream *text) {
|
||||
/* inter_t ID = Inter::create_text(Emit::tree());
|
||||
/* inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), text);
|
||||
Emit::guard(Inter::Comment::new(Emit::at(), (inter_t) Emit::level(), NULL, ID));
|
||||
*/
|
||||
|
@ -830,7 +832,7 @@ inter_symbol *Emit::local(kind *K, text_stream *lname, inter_t annot, text_strea
|
|||
inter_symbol *loc_kind = Emit::kind_to_symbol(K);
|
||||
inter_t ID = 0;
|
||||
if ((comm) && (Str::len(comm) > 0)) {
|
||||
ID = Inter::create_text(Emit::tree());
|
||||
ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID), comm);
|
||||
}
|
||||
if (annot) Emit::annotate_symbol_i(loc_name, annot, 0);
|
||||
|
@ -876,7 +878,7 @@ void Emit::inv_indirect_call(int arity) {
|
|||
|
||||
void Emit::inv_assembly(text_stream *opcode) {
|
||||
if (current_inter_routine == NULL) internal_error("not in an inter routine");
|
||||
inter_t SID = Inter::create_text(Emit::tree());
|
||||
inter_t SID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), SID);
|
||||
Str::copy(glob_storage, opcode);
|
||||
Emit::guard(Inter::Inv::new_assembly(Emit::at(), current_inter_routine, SID, (inter_t) Emit::level(), NULL));
|
||||
|
@ -1149,7 +1151,7 @@ void Emit::end_splat(void) {
|
|||
|
||||
void Emit::entire_splat(text_stream *content, inter_t level) {
|
||||
if (Str::len(content) == 0) return;
|
||||
inter_t SID = Inter::create_text(Emit::tree());
|
||||
inter_t SID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), SID);
|
||||
Str::copy(glob_storage, content);
|
||||
|
||||
|
@ -1170,7 +1172,7 @@ void Emit::write_bytecode(filename *F) {
|
|||
}
|
||||
|
||||
void Emit::glob_value(inter_t *v1, inter_t *v2, text_stream *glob, char *clue) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), ID);
|
||||
Str::copy(glob_storage, glob);
|
||||
*v1 = GLOB_IVAL;
|
||||
|
@ -1181,7 +1183,7 @@ void Emit::glob_value(inter_t *v1, inter_t *v2, text_stream *glob, char *clue) {
|
|||
}
|
||||
|
||||
void Emit::text_value(inter_t *v1, inter_t *v2, text_stream *text) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *text_storage = Inter::get_text(Emit::tree(), ID);
|
||||
Str::copy(text_storage, text);
|
||||
*v1 = LITERAL_TEXT_IVAL;
|
||||
|
@ -1193,7 +1195,7 @@ int Emit::glob_count(void) {
|
|||
}
|
||||
|
||||
void Emit::real_value(inter_t *v1, inter_t *v2, double g) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), ID);
|
||||
if (g > 0) WRITE_TO(glob_storage, "+");
|
||||
WRITE_TO(glob_storage, "%g", g);
|
||||
|
@ -1202,7 +1204,7 @@ void Emit::real_value(inter_t *v1, inter_t *v2, double g) {
|
|||
}
|
||||
|
||||
void Emit::real_value_from_text(inter_t *v1, inter_t *v2, text_stream *S) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), ID);
|
||||
LOOP_THROUGH_TEXT(pos, S)
|
||||
if (Str::get(pos) != '$')
|
||||
|
@ -1212,7 +1214,7 @@ void Emit::real_value_from_text(inter_t *v1, inter_t *v2, text_stream *S) {
|
|||
}
|
||||
|
||||
void Emit::dword_value(inter_t *v1, inter_t *v2, text_stream *glob) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), ID);
|
||||
Str::copy(glob_storage, glob);
|
||||
*v1 = DWORD_IVAL;
|
||||
|
@ -1220,7 +1222,7 @@ void Emit::dword_value(inter_t *v1, inter_t *v2, text_stream *glob) {
|
|||
}
|
||||
|
||||
void Emit::plural_dword_value(inter_t *v1, inter_t *v2, text_stream *glob) {
|
||||
inter_t ID = Inter::create_text(Emit::tree());
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(Emit::tree()), Inter::Bookmarks::package(Emit::at()));
|
||||
text_stream *glob_storage = Inter::get_text(Emit::tree(), ID);
|
||||
Str::copy(glob_storage, glob);
|
||||
*v1 = PDWORD_IVAL;
|
||||
|
@ -1228,21 +1230,24 @@ void Emit::plural_dword_value(inter_t *v1, inter_t *v2, text_stream *glob) {
|
|||
}
|
||||
|
||||
void Emit::intervention(int stage, text_stream *segment, text_stream *part, text_stream *i6, text_stream *seg) {
|
||||
inter_t ID1 = Inter::create_text(Emit::tree());
|
||||
inter_warehouse *warehouse = Inter::warehouse(Emit::tree());
|
||||
inter_t ID1 = Inter::Warehouse::create_text(warehouse, Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID1), segment);
|
||||
|
||||
inter_t ID2 = Inter::create_text(Emit::tree());
|
||||
inter_t ID2 = Inter::Warehouse::create_text(warehouse, Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID2), part);
|
||||
|
||||
inter_t ID3 = Inter::create_text(Emit::tree());
|
||||
inter_t ID3 = Inter::Warehouse::create_text(warehouse, Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID3), i6);
|
||||
|
||||
inter_t ID4 = Inter::create_text(Emit::tree());
|
||||
inter_t ID4 = Inter::Warehouse::create_text(warehouse, Inter::Bookmarks::package(Packaging::at()));
|
||||
Str::copy(Inter::get_text(Emit::tree(), ID4), seg);
|
||||
|
||||
inter_t ref = Inter::create_ref(Emit::tree());
|
||||
inter_t ref = Inter::Warehouse::create_ref(warehouse, Inter::Bookmarks::package(Packaging::at()));
|
||||
Inter::set_ref(Emit::tree(), ref, (void *) current_sentence);
|
||||
|
||||
Inter::Warehouse::attribute_resource(warehouse, ref, Inter::Bookmarks::package(Packaging::at()));
|
||||
|
||||
Emit::guard(Inter::Link::new(Packaging::at(), (inter_t) stage, ID1, ID2, ID3, ID4, ref, Emit::baseline(Packaging::at()), NULL));
|
||||
}
|
||||
|
||||
|
@ -1308,10 +1313,6 @@ void Emit::annotate_i(inter_name *iname, inter_t annot_ID, inter_t V) {
|
|||
if (iname) Emit::annotate_symbol_i(InterNames::to_symbol(iname), annot_ID, V);
|
||||
}
|
||||
|
||||
void Emit::annotate_t(inter_name *iname, inter_t annot_ID, text_stream *text) {
|
||||
if (iname) Emit::annotate_symbol_t(InterNames::to_symbol(iname), annot_ID, text);
|
||||
}
|
||||
|
||||
void Emit::annotate_w(inter_name *iname, inter_t annot_ID, wording W) {
|
||||
if (iname) Emit::annotate_symbol_w(InterNames::to_symbol(iname), annot_ID, W);
|
||||
}
|
||||
|
|
3
inter/.gitignore
vendored
3
inter/.gitignore
vendored
|
@ -18,6 +18,9 @@ inter.mk
|
|||
Tests/Invalid/_Results_Actual/
|
||||
Tests/General/_Results_Actual/
|
||||
Tests/General/_Console/
|
||||
Tests/Duplex/_Results_Actual/
|
||||
Tests/Duplex/_Console/
|
||||
Tests/Duplex/_Binaries/
|
||||
Tests/Valid/_Binary/
|
||||
Tests/Valid/_Console/
|
||||
Tests/Valid/_Textual/
|
||||
|
|
8
inter/Tests/Duplex/BinOut.interpipeline
Normal file
8
inter/Tests/Duplex/BinOut.interpipeline
Normal file
|
@ -0,0 +1,8 @@
|
|||
read 0 <- *inA
|
||||
read 1 <- *inB
|
||||
generate 0 binary -> *binA
|
||||
generate 1 binary -> *binB
|
||||
read 2 <- *binA
|
||||
read 3 <- *binB
|
||||
generate 2 text -> *outA
|
||||
generate 3 text -> *outB
|
4
inter/Tests/Duplex/InOut.interpipeline
Normal file
4
inter/Tests/Duplex/InOut.interpipeline
Normal file
|
@ -0,0 +1,4 @@
|
|||
read 0 <- *inA
|
||||
read 1 <- *inB
|
||||
generate 0 text -> *outA
|
||||
generate 1 text -> *outB
|
8
inter/Tests/Duplex/TransposeBinOut.interpipeline
Normal file
8
inter/Tests/Duplex/TransposeBinOut.interpipeline
Normal file
|
@ -0,0 +1,8 @@
|
|||
read 0 <- *inA
|
||||
read 1 <- *inB
|
||||
generate 0 binary -> *binA
|
||||
generate 1 binary -> *binB
|
||||
read 2 <- *binA
|
||||
read 3 <- *binB
|
||||
generate 2 text -> *outA
|
||||
generate 3 text -> *outB
|
5
inter/Tests/Duplex/TransposeInOut.interpipeline
Normal file
5
inter/Tests/Duplex/TransposeInOut.interpipeline
Normal file
|
@ -0,0 +1,5 @@
|
|||
read 0 <- *inA
|
||||
read 1 <- *inB
|
||||
move 1 <- 0:/main/my_fn
|
||||
generate 0 text -> *outA
|
||||
generate 1 text -> *outB
|
26
inter/Tests/Duplex/_Pairs/BinOut+A.intert
Normal file
26
inter/Tests/Duplex/_Pairs/BinOut+A.intert
Normal file
|
@ -0,0 +1,26 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Pairs/BinOut+B.intert
Normal file
168
inter/Tests/Duplex/_Pairs/BinOut+B.intert
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
26
inter/Tests/Duplex/_Pairs/InOut+A.intert
Normal file
26
inter/Tests/Duplex/_Pairs/InOut+A.intert
Normal file
|
@ -0,0 +1,26 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Pairs/InOut+B.intert
Normal file
168
inter/Tests/Duplex/_Pairs/InOut+B.intert
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
29
inter/Tests/Duplex/_Pairs/TransposeBinOut+A.intert
Normal file
29
inter/Tests/Duplex/_Pairs/TransposeBinOut+A.intert
Normal file
|
@ -0,0 +1,29 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc my_fn
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package my_fn _plain
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol external misc K_func == /main/K_func
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Pairs/TransposeBinOut+B.intert
Normal file
168
inter/Tests/Duplex/_Pairs/TransposeBinOut+B.intert
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
29
inter/Tests/Duplex/_Pairs/TransposeInOut+A.intert
Normal file
29
inter/Tests/Duplex/_Pairs/TransposeInOut+A.intert
Normal file
|
@ -0,0 +1,29 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc my_fn
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package my_fn _plain
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol external misc K_func == /main/K_func
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Pairs/TransposeInOut+B.intert
Normal file
168
inter/Tests/Duplex/_Pairs/TransposeInOut+B.intert
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
26
inter/Tests/Duplex/_Results_Ideal/BinOut+A.txt
Normal file
26
inter/Tests/Duplex/_Results_Ideal/BinOut+A.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Results_Ideal/BinOut+B.txt
Normal file
168
inter/Tests/Duplex/_Results_Ideal/BinOut+B.txt
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
26
inter/Tests/Duplex/_Results_Ideal/InOut+A.txt
Normal file
26
inter/Tests/Duplex/_Results_Ideal/InOut+A.txt
Normal file
|
@ -0,0 +1,26 @@
|
|||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
primitive !if val code -> void
|
||||
primitive !goto lab -> void
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_func
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
kind K_number int32
|
||||
kind K_func function K_number -> K_number
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol private label .begin
|
||||
symbol external misc K_number == /main/K_number
|
||||
local x K_number __call_parameter
|
||||
code
|
||||
.begin
|
||||
inv !if
|
||||
val K_number 1
|
||||
code
|
||||
inv !goto
|
||||
lab .begin
|
||||
constant R_101 K_func = R_101_B
|
168
inter/Tests/Duplex/_Results_Ideal/InOut+B.txt
Normal file
168
inter/Tests/Duplex/_Results_Ideal/InOut+B.txt
Normal file
|
@ -0,0 +1,168 @@
|
|||
# This is a miscellany of tests.
|
||||
|
||||
packagetype _plain
|
||||
packagetype _code
|
||||
|
||||
version 7
|
||||
|
||||
primitive !return val -> void
|
||||
primitive !modulo val val -> val
|
||||
primitive !plus val val -> val
|
||||
|
||||
pragma target_I6 "$MAX_STATIC_DATA=180000"
|
||||
|
||||
package main _plain
|
||||
symbol public misc K_number
|
||||
symbol public misc K_truth_state
|
||||
symbol public misc V_banana
|
||||
symbol public misc C_death
|
||||
symbol public misc C_taxes
|
||||
symbol public misc V_anxiety
|
||||
symbol public misc C_x
|
||||
symbol public misc cornelius
|
||||
symbol public misc gaius
|
||||
symbol public misc mark_my_words
|
||||
symbol external misc peach
|
||||
symbol public misc K_colour
|
||||
symbol public misc I_green
|
||||
symbol public misc I_red
|
||||
symbol public misc V_shade
|
||||
symbol public misc K_list_of_number
|
||||
symbol public misc C_primes
|
||||
symbol public misc C_concealed
|
||||
symbol public misc V_watch_list
|
||||
symbol public misc 718_varieties
|
||||
symbol public misc K_text
|
||||
symbol public misc C_complaint
|
||||
symbol public misc C_raw
|
||||
symbol public misc K_odour
|
||||
symbol public misc I_citrus
|
||||
symbol public misc I_leather
|
||||
symbol public misc P_strength
|
||||
symbol public misc pp_auto_1
|
||||
symbol public misc P_lingeringness
|
||||
symbol public misc pp_auto_2
|
||||
symbol public misc K_table
|
||||
symbol public misc K_column_of_number
|
||||
symbol public misc K_column_of_colour
|
||||
symbol public misc C_egtable_col1
|
||||
symbol public misc C_egtable_col2
|
||||
symbol public misc C_egtable
|
||||
symbol public misc K_object
|
||||
symbol public misc I_board
|
||||
symbol public misc K_piece
|
||||
symbol public misc I_bishop
|
||||
symbol public misc I_rook
|
||||
symbol public misc K_list_of_objects
|
||||
symbol public misc C_majors
|
||||
symbol public misc pp_auto_3
|
||||
symbol public misc K_func
|
||||
symbol public misc K_rule
|
||||
symbol public misc K_rulebook
|
||||
symbol public misc K_stuff
|
||||
symbol public misc S_stuff
|
||||
symbol public misc R_after1_B
|
||||
symbol public misc R_after2_B
|
||||
symbol public misc R_after1
|
||||
symbol public misc R_after2
|
||||
symbol public misc RB_after
|
||||
symbol public misc K_colour____colour
|
||||
symbol public misc R_101_B
|
||||
symbol public misc R_101
|
||||
symbol public misc R_102_B
|
||||
symbol public misc R_102
|
||||
symbol public misc amount
|
||||
symbol public misc R_101_A
|
||||
kind K_number int32
|
||||
kind K_truth_state int2
|
||||
defaultvalue K_number = 47
|
||||
variable V_banana K_number = 100
|
||||
constant C_death K_number = -5
|
||||
constant C_taxes K_number = 14
|
||||
variable V_anxiety K_number = C_death
|
||||
constant C_x K_number = 0x7f2a __hex
|
||||
link early "alpha" "beta" "gamma" "delta"
|
||||
link before "alpha" "" "" ""
|
||||
link instead "" "beta" "" ""
|
||||
link after "" "" "gamma" ""
|
||||
constant cornelius K_number = dw'frogs'
|
||||
constant gaius K_number = dw'toads'
|
||||
splat &"Sing a song of \"six splats\"...\nand don't wait up"
|
||||
kind K_colour enum
|
||||
instance I_green K_colour = 1
|
||||
instance I_red K_colour = 17
|
||||
variable V_shade K_colour = I_red
|
||||
kind K_list_of_number list of K_number
|
||||
constant C_primes K_list_of_number = { 2, 3, 5, 7, 11, 13, 17, 19 }
|
||||
constant C_concealed K_list_of_number = C_primes
|
||||
variable V_watch_list K_list_of_number = C_concealed
|
||||
kind K_text text
|
||||
constant C_complaint K_text = "This is already quite a long test case."
|
||||
constant C_raw K_number = &"SOME_I6_DRIVEL"
|
||||
kind K_odour enum
|
||||
instance I_citrus K_odour = 5
|
||||
instance I_leather K_odour = 10
|
||||
property P_strength K_number __property_name="strength"
|
||||
permission P_strength K_odour
|
||||
propertyvalue P_strength I_citrus = 20
|
||||
propertyvalue P_strength I_leather = 7
|
||||
property P_lingeringness K_number
|
||||
permission P_lingeringness K_odour
|
||||
propertyvalue P_lingeringness I_citrus = 1
|
||||
propertyvalue P_lingeringness I_leather = 3
|
||||
propertyvalue P_lingeringness K_odour = 2
|
||||
kind K_table table
|
||||
kind K_column_of_number column of K_number
|
||||
kind K_column_of_colour column of K_colour
|
||||
constant C_egtable_col1 K_column_of_number = { 1, 4, 9, 16 }
|
||||
constant C_egtable_col2 K_column_of_colour = { I_green, undef, I_red }
|
||||
constant C_egtable K_table = { C_egtable_col1, C_egtable_col2 }
|
||||
kind K_object enum
|
||||
instance I_board K_object = 1
|
||||
kind K_piece <= K_object
|
||||
instance I_bishop K_piece = 2
|
||||
instance I_rook K_piece = 3
|
||||
kind K_list_of_objects list of K_object
|
||||
constant C_majors K_list_of_objects = { I_bishop, I_rook }
|
||||
permission P_lingeringness I_bishop
|
||||
kind K_func function K_colour K_number -> K_odour
|
||||
kind K_rule rule void -> void
|
||||
kind K_rulebook rulebook of K_rule
|
||||
kind K_stuff struct K_number K_colour K_odour
|
||||
constant S_stuff K_stuff = { 5, I_red, I_citrus }
|
||||
package R_after1_B _code
|
||||
package R_after2_B _code
|
||||
constant R_after1 K_rule = R_after1_B
|
||||
constant R_after2 K_rule = R_after2_B
|
||||
constant RB_after K_rulebook = { R_after1, R_after2 }
|
||||
kind K_colour____colour function K_colour -> K_colour
|
||||
package R_101_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc R_102 == /main/R_102
|
||||
symbol external misc I_green == /main/I_green
|
||||
symbol external misc K_number == /main/K_number
|
||||
symbol external misc K_truth_state == /main/K_truth_state
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv R_102
|
||||
val K_colour I_green
|
||||
inv !return
|
||||
inv !modulo
|
||||
inv !plus
|
||||
cast K_number <- K_colour
|
||||
val K_colour x
|
||||
val K_number 1
|
||||
val K_truth_state &"a b"
|
||||
constant R_101 K_colour____colour = R_101_B
|
||||
package R_102_B _code
|
||||
symbol private misc x
|
||||
symbol external misc K_colour == /main/K_colour
|
||||
symbol external misc I_red == /main/I_red
|
||||
local x K_colour __call_parameter
|
||||
code
|
||||
inv !return
|
||||
val K_colour I_red
|
||||
constant R_102 K_colour____colour = R_102_B
|
||||
constant amount K_number = sum{ 2, C_taxes }
|
||||
response R_101_A R_101 0 = C_taxes
|
|
@ -1,6 +1,7 @@
|
|||
-cases [Valid] 'inter/Tests/Valid'
|
||||
-cases [Invalid] 'inter/Tests/Invalid'
|
||||
-cases [General] 'inter/Tests/General'
|
||||
-cases [Duplex] 'inter/Tests/Duplex'
|
||||
-cases [PipelineErrors] 'inter/Tests/PipelineErrors'
|
||||
-cases [Units] 'inter/Tests/Units'
|
||||
|
||||
|
@ -69,6 +70,37 @@
|
|||
|
||||
-end
|
||||
|
||||
-recipe [Duplex]
|
||||
|
||||
set: $P = $PATH/$CASE.interpipeline
|
||||
set: $OA = $PATH/_Pairs/$CASE+A.intert
|
||||
set: $OB = $PATH/_Pairs/$CASE+B.intert
|
||||
set: $BA = $PATH/_Binaries/$CASE+A.interb
|
||||
set: $BB = $PATH/_Binaries/$CASE+B.interb
|
||||
set: $AA = $PATH/_Results_Actual/$CASE+A.txt
|
||||
set: $IA = $PATH/_Results_Ideal/$CASE+A.txt
|
||||
set: $AB = $PATH/_Results_Actual/$CASE+B.txt
|
||||
set: $IB = $PATH/_Results_Ideal/$CASE+B.txt
|
||||
set: $T = $PATH/_Console/$CASE.txt
|
||||
|
||||
mkdir: $PATH/_Results_Actual
|
||||
mkdir: $PATH/_Results_Ideal
|
||||
mkdir: $PATH/_Console
|
||||
mkdir: $PATH/_Binaries
|
||||
|
||||
step: inter/Tangled/inter -variable '*inA=$OA' -variable '*inB=$OB' -variable '*binA=$BA' -variable '*binB=$BB' -variable '*outA=$AA' -variable '*outB=$AB' -pipeline-file $P
|
||||
or: 'failed to produce output' $T
|
||||
|
||||
show: $A
|
||||
|
||||
match text: $AA $IA
|
||||
or: 'produced incorrect output on A'
|
||||
|
||||
match text: $AB $IB
|
||||
or: 'produced incorrect output on B'
|
||||
|
||||
-end
|
||||
|
||||
-recipe [PipelineErrors]
|
||||
|
||||
set: $O = $PATH/$CASE.intert
|
||||
|
|
|
@ -22,6 +22,7 @@ typedef struct pipeline_step {
|
|||
int repository_argument;
|
||||
struct text_stream *text_out_file;
|
||||
struct inter_tree *repository;
|
||||
struct codegen_pipeline *pipeline;
|
||||
MEMORY_MANAGEMENT
|
||||
} pipeline_step;
|
||||
|
||||
|
@ -46,6 +47,7 @@ void CodeGen::Pipeline::clean_step(pipeline_step *step) {
|
|||
step->from_memory = FALSE;
|
||||
step->the_PP = NULL;
|
||||
step->repository = NULL;
|
||||
step->pipeline = NULL;
|
||||
}
|
||||
|
||||
@ Here we write a textual description to a string, which is useful for
|
||||
|
@ -255,6 +257,7 @@ void CodeGen::Pipeline::run(pathname *P, codegen_pipeline *S, int N, pathname **
|
|||
step->the_N = N;
|
||||
step->the_PP = PP;
|
||||
step->repository = I;
|
||||
step->pipeline = S;
|
||||
|
||||
TEMPORARY_TEXT(STAGE_NAME);
|
||||
WRITE_TO(STAGE_NAME, "inter step %d/%d (at %dcs): ", ++step_count, step_total,
|
||||
|
@ -399,6 +402,9 @@ void CodeGen::Pipeline::visitor(inter_tree *I, inter_frame P, void *state) {
|
|||
LOG("Frame gives package as $3, but its location is in package $3\n",
|
||||
Inter::Frame::ID_to_package(&P, c)->package_name,
|
||||
Inter::Frame::ID_to_package(&P, a)->package_name);
|
||||
WRITE_TO(STDERR, "Frame gives package as %d, but its location is in package %d\n",
|
||||
Inter::Frame::ID_to_package(&P, c)->index_n,
|
||||
Inter::Frame::ID_to_package(&P, a)->index_n);
|
||||
internal_error("zap");
|
||||
}
|
||||
|
||||
|
|
|
@ -46,6 +46,7 @@ void CodeGen::Stage::make_stages(void) {
|
|||
CodeGen::Stage::new(I"stop", CodeGen::Stage::run_stop_stage, NO_STAGE_ARG, FALSE);
|
||||
|
||||
CodeGen::Stage::new(I"read", CodeGen::Stage::run_read_stage, FILE_STAGE_ARG, TRUE);
|
||||
CodeGen::Stage::new(I"move", CodeGen::Stage::run_move_stage, GENERAL_STAGE_ARG, TRUE);
|
||||
CodeGen::Stage::new(I"mask", CodeGen::Stage::run_mask_stage, GENERAL_STAGE_ARG, TRUE);
|
||||
CodeGen::Stage::new(I"unmask", CodeGen::Stage::run_unmask_stage, NO_STAGE_ARG, FALSE);
|
||||
|
||||
|
@ -77,6 +78,27 @@ int CodeGen::Stage::run_read_stage(pipeline_step *step) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
int CodeGen::Stage::run_move_stage(pipeline_step *step) {
|
||||
LOG("Arg is %S.\n", step->step_argument);
|
||||
match_results mr = Regexp::create_mr();
|
||||
inter_symbol *S = NULL;
|
||||
if (Regexp::match(&mr, step->step_argument, L"(%d):(%c+)")) {
|
||||
int from_rep = Str::atoi(mr.exp[0], 0);
|
||||
if (step->pipeline->repositories[from_rep] == NULL)
|
||||
internal_error("no such repository");
|
||||
S = Inter::SymbolsTables::url_name_to_symbol(
|
||||
step->pipeline->repositories[from_rep], NULL, mr.exp[1]);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
if (S == NULL) internal_error("no such location");
|
||||
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);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
int CodeGen::Stage::run_mask_stage(pipeline_step *step) {
|
||||
LOG("Arg is %S.\n", step->step_argument);
|
||||
inter_symbol *S = Inter::SymbolsTables::url_name_to_symbol(step->repository, NULL, step->step_argument);
|
||||
|
|
|
@ -557,7 +557,7 @@ void CodeGen::Assimilate::value(inter_tree *I, inter_package *pack, inter_bookma
|
|||
int c = Str::get(pos);
|
||||
PUT_TO(dw, c);
|
||||
}
|
||||
inter_t ID = Inter::create_text(I);
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(I), pack);
|
||||
text_stream *glob_storage = Inter::get_text(I, ID);
|
||||
Str::copy(glob_storage, dw);
|
||||
*val1 = DWORD_IVAL; *val2 = ID;
|
||||
|
@ -574,7 +574,7 @@ void CodeGen::Assimilate::value(inter_tree *I, inter_package *pack, inter_bookma
|
|||
int c = Str::get(pos);
|
||||
PUT_TO(dw, c);
|
||||
}
|
||||
inter_t ID = Inter::create_text(I);
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(I), pack);
|
||||
text_stream *glob_storage = Inter::get_text(I, ID);
|
||||
Str::copy(glob_storage, dw);
|
||||
*val1 = LITERAL_TEXT_IVAL; *val2 = ID;
|
||||
|
@ -675,7 +675,7 @@ inter_symbol *CodeGen::Assimilate::compute_constant(inter_tree *I, inter_package
|
|||
WRITE_TO(STDERR, "Forced to glob: %S\n", sch->converted_from);
|
||||
internal_error("Reduced to glob in assimilation");
|
||||
|
||||
inter_t ID = Inter::create_text(I);
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::warehouse(I), pack);
|
||||
text_stream *glob_storage = Inter::get_text(I, ID);
|
||||
Str::copy(glob_storage, sch->converted_from);
|
||||
|
||||
|
|
|
@ -144,7 +144,7 @@ void CodeGen::MergeTemplate::guard(inter_error_message *ERR) {
|
|||
}
|
||||
|
||||
void CodeGen::MergeTemplate::entire_splat(inter_bookmark *IBM, text_stream *origin, text_stream *content, inter_t level, inter_symbol *code_block) {
|
||||
inter_t SID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
inter_t SID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
text_stream *glob_storage = Inter::get_text(Inter::Bookmarks::tree(IBM), SID);
|
||||
Str::copy(glob_storage, content);
|
||||
CodeGen::MergeTemplate::guard(Inter::Splat::new(IBM, code_block, SID, 0, level, 0, NULL));
|
||||
|
|
|
@ -8,6 +8,9 @@ inter.mk
|
|||
Tests/Invalid/_Results_Actual/
|
||||
Tests/General/_Results_Actual/
|
||||
Tests/General/_Console/
|
||||
Tests/Duplex/_Results_Actual/
|
||||
Tests/Duplex/_Console/
|
||||
Tests/Duplex/_Binaries/
|
||||
Tests/Valid/_Binary/
|
||||
Tests/Valid/_Console/
|
||||
Tests/Valid/_Textual/
|
||||
|
|
|
@ -24,6 +24,10 @@ inter_tree *Inter::Bookmarks::tree(inter_bookmark *IBM) {
|
|||
return IBM->current_package->stored_in;
|
||||
}
|
||||
|
||||
inter_warehouse *Inter::Bookmarks::warehouse(inter_bookmark *IBM) {
|
||||
return Inter::warehouse(Inter::Bookmarks::tree(IBM));
|
||||
}
|
||||
|
||||
inter_bookmark Inter::Bookmarks::at_end_of_this_package(inter_package *pack) {
|
||||
if (pack == NULL) internal_error("no package supplied");
|
||||
inter_bookmark IBM;
|
||||
|
|
|
@ -78,8 +78,8 @@ int Inter::Frame::eq(inter_frame *F1, inter_frame *F2) {
|
|||
}
|
||||
|
||||
@ =
|
||||
inter_frame Inter::Frame::root_frame(inter_tree *I) {
|
||||
inter_frame P = Inter::Warehouse::find_room(Inter::warehouse(I), Inter::get_global_symbols(I), 2, NULL, NULL);
|
||||
inter_frame Inter::Frame::root_frame(inter_warehouse *warehouse, inter_symbols_table *globals) {
|
||||
inter_frame P = Inter::Warehouse::find_room(warehouse, globals, 2, NULL, NULL);
|
||||
P.data[ID_IFLD] = (inter_t) NOP_IST;
|
||||
P.data[LEVEL_IFLD] = 0;
|
||||
return P;
|
||||
|
|
|
@ -183,32 +183,32 @@ inter_error_message *Inter::Types::read(text_stream *line, inter_error_location
|
|||
*val1 = UNDEF_IVAL; *val2 = 0; return NULL;
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"\"")) && (Str::ends_with_wide_string(S, L"\""))) {
|
||||
*val1 = LITERAL_TEXT_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = LITERAL_TEXT_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *glob_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(glob_storage, S, 1, Str::len(S)-2, eloc);
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"r\"")) && (Str::ends_with_wide_string(S, L"\""))) {
|
||||
*val1 = REAL_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = REAL_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *glob_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(glob_storage, S, 2, Str::len(S)-2, eloc);
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"&\"")) && (Str::ends_with_wide_string(S, L"\""))) {
|
||||
*val1 = GLOB_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = GLOB_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *glob_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(glob_storage, S, 2, Str::len(S)-2, eloc);
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"dw'")) && (Str::ends_with_wide_string(S, L"'"))) {
|
||||
*val1 = DWORD_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = DWORD_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *glob_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(glob_storage, S, 3, Str::len(S)-2, eloc);
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"dwp'")) && (Str::ends_with_wide_string(S, L"'"))) {
|
||||
*val1 = PDWORD_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = PDWORD_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *glob_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(glob_storage, S, 4, Str::len(S)-2, eloc);
|
||||
}
|
||||
if ((Str::begins_with_wide_string(S, L"^\"")) && (Str::ends_with_wide_string(S, L"\""))) {
|
||||
*val1 = DIVIDER_IVAL; *val2 = Inter::create_text(IC);
|
||||
*val1 = DIVIDER_IVAL; *val2 = Inter::Warehouse::create_text(Inter::warehouse(IC), pack);
|
||||
text_stream *divider_storage = Inter::get_text(IC, *val2);
|
||||
return Inter::Constant::parse_text(divider_storage, S, 2, Str::len(S)-2, eloc);
|
||||
}
|
||||
|
|
|
@ -7,6 +7,8 @@ The binary representation of Inter, saved out to a file, is portable and
|
|||
complete in itself.
|
||||
|
||||
=
|
||||
int trace_bin = FALSE;
|
||||
|
||||
void Inter::Binary::read(inter_tree *I, filename *F) {
|
||||
LOGIF(INTER_FILE_READ, "(Reading binary inter file %f)\n", F);
|
||||
long int max_offset = BinaryFiles::size(F);
|
||||
|
@ -18,6 +20,8 @@ void Inter::Binary::read(inter_tree *I, filename *F) {
|
|||
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
|
||||
inter_t *grid = NULL;
|
||||
inter_t grid_extent = 0;
|
||||
unsigned int X = 0;
|
||||
|
||||
@<Read the shibboleth@>;
|
||||
|
@ -25,6 +29,7 @@ void Inter::Binary::read(inter_tree *I, filename *F) {
|
|||
@<Read the resources@>;
|
||||
@<Read the symbol equations@>;
|
||||
@<Read the bytecode@>;
|
||||
if (grid) Memory::I7_array_free(grid, INTER_BYTECODE_MREASON, (int) grid_extent, sizeof(inter_t));
|
||||
|
||||
BinaryFiles::close(fh);
|
||||
}
|
||||
|
@ -33,6 +38,7 @@ void Inter::Binary::read(inter_tree *I, filename *F) {
|
|||
|
||||
=
|
||||
void Inter::Binary::write(filename *F, inter_tree *I) {
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Writing binary inter file %f\n", F);
|
||||
LOGIF(INTER_FILE_READ, "(Writing binary inter file %f)\n", F);
|
||||
FILE *fh = BinaryFiles::open_for_writing(F);
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
|
@ -95,51 +101,106 @@ resource block later on.
|
|||
BinaryFiles::write_int32(fh, 0);
|
||||
|
||||
@ There follows a block of resources, which is a list in which each entry opens
|
||||
with a word identifying which resource is meant; when |NO_IRSRC| is reached,
|
||||
that's the end of the list and therefore the block.
|
||||
|
||||
@e NO_IRSRC from 0
|
||||
@e STRING_IRSRC
|
||||
@e SYMBOLS_TABLE_IRSRC
|
||||
@e FRAME_LIST_IRSRC
|
||||
@e PACKAGE_IRSRC
|
||||
with a word identifying which resource number is meant; when this is zero,
|
||||
that's the end of the list and therefore the block. (There is no resource 0.)
|
||||
|
||||
@<Read the resources@> =
|
||||
int resource_counter = 0;
|
||||
while (BinaryFiles::read_int32(fh, &X)) {
|
||||
if (X == NO_IRSRC) break;
|
||||
|
||||
resource_counter++;
|
||||
inter_t n = (inter_t) resource_counter;
|
||||
if (resource_counter >= 3) n = Inter::Warehouse::create_resource(warehouse);
|
||||
inter_resource_holder *res = &(warehouse->stored_resources[n]);
|
||||
|
||||
switch (X) {
|
||||
case STRING_IRSRC: @<Read a string resource@>; break;
|
||||
case SYMBOLS_TABLE_IRSRC: @<Read a symbols table resource@>; break;
|
||||
case FRAME_LIST_IRSRC: @<Read a frame list resource@>; break;
|
||||
case PACKAGE_IRSRC: @<Read a package resource@>; break;
|
||||
unsigned int count = 0;
|
||||
if (BinaryFiles::read_int32(fh, &count) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
if (count > 0) {
|
||||
unsigned int grid_extent = 0;
|
||||
if (BinaryFiles::read_int32(fh, &grid_extent) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
if (grid_extent == 0) {
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"max zero");
|
||||
grid_extent = 1000;
|
||||
}
|
||||
grid = (inter_t *) Memory::I7_calloc((int) grid_extent, sizeof(inter_t), INTER_BYTECODE_MREASON);
|
||||
for (inter_t i=0; i<grid_extent; i++) grid[i] = 0;
|
||||
for (inter_t i=0; i<count; i++) {
|
||||
unsigned int from_N;
|
||||
if (BinaryFiles::read_int32(fh, &from_N)) {
|
||||
inter_t n;
|
||||
switch (i) {
|
||||
case 0: n = (inter_t) I->root_package->package_scope->n_index; break;
|
||||
case 1: n = (inter_t) I->root_package->index_n; break;
|
||||
default: n = Inter::Warehouse::create_resource(warehouse); break;
|
||||
}
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Reading resource %d <--- %d\n", n, from_N);
|
||||
if (from_N >= grid_extent) {
|
||||
from_N = grid_extent-1;
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"max incorrect");
|
||||
}
|
||||
grid[from_N] = n;
|
||||
} else Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
}
|
||||
for (inter_t i=0; i<grid_extent; i++) {
|
||||
if (trace_bin) WRITE_TO(STDOUT, "%d ", grid[i]);
|
||||
}
|
||||
if (trace_bin) WRITE_TO(STDOUT, "\n");
|
||||
|
||||
for (inter_t i=0; i<count; i++) {
|
||||
unsigned int from_N = 0;
|
||||
if (BinaryFiles::read_int32(fh, &from_N) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
if ((from_N == 0) || (from_N >= grid_extent)) {
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"from-N out of range");
|
||||
from_N = grid_extent - 1;
|
||||
}
|
||||
inter_t n = grid[from_N];
|
||||
inter_resource_holder *res = &(warehouse->stored_resources[n]);
|
||||
unsigned int X = NO_IRSRC;
|
||||
if (BinaryFiles::read_int32(fh, &X) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Reading resource %d -> %d type %d\n", from_N, n, X);
|
||||
switch (X) {
|
||||
case STRING_IRSRC: @<Read a string resource@>; break;
|
||||
case SYMBOLS_TABLE_IRSRC: @<Read a symbols table resource@>; break;
|
||||
case FRAME_LIST_IRSRC: @<Read a frame list resource@>; break;
|
||||
case PACKAGE_IRSRC: @<Read a package resource@>; break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@<Write the resources@> =
|
||||
int max = -1, count = 0;
|
||||
for (int n = 1; n < warehouse->size; n++) {
|
||||
inter_resource_holder *res = &(warehouse->stored_resources[n]);
|
||||
if (res->stored_text_stream) {
|
||||
BinaryFiles::write_int32(fh, STRING_IRSRC);
|
||||
@<Write a string resource@>;
|
||||
} else if (res->stored_symbols_table) {
|
||||
BinaryFiles::write_int32(fh, SYMBOLS_TABLE_IRSRC);
|
||||
@<Write a symbols table resource@>;
|
||||
} else if (res->stored_package) {
|
||||
BinaryFiles::write_int32(fh, PACKAGE_IRSRC);
|
||||
@<Write a package resource@>;
|
||||
} else {
|
||||
BinaryFiles::write_int32(fh, FRAME_LIST_IRSRC);
|
||||
@<Write a frame list resource@>;
|
||||
inter_package *owner = warehouse->stored_resources[n].owning_package;
|
||||
if ((owner) && (owner->stored_in != I)) continue;
|
||||
count++;
|
||||
if (n+1 > max) max = n+1;
|
||||
}
|
||||
BinaryFiles::write_int32(fh, (unsigned int) count);
|
||||
if (count >= 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;
|
||||
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 (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);
|
||||
inter_resource_holder *res = &(warehouse->stored_resources[n]);
|
||||
if (res->stored_text_stream) {
|
||||
BinaryFiles::write_int32(fh, STRING_IRSRC);
|
||||
@<Write a string resource@>;
|
||||
} else if (res->stored_symbols_table) {
|
||||
BinaryFiles::write_int32(fh, SYMBOLS_TABLE_IRSRC);
|
||||
@<Write a symbols table resource@>;
|
||||
} else if (res->stored_package) {
|
||||
BinaryFiles::write_int32(fh, PACKAGE_IRSRC);
|
||||
@<Write a package resource@>;
|
||||
} else {
|
||||
BinaryFiles::write_int32(fh, FRAME_LIST_IRSRC);
|
||||
@<Write a frame list resource@>;
|
||||
}
|
||||
}
|
||||
}
|
||||
BinaryFiles::write_int32(fh, NO_IRSRC);
|
||||
|
||||
@<Read a string resource@> =
|
||||
res->stored_text_stream = Str::new();
|
||||
|
@ -251,18 +312,23 @@ that's the end of the list and therefore the block.
|
|||
if (BinaryFiles::read_int32(fh, &p) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int cl;
|
||||
if (BinaryFiles::read_int32(fh, &cl) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int rl;
|
||||
if (BinaryFiles::read_int32(fh, &rl) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int sc;
|
||||
if (BinaryFiles::read_int32(fh, &sc) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
unsigned int nid;
|
||||
if (BinaryFiles::read_int32(fh, &nid) == FALSE) Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
inter_package *parent = NULL;
|
||||
if (p != 0) parent = Inter::get_package(I, p);
|
||||
if (p != 0) parent = Inter::get_package(I, grid[p]);
|
||||
if (res->stored_package == NULL) {
|
||||
res->stored_package = Inter::Packages::new(I, n);
|
||||
}
|
||||
if (cl) Inter::Packages::make_codelike(res->stored_package);
|
||||
if (nid == 0) Inter::Packages::make_rootlike(res->stored_package);
|
||||
if (sc != 0) Inter::Packages::set_scope(res->stored_package, Inter::get_symbols_table(I, sc));
|
||||
if (rl) Inter::Packages::make_rootlike(res->stored_package);
|
||||
if (sc != 0) {
|
||||
if (grid) sc = grid[sc];
|
||||
Inter::Packages::set_scope(res->stored_package, Inter::get_symbols_table(I, sc));
|
||||
}
|
||||
if (nid != 0) {
|
||||
inter_symbol *pack_name = Inter::SymbolsTables::symbol_from_id(parent?(Inter::Packages::scope(parent)):Inter::get_global_symbols(I), nid);
|
||||
if (pack_name)
|
||||
|
@ -278,6 +344,7 @@ that's the end of the list and therefore the block.
|
|||
if (par == NULL) BinaryFiles::write_int32(fh, 0);
|
||||
else BinaryFiles::write_int32(fh, (unsigned int) par->index_n);
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_codelike(P));
|
||||
BinaryFiles::write_int32(fh, (unsigned int) Inter::Packages::is_rootlike(P));
|
||||
BinaryFiles::write_int32(fh, (unsigned int) P->package_scope->n_index);
|
||||
if (P->package_name)
|
||||
BinaryFiles::write_int32(fh, (unsigned int) P->package_name->symbol_ID);
|
||||
|
@ -297,6 +364,7 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
@<Read the symbol equations@> =
|
||||
while (BinaryFiles::read_int32(fh, &X)) {
|
||||
if (X == 0) break;
|
||||
if (grid) X = grid[X];
|
||||
inter_symbols_table *from_T = Inter::get_symbols_table(I, X);
|
||||
if (from_T == NULL) {
|
||||
WRITE_TO(STDERR, "It's %d\n", X);
|
||||
|
@ -309,6 +377,8 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
unsigned int to_ID = 0;
|
||||
if (BinaryFiles::read_int32(fh, &to_T_id) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
if (grid) to_T_id = grid[to_T_id];
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Read eqn %d -> %d\n", X, to_T_id);
|
||||
if (BinaryFiles::read_int32(fh, &to_ID) == FALSE)
|
||||
Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
inter_symbols_table *to_T = Inter::get_symbols_table(I, to_T_id);
|
||||
|
@ -321,9 +391,10 @@ 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;
|
||||
inter_resource_holder *res = &(warehouse->stored_resources[n]);
|
||||
if (res->stored_symbols_table) {
|
||||
inter_symbols_table *from_T = res->stored_symbols_table;
|
||||
|
@ -333,6 +404,7 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
if ((symb) && (symb->equated_to)) {
|
||||
BinaryFiles::write_int32(fh, symb->symbol_ID);
|
||||
BinaryFiles::write_int32(fh, (unsigned int) symb->equated_to->owning_table->n_index);
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Write eqn %d -> %d\n", n, symb->equated_to->owning_table->n_index);
|
||||
BinaryFiles::write_int32(fh, symb->equated_to->symbol_ID);
|
||||
}
|
||||
}
|
||||
|
@ -346,10 +418,17 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
eloc.error_offset = (size_t) ftell(fh) - PREFRAME_SIZE;
|
||||
int extent = (int) X;
|
||||
if ((extent < 2) || ((long int) extent >= max_offset)) Inter::Binary::read_error(&eloc, ftell(fh), I"overlarge line");
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Reading bytecode, extent %d\n", extent);
|
||||
|
||||
inter_package *owner = NULL;
|
||||
unsigned int PID = 0;
|
||||
if (BinaryFiles::read_int32(fh, &PID)) owner = Inter::Packages::from_PID(I, PID);
|
||||
if (BinaryFiles::read_int32(fh, &PID)) {
|
||||
if (grid) PID = grid[PID];
|
||||
if (trace_bin) WRITE_TO(STDOUT, "PID %d\n", PID);
|
||||
owner = Inter::Packages::from_PID(I, PID);
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Owner has ID %d, table %d\n", owner->index_n, owner->package_scope->n_index);
|
||||
|
||||
}
|
||||
inter_frame P = Inter::Warehouse::find_room(warehouse, Inter::get_global_symbols(I), extent-1, &eloc, owner);
|
||||
|
||||
for (int i=0; i<extent-1; i++) {
|
||||
|
@ -361,9 +440,13 @@ enough that the slot exists for the eventual list to be stored in.
|
|||
if (BinaryFiles::read_int32(fh, &comment)) {
|
||||
if (comment != 0) Inter::Frame::attach_comment(P, (inter_t) comment);
|
||||
} else Inter::Binary::read_error(&eloc, ftell(fh), I"bytecode incomplete");
|
||||
|
||||
inter_error_message *E = Inter::Defn::verify_construct(owner, P);
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Verify\n");
|
||||
inter_error_message *E = NULL;
|
||||
if (grid) E = Inter::Defn::transpose_construct(owner, P, grid, grid_extent);
|
||||
if (E) { Inter::Errors::issue(E); exit(1); }
|
||||
E = Inter::Defn::verify_construct(owner, P);
|
||||
if (E) { Inter::Errors::issue(E); exit(1); }
|
||||
if (trace_bin) WRITE_TO(STDOUT, "Done\n");
|
||||
Inter::Frame::insert(P, &at);
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,6 @@ To store bytecode-like intermediate code in memory.
|
|||
|
||||
=
|
||||
typedef struct inter_tree {
|
||||
struct inter_warehouse *warehouse;
|
||||
struct inter_frame root_definition_frame;
|
||||
struct inter_package *root_package;
|
||||
struct inter_package *main_package;
|
||||
|
@ -40,27 +39,19 @@ inter_tree *Inter::create(void) {
|
|||
inter_tree *I = CREATE(inter_tree);
|
||||
I->main_package = NULL;
|
||||
|
||||
I->warehouse = Inter::Warehouse::new();
|
||||
inter_t N = Inter::create_symbols_table(I);
|
||||
I->root_package = Inter::get_package(I, Inter::create_package(I));
|
||||
I->root_definition_frame = Inter::Frame::root_frame(I);
|
||||
inter_warehouse *warehouse = Inter::Warehouse::new();
|
||||
inter_t N = Inter::Warehouse::create_symbols_table(warehouse);
|
||||
inter_symbols_table *globals = Inter::Warehouse::get_symbols_table(warehouse, N);
|
||||
I->root_package = Inter::Warehouse::get_package(warehouse, Inter::Warehouse::create_package(warehouse, I));
|
||||
I->root_definition_frame = Inter::Frame::root_frame(warehouse, globals);
|
||||
Inter::Packages::make_rootlike(I->root_package);
|
||||
Inter::Packages::set_scope(I->root_package, Inter::get_symbols_table(I, N));
|
||||
Inter::Packages::set_scope(I->root_package, globals);
|
||||
Inter::Warehouse::attribute_resource(warehouse, N, I->root_package);
|
||||
return I;
|
||||
}
|
||||
|
||||
inter_warehouse *Inter::warehouse(inter_tree *I) {
|
||||
return I->warehouse;
|
||||
}
|
||||
|
||||
inter_t Inter::create_symbols_table(inter_tree *I) {
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_symbols_table == NULL) {
|
||||
warehouse->stored_resources[n].stored_symbols_table = Inter::SymbolsTables::new();
|
||||
warehouse->stored_resources[n].stored_symbols_table->n_index = (int) n;
|
||||
}
|
||||
return n;
|
||||
return Inter::Frame::warehouse(&(I->root_definition_frame));
|
||||
}
|
||||
|
||||
inter_symbols_table *Inter::get_global_symbols(inter_tree *I) {
|
||||
|
@ -71,39 +62,18 @@ inter_symbols_table *Inter::get_symbols_table(inter_tree *I, inter_t n) {
|
|||
return Inter::Warehouse::get_symbols_table(Inter::warehouse(I), n);
|
||||
}
|
||||
|
||||
inter_t Inter::create_package(inter_tree *I) {
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_package == NULL) {
|
||||
warehouse->stored_resources[n].stored_package = Inter::Packages::new(I, n);
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
inter_package *Inter::get_package(inter_tree *I, inter_t n) {
|
||||
return Inter::Warehouse::get_package(Inter::warehouse(I), n);
|
||||
}
|
||||
|
||||
inter_t Inter::create_text(inter_tree *I) {
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_text_stream == NULL) {
|
||||
warehouse->stored_resources[n].stored_text_stream = Str::new();
|
||||
}
|
||||
return n;
|
||||
return Inter::Warehouse::create_text(Inter::warehouse(I), NULL);
|
||||
}
|
||||
|
||||
text_stream *Inter::get_text(inter_tree *I, inter_t n) {
|
||||
return Inter::Warehouse::get_text(Inter::warehouse(I), n);
|
||||
}
|
||||
|
||||
inter_t Inter::create_ref(inter_tree *I) {
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
warehouse->stored_resources[n].stored_ref = NULL;
|
||||
return n;
|
||||
}
|
||||
|
||||
void *Inter::get_ref(inter_tree *I, inter_t n) {
|
||||
return Inter::Warehouse::get_ref(Inter::warehouse(I), n);
|
||||
}
|
||||
|
@ -124,18 +94,6 @@ inter_frame_list *Inter::new_frame_list(void) {
|
|||
return ifl;
|
||||
}
|
||||
|
||||
inter_t Inter::create_frame_list(inter_tree *I) {
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
warehouse->stored_resources[n].stored_frame_list = CREATE(inter_frame_list);
|
||||
warehouse->stored_resources[n].stored_frame_list->spare_storage = NULL;
|
||||
warehouse->stored_resources[n].stored_frame_list->storage_used = 0;
|
||||
warehouse->stored_resources[n].stored_frame_list->storage_capacity = 0;
|
||||
warehouse->stored_resources[n].stored_frame_list->first_in_ifl = NULL;
|
||||
warehouse->stored_resources[n].stored_frame_list->last_in_ifl = NULL;
|
||||
return n;
|
||||
}
|
||||
|
||||
typedef struct inter_frame_list {
|
||||
int storage_used;
|
||||
int storage_capacity;
|
||||
|
|
|
@ -281,8 +281,8 @@ text_stream *Inter::Symbols::read_annotation_t(inter_symbol *symb, inter_tree *I
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void Inter::Symbols::annotate_t(inter_tree *I, inter_symbol *symb, inter_t annot_ID, text_stream *S) {
|
||||
inter_t n = Inter::create_text(I);
|
||||
void Inter::Symbols::annotate_t(inter_tree *I, inter_package *owner, inter_symbol *symb, inter_t annot_ID, text_stream *S) {
|
||||
inter_t n = Inter::Warehouse::create_text(Inter::warehouse(I), owner);
|
||||
Str::copy(Inter::get_text(I, n), S);
|
||||
inter_annotation IA = Inter::Defn::annotation_from_bytecode(annot_ID, n);
|
||||
Inter::Symbols::annotate(symb, IA);
|
||||
|
|
|
@ -14,7 +14,19 @@ typedef struct inter_warehouse {
|
|||
MEMORY_MANAGEMENT
|
||||
} inter_warehouse;
|
||||
|
||||
@
|
||||
|
||||
@e NO_IRSRC from 0
|
||||
@e STRING_IRSRC
|
||||
@e SYMBOLS_TABLE_IRSRC
|
||||
@e FRAME_LIST_IRSRC
|
||||
@e PACKAGE_IRSRC
|
||||
@e REF_IRSRC
|
||||
|
||||
=
|
||||
typedef struct inter_resource_holder {
|
||||
int irsrc;
|
||||
struct inter_package *owning_package;
|
||||
struct inter_symbols_table *stored_symbols_table;
|
||||
struct inter_frame_list *stored_frame_list;
|
||||
struct inter_package *stored_package;
|
||||
|
@ -117,6 +129,8 @@ inter_t Inter::Warehouse::create_resource(inter_warehouse *warehouse) {
|
|||
warehouse->capacity = new_size;
|
||||
}
|
||||
int n = warehouse->size ++;
|
||||
warehouse->stored_resources[n].irsrc = NO_IRSRC;
|
||||
warehouse->stored_resources[n].owning_package = NULL;
|
||||
warehouse->stored_resources[n].stored_symbols_table = NULL;
|
||||
warehouse->stored_resources[n].stored_ref = NULL;
|
||||
warehouse->stored_resources[n].stored_package = NULL;
|
||||
|
@ -173,25 +187,75 @@ inter_symbols_table *Inter::Warehouse::get_symbols_table(inter_warehouse *wareho
|
|||
return warehouse->stored_resources[n].stored_symbols_table;
|
||||
}
|
||||
|
||||
inter_t Inter::Warehouse::create_symbols_table(inter_warehouse *warehouse) {
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_symbols_table == NULL) {
|
||||
warehouse->stored_resources[n].irsrc = SYMBOLS_TABLE_IRSRC;
|
||||
warehouse->stored_resources[n].stored_symbols_table = Inter::SymbolsTables::new();
|
||||
warehouse->stored_resources[n].stored_symbols_table->n_index = (int) n;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
void Inter::Warehouse::attribute_resource(inter_warehouse *warehouse, inter_t n, inter_package *owner) {
|
||||
if (n >= (inter_t) warehouse->size) internal_error("out of range");
|
||||
warehouse->stored_resources[n].owning_package = owner;
|
||||
}
|
||||
|
||||
text_stream *Inter::Warehouse::get_text(inter_warehouse *warehouse, inter_t n) {
|
||||
if (n >= (inter_t) warehouse->size) return NULL;
|
||||
return warehouse->stored_resources[n].stored_text_stream;
|
||||
}
|
||||
|
||||
inter_t Inter::Warehouse::create_text(inter_warehouse *warehouse, inter_package *owner) {
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_text_stream == NULL) {
|
||||
warehouse->stored_resources[n].irsrc = STRING_IRSRC;
|
||||
warehouse->stored_resources[n].stored_text_stream = Str::new();
|
||||
warehouse->stored_resources[n].owning_package = owner;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
inter_package *Inter::Warehouse::get_package(inter_warehouse *warehouse, inter_t n) {
|
||||
if (n >= (inter_t) warehouse->size) return NULL;
|
||||
if (n == 0) return NULL;
|
||||
return warehouse->stored_resources[n].stored_package;
|
||||
}
|
||||
|
||||
inter_t Inter::Warehouse::create_package(inter_warehouse *warehouse, inter_tree *I) {
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
if (warehouse->stored_resources[n].stored_package == NULL) {
|
||||
warehouse->stored_resources[n].irsrc = PACKAGE_IRSRC;
|
||||
warehouse->stored_resources[n].stored_package = Inter::Packages::new(I, n);
|
||||
warehouse->stored_resources[n].owning_package =
|
||||
warehouse->stored_resources[n].stored_package;
|
||||
}
|
||||
return n;
|
||||
}
|
||||
|
||||
void *Inter::Warehouse::get_ref(inter_warehouse *warehouse, inter_t n) {
|
||||
if (n >= (inter_t) warehouse->size) return NULL;
|
||||
return warehouse->stored_resources[n].stored_ref;
|
||||
}
|
||||
|
||||
inter_t Inter::Warehouse::create_ref(inter_warehouse *warehouse) {
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
warehouse->stored_resources[n].irsrc = REF_IRSRC;
|
||||
warehouse->stored_resources[n].stored_ref = NULL;
|
||||
return n;
|
||||
}
|
||||
|
||||
inter_frame_list *Inter::Warehouse::get_frame_list(inter_warehouse *warehouse, inter_t N) {
|
||||
if (warehouse == NULL) return NULL;
|
||||
int n = (int) N;
|
||||
if (n >= warehouse->size) return NULL;
|
||||
return warehouse->stored_resources[n].stored_frame_list;
|
||||
}
|
||||
|
||||
inter_t Inter::Warehouse::create_frame_list(inter_warehouse *warehouse) {
|
||||
inter_t n = Inter::Warehouse::create_resource(warehouse);
|
||||
warehouse->stored_resources[n].irsrc = FRAME_LIST_IRSRC;
|
||||
warehouse->stored_resources[n].stored_frame_list = Inter::new_frame_list();
|
||||
return n;
|
||||
}
|
||||
|
|
|
@ -71,12 +71,14 @@ inter_symbol *linkage_packagetype = NULL;
|
|||
@
|
||||
|
||||
@e CONSTRUCT_READ_MTID
|
||||
@e CONSTRUCT_TRANSPOSE_MTID
|
||||
@e CONSTRUCT_VERIFY_MTID
|
||||
@e CONSTRUCT_WRITE_MTID
|
||||
@e VERIFY_INTER_CHILDREN_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(CONSTRUCT_READ_MTID, inter_construct *IC, inter_bookmark *, inter_line_parse *, inter_error_location *, inter_error_message **E)
|
||||
VMETHOD_TYPE(CONSTRUCT_TRANSPOSE_MTID, inter_construct *IC, inter_frame P, inter_t *grid, inter_t max, inter_error_message **E)
|
||||
VMETHOD_TYPE(CONSTRUCT_VERIFY_MTID, inter_construct *IC, inter_frame P, inter_package *owner, inter_error_message **E)
|
||||
VMETHOD_TYPE(CONSTRUCT_WRITE_MTID, inter_construct *IC, text_stream *OUT, inter_frame P, inter_error_message **E)
|
||||
VMETHOD_TYPE(VERIFY_INTER_CHILDREN_MTID, inter_construct *IC, inter_frame P, inter_error_message **E)
|
||||
|
@ -163,7 +165,8 @@ inter_annotation Inter::Defn::read_annotation(inter_tree *I, text_stream *keywor
|
|||
TEMPORARY_TEXT(parsed_text);
|
||||
inter_error_message *EP =
|
||||
Inter::Constant::parse_text(parsed_text, keyword, P.index+2, Str::len(keyword)-2, NULL);
|
||||
val = Inter::create_text(I);
|
||||
inter_warehouse *warehouse = Inter::warehouse(I);
|
||||
val = Inter::Warehouse::create_text(warehouse, I->root_package);
|
||||
Str::copy(Inter::get_text(I, val), parsed_text);
|
||||
DISCARD_TEXT(parsed_text);
|
||||
if (EP) *E = EP;
|
||||
|
@ -239,6 +242,14 @@ inter_error_message *Inter::Defn::verify_construct(inter_package *owner, inter_f
|
|||
return E;
|
||||
}
|
||||
|
||||
inter_error_message *Inter::Defn::transpose_construct(inter_package *owner, inter_frame P, inter_t *grid, inter_t max) {
|
||||
inter_construct *IC = NULL;
|
||||
inter_error_message *E = Inter::Defn::get_construct(P, &IC);
|
||||
if (E) return E;
|
||||
VMETHOD_CALL(IC, CONSTRUCT_TRANSPOSE_MTID, P, grid, max, &E);
|
||||
return E;
|
||||
}
|
||||
|
||||
inter_error_message *Inter::Defn::get_construct(inter_frame P, inter_construct **to) {
|
||||
if (Inter::Frame::valid(&P) == FALSE) {
|
||||
return Inter::Frame::error(&P, I"invalid frame", NULL);
|
||||
|
@ -299,7 +310,7 @@ inter_error_message *Inter::Defn::read_construct_text(text_stream *line, inter_e
|
|||
literal = FALSE;
|
||||
if (c == '\\') literal = TRUE;
|
||||
if ((c == '#') && ((P.index == 0) || (Str::get_at(ilp.line, P.index-1) != '#')) && (Str::get_at(ilp.line, P.index+1) != '#') && (quoted == FALSE)) {
|
||||
ilp.terminal_comment = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
ilp.terminal_comment = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
int at = Str::index(P);
|
||||
P = Str::forward(P);
|
||||
while (Str::get(P) == ' ') P = Str::forward(P);
|
||||
|
|
|
@ -40,7 +40,7 @@ void Inter::Append::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pa
|
|||
return;
|
||||
}
|
||||
|
||||
inter_t ID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
*E = Inter::Constant::parse_text(Inter::get_text(Inter::Bookmarks::tree(IBM), ID), ilp->mr.exp[1], 0, Str::len(ilp->mr.exp[1]), eloc);
|
||||
if (*E) return;
|
||||
|
||||
|
|
|
@ -165,7 +165,7 @@ void Inter::Constant::read(inter_construct *IC, inter_bookmark *IBM, inter_line_
|
|||
*E = Inter::Constant::parse_text(parsed_text, S, 1, Str::len(S)-2, eloc);
|
||||
inter_t ID = 0;
|
||||
if (*E == NULL) {
|
||||
ID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
ID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
Str::copy(Inter::get_text(Inter::Bookmarks::tree(IBM), ID), parsed_text);
|
||||
}
|
||||
DISCARD_TEXT(parsed_text);
|
||||
|
|
|
@ -13,6 +13,7 @@ void Inter::Instance::define(void) {
|
|||
L"instance (%i+) (%c+)",
|
||||
I"instance", I"instances");
|
||||
METHOD_ADD(IC, CONSTRUCT_READ_MTID, Inter::Instance::read);
|
||||
METHOD_ADD(IC, CONSTRUCT_TRANSPOSE_MTID, Inter::Instance::transpose);
|
||||
METHOD_ADD(IC, CONSTRUCT_VERIFY_MTID, Inter::Instance::verify);
|
||||
METHOD_ADD(IC, CONSTRUCT_WRITE_MTID, Inter::Instance::write);
|
||||
}
|
||||
|
@ -58,13 +59,23 @@ void Inter::Instance::read(inter_construct *IC, inter_bookmark *IBM, inter_line_
|
|||
}
|
||||
|
||||
inter_error_message *Inter::Instance::new(inter_bookmark *IBM, inter_t SID, inter_t KID, inter_t V1, inter_t V2, inter_t level, inter_error_location *eloc) {
|
||||
inter_frame P = Inter::Frame::fill_6(IBM, INSTANCE_IST, SID, KID, V1, V2, Inter::create_frame_list(Inter::Bookmarks::tree(IBM)), Inter::create_frame_list(Inter::Bookmarks::tree(IBM)), eloc, level);
|
||||
inter_warehouse *warehouse = Inter::Bookmarks::warehouse(IBM);
|
||||
inter_t L1 = Inter::Warehouse::create_frame_list(warehouse);
|
||||
inter_t L2 = Inter::Warehouse::create_frame_list(warehouse);
|
||||
Inter::Warehouse::attribute_resource(warehouse, L1, Inter::Bookmarks::package(IBM));
|
||||
Inter::Warehouse::attribute_resource(warehouse, L2, Inter::Bookmarks::package(IBM));
|
||||
inter_frame P = Inter::Frame::fill_6(IBM, INSTANCE_IST, SID, KID, V1, V2, L1, L2, eloc, level);
|
||||
inter_error_message *E = Inter::Defn::verify_construct(Inter::Bookmarks::package(IBM), P);
|
||||
if (E) return E;
|
||||
Inter::Frame::insert(P, IBM);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Inter::Instance::transpose(inter_construct *IC, inter_frame P, inter_t *grid, inter_t grid_extent, inter_error_message **E) {
|
||||
P.data[PLIST_INST_IFLD] = grid[P.data[PLIST_INST_IFLD]];
|
||||
P.data[PERM_LIST_INST_IFLD] = grid[P.data[PERM_LIST_INST_IFLD]];
|
||||
}
|
||||
|
||||
void Inter::Instance::verify(inter_construct *IC, inter_frame P, inter_package *owner, inter_error_message **E) {
|
||||
if (P.extent != EXTENT_INST_IFR) { *E = Inter::Frame::error(&P, I"extent wrong", NULL); return; }
|
||||
*E = Inter__Verify__defn(owner, P, DEFN_INST_IFLD); if (*E) return;
|
||||
|
|
|
@ -13,6 +13,7 @@ void Inter::Kind::define(void) {
|
|||
L"kind (%i+) (%c+)",
|
||||
I"kind", I"kinds");
|
||||
METHOD_ADD(IC, CONSTRUCT_READ_MTID, Inter::Kind::read);
|
||||
METHOD_ADD(IC, CONSTRUCT_TRANSPOSE_MTID, Inter::Kind::transpose);
|
||||
METHOD_ADD(IC, CONSTRUCT_VERIFY_MTID, Inter::Kind::verify);
|
||||
METHOD_ADD(IC, CONSTRUCT_WRITE_MTID, Inter::Kind::write);
|
||||
}
|
||||
|
@ -159,8 +160,13 @@ void Inter::Kind::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pars
|
|||
|
||||
inter_error_message *Inter::Kind::new(inter_bookmark *IBM, inter_t SID, inter_t TID, inter_t SUP,
|
||||
int constructor, int arity, inter_t *operands, inter_t level, inter_error_location *eloc) {
|
||||
inter_warehouse *warehouse = Inter::Bookmarks::warehouse(IBM);
|
||||
inter_t L1 = Inter::Warehouse::create_frame_list(warehouse);
|
||||
inter_t L2 = Inter::Warehouse::create_frame_list(warehouse);
|
||||
Inter::Warehouse::attribute_resource(warehouse, L1, Inter::Bookmarks::package(IBM));
|
||||
Inter::Warehouse::attribute_resource(warehouse, L2, Inter::Bookmarks::package(IBM));
|
||||
inter_frame P = Inter::Frame::fill_8(IBM,
|
||||
KIND_IST, SID, TID, 0, 0, SUP, Inter::create_frame_list(Inter::Bookmarks::tree(IBM)), Inter::create_frame_list(Inter::Bookmarks::tree(IBM)),
|
||||
KIND_IST, SID, TID, 0, 0, SUP, L1, L2,
|
||||
(inter_t) constructor, eloc, level);
|
||||
if (arity > 0) {
|
||||
if (Inter::Frame::extend(&P, (inter_t) arity) == FALSE)
|
||||
|
@ -172,6 +178,11 @@ inter_error_message *Inter::Kind::new(inter_bookmark *IBM, inter_t SID, inter_t
|
|||
return NULL;
|
||||
}
|
||||
|
||||
void Inter::Kind::transpose(inter_construct *IC, inter_frame P, inter_t *grid, inter_t grid_extent, inter_error_message **E) {
|
||||
P.data[PERM_LIST_KIND_IFLD] = grid[P.data[PERM_LIST_KIND_IFLD]];
|
||||
P.data[PLIST_KIND_IFLD] = grid[P.data[PLIST_KIND_IFLD]];
|
||||
}
|
||||
|
||||
void Inter::Kind::verify(inter_construct *IC, inter_frame P, inter_package *owner, inter_error_message **E) {
|
||||
if (P.extent < MIN_EXTENT_KIND_IFR) { *E = Inter::Frame::error(&P, I"extent wrong", NULL); return; }
|
||||
*E = Inter__Verify__defn(owner, P, DEFN_KIND_IFLD); if (*E) return;
|
||||
|
|
|
@ -51,7 +51,7 @@ void Inter::Link::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pars
|
|||
inter_t SIDS[5];
|
||||
SIDS[0] = stage;
|
||||
for (int i=1; i<=4; i++) {
|
||||
SIDS[i] = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
SIDS[i] = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
*E = Inter::Constant::parse_text(Inter::get_text(Inter::Bookmarks::tree(IBM), SIDS[i]), ilp->mr.exp[i], 0, Str::len(ilp->mr.exp[i]), eloc);
|
||||
if (*E) return;
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ void Inter::Metadata::read(inter_construct *IC, inter_bookmark *IBM, inter_line_
|
|||
*E = Inter::Constant::parse_text(parsed_text, S, 1, Str::len(S)-2, eloc);
|
||||
inter_t ID = 0;
|
||||
if (*E == NULL) {
|
||||
ID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
ID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
Str::copy(Inter::get_text(Inter::Bookmarks::tree(IBM), ID), parsed_text);
|
||||
}
|
||||
DISCARD_TEXT(parsed_text);
|
||||
|
|
|
@ -14,6 +14,7 @@ void Inter::Package::define(void) {
|
|||
I"package", I"packages");
|
||||
IC->usage_permissions = OUTSIDE_OF_PACKAGES + INSIDE_PLAIN_PACKAGE + CAN_HAVE_CHILDREN;
|
||||
METHOD_ADD(IC, CONSTRUCT_READ_MTID, Inter::Package::read);
|
||||
METHOD_ADD(IC, CONSTRUCT_TRANSPOSE_MTID, Inter::Package::transpose);
|
||||
METHOD_ADD(IC, CONSTRUCT_VERIFY_MTID, Inter::Package::verify);
|
||||
METHOD_ADD(IC, CONSTRUCT_WRITE_MTID, Inter::Package::write);
|
||||
METHOD_ADD(IC, VERIFY_INTER_CHILDREN_MTID, Inter::Package::verify_children);
|
||||
|
@ -45,7 +46,7 @@ void Inter::Package::read(inter_construct *IC, inter_bookmark *IBM, inter_line_p
|
|||
}
|
||||
|
||||
inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, inter_symbol *package_name, inter_symbol *ptype_name, inter_t level, inter_error_location *eloc, inter_package **created) {
|
||||
inter_t STID = Inter::create_symbols_table(Inter::Bookmarks::tree(IBM));
|
||||
inter_t STID = Inter::Warehouse::create_symbols_table(Inter::Bookmarks::warehouse(IBM));
|
||||
LOGIF(INTER_SYMBOLS, "Package $3 at IBM $5\n", package_name, IBM);
|
||||
inter_frame P = Inter::Frame::fill_4(IBM,
|
||||
PACKAGE_IST, Inter::SymbolsTables::id_from_IRS_and_symbol(IBM, package_name), Inter::SymbolsTables::id_from_symbol(Inter::Bookmarks::tree(IBM), NULL, ptype_name), STID, 0, eloc, level);
|
||||
|
@ -53,7 +54,7 @@ inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, inter_symb
|
|||
if (E) return E;
|
||||
Inter::Frame::insert(P, IBM);
|
||||
|
||||
inter_t PID = Inter::create_package(Inter::Bookmarks::tree(IBM));
|
||||
inter_t PID = Inter::Warehouse::create_package(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::tree(IBM));
|
||||
inter_package *pack = Inter::Packages::from_PID(Inter::Bookmarks::tree(IBM), PID);
|
||||
Inter::Packages::set_name(pack, package_name);
|
||||
if (ptype_name == code_packagetype) Inter::Packages::make_codelike(pack);
|
||||
|
@ -61,12 +62,18 @@ inter_error_message *Inter::Package::new_package(inter_bookmark *IBM, inter_symb
|
|||
Inter::Packages::make_linklike(pack);
|
||||
Inter::Packages::set_scope(pack, Inter::Package::local_symbols(package_name));
|
||||
P.data[PID_PACKAGE_IFLD] = PID;
|
||||
Inter::Warehouse::attribute_resource(Inter::Bookmarks::warehouse(IBM), STID, pack);
|
||||
|
||||
if (created) *created = pack;
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Inter::Package::transpose(inter_construct *IC, inter_frame P, inter_t *grid, inter_t grid_extent, inter_error_message **E) {
|
||||
P.data[PID_PACKAGE_IFLD] = grid[P.data[PID_PACKAGE_IFLD]];
|
||||
P.data[SYMBOLS_PACKAGE_IFLD] = grid[P.data[SYMBOLS_PACKAGE_IFLD]];
|
||||
}
|
||||
|
||||
void Inter::Package::verify(inter_construct *IC, inter_frame P, inter_package *owner, inter_error_message **E) {
|
||||
*E = Inter__Verify__defn(owner, P, DEFN_PACKAGE_IFLD); if (*E) return;
|
||||
inter_symbols_table *T = Inter::Packages::scope(owner);
|
||||
|
|
|
@ -123,7 +123,7 @@ void Inter::Permission::verify(inter_construct *IC, inter_frame P, inter_package
|
|||
if (prop_X == prop_P) { *E = Inter::Frame::error(&P, I"duplicate permission", prop_name->symbol_name); return; }
|
||||
inter_symbol *owner_X = Inter::SymbolsTables::symbol_from_frame_data(X, OWNER_PERM_IFLD);
|
||||
inter_symbol *owner_P = Inter::SymbolsTables::symbol_from_id(Inter::Packages::scope(owner), P.data[OWNER_PERM_IFLD]);;
|
||||
if (owner_X != owner_P) { *E = Inter::Frame::error(&P, I"kind permission list malformed A", owner_name->symbol_name); return; }
|
||||
if (owner_X != owner_P) { *E = Inter::Frame::error(&P, I"kind permission list malformed", owner_name->symbol_name); return; }
|
||||
}
|
||||
} else {
|
||||
FL = Inter::Frame::ID_to_frame_list(&P, Inter::Instance::permissions_list(owner_name));
|
||||
|
@ -135,7 +135,7 @@ void Inter::Permission::verify(inter_construct *IC, inter_frame P, inter_package
|
|||
if (prop_X == prop_P) { *E = Inter::Frame::error(&P, I"duplicate permission", prop_name->symbol_name); return; }
|
||||
inter_symbol *owner_X = Inter::SymbolsTables::symbol_from_frame_data(X, OWNER_PERM_IFLD);
|
||||
inter_symbol *owner_P = Inter::SymbolsTables::symbol_from_id(Inter::Packages::scope(owner), P.data[OWNER_PERM_IFLD]);;
|
||||
if (owner_X != owner_P) { *E = Inter::Frame::error(&P, I"kind permission list malformed A", owner_name->symbol_name); return; }
|
||||
if (owner_X != owner_P) { *E = Inter::Frame::error(&P, I"instance permission list malformed", owner_name->symbol_name); return; }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ void Inter::Pragma::read(inter_construct *IC, inter_bookmark *IBM, inter_line_pa
|
|||
if (*E) return;
|
||||
|
||||
text_stream *S = ilp->mr.exp[1];
|
||||
inter_t ID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
inter_t ID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
int literal_mode = FALSE;
|
||||
LOOP_THROUGH_TEXT(pos, S) {
|
||||
int c = (int) Str::get(pos);
|
||||
|
|
|
@ -13,6 +13,7 @@ void Inter::Property::define(void) {
|
|||
L"property (%i+) (%i+)",
|
||||
I"property", I"properties");
|
||||
METHOD_ADD(IC, CONSTRUCT_READ_MTID, Inter::Property::read);
|
||||
METHOD_ADD(IC, CONSTRUCT_TRANSPOSE_MTID, Inter::Property::transpose);
|
||||
METHOD_ADD(IC, CONSTRUCT_VERIFY_MTID, Inter::Property::verify);
|
||||
METHOD_ADD(IC, CONSTRUCT_WRITE_MTID, Inter::Property::write);
|
||||
}
|
||||
|
@ -42,13 +43,20 @@ void Inter::Property::read(inter_construct *IC, inter_bookmark *IBM, inter_line_
|
|||
}
|
||||
|
||||
inter_error_message *Inter::Property::new(inter_bookmark *IBM, inter_t PID, inter_t KID, inter_t level, inter_error_location *eloc) {
|
||||
inter_frame P = Inter::Frame::fill_3(IBM, PROPERTY_IST, PID, KID, Inter::create_frame_list(Inter::Bookmarks::tree(IBM)), eloc, level);
|
||||
inter_warehouse *warehouse = Inter::Bookmarks::warehouse(IBM);
|
||||
inter_t L1 = Inter::Warehouse::create_frame_list(warehouse);
|
||||
Inter::Warehouse::attribute_resource(warehouse, L1, Inter::Bookmarks::package(IBM));
|
||||
inter_frame P = Inter::Frame::fill_3(IBM, PROPERTY_IST, PID, KID, L1, eloc, level);
|
||||
inter_error_message *E = Inter::Defn::verify_construct(Inter::Bookmarks::package(IBM), P);
|
||||
if (E) return E;
|
||||
Inter::Frame::insert(P, IBM);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void Inter::Property::transpose(inter_construct *IC, inter_frame P, inter_t *grid, inter_t grid_extent, inter_error_message **E) {
|
||||
P.data[PERM_LIST_PROP_IFLD] = grid[P.data[PERM_LIST_PROP_IFLD]];
|
||||
}
|
||||
|
||||
void Inter::Property::verify(inter_construct *IC, inter_frame P, inter_package *owner, inter_error_message **E) {
|
||||
if (P.extent != EXTENT_PROP_IFR) { *E = Inter::Frame::error(&P, I"extent wrong", NULL); return; }
|
||||
*E = Inter__Verify__defn(owner, P, DEFN_PROP_IFLD); if (*E) return;
|
||||
|
|
|
@ -62,7 +62,7 @@ void Inter::Splat::read(inter_construct *IC, inter_bookmark *IBM, inter_line_par
|
|||
inter_t plm = Inter::Splat::parse_plm(ilp->mr.exp[0]);
|
||||
if (plm == 1000000) { *E = Inter::Errors::plain(I"unknown PLM code before text matter", eloc); return; }
|
||||
|
||||
inter_t SID = Inter::create_text(Inter::Bookmarks::tree(IBM));
|
||||
inter_t SID = Inter::Warehouse::create_text(Inter::Bookmarks::warehouse(IBM), Inter::Bookmarks::package(IBM));
|
||||
text_stream *glob_storage = Inter::get_text(Inter::Bookmarks::tree(IBM), SID);
|
||||
*E = Inter::Constant::parse_text(glob_storage, ilp->mr.exp[1], 0, Str::len(ilp->mr.exp[1]), eloc);
|
||||
if (*E) return;
|
||||
|
|
Loading…
Reference in a new issue