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

Rehoused named rulebook outcome texts

This commit is contained in:
Graham Nelson 2019-04-07 12:52:41 +01:00
parent 56644ba1b7
commit 682f9f2077
2 changed files with 16 additions and 2 deletions

View file

@ -221,12 +221,18 @@ named_rulebook_outcome *Rulebooks::Outcomes::rbno_by_name(wording W) {
if (Rvalues::is_CONSTANT_of_kind(p, K_rulebook_outcome)) {
return Rvalues::to_named_rulebook_outcome(p);
}
package_request *R = Packaging::request_resource(
Modules::find(current_sentence), RULEBOOKS_SUBPACKAGE);
inter_name *package_name = Packaging::supply_iname(R, OUTCOME_PR_COUNTER);
package_request *R2 = Packaging::request(package_name, R, outcome_ptype);
named_rulebook_outcome *rbno = CREATE(named_rulebook_outcome);
rbno->name = Nouns::new_proper_noun(W, NEUTER_GENDER,
REGISTER_SINGULAR_NTOPT + PARSE_EXACTLY_NTOPT,
MISCELLANEOUS_MC, Rvalues::from_named_rulebook_outcome(rbno));
rbno->nro_iname = InterNames::new(RULEBOOK_NAMED_OPTION_INAMEF);
InterNames::to_symbol(rbno->nro_iname);
rbno->nro_iname = InterNames::one_off(I"outcome", R2);
InterNames::attach_memo(rbno->nro_iname, W);
return rbno;
}
@ -403,7 +409,9 @@ void Rulebooks::Outcomes::RulebookOutcomePrintingRule(void) {
LOOP_OVER(rbno, named_rulebook_outcome) {
TEMPORARY_TEXT(RV);
WRITE_TO(RV, "%+W", Nouns::nominative(rbno->name));
packaging_state save = Packaging::enter_home_of(rbno->nro_iname);
Emit::named_string_constant(rbno->nro_iname, RV);
Packaging::exit(save);
DISCARD_TEXT(RV);
}

View file

@ -26,6 +26,7 @@ inter_symbol *table_ptype = NULL;
inter_symbol *table_column_ptype = NULL;
inter_symbol *relation_ptype = NULL;
inter_symbol *test_ptype = NULL;
inter_symbol *outcome_ptype = NULL;
inter_symbol *data_ptype = NULL;
@ =
@ -76,6 +77,8 @@ void Packaging::emit_types(void) {
Emit::guard(Inter::PackageType::new_packagetype(Emit::IRS(), relation_ptype, Emit::baseline(Emit::IRS()), NULL));
test_ptype = Emit::new_symbol(Inter::get_global_symbols(Emit::repository()), I"_test");
Emit::guard(Inter::PackageType::new_packagetype(Emit::IRS(), test_ptype, Emit::baseline(Emit::IRS()), NULL));
outcome_ptype = Emit::new_symbol(Inter::get_global_symbols(Emit::repository()), I"_outcome");
Emit::guard(Inter::PackageType::new_packagetype(Emit::IRS(), outcome_ptype, Emit::baseline(Emit::IRS()), NULL));
data_ptype = Emit::new_symbol(Inter::get_global_symbols(Emit::repository()), I"_data");
Emit::guard(Inter::PackageType::new_packagetype(Emit::IRS(), data_ptype, Emit::baseline(Emit::IRS()), NULL));
}
@ -111,6 +114,7 @@ void Packaging::emit_types(void) {
@e SUBSTITUTIONF_PR_COUNTER
@e MISC_PR_COUNTER
@e DATA_PR_COUNTER
@e OUTCOME_PR_COUNTER
@e TEST_PR_COUNTER
@e MAX_PR_COUNTER
@ -211,6 +215,7 @@ packaging_state Packaging::enter(package_request *R) {
(S->eventual_type == table_ptype) ||
(S->eventual_type == table_column_ptype) ||
(S->eventual_type == data_ptype) ||
(S->eventual_type == outcome_ptype) ||
(S->eventual_type == test_ptype) ||
(S->parent_request == NULL)) {
current_enclosure = S;
@ -432,6 +437,7 @@ inter_name *Packaging::supply_iname(package_request *R, int what_for) {
case SUBSTITUTIONF_PR_COUNTER: WRITE_TO(P, "ts_fn"); break;
case MISC_PR_COUNTER: WRITE_TO(P, "misc_const"); break;
case TEST_PR_COUNTER: WRITE_TO(P, "test"); break;
case OUTCOME_PR_COUNTER: WRITE_TO(P, "rulebook_outcome"); break;
case DATA_PR_COUNTER: WRITE_TO(P, "data"); break;
default: internal_error("unimplemented");
}