mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
435 lines
82 KiB
HTML
435 lines
82 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>27/hr</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--Weave of '27/hl' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">core</a></li><li><a href="index.html#27">Chapter 27: Bridge to Inter Module</a></li><li><b>Hierarchy Locations</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>§1. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">this_local_submodule</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">this_mundane_package</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">this_exotic_package</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">any_package_of_this_type</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">any_enclosure</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">location_requirement</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">req</span><span class="element">.this_local_submodule</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">req</span><span class="element">.this_exotic_package</span><span class="plain"> = -1;</span>
|
|
<span class="identifier">req</span><span class="element">.any_package_of_this_type</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">req</span><span class="element">.any_enclosure</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="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::local_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.this_local_submodule</span><span class="plain"> = </span><span class="identifier">sid</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::generic_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Packaging::generic_resource</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::synoptic_submodule</span><span class="plain">(</span><span class="reserved">submodule_identity</span><span class="plain"> *</span><span class="identifier">sid</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Packaging::synoptic_resource</span><span class="plain">(</span><span class="identifier">sid</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::any_package_of_type</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.any_package_of_this_type</span><span class="plain"> = </span><span class="functiontext">PackageTypes::get</span><span class="plain">(</span><span class="identifier">ptype_name</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::any_enclosure</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.any_enclosure</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::this_package</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="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.this_mundane_package</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">location_requirement</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::this_exotic_package</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">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="identifier">req</span><span class="element">.this_exotic_package</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="identifier">req</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">named_resource_location</span><span class="plain"> {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">access_number</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">access_name</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">function_package_name</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">datum_package_name</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">requirements</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">equates_to_iname</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">package_type</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">trans</span><span class="plain">;</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">named_resource_location</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::new</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = -1;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans</span><span class="plain"> = </span><span class="functiontext">Translation::same</span><span class="plain">();</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::blank</span><span class="plain">();</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::con</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
|
|
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</span><span class="plain"> = </span><span class="functiontext">PackageTypes::get</span><span class="plain">(</span><span class="identifier">ptype_name</span><span class="plain">);</span>
|
|
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::make_as</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::new</span><span class="plain">();</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="functiontext">HierarchyLocations::this_package</span><span class="plain">(</span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">));</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="identifier">iname</span><span class="plain">;</span>
|
|
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::func</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
|
|
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::datum</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">name_translation</span><span class="plain"> </span><span class="identifier">nt</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">) {</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> = </span><span class="identifier">id</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">nt</span><span class="element">.translate_to</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans</span><span class="plain"> = </span><span class="identifier">nt</span><span class="plain">;</span>
|
|
<span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="constant">MAX_HL</span><span class="plain">];</span>
|
|
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">nrls_indexed_by_name</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">nrls_created</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">HierarchyLocations::create_nrls</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="identifier">nrls_created</span><span class="plain"> = </span><span class="identifier">TRUE</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="constant">MAX_HL</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">nrls_indexed_by_id</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="identifier">nrls_indexed_by_name</span><span class="plain"> = </span><span class="identifier">Dictionaries::new</span><span class="plain">(512, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="functiontext">Hierarchy::establish</span><span class="plain">();</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::index</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain"> >= 0) </span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain">] = </span><span class="identifier">nrl</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">);</span>
|
|
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">nrl</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::find</span><span class="plain">(</span><span class="reserved">int</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">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> < 0) || (</span><span class="identifier">id</span><span class="plain"> >= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl ID"</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::nrl_to_iname</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">]);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::find_by_name</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) == 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl name"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Dictionaries::find</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">))</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::nrl_to_iname</span><span class="plain">(</span>
|
|
<span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *)</span>
|
|
<span class="identifier">Dictionaries::read_value</span><span class="plain">(</span><span class="identifier">nrls_indexed_by_name</span><span class="plain">, </span><span class="identifier">name</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">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::function</span><span class="plain">(</span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">trans</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">Packaging::function</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">R</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">trans</span><span class="plain">) </span><span class="functiontext">Emit::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">trans</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::nrl_to_iname</span><span class="plain">(</span><span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</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">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</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">nrl</span><span class="plain">-</span><span class="element">>requirements.this_exotic_package</span><span class="plain"> >= 0)</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_exotic_package</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"package can't be found'"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain"> == </span><span class="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_in_template</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</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">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function_text</span><span class="plain">(</span>
|
|
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</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">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">) > 0) {</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Packaging::datum_text</span><span class="plain">(</span>
|
|
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>datum_package_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">),</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</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">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) {</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::post_process</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_number</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">);</span>
|
|
<span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain"> = </span><span class="functiontext">InterNames::location</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>equates_to_iname</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::find_in_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</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">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">derive_from</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">imposed_name</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> < 0) || (</span><span class="identifier">id</span><span class="plain"> >= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl ID"</span><span class="plain">);</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">nrls_indexed_by_id</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">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_enclosure</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_enclosure</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain">, </span><span class="identifier">ENCLOSING_IANN</span><span class="plain">) != 1)</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage not in enclosing superpackage"</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">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</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="functiontext">Hierarchy::template</span><span class="plain">()) {</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"AN: %S, FPN: %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">);</span>
|
|
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Have type: $3, required: $3\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain">, </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain">);</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"constant in wrong superpackage"</span><span class="plain">);</span>
|
|
<span class="plain">}</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">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.translate_to</span><span class="plain">) {</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.translate_to</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.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">nrl</span><span class="plain">-</span><span class="element">>trans.by_imposition</span><span class="plain">) {</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.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">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
|
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">temp_iname</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">derive_from</span><span class="plain">) {</span>
|
|
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::derived</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">derive_from</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">temp_iname</span><span class="plain"> = </span><span class="functiontext">InterNames::generated</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.name_generator</span><span class="plain">, </span><span class="identifier">fix</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">EMPTY_WORDING</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">temp_iname</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Make the actual iname</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.then_make_unique</span><span class="plain">) </span><span class="functiontext">Emit::set_flag</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">MAKE_NAME_UNIQUE</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::blank appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::local_submodule is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::generic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::synoptic_submodule is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::any_package_of_type is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>, <a href="27-hr.html#SP1_46">§1.46</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::any_enclosure is used in 27/hr (<a href="27-hr.html#SP1_46">§1.46</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::this_package is used in 27/hr (<a href="27-hr.html#SP1_50">§1.50</a>, <a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::this_exotic_package is used in 27/hr (<a href="27-hr.html#SP1_48">§1.48</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::new appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::con is used in 27/hr (<a href="27-hr.html#SP1_2">§1.2</a>, <a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_10">§1.10</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>, <a href="27-hr.html#SP1_46">§1.46</a>, <a href="27-hr.html#SP1_48">§1.48</a>, <a href="27-hr.html#SP1_50">§1.50</a>, <a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::package is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::make_as is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::func is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_18">§1.18</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_46">§1.46</a>, <a href="27-hr.html#SP1_48">§1.48</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::datum is used in 27/hr (<a href="27-hr.html#SP1_10">§1.10</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::create_nrls is used in <a href="#SP2">§2</a>.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::index appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::find is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::find_by_name is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::function appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::nrl_to_iname appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::find_in_package is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The structure location_requirement is private to this section.</p>
|
|
|
|
<p class="endnote">The structure named_resource_location is private to this section.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP1_1"></a><b>§1.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Make the actual iname</span> <span class="cwebmacronumber">1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">) > 0) {</span>
|
|
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">Packaging::function</span><span class="plain">(</span>
|
|
<span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>function_package_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>trans.by_imposition</span><span class="plain">) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">imposed_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">) == 0) </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::explicitly_named_with_memo</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</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">T</span><span class="plain">) > 0) && (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">)) </span><span class="functiontext">Emit::change_translation</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP1">§1</a> (four times).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::package_in_package</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</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="reserved">if</span><span class="plain"> (</span><span class="identifier">nrls_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_nrls</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">id</span><span class="plain"> < 0) || (</span><span class="identifier">id</span><span class="plain"> >= </span><span class="constant">MAX_HL</span><span class="plain">) || (</span><span class="identifier">nrls_indexed_by_id</span><span class="plain">[</span><span class="identifier">id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad nrl ID"</span><span class="plain">);</span>
|
|
<span class="reserved">named_resource_location</span><span class="plain"> *</span><span class="identifier">nrl</span><span class="plain"> = </span><span class="identifier">nrls_indexed_by_id</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">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no superpackage"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</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">"package_in_package used wrongly"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</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">>eventual_type</span><span class="plain"> != </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain">)</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</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">nrl</span><span class="plain">-</span><span class="element">>requirements.any_enclosure</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain">, </span><span class="identifier">ENCLOSING_IANN</span><span class="plain">) != 1)</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage not in enclosing superpackage"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"NRL accessed inappropriately"</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">InterNames::explicitly_named</span><span class="plain">(</span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>access_name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">), </span><span class="identifier">nrl</span><span class="plain">-</span><span class="element">>package_type</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">hierarchy_attachment_point</span><span class="plain"> {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">counter</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">type</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">requirements</span><span class="plain">;</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">hierarchy_attachment_point</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="constant">MAX_HAP</span><span class="plain">];</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">haps_created</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">HierarchyLocations::create_haps</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="identifier">haps_created</span><span class="plain"> = </span><span class="identifier">TRUE</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="constant">MAX_HAP</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">haps_indexed_by_id</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="reserved">void</span><span class="plain"> </span><span class="functiontext">HierarchyLocations::index_ap</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="functiontext">HierarchyLocations::create_haps</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>hap_id</span><span class="plain"> >= 0) </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>hap_id</span><span class="plain">] = </span><span class="identifier">hap</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::ap</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">ap_id</span><span class="plain">, </span><span class="reserved">location_requirement</span><span class="plain"> </span><span class="identifier">req</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">iterated_text</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ptype_name</span><span class="plain">) {</span>
|
|
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">hierarchy_attachment_point</span><span class="plain">);</span>
|
|
<span class="identifier">hap</span><span class="plain">-</span><span class="element">>hap_id</span><span class="plain"> = </span><span class="identifier">ap_id</span><span class="plain">;</span>
|
|
<span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements</span><span class="plain"> = </span><span class="identifier">req</span><span class="plain">;</span>
|
|
<span class="identifier">hap</span><span class="plain">-</span><span class="element">>counter</span><span class="plain"> = </span><span class="functiontext">Packaging::register_counter</span><span class="plain">(</span><span class="identifier">iterated_text</span><span class="plain">);</span>
|
|
<span class="identifier">hap</span><span class="plain">-</span><span class="element">>type</span><span class="plain"> = </span><span class="functiontext">PackageTypes::get</span><span class="plain">(</span><span class="identifier">ptype_name</span><span class="plain">);</span>
|
|
<span class="functiontext">HierarchyLocations::index_ap</span><span class="plain">(</span><span class="identifier">hap</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">hap</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">package_request</span><span class="plain"> *</span><span class="functiontext">HierarchyLocations::attach_new_package</span><span class="plain">(</span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">hap_id</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">hap_id</span><span class="plain"> < 0) || (</span><span class="identifier">hap_id</span><span class="plain"> >= </span><span class="constant">MAX_HAP</span><span class="plain">) || (</span><span class="identifier">haps_created</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) || (</span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">))</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"invalid HAP request"</span><span class="plain">);</span>
|
|
<span class="reserved">hierarchy_attachment_point</span><span class="plain"> *</span><span class="identifier">hap</span><span class="plain"> = </span><span class="identifier">haps_indexed_by_id</span><span class="plain">[</span><span class="identifier">hap_id</span><span class="plain">];</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.this_local_submodule</span><span class="plain">)</span>
|
|
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Packaging::request_resource</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.this_local_submodule</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">hap</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">)</span>
|
|
<span class="identifier">R</span><span class="plain"> = </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.this_mundane_package</span><span class="plain">;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.this_exotic_package</span><span class="plain"> >= 0)</span>
|
|
<span class="identifier">R</span><span class="plain"> = </span><span class="functiontext">Hierarchy::exotic_package</span><span class="plain">(</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.this_exotic_package</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain"> != </span><span class="functiontext">Hierarchy::template</span><span class="plain">())</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">R</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">R</span><span class="plain">-</span><span class="element">>eventual_type</span><span class="plain"> != </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>requirements.any_package_of_this_type</span><span class="plain">))</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"subpackage in wrong superpackage"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Packaging::request</span><span class="plain">(</span><span class="functiontext">Packaging::supply_iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">, </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>counter</span><span class="plain">), </span><span class="identifier">hap</span><span class="plain">-</span><span class="element">>type</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::package_in_package is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::create_haps appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::index_ap appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::ap is used in 27/hr (<a href="27-hr.html#SP1_4">§1.4</a>, <a href="27-hr.html#SP1_6">§1.6</a>, <a href="27-hr.html#SP1_8">§1.8</a>, <a href="27-hr.html#SP1_12">§1.12</a>, <a href="27-hr.html#SP1_14">§1.14</a>, <a href="27-hr.html#SP1_16">§1.16</a>, <a href="27-hr.html#SP1_20">§1.20</a>, <a href="27-hr.html#SP1_22">§1.22</a>, <a href="27-hr.html#SP1_24">§1.24</a>, <a href="27-hr.html#SP1_26">§1.26</a>, <a href="27-hr.html#SP1_28">§1.28</a>, <a href="27-hr.html#SP1_30">§1.30</a>, <a href="27-hr.html#SP1_32">§1.32</a>, <a href="27-hr.html#SP1_34">§1.34</a>, <a href="27-hr.html#SP1_36">§1.36</a>, <a href="27-hr.html#SP1_38">§1.38</a>, <a href="27-hr.html#SP1_40">§1.40</a>, <a href="27-hr.html#SP1_42">§1.42</a>, <a href="27-hr.html#SP1_44">§1.44</a>, <a href="27-hr.html#SP1_46">§1.46</a>).</p>
|
|
|
|
<p class="endnote">The function HierarchyLocations::attach_new_package is used in 27/hr (<a href="27-hr.html#SP5">§5</a>).</p>
|
|
|
|
<p class="endnote">The structure hierarchy_attachment_point is accessed in 8/ed and here.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="27-hr.html">Back to 'Hierarchy'</a></li><li><a href="27-tr.html">Continue with 'Translation'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|