-inter_package *InterBookmark::package(inter_bookmark *IBM) {
+inter_package *InterBookmark::package(inter_bookmark *IBM) {if (IBM == NULL) returnNULL;inter_package *pack = IBM->R->package;if ((IBM->placement_wrt_R == AS_FIRST_CHILD_OF_NODEPLACEMENT) ||
diff --git a/docs/bytecode-module/2-in.html b/docs/bytecode-module/2-in.html
index 7adb080ce..a2eb7017a 100644
--- a/docs/bytecode-module/2-in.html
+++ b/docs/bytecode-module/2-in.html
@@ -216,7 +216,7 @@ call those creator functions, not these.
returnP;}
-inter_tree_node *Inode::new_with_3_data_fields(inter_bookmark *IBM, intS,
+inter_tree_node *Inode::new_with_3_data_fields(inter_bookmark *IBM, intS,inter_tiV1, inter_tiV2, inter_tiV3, inter_error_location *eloc, inter_tilevel) {inter_tree *I = InterBookmark::tree(IBM);inter_tree_node *P = Inode::new_node(InterTree::warehouse(I), I, 5,
diff --git a/docs/bytecode-module/2-np.html b/docs/bytecode-module/2-np.html
index f68b27bec..27c59bab0 100644
--- a/docs/bytecode-module/2-np.html
+++ b/docs/bytecode-module/2-np.html
@@ -307,7 +307,7 @@ way to reach as low as that from
-voidNodePlacement::move_to_moving_bookmark(inter_tree_node *C, inter_bookmark *IBM) {
+voidNodePlacement::move_to_moving_bookmark(inter_tree_node *C, inter_bookmark *IBM) {if (C == NULL) internal_error("no node to insert");if (IBM == NULL) internal_error("nowhere to insert");NodePlacement::move_to(C, NodePlacement::to_position(C, InterBookmark::snapshot(IBM)));
diff --git a/docs/bytecode-module/2-st.html b/docs/bytecode-module/2-st.html
index d10eba957..2665d7df5 100644
--- a/docs/bytecode-module/2-st.html
+++ b/docs/bytecode-module/2-st.html
@@ -387,7 +387,7 @@ to access this: one following equations, the other not.
-inter_symbol *InterSymbolsTable::symbol_from_ID_at_node(inter_tree_node *P, intx) {
+inter_symbol *InterSymbolsTable::symbol_from_ID_at_node(inter_tree_node *P, intx) {returnInterSymbolsTable::symbol_from_ID(InterPackage::scope_of(P), P->W.instruction[x]);}
@@ -566,7 +566,7 @@ them on a package-by-package basis, so it is an error to call this function if
-inter_tiInterSymbolsTable::id_at_bookmark(inter_bookmark *IBM,
+inter_tiInterSymbolsTable::id_at_bookmark(inter_bookmark *IBM,inter_symbol *S) {returnInterSymbolsTable::id_from_symbol(InterBookmark::tree(IBM),InterBookmark::package(IBM), S);
diff --git a/docs/bytecode-module/2-sym.html b/docs/bytecode-module/2-sym.html
index 5141ff210..95e46142e 100644
--- a/docs/bytecode-module/2-sym.html
+++ b/docs/bytecode-module/2-sym.html
@@ -466,7 +466,7 @@ in the current package. So:
§19. Identifier name.
-text_stream *InterSymbol::identifier(inter_symbol *S) {
+text_stream *InterSymbol::identifier(inter_symbol *S) {if (S == NULL) returnNULL;returnS->identifier;}
diff --git a/docs/bytecode-module/3-ic.html b/docs/bytecode-module/3-ic.html
index b415fb75a..59562422a 100644
--- a/docs/bytecode-module/3-ic.html
+++ b/docs/bytecode-module/3-ic.html
@@ -98,7 +98,7 @@ function togglePopup(material_id) {
CLASS_DEFINITION} inter_construct;
-inter_construct *InterInstruction::create_construct(inter_tiID, text_stream *name) {
+inter_construct *InterInstruction::create_construct(inter_tiID, text_stream *name) {inter_construct *IC = CREATE(inter_construct);IC->construct_ID = ID;IC->construct_name = Str::duplicate(name);
@@ -151,7 +151,7 @@ Those must be explicitly granted when a new construct is created.
defineCAN_HAVE_ANNOTATIONS_ICUP16
-voidInterInstruction::permit(inter_construct *IC, intusage) {
+voidInterInstruction::permit(inter_construct *IC, intusage) {IC->usage_permissions |= usage;}
@@ -167,7 +167,7 @@ number of words of bytecode it occupies:
-voidInterInstruction::fix_instruction_length_between(inter_construct *IC, intl1, intl2) {
+voidInterInstruction::fix_instruction_length_between(inter_construct *IC, intl1, intl2) {IC->min_extent = l1;IC->max_extent = l2;}
@@ -314,7 +314,7 @@ but give it no syntax. If so, it will be inexpressible in textual Inter code.
defineMAX_RECOGNITION_REGEXP_LENGTH64
-voidInterInstruction::specify_syntax(inter_construct *IC, text_stream *syntax) {
+voidInterInstruction::specify_syntax(inter_construct *IC, text_stream *syntax) {IC->syntax = syntax;TEMPORARY_TEXT(regexp)for (inti = 0; i < Str::len(syntax); i++) {
@@ -381,7 +381,6 @@ bump of The Inter Version.
The structure inter_line_parse is accessed in 3/ic, 4/tac, 4/tcc, 4/tcc2, 4/tdc, 4/tic, 4/tic2, 4/tpc, 4/tpc2, 4/tpc3, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 4/ttc, 4/tvc, 5/tac, 5/tcc, 5/tcc2, 5/tec, 5/tic, 5/tlc, 5/tlc2, 5/tlc3, 5/trc, 5/trc2, 5/tsc, 5/tvc, 6/tpc, 6/tsc, 6/tvc and here.
+
The structure inter_line_parse is accessed in 3/ic, 4/tac, 4/tcc, 4/tcc2, 4/tic, 4/tic2, 4/tpc, 4/tpc2, 4/tpc3, 4/tpc4, 4/tpc5, 4/tpc6, 4/tpc7, 4/ttc, 4/tvc, 5/tac, 5/tcc, 5/tcc2, 5/tec, 5/tic, 5/tlc, 5/tlc2, 5/tlc3, 5/trc, 5/trc2, 5/tsc, 5/tvc, 6/tpc, 6/tsc, 6/tvc and here.
§3.1. We are a bit aggressive in requiring the Python-style indentation at the start
of each line to be made of tabs, not spaces. If we intended textual Inter to be
a programming language for humans to use, we might be more accommodating. But it's
@@ -265,7 +265,7 @@ enables us to tell if it's, e.g., a variable, defined by <
-inter_pairInterValuePairs::get(inter_tree_node *P, intfield) {
+inter_pairInterValuePairs::get(inter_tree_node *P, intfield) {inter_pairpair;pair.data_format = P->W.instruction[field];pair.data_content = P->W.instruction[field+1];
@@ -478,10 +478,10 @@ For that purpose only, the following functions may be used:
diff --git a/docs/bytecode-module/3-vi.html b/docs/bytecode-module/3-vi.html
index c5bfc2947..16b1ebfa0 100644
--- a/docs/bytecode-module/3-vi.html
+++ b/docs/bytecode-module/3-vi.html
@@ -88,7 +88,7 @@ and this is why the code to create instructions automatically calls us.)
-inter_error_message *VerifyingInter::instruction(inter_package *owner, inter_tree_node *P) {
+inter_error_message *VerifyingInter::instruction(inter_package *owner, inter_tree_node *P) {if (Inode::get_vflag(P) == FALSE) {Inode::set_vflag(P);inter_construct *IC = NULL;
@@ -209,7 +209,7 @@ the program has not yet been loaded); but it cannot be the wrong sort of thing.
-inter_error_message *VerifyingInter::SID_field(inter_package *owner, inter_tree_node *P,
+inter_error_message *VerifyingInter::SID_field(inter_package *owner, inter_tree_node *P,intfield, inter_ticonstruct) {returnVerifyingInter::SID(owner, P, P->W.instruction[field], construct);}
diff --git a/docs/bytecode-module/4-tac.html b/docs/bytecode-module/4-tac.html
index 858dc8098..2c9480fdd 100644
--- a/docs/bytecode-module/4-tac.html
+++ b/docs/bytecode-module/4-tac.html
@@ -159,7 +159,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/4-tcc.html b/docs/bytecode-module/4-tcc.html
index 24140bbff..0e27a39b7 100644
--- a/docs/bytecode-module/4-tcc.html
+++ b/docs/bytecode-module/4-tcc.html
@@ -147,7 +147,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/4-tcc2.html b/docs/bytecode-module/4-tcc2.html
index 0bc4f6eb4..4a77217fe 100644
--- a/docs/bytecode-module/4-tcc2.html
+++ b/docs/bytecode-module/4-tcc2.html
@@ -555,7 +555,7 @@ not be relied on.
}
diff --git a/docs/bytecode-module/4-tdc.html b/docs/bytecode-module/4-tdc.html
deleted file mode 100644
index b5e2078cb..000000000
--- a/docs/bytecode-module/4-tdc.html
+++ /dev/null
@@ -1,159 +0,0 @@
-
-
-
- The DefaultValue Construct
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
§3. Verification consists only of sanity checks. Note that the TYPE_DEF_IFLD
-field must contain a valid symbol ID — of a typename — and cannot be a more
-general TID. So you cannot have an instruction setting the default value of,
-say, int32.
-
-
-
-
-
-
-
diff --git a/docs/bytecode-module/4-tic.html b/docs/bytecode-module/4-tic.html
index 59ef32edc..685733108 100644
--- a/docs/bytecode-module/4-tic.html
+++ b/docs/bytecode-module/4-tic.html
@@ -157,7 +157,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/4-tic2.html b/docs/bytecode-module/4-tic2.html
index 468ef08c6..bc23830bc 100644
--- a/docs/bytecode-module/4-tic2.html
+++ b/docs/bytecode-module/4-tic2.html
@@ -256,7 +256,7 @@ the typename_s that it has a new instance.
}
diff --git a/docs/bytecode-module/4-tnc.html b/docs/bytecode-module/4-tnc.html
index d6181f182..a0f399da0 100644
--- a/docs/bytecode-module/4-tnc.html
+++ b/docs/bytecode-module/4-tnc.html
@@ -114,7 +114,7 @@ all the same, purely so that a stack backtrace will show it.
}
diff --git a/docs/bytecode-module/4-tpc.html b/docs/bytecode-module/4-tpc.html
index 0818301a6..521a52577 100644
--- a/docs/bytecode-module/4-tpc.html
+++ b/docs/bytecode-module/4-tpc.html
@@ -338,7 +338,7 @@ are needed. (There's no other reason.)
}
diff --git a/docs/bytecode-module/4-tpc2.html b/docs/bytecode-module/4-tpc2.html
index f2710e338..035f44a89 100644
--- a/docs/bytecode-module/4-tpc2.html
+++ b/docs/bytecode-module/4-tpc2.html
@@ -128,7 +128,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/4-tpc3.html b/docs/bytecode-module/4-tpc3.html
index 112eb92c5..1de47778e 100644
--- a/docs/bytecode-module/4-tpc3.html
+++ b/docs/bytecode-module/4-tpc3.html
@@ -256,7 +256,7 @@ messages if we report early.
}
diff --git a/docs/bytecode-module/4-tpc4.html b/docs/bytecode-module/4-tpc4.html
index de45b2e68..be9624ea5 100644
--- a/docs/bytecode-module/4-tpc4.html
+++ b/docs/bytecode-module/4-tpc4.html
@@ -168,7 +168,7 @@ whereas the content is parsed as a double-quoted literal.
}
diff --git a/docs/bytecode-module/4-tpc5.html b/docs/bytecode-module/4-tpc5.html
index 468000c96..e2873d4ff 100644
--- a/docs/bytecode-module/4-tpc5.html
+++ b/docs/bytecode-module/4-tpc5.html
@@ -272,7 +272,7 @@ a primitive ins
}
diff --git a/docs/bytecode-module/4-tpc6.html b/docs/bytecode-module/4-tpc6.html
index 4131f7590..a73ec0fb3 100644
--- a/docs/bytecode-module/4-tpc6.html
+++ b/docs/bytecode-module/4-tpc6.html
@@ -183,7 +183,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/4-tpc7.html b/docs/bytecode-module/4-tpc7.html
index e27f3ed4d..61f975557 100644
--- a/docs/bytecode-module/4-tpc7.html
+++ b/docs/bytecode-module/4-tpc7.html
@@ -259,7 +259,7 @@ value to the list of properties of the owner.
}
diff --git a/docs/bytecode-module/4-ttc.html b/docs/bytecode-module/4-ttc.html
index 9074dac0f..98f6f5700 100644
--- a/docs/bytecode-module/4-ttc.html
+++ b/docs/bytecode-module/4-ttc.html
@@ -349,7 +349,7 @@ length is flexible: there can be any number of operands from 0 upwards.
}
diff --git a/docs/bytecode-module/4-tvc.html b/docs/bytecode-module/4-tvc.html
index f0368512f..265b16155 100644
--- a/docs/bytecode-module/4-tvc.html
+++ b/docs/bytecode-module/4-tvc.html
@@ -191,7 +191,7 @@ compulsory words — see Inter Nodes}
diff --git a/docs/bytecode-module/P-wtmd.html b/docs/bytecode-module/P-wtmd.html
index 067664e75..ac16d766c 100644
--- a/docs/bytecode-module/P-wtmd.html
+++ b/docs/bytecode-module/P-wtmd.html
@@ -207,13 +207,13 @@ recorded in its inter_symbols_table
§1. Data packages. To recap: a file of textual inter has a brief global section at the top, and
is then a hierarchiy of package definitions. Each package begins with a
@@ -227,18 +227,7 @@ oddball expressions in the template code which the code generator can't
but otherwise makes no use of them.
-
§4. Kinds have "default values": if some piece of storage has to hold a value
-of kind K, but that value is not specified, then the default is used.
-For example, the default int32 is zero.
-
-
-
This can be controlled using defaultvalue KIND = VALUE. For example,
-
-
-
-defaultvalueK_boolean = 0
-
-
§5. Enumerations and instances. As noted above, some kinds marked as enum are enumerated. This means
+
§4. Enumerations and instances. As noted above, some kinds marked as enum are enumerated. This means
that they can have only a finite number of possible values, each of which
is represented in textual inter by a different name.
@@ -274,7 +263,7 @@ automatically also an instance of §6. Properties of instances. A "property" is a named value attached to all instances of a given kind,
+
§5. Properties of instances. A "property" is a named value attached to all instances of a given kind,
and must be created before use with:
@@ -318,7 +307,7 @@ another value (of the same kind).
instanceI_ballK_objectpropertyvalueP_printed_nameI_ball = "beach ball"
-
§7. Constants. A constant definition assigns a name to a given value: where that name is
+
§6. Constants. A constant definition assigns a name to a given value: where that name is
used, it evaluates to this value. The syntax is:
@@ -352,7 +341,7 @@ does not make them instances. For example,
the existing C_green.
-
§8. If a constant needs to refer to a function, we seem to run into the limitation
+
§7. If a constant needs to refer to a function, we seem to run into the limitation
that there's no notation for literal functions. In fact there is, though:
that's what code packages are. For example,
@@ -369,7 +358,7 @@ package names are not values; but §9. Global variables. Variables are like properties, except that each exists only as a single
+
§8. Global variables. Variables are like properties, except that each exists only as a single
value, not attached to any instance in particular: it makes no sense to ask
who the owner is. Variables must be declared as:
@@ -383,7 +372,7 @@ who the owner is. Variables must be declared as:
variable V_score K_number = 10
-
§10. Metadata. This provides important semantic markup, even though it has no direct effect on
+
§9. Metadata. This provides important semantic markup, even though it has no direct effect on
the code generated. Metadata is specified by constant definitions, but
where the symbol name begins with the magic character ^. For example:
@@ -395,7 +384,7 @@ where the symbol name begins with the magic character
-
§11. Append and Insert. Two rather ugly constructs are currently needed in order to implement very
+
§10. Append and Insert. Two rather ugly constructs are currently needed in order to implement very
low-level features of Inform 7, at points in I7's design where the normally
subterranean presence of Inform 6 pokes up above the surface:
@@ -421,7 +410,7 @@ For example, the I7 source text:
§12. Nop. The "nop" statement has no textual representation. It does nothing, and exists
+
§11. Nop. The "nop" statement has no textual representation. It does nothing, and exists
only as a convenience used by Inform when it needs to write simultaneously to
multiple positions within the same node's child list — the idea being that
a nop statement acts as a divider. For example, by placing the A write
diff --git a/docs/runtime-module/2-cu.html b/docs/runtime-module/2-cu.html
index 880ebde57..89cfd74b2 100644
--- a/docs/runtime-module/2-cu.html
+++ b/docs/runtime-module/2-cu.html
@@ -173,7 +173,7 @@ and author; together with any "extra credit" asked for by the extension.
Hierarchy::apply_metadata(M->where_found, EXT_VERSION_MD_HL, V);DISCARD_TEXT(V)id_iname = Hierarchy::make_iname_in(EXTENSION_ID_HL, M->where_found);
-Emit::numeric_constant(id_iname, 0);
+Emit::numeric_constant(id_iname, 0);TEMPORARY_TEXT(C)WRITE_TO(C, "%S", ext->as_copy->edition->work->raw_title);if (VersionNumbers::is_null(N) == FALSE) WRITE_TO(C, " version %v", &N);
diff --git a/docs/runtime-module/2-dv.html b/docs/runtime-module/2-dv.html
index 42766ad38..9707a9c94 100644
--- a/docs/runtime-module/2-dv.html
+++ b/docs/runtime-module/2-dv.html
@@ -213,7 +213,7 @@ for example, the default value of
-inter_pairDefaultValues::to_value_pair(kind *K) {
+inter_pairDefaultValues::to_value_pair(kind *K) {if (K == NULL) returnInterValuePairs::undef();Constructed kinds stored as block values2.1;Base kinds stored as block values2.2;
diff --git a/docs/runtime-module/2-emt.html b/docs/runtime-module/2-emt.html
index 23ea09ca3..806f8536d 100644
--- a/docs/runtime-module/2-emt.html
+++ b/docs/runtime-module/2-emt.html
@@ -73,7 +73,7 @@ function togglePopup(material_id) {
"Emitting" is the process of generating Inter bytecode, and this section provides a comprehensive API for the runtime and imperative modules to do that.
§1. The emission tree. The bytecode module can maintain multiple independent trees of Inter code
in memory, so that most calls to bytecode or building take an inter_tree
@@ -93,7 +93,7 @@ creates the main
LargeScale::begin_new_tree(main_emission_tree);returnmain_emission_tree;}
-inter_tree *Emit::tree(void) {
+inter_tree *Emit::tree(void) {returnmain_emission_tree;}
@@ -105,11 +105,11 @@ creates the mainreturnInterTree::warehouse(Emit::tree());}
-inter_bookmark *Emit::at(void) {
+inter_bookmark *Emit::at(void) {returnPackaging::at(Emit::tree());}
-inter_tiEmit::baseline(void) {
+inter_tiEmit::baseline(void) {returnProduce::baseline(Emit::at());}
@@ -143,7 +143,7 @@ what package it belongs to, the "context" referred to below:
-inter_pairEmit::symbol_to_value_pair(inter_symbol *S) {
+inter_pairEmit::symbol_to_value_pair(inter_symbol *S) {returnEmit::stvp_inner(S, InterBookmark::package(Emit::at()));}
@@ -151,7 +151,7 @@ what package it belongs to, the "context" referred to below:
returnEmit::stvp_inner(InterNames::to_symbol(iname), InterBookmark::package(Emit::at()));}
-inter_pairEmit::to_value_pair_in_context(inter_name *context, inter_name *iname) {
+inter_pairEmit::to_value_pair_in_context(inter_name *context, inter_name *iname) {inter_package *pack = Packaging::incarnate(InterNames::location(context));inter_symbol *S = InterNames::to_symbol(iname);returnEmit::stvp_inner(S, pack);
@@ -189,67 +189,42 @@ the other three arguments are for kind constructors.
Packaging::exit(Emit::tree(), save);}
-
§5. Default values for kinds are emitted thus. This is inefficient and maybe ought
-to be replaced by a hash, but the list is short and the function is called
-so little that it probably makes little difference.
-
§6. Pragmas. The Inter language allows pragmas, or code-generation hints, to be passed
+
§5. Pragmas. The Inter language allows pragmas, or code-generation hints, to be passed
through. These are specific to the target of compilation, and can be ignored
by all other targets. Here we generate only I6-target pragmas, which are commands
in I6's "Inform Control Language".
§7. Constants. These functions make it easy to define a named value in Inter. If the value is
+
§6. Constants. These functions make it easy to define a named value in Inter. If the value is
an unsigned numeric constant, use one of these two functions — the first if
it represents an actual number at run-time, the second if not:
-voidEmit::text_constant(inter_name *con_iname, text_stream *contents) {
+voidEmit::text_constant(inter_name *con_iname, text_stream *contents) {packaging_statesave = Packaging::enter_home_of(con_iname);inter_symbol *con_s = InterNames::to_symbol(con_iname);Produce::guard(ConstantInstruction::new(Emit::at(), con_s,
@@ -277,11 +252,11 @@ it represents an actual number at run-time, the second if not:
Packaging::exit(Emit::tree(), save);}
-
§9. And equating one constant to another named constant:
+
§8. And equating one constant to another named constant:
-inter_name *Emit::iname_constant(inter_name *con_iname, kind *K, inter_name *val_iname) {
+inter_name *Emit::iname_constant(inter_name *con_iname, kind *K, inter_name *val_iname) {packaging_statesave = Packaging::enter_home_of(con_iname);inter_symbol *con_s = InterNames::to_symbol(con_iname);inter_symbol *val_s = (val_iname)?InterNames::to_symbol(val_iname):NULL;
@@ -298,48 +273,48 @@ it represents an actual number at run-time, the second if not:
returncon_iname;}
-
§10. These two variants are needed only for the oddball way Bibliographic Data
+
§9. These two variants are needed only for the oddball way Bibliographic Data
is compiled.
-voidEmit::named_generic_constant(inter_name *con_iname, inter_pairval) {
+voidEmit::named_generic_constant(inter_name *con_iname, inter_pairval) {packaging_statesave = Packaging::enter_home_of(con_iname);inter_symbol *con_s = InterNames::to_symbol(con_iname);Produce::guard(ConstantInstruction::new(Emit::at(), con_s,
@@ -347,10 +322,10 @@ of a "variable" and define it as a constant:
Packaging::exit(Emit::tree(), save);}
-
§13. Instances.
+
§12. Instances.
-voidEmit::instance(inter_name *inst_iname, kind *K, intv) {
+voidEmit::instance(inter_name *inst_iname, kind *K, intv) {packaging_statesave = Packaging::enter_home_of(inst_iname);inter_symbol *inst_s = InterNames::to_symbol(inst_iname);inter_pairval = v ? InterValuePairs::number((inter_ti) v) : InterValuePairs::undef();
@@ -359,10 +334,10 @@ of a "variable" and define it as a constant:
Packaging::exit(Emit::tree(), save);}
-
§14. Variables.
+
§13. Variables.
-inter_symbol *Emit::variable(inter_name *var_iname, kind *K, inter_pairval) {
+inter_symbol *Emit::variable(inter_name *var_iname, kind *K, inter_pairval) {packaging_statesave = Packaging::enter_home_of(var_iname);inter_symbol *var_s = InterNames::to_symbol(var_iname);inter_typetype = InterTypes::unchecked();
@@ -374,10 +349,10 @@ of a "variable" and define it as a constant:
returnvar_s;}
-
§15. Properties and permissions.
+
§14. Properties and permissions.
-voidEmit::property(inter_name *prop_iname, kind *K) {
+voidEmit::property(inter_name *prop_iname, kind *K) {packaging_statesave = Packaging::enter_home_of(prop_iname);inter_symbol *prop_s = InterNames::to_symbol(prop_iname);inter_typetype = InterTypes::unchecked();
@@ -387,7 +362,7 @@ of a "variable" and define it as a constant:
Packaging::exit(Emit::tree(), save);}
-voidEmit::permission(property *prn, inter_symbol *owner_s, inter_name *storage_iname) {
+voidEmit::permission(property *prn, inter_symbol *owner_s, inter_name *storage_iname) {inter_name *prop_iname = RTProperties::iname(prn);inter_symbol *store_s = (storage_iname)?InterNames::to_symbol(storage_iname):NULL;inter_symbol *prop_s = InterNames::to_symbol(prop_iname);
@@ -395,17 +370,17 @@ of a "variable" and define it as a constant:
Emit::baseline(), NULL));}
§17. Private, keep out. The following should be called only by Functions (in imperative), which provides
+
§16. Private, keep out. The following should be called only by Functions (in imperative), which provides
the real API for starting and ending functions.
@@ -418,7 +393,7 @@ the real API for starting and ending functions.
Emit::baseline(), NULL));}
-
§18. Interventions. These should be used as little as possible, and perhaps it may one day be possible
+
§17. Interventions. These should be used as little as possible, and perhaps it may one day be possible
to abolish them altogether. They insert direct kit material (i.e. paraphrased Inter
code written out as plain text in Inform 6 notation) into bytecode; this is then
assimilating during linking. Note that only the raw i6 is actually carried over
@@ -427,16 +402,16 @@ about where to include the code is ignored.
§8.5. The "perform" function for an action, typically called something like TakeSub,
diff --git a/docs/runtime-module/5-chr.html b/docs/runtime-module/5-chr.html
index b3b92668f..2d62986ba 100644
--- a/docs/runtime-module/5-chr.html
+++ b/docs/runtime-module/5-chr.html
@@ -198,7 +198,7 @@ past state to be maintained.
ptc->ptc_package = PR;ptc->ptc_iname = NULL;id_iname = Hierarchy::make_iname_in(PTC_ID_HL, ptc->ptc_package);
-Emit::numeric_constant(id_iname, 0); a placeholder: made unique in linking
+Emit::numeric_constant(id_iname, 0); a placeholder: made unique in linkingtext_stream *desc = Str::new();WRITE_TO(desc, "past tense condition %d", ptc->allocation_id);Sequence::queue(&Chronology::ptc_agent,
@@ -254,7 +254,7 @@ then, that past state is available, and can be accessed with a simple function c
}Functions::end(save);inter_name *md_iname = Hierarchy::make_iname_in(PTC_VALUE_MD_HL, ptc->ptc_package);
-Emit::iname_constant(md_iname, K_value, ptc->ptc_iname);
+Emit::iname_constant(md_iname, K_value, ptc->ptc_iname);}
§4.1. Compile code to set the new state of the condition, as measured in the present4.1 =
@@ -379,7 +379,7 @@ taken something" would be a past tense condition: see above.)
Sequence::queue(&Chronology::ahcr_agent,STORE_POINTER_action_history_condition_record(ahcr), desc);id_iname = Hierarchy::make_iname_in(AHC_ID_HL, ahcr->ahcr_package);
-Emit::numeric_constant(id_iname, 0); a placeholder: made unique in linking
+Emit::numeric_constant(id_iname, 0); a placeholder: made unique in linking
§7.2. The test compiled here relies entirely on a slew of arrays being correctly
@@ -533,7 +533,7 @@ the pattern, and otherwise false.
Functions::end(save);inter_name *md_iname = Hierarchy::make_iname_in(AHC_VALUE_MD_HL, ahcr->ahcr_package);
-Emit::iname_constant(md_iname, K_value, ahcr->ahcr_iname);
+Emit::iname_constant(md_iname, K_value, ahcr->ahcr_iname);}
§7. Thus the following routine must return NULL if \(K\) is a kind whose weak
@@ -457,11 +457,11 @@ recursively scanned through for us, so that if we have seen a construction
inter_name *md_iname = Hierarchy::make_iname_in(DK_NEEDED_MD_HL,rks->rks_package);if (rks->make_default) {
-Emit::numeric_constant(md_iname, (inter_ti) 1);
+Emit::numeric_constant(md_iname, (inter_ti) 1); } else {
-Emit::numeric_constant(md_iname, (inter_ti) 0);
+Emit::numeric_constant(md_iname, (inter_ti) 0); }
-Emit::iname_constant(Hierarchy::make_iname_in(DK_STRONG_ID_HL,
+Emit::iname_constant(Hierarchy::make_iname_in(DK_STRONG_ID_HL,rks->rks_package), K_value, rks->rks_iname); }
diff --git a/docs/runtime-module/5-prp.html b/docs/runtime-module/5-prp.html
index 2d7ecee67..3dd926222 100644
--- a/docs/runtime-module/5-prp.html
+++ b/docs/runtime-module/5-prp.html
@@ -126,7 +126,7 @@ package already supplied:
returnprn->compilation_data.prop_package;}
-inter_name *RTProperties::iname(property *prn) {
+inter_name *RTProperties::iname(property *prn) {if (prn == NULL) internal_error("tried to find iname for null property");if ((Properties::is_either_or(prn)) && (prn->compilation_data.store_in_negation))returnRTProperties::iname(EitherOrProperties::get_negation(prn));
@@ -259,8 +259,6 @@ kit, we'll have to use that one.
(prn->compilation_data.store_in_negation)) continue;kind *K = Properties::kind_of_contents(prn);if (K == NULL) internal_error("kindless property");
-Emit::ensure_defaultvalue(K);
-
package_request *pack = RTProperties::package(prn);inter_name *iname = RTProperties::iname(prn);Declare the property to Inter7.1;
@@ -274,7 +272,7 @@ kit, we'll have to use that one.
§7.4. These provide hints to the code-generator, but should possibly be done as
diff --git a/docs/runtime-module/5-rlb.html b/docs/runtime-module/5-rlb.html
index 40cd1386f..8576e6d7c 100644
--- a/docs/runtime-module/5-rlb.html
+++ b/docs/runtime-module/5-rlb.html
@@ -317,7 +317,7 @@ rulebook:
diff --git a/docs/runtime-module/5-si.html b/docs/runtime-module/5-si.html
index 317d2f1c0..5d5f0d9f1 100644
--- a/docs/runtime-module/5-si.html
+++ b/docs/runtime-module/5-si.html
@@ -175,7 +175,7 @@ occurs, and (b) act upon it.
EmitCode::rfalse();Functions::end(save);inter_name *md_iname = Hierarchy::make_iname_in(INSTANCE_SCF_MD_HL, pack);
-Emit::iname_constant(md_iname, K_value, iname);
+Emit::iname_constant(md_iname, K_value, iname);}
§3.1. Recall that ends numbered 1, 2, 3, ... are all ways for the scene to end,
@@ -630,7 +630,7 @@ what handles this for the scene in question.
Functions::end(save);inter_name *md_iname = Hierarchy::make_iname_in(INSTANCE_SSF_MD_HL,RTInstances::package(sc->as_instance));
-Emit::iname_constant(md_iname, K_value, iname);
+Emit::iname_constant(md_iname, K_value, iname);}
@@ -193,8 +193,8 @@ should be able to fake the date-stamp with dates of their own choosing.
intyear_digits = (the_present->tm_year) % 100;WRITE_TO(SN, "%02d%02d%02d",year_digits, (the_present->tm_mon)+1, the_present->tm_mday);
-Emit::text_constant(Hierarchy::find(SERIAL_MD_HL), BibliographicData::read_uuid());
-Emit::serial_number(iname, SN);
+Emit::text_constant(Hierarchy::find(SERIAL_MD_HL), BibliographicData::read_uuid());
+Emit::serial_number(iname, SN);DISCARD_TEXT(SN)Hierarchy::make_available(iname);
@@ -207,38 +207,38 @@ not compile to any data in the object code:
§5. In-table storage. Some kinds of non-object are created by table, with the table columns holding the
diff --git a/docs/runtime-module/6-pv.html b/docs/runtime-module/6-pv.html
index 56372fa16..ca89b1ff6 100644
--- a/docs/runtime-module/6-pv.html
+++ b/docs/runtime-module/6-pv.html
@@ -173,7 +173,7 @@ value the property will have, and compiles a clause as appropriate.
value_holsterVH = Holsters::new(INTER_DATA_VHMODE);Properties::compile_inferred_value(&VH, subj, prn);inter_pairval = Holsters::unholster_to_pair(&VH);
-Emit::propertyvalue(prn, RTPropertyPermissions::owner(subj), val);
+Emit::propertyvalue(prn, RTPropertyPermissions::owner(subj), val);Packaging::exit(Emit::tree(), save); }
diff --git a/docs/runtime-module/6-tm.html b/docs/runtime-module/6-tm.html
index ccc8066d9..6dbdb24d7 100644
--- a/docs/runtime-module/6-tm.html
+++ b/docs/runtime-module/6-tm.html
@@ -79,7 +79,7 @@ at run-time, so we can't know now how many we will need.