diff --git a/Chapter 1/Assets, Plugins and Colour Schemes.w b/Chapter 1/Assets, Plugins and Colour Schemes.w index 60298feb..be16bc3f 100644 --- a/Chapter 1/Assets, Plugins and Colour Schemes.w +++ b/Chapter 1/Assets, Plugins and Colour Schemes.w @@ -223,7 +223,7 @@ asset_rule *Assets::new_rule(linked_list *L, text_stream *ext, text_stream *line text_stream *cmd = line; text_stream *detail = NULL; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c+?) *= *(%c*)")) { + if (Regexp::match(&mr, line, U"(%c+?) *= *(%c*)")) { cmd = mr.exp[0]; detail = mr.exp[1]; } @@ -363,12 +363,12 @@ void Assets::transformer(text_stream *line, text_file_position *tfp, void *X) { text_stream *OUT = cft->OUT; match_results mr = Regexp::create_mr(); TEMPORARY_TEXT(spanned) - while (Regexp::match(&mr, line, L"(%c*?span.)(%i+)(%c*?)")) { + while (Regexp::match(&mr, line, U"(%c*?span.)(%i+)(%c*?)")) { WRITE_TO(spanned, "%S%S%S", mr.exp[0], cft->trans, mr.exp[1]); Str::clear(line); Str::copy(line, mr.exp[2]); } WRITE_TO(spanned, "%S\n", line); - while (Regexp::match(&mr, spanned, L"(%c*?pre.)(%i+)(%c*?)")) { + while (Regexp::match(&mr, spanned, U"(%c*?pre.)(%i+)(%c*?)")) { WRITE("%S%S%S", mr.exp[0], cft->trans, mr.exp[1]); Str::clear(spanned); Str::copy(spanned, mr.exp[2]); } diff --git a/Chapter 1/Configuration.w b/Chapter 1/Configuration.w index d43a31a3..97db7598 100644 --- a/Chapter 1/Configuration.w +++ b/Chapter 1/Configuration.w @@ -164,106 +164,106 @@ provides automatically. @e MEMBER_CLSW @ = - CommandLine::declare_heading(L"inweb: a tool for literate programming\n\n" - L"Usage: inweb WEB OPTIONS RANGE\n\n" - L"WEB must be a directory holding a literate program (a 'web')\n\n" - L"The legal RANGEs are:\n" - L" all: complete web (the default if no TARGETS set)\n" - L" P: all preliminaries\n" - L" 1: Chapter 1 (and so on)\n" - L" A: Appendix A (and so on, up to Appendix O)\n" - L" 3/eg: section with abbreviated name \"3/eg\" (and so on)\n" - L"You can also, or instead, specify:\n" - L" index: to weave an HTML page indexing the project\n" - L" chapters: to weave all chapters as individual documents\n" - L" sections: ditto with sections\n"); + CommandLine::declare_heading(U"inweb: a tool for literate programming\n\n" + U"Usage: inweb WEB OPTIONS RANGE\n\n" + U"WEB must be a directory holding a literate program (a 'web')\n\n" + U"The legal RANGEs are:\n" + U" all: complete web (the default if no TARGETS set)\n" + U" P: all preliminaries\n" + U" 1: Chapter 1 (and so on)\n" + U" A: Appendix A (and so on, up to Appendix O)\n" + U" 3/eg: section with abbreviated name \"3/eg\" (and so on)\n" + U"You can also, or instead, specify:\n" + U" index: to weave an HTML page indexing the project\n" + U" chapters: to weave all chapters as individual documents\n" + U" sections: ditto with sections\n"); CommandLine::begin_group(LANGUAGES_CLSG, I"for locating programming language definitions"); - CommandLine::declare_switch(LANGUAGE_CLSW, L"read-language", 2, - L"read language definition from file X"); - CommandLine::declare_switch(LANGUAGES_CLSW, L"read-languages", 2, - L"read all language definitions in path X"); - CommandLine::declare_switch(SHOW_LANGUAGES_CLSW, L"show-languages", 1, - L"list programming languages supported by Inweb"); - CommandLine::declare_switch(TEST_LANGUAGE_CLSW, L"test-language", 2, - L"test language X on..."); - CommandLine::declare_switch(TEST_LANGUAGE_ON_CLSW, L"test-language-on", 2, - L"...the code in the file X"); + CommandLine::declare_switch(LANGUAGE_CLSW, U"read-language", 2, + U"read language definition from file X"); + CommandLine::declare_switch(LANGUAGES_CLSW, U"read-languages", 2, + U"read all language definitions in path X"); + CommandLine::declare_switch(SHOW_LANGUAGES_CLSW, U"show-languages", 1, + U"list programming languages supported by Inweb"); + CommandLine::declare_switch(TEST_LANGUAGE_CLSW, U"test-language", 2, + U"test language X on..."); + CommandLine::declare_switch(TEST_LANGUAGE_ON_CLSW, U"test-language-on", 2, + U"...the code in the file X"); CommandLine::end_group(); CommandLine::begin_group(ANALYSIS_CLSG, I"for analysing a web"); - CommandLine::declare_switch(CATALOGUE_CLSW, L"catalogue", 1, - L"list the sections in the web"); - CommandLine::declare_switch(CATALOGUE_CLSW, L"catalog", 1, - L"same as '-catalogue'"); - CommandLine::declare_switch(MAKEFILE_CLSW, L"makefile", 2, - L"write a makefile for this web and store it in X"); - CommandLine::declare_switch(GITIGNORE_CLSW, L"gitignore", 2, - L"write a .gitignore file for this web and store it in X"); - CommandLine::declare_switch(ADVANCE_FILE_CLSW, L"advance-build-file", 2, - L"increment daily build code in file X"); - CommandLine::declare_switch(WRITEME_CLSW, L"write-me", 2, - L"write a read-me file following instructions in file X"); - CommandLine::declare_switch(PLATFORM_CLSW, L"platform", 2, - L"use platform X (e.g. 'windows') when making e.g. makefiles"); - CommandLine::declare_switch(PROTOTYPE_CLSW, L"prototype", 2, - L"translate makefile from prototype X"); - CommandLine::declare_switch(FUNCTIONS_CLSW, L"functions", 1, - L"catalogue the functions in the web"); - CommandLine::declare_switch(STRUCTURES_CLSW, L"structures", 1, - L"catalogue the structures in the web"); - CommandLine::declare_switch(ADVANCE_CLSW, L"advance-build", 1, - L"increment daily build code for the web"); - CommandLine::declare_switch(SCAN_CLSW, L"scan", 1, - L"scan the web"); + CommandLine::declare_switch(CATALOGUE_CLSW, U"catalogue", 1, + U"list the sections in the web"); + CommandLine::declare_switch(CATALOGUE_CLSW, U"catalog", 1, + U"same as '-catalogue'"); + CommandLine::declare_switch(MAKEFILE_CLSW, U"makefile", 2, + U"write a makefile for this web and store it in X"); + CommandLine::declare_switch(GITIGNORE_CLSW, U"gitignore", 2, + U"write a .gitignore file for this web and store it in X"); + CommandLine::declare_switch(ADVANCE_FILE_CLSW, U"advance-build-file", 2, + U"increment daily build code in file X"); + CommandLine::declare_switch(WRITEME_CLSW, U"write-me", 2, + U"write a read-me file following instructions in file X"); + CommandLine::declare_switch(PLATFORM_CLSW, U"platform", 2, + U"use platform X (e.g. 'windows') when making e.g. makefiles"); + CommandLine::declare_switch(PROTOTYPE_CLSW, U"prototype", 2, + U"translate makefile from prototype X"); + CommandLine::declare_switch(FUNCTIONS_CLSW, U"functions", 1, + U"catalogue the functions in the web"); + CommandLine::declare_switch(STRUCTURES_CLSW, U"structures", 1, + U"catalogue the structures in the web"); + CommandLine::declare_switch(ADVANCE_CLSW, U"advance-build", 1, + U"increment daily build code for the web"); + CommandLine::declare_switch(SCAN_CLSW, U"scan", 1, + U"scan the web"); CommandLine::end_group(); CommandLine::begin_group(WEAVING_CLSG, I"for weaving a web"); - CommandLine::declare_switch(WEAVE_CLSW, L"weave", 1, - L"weave the web into human-readable form"); - CommandLine::declare_switch(WEAVE_INTO_CLSW, L"weave-into", 2, - L"weave, but into directory X"); - CommandLine::declare_switch(WEAVE_TO_CLSW, L"weave-to", 2, - L"weave, but to filename X (for single files only)"); - CommandLine::declare_switch(OPEN_CLSW, L"open", 1, - L"weave then open woven file"); - CommandLine::declare_switch(WEAVE_AS_CLSW, L"weave-as", 2, - L"set weave pattern to X (default is 'HTML')"); - CommandLine::declare_switch(WEAVE_TAG_CLSW, L"weave-tag", 2, - L"weave, but only using material tagged as X"); - CommandLine::declare_switch(BREADCRUMB_CLSW, L"breadcrumb", 2, - L"use the text X as a breadcrumb in overhead navigation"); - CommandLine::declare_switch(NAVIGATION_CLSW, L"navigation", 2, - L"use the file X as a column of navigation links"); + CommandLine::declare_switch(WEAVE_CLSW, U"weave", 1, + U"weave the web into human-readable form"); + CommandLine::declare_switch(WEAVE_INTO_CLSW, U"weave-into", 2, + U"weave, but into directory X"); + CommandLine::declare_switch(WEAVE_TO_CLSW, U"weave-to", 2, + U"weave, but to filename X (for single files only)"); + CommandLine::declare_switch(OPEN_CLSW, U"open", 1, + U"weave then open woven file"); + CommandLine::declare_switch(WEAVE_AS_CLSW, U"weave-as", 2, + U"set weave pattern to X (default is 'HTML')"); + CommandLine::declare_switch(WEAVE_TAG_CLSW, U"weave-tag", 2, + U"weave, but only using material tagged as X"); + CommandLine::declare_switch(BREADCRUMB_CLSW, U"breadcrumb", 2, + U"use the text X as a breadcrumb in overhead navigation"); + CommandLine::declare_switch(NAVIGATION_CLSW, U"navigation", 2, + U"use the file X as a column of navigation links"); CommandLine::end_group(); CommandLine::begin_group(TANGLING_CLSG, I"for tangling a web"); - CommandLine::declare_switch(TANGLE_CLSW, L"tangle", 1, - L"tangle the web into machine-compilable form"); - CommandLine::declare_switch(TANGLE_TO_CLSW, L"tangle-to", 2, - L"tangle, but to filename X"); - CommandLine::declare_switch(CTAGS_TO_CLSW, L"ctags-to", 2, - L"tangle, but write Universal Ctags file to X not to 'tags'"); - CommandLine::declare_boolean_switch(CTAGS_CLSW, L"ctags", 1, - L"write a Universal Ctags file when tangling", TRUE); + CommandLine::declare_switch(TANGLE_CLSW, U"tangle", 1, + U"tangle the web into machine-compilable form"); + CommandLine::declare_switch(TANGLE_TO_CLSW, U"tangle-to", 2, + U"tangle, but to filename X"); + CommandLine::declare_switch(CTAGS_TO_CLSW, U"ctags-to", 2, + U"tangle, but write Universal Ctags file to X not to 'tags'"); + CommandLine::declare_boolean_switch(CTAGS_CLSW, U"ctags", 1, + U"write a Universal Ctags file when tangling", TRUE); CommandLine::end_group(); CommandLine::begin_group(COLONIAL_CLSG, I"for dealing with colonies of webs together"); - CommandLine::declare_switch(COLONY_CLSW, L"colony", 2, - L"use the file X as a list of webs in this colony"); - CommandLine::declare_switch(MEMBER_CLSW, L"member", 2, - L"use member X from the colony as our web"); + CommandLine::declare_switch(COLONY_CLSW, U"colony", 2, + U"use the file X as a list of webs in this colony"); + CommandLine::declare_switch(MEMBER_CLSW, U"member", 2, + U"use member X from the colony as our web"); CommandLine::end_group(); - CommandLine::declare_boolean_switch(VERBOSE_CLSW, L"verbose", 1, - L"explain what inweb is doing", FALSE); - CommandLine::declare_switch(IMPORT_FROM_CLSW, L"import-from", 2, - L"specify that imported modules are at pathname X"); + CommandLine::declare_boolean_switch(VERBOSE_CLSW, U"verbose", 1, + U"explain what inweb is doing", FALSE); + CommandLine::declare_switch(IMPORT_FROM_CLSW, U"import-from", 2, + U"specify that imported modules are at pathname X"); @ Foundation calls this on any |-switch| argument read: @@ -423,18 +423,18 @@ Otherwise, a range is a chapter number/letter, or a section range. = void Configuration::set_range(inweb_instructions *args, text_stream *opt) { match_results mr = Regexp::create_mr(); - if (Str::eq_wide_string(opt, L"index")) { + if (Str::eq_wide_string(opt, U"index")) { args->swarm_mode = SWARM_INDEX_SWM; - } else if (Str::eq_wide_string(opt, L"chapters")) { + } else if (Str::eq_wide_string(opt, U"chapters")) { args->swarm_mode = SWARM_CHAPTERS_SWM; - } else if (Str::eq_wide_string(opt, L"sections")) { + } else if (Str::eq_wide_string(opt, U"sections")) { args->swarm_mode = SWARM_SECTIONS_SWM; } else { if (++args->targets > 1) Errors::fatal("at most one target may be given"); - if (Str::eq_wide_string(opt, L"all")) { + if (Str::eq_wide_string(opt, U"all")) { Str::copy(args->chosen_range, I"0"); - } else if (((isalnum(Str::get_first_char(opt))) && (Str::len(opt) == 1)) - || (Regexp::match(&mr, opt, L"%i+/%i+"))) { + } else if (((Characters::isalnum(Str::get_first_char(opt))) && (Str::len(opt) == 1)) + || (Regexp::match(&mr, opt, U"%i+/%i+"))) { Str::copy(args->chosen_range, opt); string_position P = Str::start(args->chosen_range); Str::put(P, Characters::toupper(Str::get(P))); diff --git a/Chapter 1/Patterns.w b/Chapter 1/Patterns.w index 16a92641..a0867850 100644 --- a/Chapter 1/Patterns.w +++ b/Chapter 1/Patterns.w @@ -112,11 +112,11 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi wp->commands++; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c+) *: *(%c+?)")) { + if (Regexp::match(&mr, line, U"(%c+) *: *(%c+?)")) { text_stream *key = mr.exp[0], *value = Str::duplicate(mr.exp[1]); if ((Str::eq_insensitive(key, I"name")) && (wp->commands == 1)) { match_results mr2 = Regexp::create_mr(); - if (Regexp::match(&mr2, value, L"(%c+?) based on (%c+)")) { + if (Regexp::match(&mr2, value, U"(%c+?) based on (%c+)")) { if (Str::ne_insensitive(mr2.exp[0], wp->pattern_name)) { Errors::in_text_file("wrong pattern name", tfp); } @@ -157,7 +157,7 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi ADD_TO_LINKED_LIST(Str::duplicate(value), text_stream, wp->post_commands); } else if (Str::eq_insensitive(key, I"bibliographic data")) { match_results mr2 = Regexp::create_mr(); - if (Regexp::match(&mr2, value, L"(%c+?) = (%c+)")) { + if (Regexp::match(&mr2, value, U"(%c+?) = (%c+)")) { Bibliographic::set_datum(wp->patterned_for->md, mr2.exp[0], mr2.exp[1]); } else { Errors::in_text_file("syntax is 'bibliographic data: X = Y'", tfp); @@ -165,7 +165,7 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi Regexp::dispose_of(&mr2); } else if (Str::eq_insensitive(key, I"assets")) { match_results mr2 = Regexp::create_mr(); - if (Regexp::match(&mr2, value, L"(.%C+?) (%c+)")) { + if (Regexp::match(&mr2, value, U"(.%C+?) (%c+)")) { Assets::add_asset_rule(wp->asset_rules, mr2.exp[0], mr2.exp[1], tfp); } else { Errors::in_text_file("syntax is 'assets: .EXT COMMAND'", tfp); @@ -190,7 +190,7 @@ int Patterns::yes_or_no(text_stream *arg, text_file_position *tfp) { text_stream *Patterns::plugin_name(text_stream *arg, text_file_position *tfp) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, arg, L"(%i+)")) { + if (Regexp::match(&mr, arg, U"(%i+)")) { if (Str::eq_insensitive(arg, I"none")) return NULL; } else { Errors::in_text_file("plugin names must be single alphanumeric words", tfp); diff --git a/Chapter 1/Program Control.w b/Chapter 1/Program Control.w index 01a213d2..bf729da1 100644 --- a/Chapter 1/Program Control.w +++ b/Chapter 1/Program Control.w @@ -197,7 +197,7 @@ line , but otherwise we impose a sensible choice based on the target. @ = TEMPORARY_TEXT(tangle_leaf) tangle_target *tn = NULL; - if (Str::eq_wide_string(ins->chosen_range, L"0")) { + if (Str::eq_wide_string(ins->chosen_range, U"0")) { @; } else if (Reader::get_section_for_range(W, ins->chosen_range)) { @; diff --git a/Chapter 1/The Swarm.w b/Chapter 1/The Swarm.w index d1e2e0f0..318171d3 100644 --- a/Chapter 1/The Swarm.w +++ b/Chapter 1/The Swarm.w @@ -138,28 +138,28 @@ and details of any cover-sheet to use. @ = match_results mr = Regexp::create_mr(); - if (Str::eq_wide_string(range, L"0")) { + if (Str::eq_wide_string(range, U"0")) { if (W->md->single_file) { wv->booklet_title = Str::duplicate(Bibliographic::get_datum(W->md, I"Title")); Filenames::write_unextended_leafname(leafname, W->md->single_file); } else { - wv->booklet_title = Str::new_from_wide_string(L"Complete Program"); + wv->booklet_title = Str::new_from_wide_string(U"Complete Program"); WRITE_TO(leafname, "Complete"); } if (wv->theme_match) @; - } else if (Regexp::match(&mr, range, L"%d+")) { + } else if (Regexp::match(&mr, range, U"%d+")) { Str::clear(wv->booklet_title); WRITE_TO(wv->booklet_title, "Chapter %S", range); Str::copy(leafname, wv->booklet_title); - } else if (Regexp::match(&mr, range, L"%[A-O]")) { + } else if (Regexp::match(&mr, range, U"%[A-O]")) { Str::clear(wv->booklet_title); WRITE_TO(wv->booklet_title, "Appendix %S", range); Str::copy(leafname, wv->booklet_title); - } else if (Str::eq_wide_string(range, L"P")) { - wv->booklet_title = Str::new_from_wide_string(L"Preliminaries"); + } else if (Str::eq_wide_string(range, U"P")) { + wv->booklet_title = Str::new_from_wide_string(U"Preliminaries"); Str::copy(leafname, wv->booklet_title); - } else if (Str::eq_wide_string(range, L"M")) { - wv->booklet_title = Str::new_from_wide_string(L"Manual"); + } else if (Str::eq_wide_string(range, U"M")) { + wv->booklet_title = Str::new_from_wide_string(U"Manual"); Str::copy(leafname, wv->booklet_title); } else { section *S = Reader::get_section_for_range(W, range); diff --git a/Chapter 2/Enumerated Constants.w b/Chapter 2/Enumerated Constants.w index c59688ec..eb1c5bcb 100644 --- a/Chapter 2/Enumerated Constants.w +++ b/Chapter 2/Enumerated Constants.w @@ -52,7 +52,7 @@ void Enumerations::define(OUTPUT_STREAM, text_stream *symbol, @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, symbol, L"%c*_(%C+?)")) Str::copy(pf, mr.exp[0]); + if (Regexp::match(&mr, symbol, U"%c*_(%C+?)")) Str::copy(pf, mr.exp[0]); else { Main::error_in_web(I"enumeration constants must belong to a _FAMILY", L); WRITE_TO(pf, "BOGUS"); @@ -73,8 +73,8 @@ void Enumerations::define(OUTPUT_STREAM, text_stream *symbol, es->postfix = Str::duplicate(pf); es->stub = NULL; if ((Str::len(from) < 8) && - ((Regexp::match(NULL, from, L"%d+")) || - (Regexp::match(NULL, from, L"-%d+")))) { + ((Regexp::match(NULL, from, U"%d+")) || + (Regexp::match(NULL, from, U"-%d+")))) { es->first_value = Str::atoi(from, 0); es->next_free_value = es->first_value + 1; } else { diff --git a/Chapter 2/Tags.w b/Chapter 2/Tags.w index 12e08323..666ac632 100644 --- a/Chapter 2/Tags.w +++ b/Chapter 2/Tags.w @@ -73,7 +73,7 @@ theme_tag *Tags::add_by_name(paragraph *P, text_stream *text) { TEMPORARY_TEXT(name) Str::copy(name, text); TEMPORARY_TEXT(caption) match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, name, L"(%c+?): (%c+)")) { + if (Regexp::match(&mr, name, U"(%c+?): (%c+)")) { Str::copy(name, mr.exp[0]); Str::copy(caption, mr.exp[1]); } diff --git a/Chapter 2/The Parser.w b/Chapter 2/The Parser.w index dbf3ca2d..bdfa1c11 100644 --- a/Chapter 2/The Parser.w +++ b/Chapter 2/The Parser.w @@ -63,7 +63,7 @@ yet exist -- it will only exist when the line has been fully parsed.) @ = if (Str::get_first_char(L->text) == '@') { match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, L->text, L"(%c*?)( *%^\"%c+?\")(%c*)")) { + while (Regexp::match(&mr, L->text, U"(%c*?)( *%^\"%c+?\")(%c*)")) { if (S->md->using_syntax < V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "tags written ^\"thus\"", V2_SYNTAX); Str::clear(L->text); @@ -78,7 +78,7 @@ now points to the para which was created by this line, not the one before. @ = match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, tag_list, L" *%^\"(%c+?)\" *(%c*)")) { + while (Regexp::match(&mr, tag_list, U" *%^\"(%c+?)\" *(%c*)")) { Tags::add_by_name(current_paragraph, mr.exp[0]); Str::copy(tag_list, mr.exp[1]); } @@ -121,11 +121,11 @@ immediately adjacent on the same line. match_results mr = Regexp::create_mr(); if ((PL) && (PL->category == CODE_BODY_LCAT) && (Str::get_first_char(L->text) == '@') && (Str::get_at(L->text, 1) == '<') && - (Regexp::match(&mr, L->text, L"%c<(%c+)@> *= *")) && + (Regexp::match(&mr, L->text, U"%c<(%c+)@> *= *")) && (S->md->using_syntax >= V2_SYNTAX)) { @; } - if ((PL) && (Regexp::match(&mr, L->text, L"@ *= *"))) { + if ((PL) && (Regexp::match(&mr, L->text, U"@ *= *"))) { Str::clear(L->text); Str::copy(L->text, I"="); if (S->md->using_syntax < V2_SYNTAX) @@ -177,7 +177,7 @@ code, definition, what? come literally from the source web. @ = - if (Str::eq_wide_string(L->text, L"Chapter Heading")) { + if (Str::eq_wide_string(L->text, U"Chapter Heading")) { comment_mode = TRUE; extract_mode = FALSE; L->is_commentary = TRUE; @@ -190,13 +190,13 @@ namespace for its functions. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"Implied Purpose: (%c+)")) { + if (Regexp::match(&mr, L->text, U"Implied Purpose: (%c+)")) { S->sect_purpose = Str::duplicate(mr.exp[0]); if (Str::len(S->sect_purpose) > 0) { L->category = PURPOSE_LCAT; L->is_commentary = TRUE; } - } else if (Regexp::match(&mr, L->text, L"%[(%C+)%] (%C+/%C+): (%c+).")) { + } else if (Regexp::match(&mr, L->text, U"%[(%C+)%] (%C+/%C+): (%c+).")) { if (S->md->using_syntax >= V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "section range in header line", V1_SYNTAX); @@ -206,7 +206,7 @@ namespace for its functions. L->text_operand = Str::duplicate(mr.exp[2]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp::match(&mr, L->text, L"(%C+/%C+): (%c+).")) { + } else if (Regexp::match(&mr, L->text, U"(%C+/%C+): (%c+).")) { if (S->md->using_syntax >= V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "section range in header line", V1_SYNTAX); @@ -215,13 +215,13 @@ namespace for its functions. L->text_operand = Str::duplicate(mr.exp[1]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp::match(&mr, L->text, L"%[(%C+::)%] (%c+).")) { + } else if (Regexp::match(&mr, L->text, U"%[(%C+::)%] (%c+).")) { S->sect_namespace = Str::duplicate(mr.exp[0]); S->md->sect_title = Str::duplicate(mr.exp[1]); L->text_operand = Str::duplicate(mr.exp[1]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp::match(&mr, L->text, L"(%c+).")) { + } else if (Regexp::match(&mr, L->text, U"(%c+).")) { S->md->sect_title = Str::duplicate(mr.exp[0]); L->text_operand = Str::duplicate(mr.exp[0]); L->category = SECTION_HEADING_LCAT; @@ -235,28 +235,28 @@ In version 2, this notation is never used. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"%[%[(%c+)%]%]")) { + if (Regexp::match(&mr, L->text, U"%[%[(%c+)%]%]")) { TEMPORARY_TEXT(full_command) TEMPORARY_TEXT(command_text) Str::copy(full_command, mr.exp[0]); Str::copy(command_text, mr.exp[0]); L->category = COMMAND_LCAT; - if (Regexp::match(&mr, command_text, L"(%c+?): *(%c+)")) { + if (Regexp::match(&mr, command_text, U"(%c+?): *(%c+)")) { Str::copy(command_text, mr.exp[0]); L->text_operand = Str::duplicate(mr.exp[1]); } - if (Str::eq_wide_string(command_text, L"Page Break")) { + if (Str::eq_wide_string(command_text, U"Page Break")) { if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "[[Page Break]]", V1_SYNTAX); L->command_code = PAGEBREAK_CMD; - } else if (Str::eq_wide_string(command_text, L"Grammar Index")) + } else if (Str::eq_wide_string(command_text, U"Grammar Index")) L->command_code = GRAMMAR_INDEX_CMD; - else if (Str::eq_wide_string(command_text, L"Tag")) { + else if (Str::eq_wide_string(command_text, U"Tag")) { if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "[[Tag...]]", V1_SYNTAX); Tags::add_by_name(L->owning_paragraph, L->text_operand); L->command_code = TAG_CMD; - } else if (Str::eq_wide_string(command_text, L"Figure")) { + } else if (Str::eq_wide_string(command_text, U"Figure")) { if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "[[Figure...]]", V1_SYNTAX); Tags::add_by_name(L->owning_paragraph, I"Figures"); @@ -276,7 +276,7 @@ handling. We'll call these "paragraph macros". @ = match_results mr = Regexp::create_mr(); if ((Str::get_first_char(L->text) == '@') && (Str::get_at(L->text, 1) == '<') && - (Regexp::match(&mr, L->text, L"%c<(%c+)@> *= *"))) { + (Regexp::match(&mr, L->text, U"%c<(%c+)@> *= *"))) { TEMPORARY_TEXT(para_macro_name) Str::copy(para_macro_name, mr.exp[0]); L->category = MACRO_DEFINITION_LCAT; @@ -303,7 +303,7 @@ division in the current section. Str::delete_first_character(command_text); /* i.e., strip the at-sign from the front */ TEMPORARY_TEXT(remainder) match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, command_text, L"(%C*) *(%c*?)")) { + if (Regexp::match(&mr, command_text, U"(%C*) *(%c*?)")) { Str::copy(command_text, mr.exp[0]); Str::copy(remainder, mr.exp[1]); } @@ -331,56 +331,56 @@ division in the current section. comment_mode = FALSE; match_results mr = Regexp::create_mr(); match_results mr2 = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"= *(%c+) *")) { + if (Regexp::match(&mr, L->text, U"= *(%c+) *")) { if ((current_paragraph) && (Str::eq(mr.exp[0], I"(very early code)"))) { current_paragraph->placed_very_early = TRUE; } else if ((current_paragraph) && (Str::eq(mr.exp[0], I"(early code)"))) { current_paragraph->placed_early = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text%)"))) { @; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = NULL; code_pl_for_body = NULL; extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text to *(%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text to *(%c+)%)"))) { @; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = Str::duplicate(mr2.exp[1]); code_pl_for_body = Analyser::find_by_name(I"Extracts", W, TRUE); extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text as code%)"))) { @; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = NULL; code_pl_for_body = S->sect_language; extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text as (%c+)%)"))) { @; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = NULL; code_pl_for_body = Analyser::find_by_name(mr2.exp[1], W, TRUE); extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as code%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+) as code%)"))) { @; code_pl_for_body = S->sect_language; @; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+) as (%c+)%)"))) { @; code_pl_for_body = Analyser::find_by_name(mr2.exp[2], W, TRUE); @; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+)%)"))) { @; code_pl_for_body = NULL; @; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(figure (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(figure (%c+)%)"))) { Tags::add_by_name(L->owning_paragraph, I"Figures"); L->command_code = FIGURE_CMD; L->category = COMMAND_LCAT; @@ -388,7 +388,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(html (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(html (%c+)%)"))) { Tags::add_by_name(L->owning_paragraph, I"HTML"); L->command_code = HTML_CMD; L->category = COMMAND_LCAT; @@ -396,7 +396,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(audio (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(audio (%c+)%)"))) { Tags::add_by_name(L->owning_paragraph, I"Audio"); L->command_code = AUDIO_CMD; L->category = COMMAND_LCAT; @@ -404,7 +404,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(video (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(video (%c+)%)"))) { Tags::add_by_name(L->owning_paragraph, I"Video"); L->command_code = VIDEO_CMD; L->category = COMMAND_LCAT; @@ -412,7 +412,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(download (%c+) \"(%c*)\"%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(download (%c+) \"(%c*)\"%)"))) { Tags::add_by_name(L->owning_paragraph, I"Download"); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; @@ -421,7 +421,7 @@ division in the current section. L->text_operand2 = Str::duplicate(mr2.exp[1]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(download (%c+)%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(download (%c+)%)"))) { Tags::add_by_name(L->owning_paragraph, I"Download"); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; @@ -430,7 +430,7 @@ division in the current section. L->text_operand2 = Str::new(); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(carousel%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(carousel%)"))) { Tags::add_by_name(L->owning_paragraph, I"Carousels"); L->command_code = CAROUSEL_UNCAPTIONED_CMD; L->category = COMMAND_LCAT; @@ -438,7 +438,7 @@ division in the current section. L->text_operand = Str::new(); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" below%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\" below%)"))) { Tags::add_by_name(L->owning_paragraph, I"Carousels"); L->command_code = CAROUSEL_BELOW_CMD; L->category = COMMAND_LCAT; @@ -446,7 +446,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" above%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\" above%)"))) { Tags::add_by_name(L->owning_paragraph, I"Carousels"); L->command_code = CAROUSEL_ABOVE_CMD; L->category = COMMAND_LCAT; @@ -454,7 +454,7 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\"%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\"%)"))) { Tags::add_by_name(L->owning_paragraph, I"Carousels"); L->command_code = CAROUSEL_CMD; L->category = COMMAND_LCAT; @@ -462,15 +462,15 @@ division in the current section. L->text_operand = Str::duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp::match(&mr2, mr.exp[0], L"%(carousel end%)"))) { + (Regexp::match(&mr2, mr.exp[0], U"%(carousel end%)"))) { Tags::add_by_name(L->owning_paragraph, I"Carousels"); L->command_code = CAROUSEL_END_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; comment_mode = TRUE; } else if ((current_paragraph) && - ((Regexp::match(&mr2, mr.exp[0], L"%(embedded (%C+) video (%c+)%)")) || - (Regexp::match(&mr2, mr.exp[0], L"%(embedded (%C+) audio (%c+)%)")))) { + ((Regexp::match(&mr2, mr.exp[0], U"%(embedded (%C+) video (%c+)%)")) || + (Regexp::match(&mr2, mr.exp[0], U"%(embedded (%C+) audio (%c+)%)")))) { Tags::add_by_name(L->owning_paragraph, I"Videos"); L->command_code = EMBED_CMD; L->category = COMMAND_LCAT; @@ -481,7 +481,7 @@ division in the current section. } else { Main::error_in_web(I"unknown bracketed annotation", L); } - } else if (Regexp::match(&mr, L->text, L"= *%C%c*")) { + } else if (Regexp::match(&mr, L->text, U"= *%C%c*")) { Main::error_in_web(I"unknown material after '='", L); } code_plainness_for_body = L->plainer; @@ -493,7 +493,7 @@ division in the current section. @ = match_results mr3 = Regexp::create_mr(); while (TRUE) { - if (Regexp::match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { + if (Regexp::match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { if (Str::eq(mr3.exp[0], I"undisplayed")) L->plainer = TRUE; else if (Str::eq(mr3.exp[0], I"hyperlinked")) L->enable_hyperlinks = TRUE; else { @@ -536,41 +536,41 @@ long forms |@define|, |@enum| and |@heading|, and plain old |@| remain. @ = extract_mode = FALSE; - if (Str::eq_wide_string(command_text, L"Purpose:")) @ - else if (Str::eq_wide_string(command_text, L"Interface:")) @ - else if (Str::eq_wide_string(command_text, L"Definitions:")) @ - else if (Regexp::match(&mr, command_text, L"----+")) @ - else if ((Str::eq_wide_string(command_text, L"c")) || - (Str::eq_wide_string(command_text, L"x")) || - ((S->md->using_syntax == V1_SYNTAX) && (Str::eq_wide_string(command_text, L"e")))) + if (Str::eq_wide_string(command_text, U"Purpose:")) @ + else if (Str::eq_wide_string(command_text, U"Interface:")) @ + else if (Str::eq_wide_string(command_text, U"Definitions:")) @ + else if (Regexp::match(&mr, command_text, U"----+")) @ + else if ((Str::eq_wide_string(command_text, U"c")) || + (Str::eq_wide_string(command_text, U"x")) || + ((S->md->using_syntax == V1_SYNTAX) && (Str::eq_wide_string(command_text, U"e")))) @ - else if (Str::eq_wide_string(command_text, L"d")) @ - else if (Str::eq_wide_string(command_text, L"define")) { + else if (Str::eq_wide_string(command_text, U"d")) @ + else if (Str::eq_wide_string(command_text, U"define")) { if (S->md->using_syntax < V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@define' for definitions (use '@d' instead)", V2_SYNTAX); @; - } else if (Str::eq_wide_string(command_text, L"default")) { + } else if (Str::eq_wide_string(command_text, U"default")) { if (S->md->using_syntax < V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@default' for definitions", V2_SYNTAX); L->default_defn = TRUE; @; - } else if (Str::eq_wide_string(command_text, L"enum")) @ - else if ((Str::eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX)) + } else if (Str::eq_wide_string(command_text, U"enum")) @ + else if ((Str::eq_wide_string(command_text, U"e")) && (S->md->using_syntax >= V2_SYNTAX)) @ else { int weight = -1, new_page = FALSE; - if (Str::eq_wide_string(command_text, L"")) weight = ORDINARY_WEIGHT; - if ((Str::eq_wide_string(command_text, L"h")) || (Str::eq_wide_string(command_text, L"heading"))) { + if (Str::eq_wide_string(command_text, U"")) weight = ORDINARY_WEIGHT; + if ((Str::eq_wide_string(command_text, U"h")) || (Str::eq_wide_string(command_text, U"heading"))) { if (S->md->using_syntax < V2_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@h' or '@heading' for headings (use '@p' instead)", V2_SYNTAX); weight = SUBHEADING_WEIGHT; } - if (Str::eq_wide_string(command_text, L"p")) { + if (Str::eq_wide_string(command_text, U"p")) { if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@p' for headings (use '@h' instead)", V1_SYNTAX); weight = SUBHEADING_WEIGHT; } - if (Str::eq_wide_string(command_text, L"pp")) { + if (Str::eq_wide_string(command_text, U"pp")) { if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@pp' for super-headings", V1_SYNTAX); weight = SUBHEADING_WEIGHT; new_page = TRUE; @@ -641,9 +641,9 @@ follows: if (S->md->using_syntax > V1_SYNTAX) Parser::wrong_version(S->md->using_syntax, L, "'@c' and '@x'", V1_SYNTAX); L->category = BEGIN_CODE_LCAT; - if ((Str::eq_wide_string(command_text, L"e")) && (current_paragraph)) + if ((Str::eq_wide_string(command_text, U"e")) && (current_paragraph)) current_paragraph->placed_early = TRUE; - if (Str::eq_wide_string(command_text, L"x")) code_lcat_for_body = TEXT_EXTRACT_LCAT; + if (Str::eq_wide_string(command_text, U"x")) code_lcat_for_body = TEXT_EXTRACT_LCAT; else code_lcat_for_body = CODE_BODY_LCAT; code_pl_for_body = NULL; comment_mode = FALSE; @@ -658,7 +658,7 @@ C preprocessor macros, Inform 6 |Constant|s, and so on. code_lcat_for_body = CONT_DEFINITION_LCAT; code_pl_for_body = NULL; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, remainder, L"(%C+) (%c+)")) { + if (Regexp::match(&mr, remainder, U"(%C+) (%c+)")) { L->text_operand = Str::duplicate(mr.exp[0]); /* name of term defined */ L->text_operand2 = Str::duplicate(mr.exp[1]); /* Value */ } else { @@ -688,10 +688,10 @@ enumerated sort of |@d|. DISCARD_TEXT(before) DISCARD_TEXT(after) Str::trim_white_space(L->text_operand); - if (Regexp::match(&mr, L->text_operand, L"(%C+) from (%c+)")) { + if (Regexp::match(&mr, L->text_operand, U"(%C+) from (%c+)")) { from = mr.exp[1]; Str::copy(L->text_operand, mr.exp[0]); - } else if (Regexp::match(&mr, L->text_operand, L"(%C+) (%c+)")) { + } else if (Regexp::match(&mr, L->text_operand, U"(%C+) (%c+)")) { Main::error_in_web(I"enumeration constants can't supply a value", L); } L->text_operand2 = Str::new(); @@ -734,10 +734,10 @@ will be woven exactly as the succeeding lines will be. if (weight == SUBHEADING_WEIGHT) L->category = HEADING_START_LCAT; L->text_operand = Str::new(); /* title */ match_results mr = Regexp::create_mr(); - if ((weight == SUBHEADING_WEIGHT) && (Regexp::match(&mr, remainder, L"(%c+). (%c+)"))) { + if ((weight == SUBHEADING_WEIGHT) && (Regexp::match(&mr, remainder, U"(%c+). (%c+)"))) { L->text_operand = Str::duplicate(mr.exp[0]); L->text_operand2 = Str::duplicate(mr.exp[1]); - } else if ((weight == SUBHEADING_WEIGHT) && (Regexp::match(&mr, remainder, L"(%c+). *"))) { + } else if ((weight == SUBHEADING_WEIGHT) && (Regexp::match(&mr, remainder, U"(%c+). *"))) { L->text_operand = Str::duplicate(mr.exp[0]); L->text_operand2 = Str::new(); } else { @@ -818,7 +818,7 @@ typedef struct paragraph { @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L">> (%c+)")) { + if (Regexp::match(&mr, L->text, U">> (%c+)")) { L->category = SOURCE_DISPLAY_LCAT; L->text_operand = Str::duplicate(mr.exp[0]); } @@ -856,7 +856,7 @@ is not elegant but handles the back end of both possibilities. text_stream *Parser::extract_purpose(text_stream *prologue, source_line *XL, section *S, source_line **adjust) { text_stream *P = Str::duplicate(prologue); while ((XL) && (XL->next_line) && (XL->owning_section == S) && - (((adjust) && (isalnum(Str::get_first_char(XL->text)))) || + (((adjust) && (Characters::isalnum(Str::get_first_char(XL->text)))) || ((!adjust) && (XL->category == COMMENT_BODY_LCAT)))) { WRITE_TO(P, " %S", XL->text); XL->category = PURPOSE_BODY_LCAT; @@ -990,34 +990,34 @@ text_stream *Parser::dimensions(text_stream *item, int *w, int *h, source_line * *w = -1; *h = -1; text_stream *use = item; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, item, L"(%c+) at (%d+) by (%d+)")) { + if (Regexp::match(&mr, item, U"(%c+) at (%d+) by (%d+)")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at X by Y", V2_SYNTAX); *w = Str::atoi(mr.exp[1], 0); *h = Str::atoi(mr.exp[2], 0); use = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, item, L"(%c+) at height (%d+)")) { + } else if (Regexp::match(&mr, item, U"(%c+) at height (%d+)")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at height Y", V2_SYNTAX); *h = Str::atoi(mr.exp[1], 0); use = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, item, L"(%c+) at width (%d+)")) { + } else if (Regexp::match(&mr, item, U"(%c+) at width (%d+)")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at width Y", V2_SYNTAX); *w = Str::atoi(mr.exp[1], 0); use = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, item, L"(%c+) at (%d+)cm by (%d+)cm")) { + } else if (Regexp::match(&mr, item, U"(%c+) at (%d+)cm by (%d+)cm")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at Xcm by Ycm", V2_SYNTAX); *w = POINTS_PER_CM*Str::atoi(mr.exp[1], 0); *h = POINTS_PER_CM*Str::atoi(mr.exp[2], 0); use = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, item, L"(%c+) at height (%d+)cm")) { + } else if (Regexp::match(&mr, item, U"(%c+) at height (%d+)cm")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at height Ycm", V2_SYNTAX); *h = POINTS_PER_CM*Str::atoi(mr.exp[1], 0); use = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, item, L"(%c+) at width (%d+)cm")) { + } else if (Regexp::match(&mr, item, U"(%c+) at width (%d+)cm")) { if (sv < V2_SYNTAX) Parser::wrong_version(sv, L, "at width Ycm", V2_SYNTAX); *w = POINTS_PER_CM*Str::atoi(mr.exp[1], 0); diff --git a/Chapter 2/The Reader.w b/Chapter 2/The Reader.w index b451dc65..456cfe99 100644 --- a/Chapter 2/The Reader.w +++ b/Chapter 2/The Reader.w @@ -360,11 +360,11 @@ translates to when it's used on the command line. = int Reader::range_within(text_stream *range1, text_stream *range2) { - if (Str::eq_wide_string(range2, L"0")) return TRUE; + if (Str::eq_wide_string(range2, U"0")) return TRUE; if (Str::eq(range1, range2)) return TRUE; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, range2, L"%c+/%c+")) { Regexp::dispose_of(&mr); return FALSE; } - if (Regexp::match(&mr, range1, L"(%c+)/%c+")) { + if (Regexp::match(&mr, range2, U"%c+/%c+")) { Regexp::dispose_of(&mr); return FALSE; } + if (Regexp::match(&mr, range1, U"(%c+)/%c+")) { if (Str::eq(mr.exp[0], range2)) { Regexp::dispose_of(&mr); return TRUE; } } return FALSE; diff --git a/Chapter 3/The Analyser.w b/Chapter 3/The Analyser.w index 5c5709ed..0e91d903 100644 --- a/Chapter 3/The Analyser.w +++ b/Chapter 3/The Analyser.w @@ -62,7 +62,7 @@ void Analyser::catalogue_the_sections(web *W, text_stream *range, int form) { DISCARD_TEXT(main_title) } LOOP_OVER_LINKED_LIST(C, chapter, W->chapters) - if ((Str::eq_wide_string(range, L"0")) || (Str::eq(range, C->md->ch_range))) { + if ((Str::eq_wide_string(range, U"0")) || (Str::eq(range, C->md->ch_range))) { PRINT(" -----\n"); LOOP_OVER_LINKED_LIST(S, section, C->sections) { TEMPORARY_TEXT(main_title) diff --git a/Chapter 3/The Collater.w b/Chapter 3/The Collater.w index 7fb9be1d..89008633 100644 --- a/Chapter 3/The Collater.w +++ b/Chapter 3/The Collater.w @@ -141,11 +141,11 @@ void Collater::process(text_stream *OUT, collater_state *cls) { } @ = - if (Regexp::match(&mr, tl, L"(%c*?) ")) Str::copy(tl, mr.exp[0]); /* Strip trailing spaces */ + if (Regexp::match(&mr, tl, U"(%c*?) ")) Str::copy(tl, mr.exp[0]); /* Strip trailing spaces */ if (TRACE_COLLATER_EXECUTION) @; - if ((Regexp::match(&mr, tl, L"%[%[(%c+)%]%]")) || - (Regexp::match(&mr, tl, L" %[%[(%c+)%]%]"))) { + if ((Regexp::match(&mr, tl, U"%[%[(%c+)%]%]")) || + (Regexp::match(&mr, tl, U" %[%[(%c+)%]%]"))) { TEMPORARY_TEXT(command) Str::copy(command, mr.exp[0]); @; @@ -186,7 +186,7 @@ chapter as its value during the sole iteration. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, command, L"Select (%c*)")) { + if (Regexp::match(&mr, command, U"Select (%c*)")) { chapter *C; section *S; LOOP_OVER_LINKED_LIST(C, chapter, cls->for_web->chapters) @@ -211,7 +211,7 @@ chapter as its value during the sole iteration. @ Conditionals: @ = - if (Regexp::match(&mr, command, L"If (%c*)")) { + if (Regexp::match(&mr, command, U"If (%c*)")) { text_stream *condition = mr.exp[0]; int level = IF_FALSE_LEVEL; if (Str::eq(condition, I"Chapters")) { @@ -254,7 +254,7 @@ chapter as its value during the sole iteration. } @ = - if (Regexp::match(&mr, command, L"Else")) { + if (Regexp::match(&mr, command, U"Else")) { if (cls->sp <= 0) { Errors::at_position("Else without If", cls->errors_at, lpos); @@ -277,9 +277,9 @@ chapter as its value during the sole iteration. @ = int loop_level = 0; - if (Regexp::match(&mr, command, L"Repeat Module")) loop_level = MODULE_LEVEL; - if (Regexp::match(&mr, command, L"Repeat Chapter")) loop_level = CHAPTER_LEVEL; - if (Regexp::match(&mr, command, L"Repeat Section")) loop_level = SECTION_LEVEL; + if (Regexp::match(&mr, command, U"Repeat Module")) loop_level = MODULE_LEVEL; + if (Regexp::match(&mr, command, U"Repeat Chapter")) loop_level = CHAPTER_LEVEL; + if (Regexp::match(&mr, command, U"Repeat Section")) loop_level = SECTION_LEVEL; if (loop_level != 0) { linked_list_item *from = NULL, *to = NULL; linked_list_item *CI = FIRST_ITEM_IN_LINKED_LIST(chapter, cls->for_web->chapters); @@ -299,7 +299,7 @@ chapter as its value during the sole iteration. @ = from = CI; to = LAST_ITEM_IN_LINKED_LIST(chapter, cls->for_web->chapters); - if (Str::eq_wide_string(cls->restrict_to_range, L"0") == FALSE) { + if (Str::eq_wide_string(cls->restrict_to_range, U"0") == FALSE) { chapter *C; LOOP_OVER_LINKED_LIST(C, chapter, cls->for_web->chapters) if (Str::eq(C->md->ch_range, cls->restrict_to_range)) { @@ -328,9 +328,9 @@ chapter as its value during the sole iteration. @ = int end_form = -1; - if (Regexp::match(&mr, command, L"End Repeat")) end_form = 1; - if (Regexp::match(&mr, command, L"End Select")) end_form = 2; - if (Regexp::match(&mr, command, L"End If")) end_form = 3; + if (Regexp::match(&mr, command, U"End Repeat")) end_form = 1; + if (Regexp::match(&mr, command, U"End Select")) end_form = 2; + if (Regexp::match(&mr, command, U"End If")) end_form = 3; if (end_form > 0) { if (cls->sp <= 0) { Errors::at_position("stack underflow on contents template", @@ -475,44 +475,44 @@ used by the HTML renderer, would cause a modest-sized explosion on some pages. match_results mr = Regexp::create_mr(); if (Bibliographic::data_exists(cls->for_web->md, varname)) { @; - } else if (Regexp::match(&mr, varname, L"Navigation")) { + } else if (Regexp::match(&mr, varname, U"Navigation")) { @; - } else if (Regexp::match(&mr, varname, L"Breadcrumbs")) { + } else if (Regexp::match(&mr, varname, U"Breadcrumbs")) { @; - } else if (Str::eq_wide_string(varname, L"Plugins")) { + } else if (Str::eq_wide_string(varname, U"Plugins")) { @; - } else if (Regexp::match(&mr, varname, L"Complete (%c+)")) { + } else if (Regexp::match(&mr, varname, U"Complete (%c+)")) { text_stream *detail = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Module (%c+)")) { + } else if (Regexp::match(&mr, varname, U"Module (%c+)")) { text_stream *detail = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Chapter (%c+)")) { + } else if (Regexp::match(&mr, varname, U"Chapter (%c+)")) { text_stream *detail = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Section (%c+)")) { + } else if (Regexp::match(&mr, varname, U"Section (%c+)")) { text_stream *detail = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Docs")) { + } else if (Regexp::match(&mr, varname, U"Docs")) { @; - } else if (Regexp::match(&mr, varname, L"Assets")) { + } else if (Regexp::match(&mr, varname, U"Assets")) { @; - } else if (Regexp::match(&mr, varname, L"URL \"(%c+)\"")) { + } else if (Regexp::match(&mr, varname, U"URL \"(%c+)\"")) { text_stream *link_text = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Link \"(%c+)\"")) { + } else if (Regexp::match(&mr, varname, U"Link \"(%c+)\"")) { text_stream *link_text = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Menu \"(%c+)\"")) { + } else if (Regexp::match(&mr, varname, U"Menu \"(%c+)\"")) { text_stream *menu_name = mr.exp[0]; @; - } else if (Regexp::match(&mr, varname, L"Item \"(%c+)\"")) { + } else if (Regexp::match(&mr, varname, U"Item \"(%c+)\"")) { text_stream *item_name = mr.exp[0]; text_stream *icon_text = NULL; @; text_stream *link_text = item_name; @; - } else if (Regexp::match(&mr, varname, L"Item \"(%c+)\" -> (%c+)")) { + } else if (Regexp::match(&mr, varname, U"Item \"(%c+)\" -> (%c+)")) { text_stream *item_name = mr.exp[0]; text_stream *link_text = mr.exp[1]; text_stream *icon_text = NULL; @@ -520,7 +520,7 @@ used by the HTML renderer, would cause a modest-sized explosion on some pages. @; } else { WRITE_TO(substituted, "%S", varname); - if (Regexp::match(&mr, varname, L"%i+%c*")) + if (Regexp::match(&mr, varname, U"%i+%c*")) PRINT("Warning: unable to resolve command '%S'\n", varname); } Regexp::dispose_of(&mr); @@ -583,14 +583,14 @@ this will recursively call The Collater, in fact. else @; @ = - if (Str::eq_wide_string(detail, L"Title")) { + if (Str::eq_wide_string(detail, U"Title")) { text_stream *owner = Collater::module_owner(M, cls->for_web); if (Str::len(owner) > 0) WRITE_TO(substituted, "%S/", owner); WRITE_TO(substituted, "%S", M->module_name); - } else if (Str::eq_wide_string(detail, L"Page")) { + } else if (Str::eq_wide_string(detail, U"Page")) { if (Colonies::find(M->module_name)) Colonies::reference_URL(substituted, M->module_name, cls->into_file); - } else if (Str::eq_wide_string(detail, L"Purpose")) { + } else if (Str::eq_wide_string(detail, U"Purpose")) { TEMPORARY_TEXT(url) WRITE_TO(url, "%p", M->module_location); Readme::write_var(substituted, url, I"Purpose"); @@ -610,11 +610,11 @@ this will recursively call The Collater, in fact. else @; @ = - if (Str::eq_wide_string(detail, L"Title")) { + if (Str::eq_wide_string(detail, U"Title")) { Str::copy(substituted, C->md->ch_title); - } else if (Str::eq_wide_string(detail, L"Code")) { + } else if (Str::eq_wide_string(detail, U"Code")) { Str::copy(substituted, C->md->ch_range); - } else if (Str::eq_wide_string(detail, L"Purpose")) { + } else if (Str::eq_wide_string(detail, U"Purpose")) { Str::copy(substituted, C->md->rubric); } else if (Formats::substitute_post_processing_data(substituted, C->ch_weave, detail, cls->nav_pattern)) { @@ -634,21 +634,21 @@ this will recursively call The Collater, in fact. else @; @ = - if (Str::eq_wide_string(detail, L"Title")) { + if (Str::eq_wide_string(detail, U"Title")) { Str::copy(substituted, S->md->sect_title); - } else if (Str::eq_wide_string(detail, L"Purpose")) { + } else if (Str::eq_wide_string(detail, U"Purpose")) { Str::copy(substituted, S->sect_purpose); - } else if (Str::eq_wide_string(detail, L"Code")) { + } else if (Str::eq_wide_string(detail, U"Code")) { Str::copy(substituted, S->md->sect_range); - } else if (Str::eq_wide_string(detail, L"Lines")) { + } else if (Str::eq_wide_string(detail, U"Lines")) { WRITE_TO(substituted, "%d", S->sect_extent); - } else if (Str::eq_wide_string(detail, L"Source")) { + } else if (Str::eq_wide_string(detail, U"Source")) { WRITE_TO(substituted, "%f", S->md->source_file_for_section); - } else if (Str::eq_wide_string(detail, L"Page")) { + } else if (Str::eq_wide_string(detail, U"Page")) { Colonies::section_URL(substituted, S->md); - } else if (Str::eq_wide_string(detail, L"Paragraphs")) { + } else if (Str::eq_wide_string(detail, U"Paragraphs")) { WRITE_TO(substituted, "%d", S->sect_paragraphs); - } else if (Str::eq_wide_string(detail, L"Mean")) { + } else if (Str::eq_wide_string(detail, U"Mean")) { int denom = S->sect_paragraphs; if (denom == 0) denom = 1; WRITE_TO(substituted, "%d", S->sect_extent/denom); @@ -690,10 +690,10 @@ navigation purposes. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, item_name, L"<(%i+.%i+)> *(%c*)")) { + if (Regexp::match(&mr, item_name, U"<(%i+.%i+)> *(%c*)")) { icon_text = Str::duplicate(mr.exp[0]); item_name = Str::duplicate(mr.exp[1]); - } else if (Regexp::match(&mr, item_name, L"(%c*?) *<(%i+.%i+)>")) { + } else if (Regexp::match(&mr, item_name, U"(%c*?) *<(%i+.%i+)>")) { icon_text = Str::duplicate(mr.exp[1]); item_name = Str::duplicate(mr.exp[0]); } diff --git a/Chapter 3/The Weaver of Text.w b/Chapter 3/The Weaver of Text.w index a6277272..ccfd682a 100644 --- a/Chapter 3/The Weaver of Text.w +++ b/Chapter 3/The Weaver of Text.w @@ -73,9 +73,9 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre TEMPORARY_TEXT(after) Str::substr(after, Str::at(matter, i), Str::end(matter)); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) { + if (Regexp::match(&mr, after, U"(https*://%C+)(%c*)")) { while (TextWeaver::boundary_character(FALSE, Str::get_last_char(mr.exp[0]))) { - wchar_t c = Str::get_last_char(mr.exp[0]); + inchar32_t c = Str::get_last_char(mr.exp[0]); Str::delete_last_character(mr.exp[0]); TEMPORARY_TEXT(longer) WRITE_TO(longer, "%c%S", c, mr.exp[1]); @@ -197,7 +197,7 @@ so that |http://| won't trigger a cross-reference with the standard |//| xref notation. = -int TextWeaver::boundary_character(int before, wchar_t c) { +int TextWeaver::boundary_character(int before, inchar32_t c) { if (c == 0) return TRUE; if (Characters::is_whitespace(c)) return TRUE; if ((c == '.') || (c == ',') || (c == '!') || (c == '?') || (c == ';') || @@ -263,7 +263,7 @@ void TextWeaver::source_code(heterogeneous_tree *tree, tree_node *ap, TEMPORARY_TEXT(after) Str::substr(after, Str::at(matter, i), Str::end(matter)); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) { + if (Regexp::match(&mr, after, U"(https*://%C+)(%c*)")) { tree_node *U = WeaveTree::url(tree, mr.exp[0], mr.exp[0], TRUE); TextWeaver::source_code_piece(tree, ap, matter, colouring, from, i); Trees::make_child(U, ap); diff --git a/Chapter 3/The Weaver.w b/Chapter 3/The Weaver.w index 47df953b..ae092f8b 100644 --- a/Chapter 3/The Weaver.w +++ b/Chapter 3/The Weaver.w @@ -361,7 +361,7 @@ add a vertical skip between them to show the division more clearly. if ((L->next_line) && (L->next_line->category == COMMENT_BODY_LCAT)) { match_results mr = Regexp::create_mr(); if ((state->kind_of_material != CODE_MATERIAL) || - (Regexp::match(&mr, matter, L"\t|(%c*)|(%c*?)"))) + (Regexp::match(&mr, matter, U"\t|(%c*)|(%c*?)"))) Trees::make_child(WeaveTree::vskip(tree, TRUE), state->ap); Regexp::dispose_of(&mr); } @@ -373,19 +373,19 @@ add a vertical skip between them to show the division more clearly. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, matter, L"%(-...%) (%c*)")) { /* continue double */ + if (Regexp::match(&mr, matter, U"%(-...%) (%c*)")) { /* continue double */ Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees::make_child(WeaveTree::weave_item_node(tree, 2, I""), state->ap); Str::copy(matter, mr.exp[0]); - } else if (Regexp::match(&mr, matter, L"%(...%) (%c*)")) { /* continue single */ + } else if (Regexp::match(&mr, matter, U"%(...%) (%c*)")) { /* continue single */ Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees::make_child(WeaveTree::weave_item_node(tree, 1, I""), state->ap); Str::copy(matter, mr.exp[0]); - } else if (Regexp::match(&mr, matter, L"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */ + } else if (Regexp::match(&mr, matter, U"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */ Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees::make_child(WeaveTree::weave_item_node(tree, 2, mr.exp[0]), state->ap); Str::copy(matter, mr.exp[1]); - } else if (Regexp::match(&mr, matter, L"%(([a-zA-Z0-9*]+)%) (%c*)")) { /* begin single */ + } else if (Regexp::match(&mr, matter, U"%(([a-zA-Z0-9*]+)%) (%c*)")) { /* begin single */ Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees::make_child(WeaveTree::weave_item_node(tree, 1, mr.exp[0]), state->ap); Str::copy(matter, mr.exp[1]); @@ -397,7 +397,7 @@ in the source is set indented in code style. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, matter, L"\t|(%c*)|(%c*?)")) { + if (Regexp::match(&mr, matter, U"\t|(%c*)|(%c*?)")) { TEMPORARY_TEXT(original) Weaver::change_material(tree, state, CODE_MATERIAL, FALSE, NULL, NULL); Str::copy(original, mr.exp[0]); @@ -528,15 +528,15 @@ example, or flush left. @ = if (L->category == BEGIN_DEFINITION_LCAT) { match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, matter, L"@d (%c*)")) || - (Regexp::match(&mr, matter, L"@define (%c*)"))) { + if ((Regexp::match(&mr, matter, U"@d (%c*)")) || + (Regexp::match(&mr, matter, U"@define (%c*)"))) { Str::copy(prefatory, I"define"); Str::copy(matter, mr.exp[0]); - } else if (Regexp::match(&mr, matter, L"@default (%c*)")) { + } else if (Regexp::match(&mr, matter, U"@default (%c*)")) { Str::copy(prefatory, I"default"); Str::copy(matter, mr.exp[0]); - } else if ((Regexp::match(&mr, matter, L"@e (%c*)")) || - (Regexp::match(&mr, matter, L"@enum (%c*)"))) { + } else if ((Regexp::match(&mr, matter, U"@e (%c*)")) || + (Regexp::match(&mr, matter, U"@enum (%c*)"))) { Str::copy(prefatory, I"enum"); Str::copy(matter, mr.exp[0]); } @@ -556,7 +556,7 @@ example, or flush left. @ = match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, matter, L"(%c*?)%@%<(%c*?)%@%>(%c*)")) { + while (Regexp::match(&mr, matter, U"(%c*?)%@%<(%c*?)%@%>(%c*)")) { para_macro *pmac = Macros::find_by_name(mr.exp[1], S); if (pmac) { TEMPORARY_TEXT(front_colouring) diff --git a/Chapter 4/ACME Support.w b/Chapter 4/ACME Support.w index d5a663c2..05afeb21 100644 --- a/Chapter 4/ACME Support.w +++ b/Chapter 4/ACME Support.w @@ -63,7 +63,7 @@ void ACMESupport::expand(OUTPUT_STREAM, text_stream *prototype, text_stream *S, int N, filename *F) { if (Str::len(prototype) > 0) { for (int i=0; imd, I"Namespaces"), L"On")) + if (Str::eq_wide_string(Bibliographic::get_datum(W->md, I"Namespaces"), U"On")) check_namespaces = TRUE; language_function *fn; LOOP_OVER(fn, language_function) { diff --git a/Chapter 4/C-Like Languages.w b/Chapter 4/C-Like Languages.w index 78c8d9b7..d8c9f147 100644 --- a/Chapter 4/C-Like Languages.w +++ b/Chapter 4/C-Like Languages.w @@ -54,7 +54,7 @@ takes care of it automatically. if (Str::len(L->extract_to) == 0) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"typedef struct (%i+) %c*{%c*")) { + if (Regexp::match(&mr, L->text, U"typedef struct (%i+) %c*{%c*")) { current_str = Functions::new_struct(W, mr.exp[0], L); Tags::add_by_name(L->owning_paragraph, I"Structures"); } else if ((Str::get_first_char(L->text) == '}') && (current_str)) { @@ -62,8 +62,8 @@ takes care of it automatically. current_str = NULL; } else if ((current_str) && (current_str->typedef_ends == NULL)) { @; - } else if ((Regexp::match(&mr, L->text, L"typedef %c+")) && - (Regexp::match(&mr, L->text, L"%c+##%c+") == FALSE)) { + } else if ((Regexp::match(&mr, L->text, U"typedef %c+")) && + (Regexp::match(&mr, L->text, U"%c+##%c+") == FALSE)) { if (L->owning_paragraph->placed_very_early == FALSE) L->category = TYPEDEF_LCAT; } @@ -101,9 +101,9 @@ We need to extract the element name, |val|, and make a note of it. @ The following reduces |unsigned long long int *val;| to just |int *val;|. @ = - wchar_t *modifier_patterns[] = { - L"(struct )(%C%c*)", L"(signed )(%C%c*)", L"(unsigned )(%C%c*)", - L"(short )(%C%c*)", L"(long )(%C%c*)", L"(static )(%C%c*)", NULL }; + inchar32_t *modifier_patterns[] = { + U"(struct )(%C%c*)", U"(signed )(%C%c*)", U"(unsigned )(%C%c*)", + U"(short )(%C%c*)", U"(long )(%C%c*)", U"(static )(%C%c*)", NULL }; int seek_modifiers = TRUE; while (seek_modifiers) { seek_modifiers = FALSE; @@ -133,7 +133,7 @@ down to just the identifier characters at the front, i.e., to |val|. @ = Str::substr(elname, pos, Str::end(p)); - if (Regexp::match(&mr, elname, L"(%i+)%c*")) Str::copy(elname, mr.exp[0]); + if (Regexp::match(&mr, elname, U"(%i+)%c*")) Str::copy(elname, mr.exp[0]); @h Structure dependency. We say that S depends on T if |struct S| has an element whose type is @@ -155,7 +155,7 @@ will not trip the switch here. ((L) && (L != current_str->typedef_ends)); L = L->next_line) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L" struct (%i+) %i%c*")) + if (Regexp::match(&mr, L->text, U" struct (%i+) %i%c*")) @; Regexp::dispose_of(&mr); } @@ -201,15 +201,15 @@ void CLike::parse_functions(programming_language *self, web *W) { @ = match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, L->text, L" *#ifn*def %c+")) || - (Regexp::match(&mr, L->text, L" *#IFN*DEF %c+"))) { + if ((Regexp::match(&mr, L->text, U" *#ifn*def %c+")) || + (Regexp::match(&mr, L->text, U" *#IFN*DEF %c+"))) { if (cc_sp >= MAX_CONDITIONAL_COMPILATION_STACK) Main::error_in_web(I"conditional compilation too deeply nested", L); else cc_stack[cc_sp++] = L; } - if ((Regexp::match(&mr, L->text, L" *#endif *")) || - (Regexp::match(&mr, L->text, L" *#ENDIF *"))) { + if ((Regexp::match(&mr, L->text, U" *#endif *")) || + (Regexp::match(&mr, L->text, U" *#ENDIF *"))) { if (cc_sp <= 0) Main::error_in_web(I"found #endif without #ifdef or #ifndef", L); else @@ -232,7 +232,7 @@ modern ANSI C style, not the long-deprecated late 1970s C style. Str::copy(modified, L->text); @; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, modified, L"(%i+) (%**)(%i+)%((%c*)")) { + if (Regexp::match(&mr, modified, U"(%i+) (%**)(%i+)%((%c*)")) { TEMPORARY_TEXT(ftype) Str::copy(ftype, mr.exp[0]); TEMPORARY_TEXT(asts) Str::copy(asts, mr.exp[1]); TEMPORARY_TEXT(fname) Str::copy(fname, mr.exp[2]); @@ -253,9 +253,9 @@ can't apply to the return type of a function. We do, however, iterate so that forms like |static long long int| will work. @ = - wchar_t *modifier_patterns[] = { - L"(signed )(%C%c*)", L"(unsigned )(%C%c*)", - L"(short )(%C%c*)", L"(long )(%C%c*)", L"(static )(%C%c*)", NULL }; + inchar32_t *modifier_patterns[] = { + U"(signed )(%C%c*)", U"(unsigned )(%C%c*)", + U"(short )(%C%c*)", U"(long )(%C%c*)", U"(static )(%C%c*)", NULL }; int seek_modifiers = TRUE; while (seek_modifiers) { seek_modifiers = FALSE; @@ -274,7 +274,7 @@ forms like |static long long int| will work. language_function *fn = Functions::new_function(fname, L); fn->function_arguments = Str::duplicate(arguments); WRITE_TO(fn->function_type, "%S%S %S", qualifiers, ftype, asts); - if (Str::eq_wide_string(fn->function_name, L"isdigit")) fn->call_freely = TRUE; + if (Str::eq_wide_string(fn->function_name, U"isdigit")) fn->call_freely = TRUE; fn->no_conditionals = cc_sp; for (int i=0; iwithin_conditionals[i] = cc_stack[i]; @@ -315,12 +315,12 @@ look for a |#include| of one of the ANSI C standard libraries. = void CLike::subcategorise_code(programming_language *self, source_line *L) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"#include <(%C+)>%c*")) { + if (Regexp::match(&mr, L->text, U"#include <(%C+)>%c*")) { text_stream *library_file = mr.exp[0]; - wchar_t *ansi_libs[] = { - L"assert.h", L"ctype.h", L"errno.h", L"float.h", L"limits.h", - L"locale.h", L"math.h", L"setjmp.h", L"signal.h", L"stdarg.h", - L"stddef.h", L"stdio.h", L"stdlib.h", L"string.h", L"time.h", + inchar32_t *ansi_libs[] = { + U"assert.h", U"ctype.h", U"errno.h", U"float.h", U"limits.h", + U"locale.h", U"math.h", U"setjmp.h", U"signal.h", U"stdarg.h", + U"stddef.h", U"stdio.h", U"stdlib.h", U"string.h", U"time.h", NULL }; for (int j = 0; ansi_libs[j]; j++) @@ -450,7 +450,7 @@ exist either way. for (int i=0; ino_conditionals; i++) { match_results mr = Regexp::create_mr(); if (!(Regexp::match(&mr, fn->within_conditionals[i]->text, - L"%c*inweb: always predeclare%c*"))) { + U"%c*inweb: always predeclare%c*"))) { WRITE("%S\n", fn->within_conditionals[i]->text); to_close++; } diff --git a/Chapter 4/InC Support.w b/Chapter 4/InC Support.w index f15f7bf9..aff87397 100644 --- a/Chapter 4/InC Support.w +++ b/Chapter 4/InC Support.w @@ -78,20 +78,20 @@ but optionally a question mark |?| to indicate voracity. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"(<%p+>) ::=%c*")) { + if (Regexp::match(&mr, L->text, U"(<%p+>) ::=%c*")) { form = A_GRAMMAR_NONTERMINAL; Str::copy(pntname, mr.exp[0]); Str::copy(header, mr.exp[0]); @; - } else if (Regexp::match(&mr, L->text, L"((<%p+>) internal %?) {%c*")) { + } else if (Regexp::match(&mr, L->text, U"((<%p+>) internal %?) {%c*")) { form = A_VORACIOUS_NONTERMINAL; Str::copy(pntname, mr.exp[1]); Str::copy(header, mr.exp[0]); - } else if (Regexp::match(&mr, L->text, L"((<%p+>) internal) {%c*")) { + } else if (Regexp::match(&mr, L->text, U"((<%p+>) internal) {%c*")) { form = A_FLEXIBLE_NONTERMINAL; Str::copy(pntname, mr.exp[1]); Str::copy(header, mr.exp[0]); - } else if (Regexp::match(&mr, L->text, L"((<%p+>) internal (%d+)) {%c*")) { + } else if (Regexp::match(&mr, L->text, U"((<%p+>) internal (%d+)) {%c*")) { form = Str::atoi(mr.exp[2], 0); Str::copy(pntname, mr.exp[1]); Str::copy(header, mr.exp[0]); @@ -134,7 +134,7 @@ typedef struct preform_nonterminal { @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, pntname, L"%<(%c*)%>")) pnt->unangled_name = Str::duplicate(mr.exp[0]); + if (Regexp::match(&mr, pntname, U"%<(%c*)%>")) pnt->unangled_name = Str::duplicate(mr.exp[0]); Regexp::dispose_of(&mr); @ When the program we are tangling is eventually running, each nonterminal @@ -163,8 +163,8 @@ the following definition: pnt->takes_pointer_result = FALSE; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, pnt->nt_name, L"takes_pointer_result = TRUE; - if (Regexp::match(&mr, pnt->nt_name, L"takes_pointer_result = TRUE; + if (Regexp::match(&mr, pnt->nt_name, U"takes_pointer_result = TRUE; + if (Regexp::match(&mr, pnt->nt_name, U"takes_pointer_result = TRUE; Regexp::dispose_of(&mr); int min = 1, max = form; @@ -221,7 +221,7 @@ then the text on the left goes into |text_operand| and the right into if (Regexp::string_is_white_space(AL->text)) break; AL->category = PREFORM_GRAMMAR_LCAT; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, AL->text, L"(%c+?) ==> (%c*)")) { + if (Regexp::match(&mr, AL->text, U"(%c+?) ==> (%c*)")) { AL->text_operand = Str::duplicate(mr.exp[0]); AL->text_operand2 = Str::duplicate(mr.exp[1]); } else { @@ -242,7 +242,7 @@ trust me, it's correct. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, AL->text_operand, L"(%c*)%/%*%c*%*%/ *")) + if (Regexp::match(&mr, AL->text_operand, U"(%c*)%/%*%c*%*%/ *")) AL->text_operand = Str::duplicate(mr.exp[0]); Regexp::dispose_of(&mr); @@ -253,11 +253,11 @@ they have the type |structure *|. @ = TEMPORARY_TEXT(to_scan) Str::copy(to_scan, AL->text_operand2); match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, to_scan, L"%c*?<<(%P+?)>> =(%c*)")) { + while (Regexp::match(&mr, to_scan, U"%c*?<<(%P+?)>> =(%c*)")) { TEMPORARY_TEXT(var_given) Str::copy(var_given, mr.exp[0]); TEMPORARY_TEXT(type_given) WRITE_TO(type_given, "int"); Str::copy(to_scan, mr.exp[1]); - if (Regexp::match(&mr, var_given, L"(%p+):%p+")) { + if (Regexp::match(&mr, var_given, U"(%p+):%p+")) { Str::clear(type_given); WRITE_TO(type_given, "%S *", mr.exp[0]); } @@ -390,11 +390,11 @@ in any program using Preform. For the Inform project, that's done in the = int InCSupport::special_tangle_command(programming_language *me, OUTPUT_STREAM, text_stream *data) { - if (Str::eq_wide_string(data, L"nonterminals")) { + if (Str::eq_wide_string(data, U"nonterminals")) { WRITE("register_tangled_nonterminals();\n"); return TRUE; } - if (Str::eq_wide_string(data, L"textliterals")) { + if (Str::eq_wide_string(data, U"textliterals")) { WRITE("register_tangled_text_literals();\n"); return TRUE; } @@ -427,7 +427,7 @@ void InCSupport::additional_predeclarations(programming_language *self, text_str LOOP_OVER(ntv, nonterminal_variable) WRITE("%S %S = %s;\n", ntv->ntv_type, ntv->ntv_identifier, - (Str::eq_wide_string(ntv->ntv_type, L"int"))?"0":"NULL"); + (Str::eq_wide_string(ntv->ntv_type, U"int"))?"0":"NULL"); WRITE("void register_tangled_nonterminals(void);\n"); @@ -451,13 +451,13 @@ void InCSupport::gnabehs(programming_language *self, text_stream *OUT, web *W) { preform_nonterminal *pnt = L->preform_nonterminal_defined; LanguageMethods::insert_line_marker(OUT, W->main_language, L); if (pnt->as_function) { - WRITE("\tINTERNAL_NONTERMINAL(L\"%S\", %S, %d, %d);\n", + WRITE("\tINTERNAL_NONTERMINAL(U\"%S\", %S, %d, %d);\n", pnt->nt_name, pnt->as_C_identifier, pnt->min_word_count, pnt->max_word_count); WRITE("\t%S->voracious = %d;\n", pnt->as_C_identifier, pnt->voracious); } else { - WRITE("\tREGISTER_NONTERMINAL(L\"%S\", %S);\n", + WRITE("\tREGISTER_NONTERMINAL(U\"%S\", %S);\n", pnt->nt_name, pnt->as_C_identifier); } } @@ -465,7 +465,7 @@ void InCSupport::gnabehs(programming_language *self, text_stream *OUT, web *W) { WRITE("void register_tangled_text_literals(void) {\n"); INDENT; text_literal *tl; LOOP_OVER(tl, text_literal) - WRITE("%S = Str::literal(L\"%S\");\n", tl->tl_identifier, tl->tl_content); + WRITE("%S = Str::literal(U\"%S\");\n", tl->tl_identifier, tl->tl_content); OUTDENT; WRITE("}\n"); } @@ -611,7 +611,7 @@ nonterminal being parsed.) @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, formula, L"{ *(%c*?) *} *(%c*)")) { + if (Regexp::match(&mr, formula, U"{ *(%c*?) *} *(%c*)")) { TEMPORARY_TEXT(rewritten) WRITE_TO(rewritten, "=="); WRITE_TO(rewritten, "> { %S }", mr.exp[0]); @@ -619,7 +619,7 @@ nonterminal being parsed.) InCSupport::expand_formula(OUT, AL, pnt, mr.exp[1], TRUE); DISCARD_TEXT(rewritten) } else { - if (!Regexp::match(&mr, formula, L"@<%c*")) { + if (!Regexp::match(&mr, formula, U"@<%c*")) { if (pnt->takes_pointer_result) WRITE("*XP = "); else WRITE("*X = "); } @@ -636,7 +636,7 @@ void InCSupport::expand_formula(text_stream *OUT, source_line *AL, preform_nonte for (int i=0; i < Str::len(formula); i++) { if ((Str::get_at(formula, i) == 'W') && (Str::get_at(formula, i+1) == 'R') && (Str::get_at(formula, i+2) == '[') && - (isdigit(Str::get_at(formula, i+3))) && (Str::get_at(formula, i+4) == ']')) { + (Characters::isdigit(Str::get_at(formula, i+3))) && (Str::get_at(formula, i+4) == ']')) { if (pnt == NULL) { Main::error_in_web(I"'WR[...]' notation unavailable", AL); if (AL == NULL) WRITE_TO(STDERR, "%S\n", formula); @@ -701,7 +701,8 @@ Inform, where no misreadings occur. @ = if ((i > 0) && (Str::get_at(original, i) == ':') && (Str::get_at(original, i+1) == ':') && - (isalpha(Str::get_at(original, i+2))) && (isalnum(Str::get_at(original, i-1)))) { + (Characters::isalpha(Str::get_at(original, i+2))) && + (Characters::isalnum(Str::get_at(original, i-1)))) { WRITE("__"); i++; continue; } @@ -739,7 +740,7 @@ commas need to be outside of any parentheses. clause[0] = Str::new(); int bl = 0; for (int j = i+5; j < Str::len(original); j++) { - wchar_t c = Str::get_at(original, j); + inchar32_t c = Str::get_at(original, j); if ((c == ',') && (bl == 0)) { if (clauses >= MAX_PREFORM_RESULT_CLAUSES) err = TRUE; else { clause[clauses] = Str::new(); clauses++; } @@ -823,7 +824,7 @@ alter |*XP|, and sets |<>| to |R[2]|. WRITE(";"); break; default: { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, clause[c], L"<<(%P+)>> = *(%c*)")) { + if (Regexp::match(&mr, clause[c], U"<<(%P+)>> = *(%c*)")) { text_stream *putative = mr.exp[0]; text_stream *pv_identifier = InCSupport::nonterminal_variable_identifier(putative); @@ -850,7 +851,7 @@ just |<>|. match_results mr = Regexp::create_mr(); TEMPORARY_TEXT(check_this) Str::substr(check_this, Str::at(original, i), Str::end(original)); - if (Regexp::match(&mr, check_this, L"<<(%P+)>>%c*")) { + if (Regexp::match(&mr, check_this, U"<<(%P+)>>%c*")) { text_stream *putative = mr.exp[0]; text_stream *pv_identifier = InCSupport::nonterminal_variable_identifier(putative); if (pv_identifier) { @@ -882,7 +883,7 @@ and Inform doesn't cause any trouble. match_results mr = Regexp::create_mr(); TEMPORARY_TEXT(check_this) Str::substr(check_this, Str::at(original, i), Str::end(original)); - if (Regexp::match(&mr, check_this, L"(<%p+>)%c*")) { + if (Regexp::match(&mr, check_this, U"(<%p+>)%c*")) { text_stream *putative = mr.exp[0]; preform_nonterminal *pnt = InCSupport::nonterminal_by_name(putative); if (pnt) { @@ -928,8 +929,8 @@ not by Inweb. = text_stream *InCSupport::nonterminal_variable_identifier(text_stream *name) { - if (Str::eq_wide_string(name, L"r")) return I"most_recent_result"; - if (Str::eq_wide_string(name, L"rp")) return I"most_recent_result_p"; + if (Str::eq_wide_string(name, U"r")) return I"most_recent_result"; + if (Str::eq_wide_string(name, U"rp")) return I"most_recent_result_p"; nonterminal_variable *ntv; LOOP_OVER(ntv, nonterminal_variable) if (Str::eq(ntv->ntv_name, name)) @@ -997,7 +998,7 @@ assume.) AL = AL->next_line) { WRITE("%S", AL->text_operand); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, AL->text_operand2, L"%c+Issue (%c+) problem%c+")) + if (Regexp::match(&mr, AL->text_operand2, U"%c+Issue (%c+) problem%c+")) WRITE("[issues %S]", mr.exp[0]); WRITE("\n"); Regexp::dispose_of(&mr); @@ -1092,10 +1093,10 @@ int skipping_internal = FALSE, preform_production_count = 0; int InCSupport::skip_in_weaving(programming_language *self, weave_order *wv, source_line *L) { if ((Preform_theme) && (wv->theme_match == Preform_theme)) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, L->text, L"}%c*")) { + if (Regexp::match(&mr, L->text, U"}%c*")) { skipping_internal = FALSE; Regexp::dispose_of(&mr); return TRUE; } if (skipping_internal) { Regexp::dispose_of(&mr); return TRUE; } - if (Regexp::match(&mr, L->text, L"<%c*?> internal%c*")) skipping_internal = TRUE; + if (Regexp::match(&mr, L->text, U"<%c*?> internal%c*")) skipping_internal = TRUE; Regexp::dispose_of(&mr); } return FALSE; @@ -1119,7 +1120,7 @@ exists. We watch for it here: = void InCSupport::new_tag_declared(programming_language *self, theme_tag *tag) { - if (Str::eq_wide_string(tag->tag_name, L"Preform")) Preform_theme = tag; + if (Str::eq_wide_string(tag->tag_name, U"Preform")) Preform_theme = tag; } @h Analysis methods. @@ -1133,11 +1134,11 @@ void InCSupport::analyse_code(programming_language *self, web *W) { } int InCSupport::share_element(programming_language *self, text_stream *elname) { - if (Str::eq_wide_string(elname, L"word_ref1")) return TRUE; - if (Str::eq_wide_string(elname, L"word_ref2")) return TRUE; - if (Str::eq_wide_string(elname, L"next")) return TRUE; - if (Str::eq_wide_string(elname, L"down")) return TRUE; - if (Str::eq_wide_string(elname, L"allocation_id")) return TRUE; - if (Str::eq_wide_string(elname, L"method_set")) return TRUE; + if (Str::eq_wide_string(elname, U"word_ref1")) return TRUE; + if (Str::eq_wide_string(elname, U"word_ref2")) return TRUE; + if (Str::eq_wide_string(elname, U"next")) return TRUE; + if (Str::eq_wide_string(elname, U"down")) return TRUE; + if (Str::eq_wide_string(elname, U"allocation_id")) return TRUE; + if (Str::eq_wide_string(elname, U"method_set")) return TRUE; return FALSE; } diff --git a/Chapter 4/Types and Functions.w b/Chapter 4/Types and Functions.w index 3e5761bd..f8f5036c 100644 --- a/Chapter 4/Types and Functions.w +++ b/Chapter 4/Types and Functions.w @@ -149,7 +149,7 @@ part of the function structure. We'll need it when predeclaring the function. fn->call_freely = FALSE; fn->function_header_at = L; fn->usage_described = FALSE; - if ((Str::eq_wide_string(fname, L"main")) && + if ((Str::eq_wide_string(fname, U"main")) && (L->owning_section->sect_language->C_like)) fn->usage_described = TRUE; fn->no_conditionals = 0; @@ -179,11 +179,11 @@ leading to spurious extra text at the weaving stage. text_stream *declared_namespace = NULL; text_stream *ambient_namespace = L->owning_section->sect_namespace; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, fname, L"(%c+::)%c*")) { + if (Regexp::match(&mr, fname, U"(%c+::)%c*")) { declared_namespace = mr.exp[0]; fn->within_namespace = TRUE; - } else if ((Str::eq_wide_string(fname, L"main")) && - (Str::eq_wide_string(ambient_namespace, L"Main::"))) + } else if ((Str::eq_wide_string(fname, U"main")) && + (Str::eq_wide_string(ambient_namespace, U"Main::"))) declared_namespace = I"Main::"; if ((Str::ne(declared_namespace, ambient_namespace)) && (L->owning_paragraph->placed_very_early == FALSE)) { diff --git a/Chapter 5/HTML Formats.w b/Chapter 5/HTML Formats.w index 68575075..c4f9d88b 100644 --- a/Chapter 5/HTML Formats.w +++ b/Chapter 5/HTML Formats.w @@ -340,8 +340,8 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) { } else { while (TRUE) { int c = getc(B); - if (c == EOF) break; - PUT((wchar_t) c); + if (c == EOF) break; + PUT((inchar32_t) c); } BinaryFiles::close(B); } @@ -763,7 +763,7 @@ that service uses to identify the video/audio in question. if (N == N->parent->child) starts = TRUE; int current_colour = -1, colour_wanted = PLAIN_COLOUR; for (int i=0; i < Str::len(C->matter); i++) { - colour_wanted = Str::get_at(C->colouring, i); + colour_wanted = (int) Str::get_at(C->colouring, i); if (colour_wanted != current_colour) { if (current_colour >= 0) HTML_CLOSE("span"); HTMLFormat::change_colour(OUT, colour_wanted, hrs->colours); @@ -1003,7 +1003,7 @@ int HTMLFormat::begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *patt W->as_ebook = Epub::new(T, "P"); filename *CSS = Patterns::find_file_in_subdirectory(pattern, I"Base", I"Base.css"); Epub::use_CSS_throughout(W->as_ebook, CSS); - Epub::attach_metadata(W->as_ebook, L"identifier", T); + Epub::attach_metadata(W->as_ebook, U"identifier", T); DISCARD_TEXT(T) pathname *P = Reader::woven_folder(W); diff --git a/Chapter 5/TeX Format.w b/Chapter 5/TeX Format.w index 922fe781..1cdc5f37 100644 --- a/Chapter 5/TeX Format.w +++ b/Chapter 5/TeX Format.w @@ -401,7 +401,7 @@ void TeX::general_heading(text_stream *OUT, weave_order *wv, text_stream *TeX_macro = NULL; @; - if (P_literal == NULL) P_literal = Str::new_from_wide_string(L"P"); + if (P_literal == NULL) P_literal = Str::new_from_wide_string(U"P"); text_stream *orn = (P)?(P->ornament):P_literal; text_stream *N = (P)?(P->paragraph_number):NULL; TEMPORARY_TEXT(mark) @@ -409,7 +409,7 @@ void TeX::general_heading(text_stream *OUT, weave_order *wv, TEMPORARY_TEXT(modified) Str::copy(modified, heading_text); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, modified, L"(%c*?): (%c*)")) { + if (Regexp::match(&mr, modified, U"(%c*?): (%c*)")) { Str::clear(modified); WRITE_TO(modified, "{\\sinchhigh %S}\\quad %S", mr.exp[0], mr.exp[1]); } @@ -497,7 +497,7 @@ void TeX::source_code(text_stream *OUT, weave_order *wv, text_stream *matter, text_stream *colouring, int starts) { int current_colour = PLAIN_COLOUR, colour_wanted = PLAIN_COLOUR; for (int i=0; i < Str::len(matter); i++) { - colour_wanted = Str::get_at(colouring, i); + colour_wanted = (int) Str::get_at(colouring, i); @; if (Str::get_at(matter, i) == '|') WRITE("|\\||"); else WRITE("%c", Str::get_at(matter, i)); @@ -615,23 +615,23 @@ int TeX::preform_document(weave_format *self, text_stream *OUT, web *W, @ = TEMPORARY_TEXT(problem) match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, matter, L"Issue (%c*?) problem")) + if (Regexp::match(&mr, matter, U"Issue (%c*?) problem")) Str::copy(problem, mr.exp[0]); - else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL %+")) + else if (Regexp::match(&mr, matter, U"FAIL_NONTERMINAL %+")) WRITE_TO(problem, "fail and skip"); - else if (Regexp::match(&mr, matter, L"FAIL_NONTERMINAL")) + else if (Regexp::match(&mr, matter, U"FAIL_NONTERMINAL")) WRITE_TO(problem, "fail"); preform_production_count++; WRITE_TO(matter, "|%S|", L->text_operand); - while (Regexp::match(&mr, matter, L"(%c+?)|(%c+)")) { + while (Regexp::match(&mr, matter, U"(%c+?)|(%c+)")) { Str::clear(matter); WRITE_TO(matter, "%S___stroke___%S", mr.exp[0], mr.exp[1]); } - while (Regexp::match(&mr, matter, L"(%c*?)___stroke___(%c*)")) { + while (Regexp::match(&mr, matter, U"(%c*?)___stroke___(%c*)")) { Str::clear(matter); WRITE_TO(matter, "%S|\\||%S", mr.exp[0], mr.exp[1]); } - while (Regexp::match(&mr, matter, L"(%c*)<(%c*?)>(%c*)")) { + while (Regexp::match(&mr, matter, U"(%c*)<(%c*?)>(%c*)")) { Str::clear(matter); WRITE_TO(matter, "%S|\\nonterminal{%S}|%S", mr.exp[0], mr.exp[1], mr.exp[2]); diff --git a/Chapter 5/TeX Utilities.w b/Chapter 5/TeX Utilities.w index c6b6041a..a10794ce 100644 --- a/Chapter 5/TeX Utilities.w +++ b/Chapter 5/TeX Utilities.w @@ -54,11 +54,11 @@ void TeXUtilities::scan_console_line(text_stream *line, text_file_position *tfp, tex_results *res = (tex_results *) res_V; match_results mr = Regexp::create_mr(); if (Regexp::match(&mr, line, - L"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) { + U"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) { res->page_count = Str::atoi(mr.exp[0], 0); res->pdf_size = Str::atoi(mr.exp[1], 0); } - if (Regexp::match(&mr, line, L"%c+verfull \\hbox%c+")) + if (Regexp::match(&mr, line, U"%c+verfull \\hbox%c+")) res->overfull_hbox_count++; else if (Str::get_first_char(line) == '!') { res->tex_error_count++; @@ -88,13 +88,13 @@ int TeXUtilities::substitute_post_processing_data(text_stream *to, weave_order * if (wv) { tex_results *res = wv->post_processing_results; if (res) { - if (Str::eq_wide_string(detail, L"PDF Size")) { + if (Str::eq_wide_string(detail, U"PDF Size")) { WRITE_TO(to, "%dKB", res->pdf_size/1024); - } else if (Str::eq_wide_string(detail, L"Extent")) { + } else if (Str::eq_wide_string(detail, U"Extent")) { WRITE_TO(to, "%dpp", res->page_count); - } else if (Str::eq_wide_string(detail, L"Leafname")) { + } else if (Str::eq_wide_string(detail, U"Leafname")) { Str::copy(to, Filenames::get_leafname(res->PDF_filename)); - } else if (Str::eq_wide_string(detail, L"Errors")) { + } else if (Str::eq_wide_string(detail, U"Errors")) { Str::clear(to); if ((res->overfull_hbox_count > 0) || (res->tex_error_count > 0)) WRITE_TO(to, ": "); @@ -161,7 +161,7 @@ void TeXUtilities::remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int int bl = 1; int j = i-1; for (; j >= from; j--) { - wchar_t c = Str::get_at(text, j); + inchar32_t c = Str::get_at(text, j); if (c == '{') { bl--; if (bl == 0) break; @@ -174,7 +174,7 @@ void TeXUtilities::remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int WRITE(") / ("); j=i+6; bl = 1; for (; j <= to; j++) { - wchar_t c = Str::get_at(text, j); + inchar32_t c = Str::get_at(text, j); if (c == '}') { bl--; if (bl == 0) break; @@ -224,7 +224,7 @@ we also look out for |{}^3\sqrt{N}| for cube root. } int j=i+6, bl = 1; for (; j <= to; j++) { - wchar_t c = Str::get_at(text, j); + inchar32_t c = Str::get_at(text, j); if (c == '}') { bl--; if (bl == 0) break; @@ -280,72 +280,72 @@ we also look out for |{}^3\sqrt{N}| for cube root. else if (Str::eq(macro, I"cos")) WRITE("cos"); else if (Str::eq(macro, I"tan")) WRITE("tan"); else if (Str::eq(macro, I"top")) WRITE("T"); - else if (Str::eq(macro, I"Alpha")) PUT((wchar_t) 0x0391); - else if (Str::eq(macro, I"Beta")) PUT((wchar_t) 0x0392); - else if (Str::eq(macro, I"Gamma")) PUT((wchar_t) 0x0393); - else if (Str::eq(macro, I"Delta")) PUT((wchar_t) 0x0394); - else if (Str::eq(macro, I"Epsilon")) PUT((wchar_t) 0x0395); - else if (Str::eq(macro, I"Zeta")) PUT((wchar_t) 0x0396); - else if (Str::eq(macro, I"Eta")) PUT((wchar_t) 0x0397); - else if (Str::eq(macro, I"Theta")) PUT((wchar_t) 0x0398); - else if (Str::eq(macro, I"Iota")) PUT((wchar_t) 0x0399); - else if (Str::eq(macro, I"Kappa")) PUT((wchar_t) 0x039A); - else if (Str::eq(macro, I"Lambda")) PUT((wchar_t) 0x039B); - else if (Str::eq(macro, I"Mu")) PUT((wchar_t) 0x039C); - else if (Str::eq(macro, I"Nu")) PUT((wchar_t) 0x039D); - else if (Str::eq(macro, I"Xi")) PUT((wchar_t) 0x039E); - else if (Str::eq(macro, I"Omicron")) PUT((wchar_t) 0x039F); - else if (Str::eq(macro, I"Pi")) PUT((wchar_t) 0x03A0); - else if (Str::eq(macro, I"Rho")) PUT((wchar_t) 0x03A1); - else if (Str::eq(macro, I"Varsigma")) PUT((wchar_t) 0x03A2); - else if (Str::eq(macro, I"Sigma")) PUT((wchar_t) 0x03A3); - else if (Str::eq(macro, I"Tau")) PUT((wchar_t) 0x03A4); - else if (Str::eq(macro, I"Upsilon")) PUT((wchar_t) 0x03A5); - else if (Str::eq(macro, I"Phi")) PUT((wchar_t) 0x03A6); - else if (Str::eq(macro, I"Chi")) PUT((wchar_t) 0x03A7); - else if (Str::eq(macro, I"Psi")) PUT((wchar_t) 0x03A8); - else if (Str::eq(macro, I"Omega")) PUT((wchar_t) 0x03A9); - else if (Str::eq(macro, I"alpha")) PUT((wchar_t) 0x03B1); - else if (Str::eq(macro, I"beta")) PUT((wchar_t) 0x03B2); - else if (Str::eq(macro, I"gamma")) PUT((wchar_t) 0x03B3); - else if (Str::eq(macro, I"delta")) PUT((wchar_t) 0x03B4); - else if (Str::eq(macro, I"epsilon")) PUT((wchar_t) 0x03B5); - else if (Str::eq(macro, I"zeta")) PUT((wchar_t) 0x03B6); - else if (Str::eq(macro, I"eta")) PUT((wchar_t) 0x03B7); - else if (Str::eq(macro, I"theta")) PUT((wchar_t) 0x03B8); - else if (Str::eq(macro, I"iota")) PUT((wchar_t) 0x03B9); - else if (Str::eq(macro, I"kappa")) PUT((wchar_t) 0x03BA); - else if (Str::eq(macro, I"lambda")) PUT((wchar_t) 0x03BB); - else if (Str::eq(macro, I"mu")) PUT((wchar_t) 0x03BC); - else if (Str::eq(macro, I"nu")) PUT((wchar_t) 0x03BD); - else if (Str::eq(macro, I"xi")) PUT((wchar_t) 0x03BE); - else if (Str::eq(macro, I"omicron")) PUT((wchar_t) 0x03BF); - else if (Str::eq(macro, I"pi")) PUT((wchar_t) 0x03C0); - else if (Str::eq(macro, I"rho")) PUT((wchar_t) 0x03C1); - else if (Str::eq(macro, I"varsigma")) PUT((wchar_t) 0x03C2); - else if (Str::eq(macro, I"sigma")) PUT((wchar_t) 0x03C3); - else if (Str::eq(macro, I"tau")) PUT((wchar_t) 0x03C4); - else if (Str::eq(macro, I"upsilon")) PUT((wchar_t) 0x03C5); - else if (Str::eq(macro, I"phi")) PUT((wchar_t) 0x03C6); - else if (Str::eq(macro, I"chi")) PUT((wchar_t) 0x03C7); - else if (Str::eq(macro, I"psi")) PUT((wchar_t) 0x03C8); - else if (Str::eq(macro, I"omega")) PUT((wchar_t) 0x03C9); - else if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2203); - else if (Str::eq(macro, I"in")) PUT((wchar_t) 0x2208); - else if (Str::eq(macro, I"forall")) PUT((wchar_t) 0x2200); - else if (Str::eq(macro, I"cap")) PUT((wchar_t) 0x2229); - else if (Str::eq(macro, I"emptyset")) PUT((wchar_t) 0x2205); - else if (Str::eq(macro, I"subseteq")) PUT((wchar_t) 0x2286); - else if (Str::eq(macro, I"land")) PUT((wchar_t) 0x2227); - else if (Str::eq(macro, I"lor")) PUT((wchar_t) 0x2228); - else if (Str::eq(macro, I"lnot")) PUT((wchar_t) 0x00AC); - else if (Str::eq(macro, I"sum")) PUT((wchar_t) 0x03A3); - else if (Str::eq(macro, I"prod")) PUT((wchar_t) 0x03A0); + else if (Str::eq(macro, I"Alpha")) PUT((inchar32_t) 0x0391); + else if (Str::eq(macro, I"Beta")) PUT((inchar32_t) 0x0392); + else if (Str::eq(macro, I"Gamma")) PUT((inchar32_t) 0x0393); + else if (Str::eq(macro, I"Delta")) PUT((inchar32_t) 0x0394); + else if (Str::eq(macro, I"Epsilon")) PUT((inchar32_t) 0x0395); + else if (Str::eq(macro, I"Zeta")) PUT((inchar32_t) 0x0396); + else if (Str::eq(macro, I"Eta")) PUT((inchar32_t) 0x0397); + else if (Str::eq(macro, I"Theta")) PUT((inchar32_t) 0x0398); + else if (Str::eq(macro, I"Iota")) PUT((inchar32_t) 0x0399); + else if (Str::eq(macro, I"Kappa")) PUT((inchar32_t) 0x039A); + else if (Str::eq(macro, I"Lambda")) PUT((inchar32_t) 0x039B); + else if (Str::eq(macro, I"Mu")) PUT((inchar32_t) 0x039C); + else if (Str::eq(macro, I"Nu")) PUT((inchar32_t) 0x039D); + else if (Str::eq(macro, I"Xi")) PUT((inchar32_t) 0x039E); + else if (Str::eq(macro, I"Omicron")) PUT((inchar32_t) 0x039F); + else if (Str::eq(macro, I"Pi")) PUT((inchar32_t) 0x03A0); + else if (Str::eq(macro, I"Rho")) PUT((inchar32_t) 0x03A1); + else if (Str::eq(macro, I"Varsigma")) PUT((inchar32_t) 0x03A2); + else if (Str::eq(macro, I"Sigma")) PUT((inchar32_t) 0x03A3); + else if (Str::eq(macro, I"Tau")) PUT((inchar32_t) 0x03A4); + else if (Str::eq(macro, I"Upsilon")) PUT((inchar32_t) 0x03A5); + else if (Str::eq(macro, I"Phi")) PUT((inchar32_t) 0x03A6); + else if (Str::eq(macro, I"Chi")) PUT((inchar32_t) 0x03A7); + else if (Str::eq(macro, I"Psi")) PUT((inchar32_t) 0x03A8); + else if (Str::eq(macro, I"Omega")) PUT((inchar32_t) 0x03A9); + else if (Str::eq(macro, I"alpha")) PUT((inchar32_t) 0x03B1); + else if (Str::eq(macro, I"beta")) PUT((inchar32_t) 0x03B2); + else if (Str::eq(macro, I"gamma")) PUT((inchar32_t) 0x03B3); + else if (Str::eq(macro, I"delta")) PUT((inchar32_t) 0x03B4); + else if (Str::eq(macro, I"epsilon")) PUT((inchar32_t) 0x03B5); + else if (Str::eq(macro, I"zeta")) PUT((inchar32_t) 0x03B6); + else if (Str::eq(macro, I"eta")) PUT((inchar32_t) 0x03B7); + else if (Str::eq(macro, I"theta")) PUT((inchar32_t) 0x03B8); + else if (Str::eq(macro, I"iota")) PUT((inchar32_t) 0x03B9); + else if (Str::eq(macro, I"kappa")) PUT((inchar32_t) 0x03BA); + else if (Str::eq(macro, I"lambda")) PUT((inchar32_t) 0x03BB); + else if (Str::eq(macro, I"mu")) PUT((inchar32_t) 0x03BC); + else if (Str::eq(macro, I"nu")) PUT((inchar32_t) 0x03BD); + else if (Str::eq(macro, I"xi")) PUT((inchar32_t) 0x03BE); + else if (Str::eq(macro, I"omicron")) PUT((inchar32_t) 0x03BF); + else if (Str::eq(macro, I"pi")) PUT((inchar32_t) 0x03C0); + else if (Str::eq(macro, I"rho")) PUT((inchar32_t) 0x03C1); + else if (Str::eq(macro, I"varsigma")) PUT((inchar32_t) 0x03C2); + else if (Str::eq(macro, I"sigma")) PUT((inchar32_t) 0x03C3); + else if (Str::eq(macro, I"tau")) PUT((inchar32_t) 0x03C4); + else if (Str::eq(macro, I"upsilon")) PUT((inchar32_t) 0x03C5); + else if (Str::eq(macro, I"phi")) PUT((inchar32_t) 0x03C6); + else if (Str::eq(macro, I"chi")) PUT((inchar32_t) 0x03C7); + else if (Str::eq(macro, I"psi")) PUT((inchar32_t) 0x03C8); + else if (Str::eq(macro, I"omega")) PUT((inchar32_t) 0x03C9); + else if (Str::eq(macro, I"exists")) PUT((inchar32_t) 0x2203); + else if (Str::eq(macro, I"in")) PUT((inchar32_t) 0x2208); + else if (Str::eq(macro, I"forall")) PUT((inchar32_t) 0x2200); + else if (Str::eq(macro, I"cap")) PUT((inchar32_t) 0x2229); + else if (Str::eq(macro, I"emptyset")) PUT((inchar32_t) 0x2205); + else if (Str::eq(macro, I"subseteq")) PUT((inchar32_t) 0x2286); + else if (Str::eq(macro, I"land")) PUT((inchar32_t) 0x2227); + else if (Str::eq(macro, I"lor")) PUT((inchar32_t) 0x2228); + else if (Str::eq(macro, I"lnot")) PUT((inchar32_t) 0x00AC); + else if (Str::eq(macro, I"sum")) PUT((inchar32_t) 0x03A3); + else if (Str::eq(macro, I"prod")) PUT((inchar32_t) 0x03A0); else { if (Str::len(macro) > 0) { int suspect = TRUE; LOOP_THROUGH_TEXT(pos, macro) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if ((c >= 'A') && (c <= 'Z')) continue; if ((c >= 'a') && (c <= 'z')) continue; suspect = FALSE; @@ -366,8 +366,8 @@ we also look out for |{}^3\sqrt{N}| for cube root. i++; while ((i < Str::len(text)) && (Characters::isalpha(Str::get_at(text, i)))) PUT_TO(macro, Str::get_at(text, i++)); - if (Str::eq(macro, I"exists")) PUT((wchar_t) 0x2204); - else if (Str::eq(macro, I"forall")) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); } + if (Str::eq(macro, I"exists")) PUT((inchar32_t) 0x2204); + else if (Str::eq(macro, I"forall")) { PUT((inchar32_t) 0x00AC); PUT((inchar32_t) 0x2200); } else { PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro); } diff --git a/Chapter 5/Weave Tree.w b/Chapter 5/Weave Tree.w index 3dc860b2..3ee0b0b3 100644 --- a/Chapter 5/Weave Tree.w +++ b/Chapter 5/Weave Tree.w @@ -678,7 +678,7 @@ tree_node *WeaveTree::source_code(heterogeneous_tree *tree, if (Str::len(colouring) != Str::len(matter)) internal_error("bad source segment"); for (int i=0; iweb_rather_than_module = TRUE; else if (Str::eq(mr.exp[0], I"module")) CM->web_rather_than_module = FALSE; @@ -114,26 +114,26 @@ void Colonies::read_line(text_stream *line, text_file_position *tfp, void *v_crs CM->breadcrumb_tail = crs->crumbs; CM->default_weave_pattern = Str::duplicate(crs->pattern); ADD_TO_LINKED_LIST(CM, colony_member, C->members); - } else if (Regexp::match(&mr, line, L"home: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"home: *(%c*)")) { C->home = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, line, L"assets: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"assets: *(%c*)")) { C->assets_path = Pathnames::from_text(mr.exp[0]); - } else if (Regexp::match(&mr, line, L"patterns: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"patterns: *(%c*)")) { C->patterns_path = Pathnames::from_text(mr.exp[0]); - } else if (Regexp::match(&mr, line, L"pattern: none")) { + } else if (Regexp::match(&mr, line, U"pattern: none")) { crs->pattern = NULL; - } else if (Regexp::match(&mr, line, L"pattern: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"pattern: *(%c*)")) { crs->pattern = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, line, L"navigation: none")) { + } else if (Regexp::match(&mr, line, U"navigation: none")) { crs->nav = NULL; - } else if (Regexp::match(&mr, line, L"navigation: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"navigation: *(%c*)")) { crs->nav = Filenames::from_text(mr.exp[0]); - } else if (Regexp::match(&mr, line, L"breadcrumbs: none")) { + } else if (Regexp::match(&mr, line, U"breadcrumbs: none")) { crs->crumbs = NEW_LINKED_LIST(breadcrumb_request); - } else if (Regexp::match(&mr, line, L"breadcrumbs: *(%c*)")) { + } else if (Regexp::match(&mr, line, U"breadcrumbs: *(%c*)")) { crs->crumbs = NEW_LINKED_LIST(breadcrumb_request); match_results mr2 = Regexp::create_mr(); - while (Regexp::match(&mr2, mr.exp[0], L"(\"%c*?\") > (%c*)")) { + while (Regexp::match(&mr2, mr.exp[0], U"(\"%c*?\") > (%c*)")) { Colonies::add_crumb(crs->crumbs, mr2.exp[0], tfp); Str::clear(mr.exp[0]); Str::copy(mr.exp[0], mr2.exp[1]); } @@ -150,7 +150,7 @@ the page, and this requests one. = void Colonies::add_crumb(linked_list *L, text_stream *spec, text_file_position *tfp) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, spec, L"\"(%c*?)\"") == FALSE) { + if (Regexp::match(&mr, spec, U"\"(%c*?)\"") == FALSE) { Errors::in_text_file("each crumb must be in double-quotes", tfp); return; } @@ -169,7 +169,7 @@ typedef struct breadcrumb_request { breadcrumb_request *Colonies::request_breadcrumb(text_stream *arg) { breadcrumb_request *BR = CREATE(breadcrumb_request); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, arg, L"(%c*?): *(%c*)")) { + if (Regexp::match(&mr, arg, U"(%c*?): *(%c*)")) { BR->breadcrumb_text = Str::duplicate(mr.exp[0]); BR->breadcrumb_link = Str::duplicate(mr.exp[1]); } else { @@ -312,7 +312,7 @@ int Colonies::resolve_reference_in_weave(text_stream *url, text_stream *title, int r = 0; if (ext) *ext = FALSE; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L"(%c+?) -> (%c+)")) { + if (Regexp::match(&mr, text, U"(%c+?) -> (%c+)")) { r = Colonies::resolve_reference_in_weave_inner(url, NULL, for_HTML_file, mr.exp[1], Wm, L, ext); WRITE_TO(title, "%S", mr.exp[0]); @@ -376,7 +376,7 @@ int Colonies::resolve_reference_in_weave_inner(text_stream *url, text_stream *ti @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L"https*://%c*")) { + if (Regexp::match(&mr, text, U"https*://%c*")) { WRITE_TO(url, "%S", text); WRITE_TO(title, "%S", text); Regexp::dispose_of(&mr); @@ -397,7 +397,7 @@ int Colonies::resolve_reference_in_weave_inner(text_stream *url, text_stream *ti @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L"(%c*?): (%c*)")) { + if (Regexp::match(&mr, text, U"(%c*?): (%c*)")) { search_CM = Colonies::find(mr.exp[0]); if (search_CM) { module *found_M = Colonies::as_module(search_CM, L, Wm); @@ -467,7 +467,7 @@ the main one. = void Colonies::link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, link_text, L" *//(%c+)// *")) + if (Regexp::match(&mr, link_text, U" *//(%c+)// *")) Colonies::reference_URL(OUT, mr.exp[0], F); else WRITE("%S", link_text); diff --git a/Chapter 6/Ctags Support.w b/Chapter 6/Ctags Support.w index dfb428ce..a7a8451b 100644 --- a/Chapter 6/Ctags Support.w +++ b/Chapter 6/Ctags Support.w @@ -153,7 +153,7 @@ void Ctags::write_line_ref(OUTPUT_STREAM, source_line *L, pathname *P) { WRITE("%S\t/^", fn); DISCARD_TEXT(fn) for (int i = 0; i < Str::len(L->text); i++) { - wchar_t c = Str::get_at(L->text, i); + inchar32_t c = Str::get_at(L->text, i); switch (c) { case '/': PUT('\\'); PUT(c); break; case '^': if (i == 0) PUT('\\'); PUT(c); break; diff --git a/Chapter 6/Makefiles.w b/Chapter 6/Makefiles.w index 44793688..d03c02c1 100644 --- a/Chapter 6/Makefiles.w +++ b/Chapter 6/Makefiles.w @@ -119,7 +119,7 @@ void Makefiles::platform_settings_expander(preprocessor_macro *mm, preprocessor_ void Makefiles::seek_INWEBPLATFORM(text_stream *line, text_file_position *tfp, void *X) { text_stream *OUT = (text_stream *) X; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L" *INWEBPLATFORM = (%C+) *")) WRITE("%S", mr.exp[0]); + if (Regexp::match(&mr, line, U" *INWEBPLATFORM = (%C+) *")) WRITE("%S", mr.exp[0]); Regexp::dispose_of(&mr); } @@ -134,10 +134,10 @@ void Makefiles::modify_filenames_expander(preprocessor_macro *mm, preprocessor_s text_stream *suffix = parameter_values[1]; text_stream *prefix = parameter_values[2]; - wchar_t previous = 'X'; int quoted = FALSE, boundary = FALSE; + inchar32_t previous = 'X'; int quoted = FALSE, boundary = FALSE; TEMPORARY_TEXT(captured) LOOP_THROUGH_TEXT(pos, original) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == '\'') { quoted = quoted?FALSE:TRUE; } if (Characters::is_whitespace(c)) { if ((previous != '\\') && (quoted == FALSE)) boundary = TRUE; @@ -337,9 +337,9 @@ void Makefiles::pattern(OUTPUT_STREAM, linked_list *L, filename *F) { TEMPORARY_TEXT(leaf_pattern) WRITE_TO(leaf_pattern, "%S", Pathnames::directory_name(P)); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, leaf_pattern, L"Chapter %d*")) { + if (Regexp::match(&mr, leaf_pattern, U"Chapter %d*")) { Str::clear(leaf_pattern); WRITE_TO(leaf_pattern, "Chapter*"); - } else if (Regexp::match(&mr, leaf_pattern, L"Appendix %C")) { + } else if (Regexp::match(&mr, leaf_pattern, U"Appendix %C")) { Str::clear(leaf_pattern); WRITE_TO(leaf_pattern, "Appendix*"); } Regexp::dispose_of(&mr); @@ -351,7 +351,7 @@ void Makefiles::pattern(OUTPUT_STREAM, linked_list *L, filename *F) { WRITE_TO(Dictionaries::create_text(patterns_done, tester), "got this"); WRITE(" "); LOOP_THROUGH_TEXT(pos, tester) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == ' ') PUT('\\'); PUT(c); } @@ -367,7 +367,7 @@ void Makefiles::pathname_slashed(OUTPUT_STREAM, pathname *P) { TEMPORARY_TEXT(PT) WRITE_TO(PT, "%p", P); LOOP_THROUGH_TEXT(pos, PT) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == ' ') WRITE("\\ "); else PUT(c); } diff --git a/Chapter 6/Readme Writeme.w b/Chapter 6/Readme Writeme.w index 8dad30ed..9d7b0b96 100644 --- a/Chapter 6/Readme Writeme.w +++ b/Chapter 6/Readme Writeme.w @@ -71,7 +71,7 @@ writeme_asset *Readme::find_asset(text_stream *program) { } @ = - if (Str::ends_with_wide_string(program, L".i7x")) { + if (Str::ends_with_wide_string(program, U".i7x")) { @; } else { if (WebMetadata::directory_looks_like_a_web(Pathnames::from_text(program))) { @@ -112,7 +112,7 @@ void Readme::extension_harvester(text_stream *text, text_file_position *tfp, voi writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp::create_mr(); if (Str::len(text) == 0) return; - if (Regexp::match(&mr, text, L" *Version (%c*?) of %c*begins here. *")) + if (Regexp::match(&mr, text, U" *Version (%c*?) of %c*begins here. *")) A->version = Str::duplicate(mr.exp[0]); Regexp::dispose_of(&mr); } @@ -124,9 +124,9 @@ void Readme::header_harvester(text_stream *text, text_file_position *tfp, void * writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp::create_mr(); if (Str::len(text) == 0) return; - if (Regexp::match(&mr, text, L"#define RELEASE_NUMBER (%c*?) *")) + if (Regexp::match(&mr, text, U"#define RELEASE_NUMBER (%c*?) *")) A->version = Str::duplicate(mr.exp[0]); - if (Regexp::match(&mr, text, L"#define RELEASE_DATE \"(%c*?)\" *")) + if (Regexp::match(&mr, text, U"#define RELEASE_DATE \"(%c*?)\" *")) A->date = Str::duplicate(mr.exp[0]); Regexp::dispose_of(&mr); } @@ -138,7 +138,7 @@ void Readme::template_harvester(text_stream *text, text_file_position *tfp, void writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp::create_mr(); if (Str::len(text) == 0) return; - if (Regexp::match(&mr, text, L"%[INTERPRETERVERSION%]")) { + if (Regexp::match(&mr, text, U"%[INTERPRETERVERSION%]")) { A->next_is_version = TRUE; } else if (A->next_is_version) { A->version = Str::duplicate(text); @@ -154,8 +154,8 @@ void Readme::readme_harvester(text_stream *text, text_file_position *tfp, void * writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp::create_mr(); if (Str::len(text) == 0) return; - if ((Regexp::match(&mr, text, L"CheapGlk Library: version (%c*?) *")) || - (Regexp::match(&mr, text, L"- Version (%c*?) *"))) + if ((Regexp::match(&mr, text, U"CheapGlk Library: version (%c*?) *")) || + (Regexp::match(&mr, text, U"- Version (%c*?) *"))) A->version = Str::duplicate(mr.exp[0]); Regexp::dispose_of(&mr); } diff --git a/Examples/eastertide/Sections/Reporting the Date.w b/Examples/eastertide/Sections/Reporting the Date.w index 32183f8c..21fa45c8 100755 --- a/Examples/eastertide/Sections/Reporting the Date.w +++ b/Examples/eastertide/Sections/Reporting the Date.w @@ -47,17 +47,17 @@ but we'll give it some command-line options anyway. Foundation will add also @ = CommandLine::declare_heading( - L"eastertide: an Easter date calculator\n\n" - L"usage: eastertide [OPTIONS] year1 year2 ...\n"); + U"eastertide: an Easter date calculator\n\n" + U"usage: eastertide [OPTIONS] year1 year2 ...\n"); - CommandLine::declare_switch(CALENDAR_FILE_CLSW, L"calendar-file", 2, - L"specify file X as a list of year requests, one per line"); + CommandLine::declare_switch(CALENDAR_FILE_CLSW, U"calendar-file", 2, + U"specify file X as a list of year requests, one per line"); CommandLine::begin_group(QUALIFYING_CLSG, I"for qualifying the output"); - CommandLine::declare_boolean_switch(VERBOSE_CLSW, L"verbose", 1, - L"print output verbosely", FALSE); - CommandLine::declare_boolean_switch(AMERICAN_CLSW, L"american", 1, - L"print dates in American MM/DD format", FALSE); + CommandLine::declare_boolean_switch(VERBOSE_CLSW, U"verbose", 1, + U"print output verbosely", FALSE); + CommandLine::declare_boolean_switch(AMERICAN_CLSW, U"american", 1, + U"print dates in American MM/DD format", FALSE); CommandLine::end_group(); CommandLine::read(argc, argv, NULL, &Main::switch, &Main::bareword); diff --git a/Materials/platforms/inweb-on-macos.mk b/Materials/platforms/inweb-on-macos.mk index 98789660..5f0cdece 100644 --- a/Materials/platforms/inweb-on-macos.mk +++ b/Materials/platforms/inweb-on-macos.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.6 -arch x86_64 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/inweb-on-macos32.mk b/Materials/platforms/inweb-on-macos32.mk index 4d0a2f59..49e60b23 100644 --- a/Materials/platforms/inweb-on-macos32.mk +++ b/Materials/platforms/inweb-on-macos32.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.4 -arch i386 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt diff --git a/Materials/platforms/inweb-on-macosarm.mk b/Materials/platforms/inweb-on-macosarm.mk index 72922d06..af2f039d 100644 --- a/Materials/platforms/inweb-on-macosarm.mk +++ b/Materials/platforms/inweb-on-macosarm.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/inweb-on-macosuniv.mk b/Materials/platforms/inweb-on-macosuniv.mk index da44ce38..b8fdd3a4 100644 --- a/Materials/platforms/inweb-on-macosuniv.mk +++ b/Materials/platforms/inweb-on-macosuniv.mk @@ -15,7 +15,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot $(SDKPATH) $(CFLAGS) CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/inweb-on-unix.mk b/Materials/platforms/inweb-on-unix.mk index a12ad3ab..f3b25811 100644 --- a/Materials/platforms/inweb-on-unix.mk +++ b/Materials/platforms/inweb-on-unix.mk @@ -12,7 +12,7 @@ INWEB = inweb/Tangled/inweb CCOPTS = -Wno-unused -DPLATFORM_UNIX -DUNIX64 -DCPU_WORDSIZE_MULTIPLIER=2 -O2 -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/inweb-on-windows.mk b/Materials/platforms/inweb-on-windows.mk index e09aaf2e..85b52028 100644 --- a/Materials/platforms/inweb-on-windows.mk +++ b/Materials/platforms/inweb-on-windows.mk @@ -10,9 +10,9 @@ EXEEXTENSION = .exe INTEST = intest/Tangled/intest INWEB = inweb/Tangled/inweb -CCOPTS = -DPLATFORM_WINDOWS=1 -D_WIN32_WINNT=0x0600 $(CFLAGS) +CCOPTS = -DPLATFORM_WINDOWS=1 $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return @@ -68,7 +68,7 @@ safe: define make-me-once-tangled clang -std=c11 -c $(MANYWARNINGS) $(CCOPTS) -g -o $(ME)/Tangled/$(ME).o $(ME)/Tangled/$(ME).c - clang $(CCOPTS) -g -o $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(ME)/Tangled/$(ME).o + clang $(CCOPTS) -Wl,--stack,0x8000000 -g -o $(ME)/Tangled/$(ME)$(EXEEXTENSION) $(ME)/Tangled/$(ME).o endef define make-me diff --git a/Materials/platforms/macos.mk b/Materials/platforms/macos.mk index f6c392a6..e731944d 100644 --- a/Materials/platforms/macos.mk +++ b/Materials/platforms/macos.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.6 -arch x86_64 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/macos.mkscript b/Materials/platforms/macos.mkscript index 62e4c9ba..1b0bb909 100644 --- a/Materials/platforms/macos.mkscript +++ b/Materials/platforms/macos.mkscript @@ -80,7 +80,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.6 -arch x86_64 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 # To explain those: @@ -97,18 +97,17 @@ MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno- # -Wno-missing-prototypes: because Preform-defined routines aren't predeclared with prototypes # -Wno-missing-variable-declarations: these are not for linking, so don't care about extern/static # -Wno-unreachable-code-break: these derive from Preform-compiled switches, and are harmless -# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions +# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions # -Wno-format-nonliteral: similarly, it thinks all format strings in |printf| should be literals # -Wno-cast-qual: in OS X 10.11, clang became bothered by casts from (void *) if it thought they were const # -Wno-double-promotion: in OS X 10.12, clang began warning of possible precision loss: we only need about 1% accuracy anyway -# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use -# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros -# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, +# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use +# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros +# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, # which is a little tiresome: though it's off by default (on MacOS with -Weverything), we explicitly disable it -# -Wno-c11-extensions: we want to allow ourselves use of _Noreturn, a C11 annotation... # -Wno-unreachable-code-return: ...which means some compilers can prove some of our return statements unnecessary # -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers # -Wno-declaration-after-statement: clang is very zealous about compatibility with C89 even though we are compiling in C99 +# -Wno-c99-compat: clang is very zealous about compatibility with C99 even though we are compiling in C11 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return - diff --git a/Materials/platforms/macos32.mk b/Materials/platforms/macos32.mk index 3cd8c55d..7034c727 100644 --- a/Materials/platforms/macos32.mk +++ b/Materials/platforms/macos32.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.4 -arch i386 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt diff --git a/Materials/platforms/macos32.mkscript b/Materials/platforms/macos32.mkscript index bc9a1a40..7a2eb8ae 100644 --- a/Materials/platforms/macos32.mkscript +++ b/Materials/platforms/macos32.mkscript @@ -84,6 +84,6 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -mmacosx-version-min=10.4 -arch i386 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt diff --git a/Materials/platforms/macosarm.mk b/Materials/platforms/macosarm.mk index 2767ea1c..0929577f 100644 --- a/Materials/platforms/macosarm.mk +++ b/Materials/platforms/macosarm.mk @@ -14,7 +14,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/macosarm.mkscript b/Materials/platforms/macosarm.mkscript index d97083da..8706b13d 100644 --- a/Materials/platforms/macosarm.mkscript +++ b/Materials/platforms/macosarm.mkscript @@ -80,7 +80,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTS = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 # To explain those: @@ -97,17 +97,17 @@ MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno- # -Wno-missing-prototypes: because Preform-defined routines aren't predeclared with prototypes # -Wno-missing-variable-declarations: these are not for linking, so don't care about extern/static # -Wno-unreachable-code-break: these derive from Preform-compiled switches, and are harmless -# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions +# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions # -Wno-format-nonliteral: similarly, it thinks all format strings in |printf| should be literals # -Wno-cast-qual: in OS X 10.11, clang became bothered by casts from (void *) if it thought they were const # -Wno-double-promotion: in OS X 10.12, clang began warning of possible precision loss: we only need about 1% accuracy anyway -# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use -# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros -# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, +# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use +# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros +# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, # which is a little tiresome: though it's off by default (on MacOS with -Weverything), we explicitly disable it -# -Wno-c11-extensions: we want to allow ourselves use of _Noreturn, a C11 annotation... # -Wno-unreachable-code-return: ...which means some compilers can prove some of our return statements unnecessary # -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers # -Wno-declaration-after-statement: clang is very zealous about compatibility with C89 even though we are compiling in C99 +# -Wno-c99-compat: clang is very zealous about compatibility with C99 even though we are compiling in C11 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/macosuniv.mk b/Materials/platforms/macosuniv.mk index bd2af0c4..d1021a85 100644 --- a/Materials/platforms/macosuniv.mk +++ b/Materials/platforms/macosuniv.mk @@ -15,7 +15,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot $(SDKPATH) $(CFLAGS) CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/macosuniv.mkscript b/Materials/platforms/macosuniv.mkscript index 1730ec68..032a43e8 100644 --- a/Materials/platforms/macosuniv.mkscript +++ b/Materials/platforms/macosuniv.mkscript @@ -85,7 +85,7 @@ SDKPATH := $(shell xcrun -show-sdk-path) CCOPTSX = -DPLATFORM_MACOS=1 -target x86_64-apple-macos10.12 -isysroot $(SDKPATH) $(CFLAGS) CCOPTSA = -DPLATFORM_MACOS=1 -target arm64-apple-macos11 -isysroot $(SDKPATH) $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 # To explain those: @@ -102,17 +102,17 @@ MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno- # -Wno-missing-prototypes: because Preform-defined routines aren't predeclared with prototypes # -Wno-missing-variable-declarations: these are not for linking, so don't care about extern/static # -Wno-unreachable-code-break: these derive from Preform-compiled switches, and are harmless -# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions +# -Wno-class-varargs: for some reason clang thinks structs shouldn't be passed to variable-argument functions # -Wno-format-nonliteral: similarly, it thinks all format strings in |printf| should be literals # -Wno-cast-qual: in OS X 10.11, clang became bothered by casts from (void *) if it thought they were const # -Wno-double-promotion: in OS X 10.12, clang began warning of possible precision loss: we only need about 1% accuracy anyway -# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use -# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros -# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, +# -Wno-commas: in OS X 10.13, clang began warning about "possible misuse of comma operator" - by misuse, it means use +# -Wno-strict-prototypes: in OS X 10.13, clang began objecting to (some) function prototypes generated by macros +# -Wno-extra-semi-stmt: in OS X 10.15, clang began objecting to redundant semicolons after macros had expanded, # which is a little tiresome: though it's off by default (on MacOS with -Weverything), we explicitly disable it -# -Wno-c11-extensions: we want to allow ourselves use of _Noreturn, a C11 annotation... # -Wno-unreachable-code-return: ...which means some compilers can prove some of our return statements unnecessary # -Wno-unused-but-set-variable: this is harmless, and done deliberately to avoid warnings on other compilers # -Wno-declaration-after-statement: clang is very zealous about compatibility with C89 even though we are compiling in C99 +# -Wno-c99-compat: clang is very zealous about compatibility with C99 even though we are compiling in C11 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable diff --git a/Materials/platforms/unix.mk b/Materials/platforms/unix.mk index c375aa06..432c461d 100644 --- a/Materials/platforms/unix.mk +++ b/Materials/platforms/unix.mk @@ -12,7 +12,7 @@ INWEB = inweb/Tangled/inweb CCOPTS = -Wno-unused -DPLATFORM_UNIX -DUNIX64 -DCPU_WORDSIZE_MULTIPLIER=2 -O2 -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/unix.mkscript b/Materials/platforms/unix.mkscript index 4c69ee2f..d9cd3908 100644 --- a/Materials/platforms/unix.mkscript +++ b/Materials/platforms/unix.mkscript @@ -74,6 +74,6 @@ INWEB = inweb/Tangled/inweb CCOPTS = -Wno-unused -DPLATFORM_UNIX -DUNIX64 -DCPU_WORDSIZE_MULTIPLIER=2 -O2 -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/windows.mk b/Materials/platforms/windows.mk index bd6fc4b3..8d3e0e11 100644 --- a/Materials/platforms/windows.mk +++ b/Materials/platforms/windows.mk @@ -10,9 +10,9 @@ EXEEXTENSION = .exe INTEST = intest/Tangled/intest INWEB = inweb/Tangled/inweb -CCOPTS = -DPLATFORM_WINDOWS=1 -D_WIN32_WINNT=0x0600 $(CFLAGS) +CCOPTS = -DPLATFORM_WINDOWS=1 $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Materials/platforms/windows.mkscript b/Materials/platforms/windows.mkscript index 24a40aae..26f5001e 100644 --- a/Materials/platforms/windows.mkscript +++ b/Materials/platforms/windows.mkscript @@ -69,14 +69,14 @@ INWEB = inweb/Tangled/inweb {end-define} {define: link to: TO from: FROM ?options: OPTS} - clang $(CCOPTS) -g -o {TO} {FROM} {OPTS} + clang $(CCOPTS) -Wl,--stack,0x8000000 -g -o {TO} {FROM} {OPTS} {end-define} # Where: -CCOPTS = -DPLATFORM_WINDOWS=1 -D_WIN32_WINNT=0x0600 $(CFLAGS) +CCOPTS = -DPLATFORM_WINDOWS=1 $(CFLAGS) -MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -ferror-limit=1000 +MANYWARNINGS = -Weverything -Wno-unknown-warning-option -Wno-pointer-arith -Wno-unused-macros -Wno-shadow -Wno-cast-align -Wno-variadic-macros -Wno-missing-noreturn -Wno-missing-prototypes -Wno-unused-parameter -Wno-padded -Wno-missing-variable-declarations -Wno-unreachable-code-break -Wno-class-varargs -Wno-format-nonliteral -Wno-cast-qual -Wno-double-promotion -Wno-comma -Wno-strict-prototypes -Wno-extra-semi-stmt -Wno-unreachable-code-return -Wno-unused-but-set-variable -Wno-declaration-after-statement -Wno-used-but-marked-unused -Wno-unsafe-buffer-usage -Wno-misleading-indentation -Wno-implicit-fallthrough -Wno-implicit-int-float-conversion -Wno-incompatible-function-pointer-types-strict -Wno-cast-function-type-strict -Wno-c99-compat -ferror-limit=1000 FEWERWARNINGS = -Wno-implicit-int -Wno-dangling-else -Wno-pointer-sign -Wno-format-extra-args -Wno-tautological-compare -Wno-deprecated-declarations -Wno-logical-op-parentheses -Wno-format -Wno-extra-semi-stmt -Wno-c11-extensions -Wno-unreachable-code-return diff --git a/Tangled/inweb.c b/Tangled/inweb.c index 408ebaa0..21c66c07 100644 --- a/Tangled/inweb.c +++ b/Tangled/inweb.c @@ -21,7 +21,8 @@ #line 42 "inweb/foundation-module/Chapter 1/Foundation Module.w" #include #line 48 "inweb/foundation-module/Chapter 1/Foundation Module.w" -#include + +typedef uint32_t inchar32_t; #ifdef PLATFORM_POSIX #line 25 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" @@ -60,7 +61,7 @@ #line 142 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" int _NSGetExecutablePath(char* buf, uint32_t* bufsize); -void Platform__where_am_i(wchar_t *p, size_t length) { +void Platform__where_am_i(inchar32_t *p, size_t length) { char relative_path[4 * PATH_MAX + 1]; char absolute_path[PATH_MAX + 1]; size_t convert_len; @@ -95,7 +96,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) { /* Next, convert the obtained buffer (which is a string in the local * filename encoding, possibly multibyte) to a wide-char string. */ - convert_len = mbstowcs(p, absolute_path, length); + convert_len = mbstowcs((wchar_t *) p, absolute_path, length); if (convert_len == (size_t)-1) { #ifdef PLATFORM_POSIX @@ -147,7 +148,7 @@ typedef pthread_attr_t foundation_thread_attributes; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 65 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 45 "inweb/foundation-module/Chapter 1/Windows Platform.w" char *Platform__getenv(const char *name) { char *env = getenv(name); if (env == 0) { @@ -166,7 +167,7 @@ char *Platform__getenv(const char *name) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 98 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 96 "inweb/foundation-module/Chapter 1/Windows Platform.w" /* Check the first element of the command: if it has path separators in it, we assume we are running one of our commands, otherwise it is a Unix style command. */ @@ -255,15 +256,19 @@ int Platform__system(const char *cmd) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 398 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 396 "inweb/foundation-module/Chapter 1/Windows Platform.w" typedef HANDLE foundation_thread; -typedef int foundation_thread_attributes; +typedef struct Win32_Thread_Attrs +{ + SIZE_T StackSize; +} +foundation_thread_attributes; struct Win32_Thread_Start { void *(*fn)(void *); void* arg; }; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 499 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 502 "inweb/foundation-module/Chapter 1/Windows Platform.w" struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; #endif /* PLATFORM_WINDOWS */ @@ -362,9 +367,6 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; #define INFORM_FOLDER_RELATIVE_TO_HOME "" #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#define isdigit(x) Platform__Windows_isdigit(x) -#endif /* PLATFORM_WINDOWS */ -#ifdef PLATFORM_WINDOWS #define CREATE_MUTEX(name) \ static struct Win32_Mutex name = { INIT_ONCE_STATIC_INIT, { 0 }}; #endif /* PLATFORM_WINDOWS */ @@ -603,7 +605,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; #define STREAM_OUTDENT(x) Streams__outdent(x); #define SET_INDENT(N) Streams__set_indentation(OUT, N); #define TEMPORARY_TEXT(T) \ - wchar_t T##_dest[2048];\ + inchar32_t T##_dest[2048];\ text_stream T##_stream_structure = Streams__new_buffer(2048, T##_dest);\ text_stream *T = &T##_stream_structure; #define DISCARD_TEXT(T) \ @@ -757,6 +759,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; for (string_position P = Str__start(ST); P.index < Str__len(P.S); P.index++) #define LOOP_BACKWARDS_THROUGH_TEXT(P, ST)\ for (string_position P = Str__back(Str__end(ST)); P.index >= 0; P.index--) +#define CH32EOF 0xFFFFFFFFU /* We need an EOF marker that will fit in an inchar32_t. */ #define NONE_UFBHM 1 #define ZSCII_UFBHM 2 #define UNICODE_UFBHM 3 @@ -927,12 +930,13 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; #define INFORM_EXAMPLE_HEADING_MIT 36 #define PASTE_BUTTONS_MARKDOWNFEATURE 27 #define PHRASE_DEFN_BOXES_MARKDOWNFEATURE 28 +#define PHRASE_HEADER_MIT 37 #define INDEXING_MARKS_MARKDOWNFEATURE 29 -#define INDEX_MARKER_MIT 37 +#define INDEX_MARKER_MIT 38 #define HEADING_MARKERS_MARKDOWNFEATURE 30 -#define HEADING_MARKER_MIT 38 +#define HEADING_MARKER_MIT 39 #define PARAGRAPH_GATING_MARKDOWNFEATURE 31 -#define GATE_MIT 39 +#define GATE_MIT 40 #define INFORM_SYNTAX_COLOURING_MARKDOWNFEATURE 32 #define SEMVER_NUMBER_DEPTH 3 /* major, minor, patch */ #define MMP_SEMVERPART 1 @@ -1263,7 +1267,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; #define NO_DEFINED_CLSG_VALUES 7 #define NO_DEFINED_UFBHM_VALUES 3 #define NO_DEFINED_JSONTYPE_VALUES 8 -#define NO_DEFINED_MIT_VALUES 39 +#define NO_DEFINED_MIT_VALUES 40 #define NO_DEFINED_MDINTERPRETATION_VALUES 11 #define NO_DEFINED_MDHTMLC_VALUES 7 #define NO_DEFINED_MARKDOWNFEATURE_VALUES 33 @@ -1324,7 +1328,7 @@ typedef struct text_stream { int stream_flags; /* bitmap of the |*_STRF| values above */ FILE *write_to_file; /* for an open stream, exactly one of these is |NULL| */ struct HTML_file_state *as_HTML; /* relevant only to the |HTML::| section */ - wchar_t *write_to_memory; + inchar32_t *write_to_memory; struct filename *file_written; /* ditto */ int chars_written; /* number of characters sent, counting |\n| as 1 */ int chars_capacity; /* maximum number the stream can accept without claiming more resources */ @@ -1457,7 +1461,7 @@ typedef struct string_storage_area { int capacity; CLASS_DEFINITION } string_storage_area; -#line 159 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 161 "inweb/foundation-module/Chapter 4/String Manipulation.w" typedef struct string_position { struct text_stream *S; int index; @@ -1469,7 +1473,7 @@ typedef struct tabbed_string_iterator { int line_position; int tab_spacing; } tabbed_string_iterator; -#line 233 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 237 "inweb/foundation-module/Chapter 4/Text Files.w" typedef struct unicode_file_buffer { char unicode_feed_buffer[32]; /* holds a single escape such as "[unicode 3106]" */ int ufb_counter; /* position in the unicode feed buffer */ @@ -1482,7 +1486,7 @@ typedef struct text_file_position { struct unicode_file_buffer ufb; int line_count; /* counting from 1 */ int line_position; - int skip_terminator; + inchar32_t skip_terminator; int actively_scanning; /* whether we are still interested in the rest of the file */ } text_file_position; #line 71 "inweb/foundation-module/Chapter 4/Preprocessor.w" @@ -1505,7 +1509,7 @@ typedef struct preprocessor_state { struct preprocessor_variable_set *stack_frame; struct linked_list *known_macros; /* of |preprocessor_macro| */ struct general_pointer specifics; - wchar_t comment_character; + inchar32_t comment_character; } preprocessor_state; #line 471 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_variable { @@ -1553,8 +1557,8 @@ typedef struct preprocessor_macro_parameter { #line 42 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" typedef struct match_trie { int match_character; /* or one of the special cases above */ - wchar_t group_characters[MAX_TRIE_GROUP_SIZE+1]; - wchar_t *match_outcome; + inchar32_t group_characters[MAX_TRIE_GROUP_SIZE+1]; + inchar32_t *match_outcome; struct match_trie *on_success; struct match_trie *next; } match_trie; @@ -1576,7 +1580,7 @@ typedef struct match_position { } match_position; #line 126 "inweb/foundation-module/Chapter 4/Pattern Matching.w" typedef struct match_result { - wchar_t match_text_storage[MATCH_TEXT_INITIAL_ALLOCATION]; + inchar32_t match_text_storage[MATCH_TEXT_INITIAL_ALLOCATION]; struct text_stream match_text_struct; } match_result; #line 130 "inweb/foundation-module/Chapter 4/Pattern Matching.w" @@ -1655,8 +1659,8 @@ typedef struct HTML_tag { } HTML_tag; #line 699 "inweb/foundation-module/Chapter 5/HTML.w" typedef struct colour_translation { - wchar_t *chip_name; - wchar_t *html_colour; + inchar32_t *chip_name; + inchar32_t *html_colour; } colour_translation; #line 340 "inweb/foundation-module/Chapter 5/Markdown.w" typedef struct markdown_type_metadata { @@ -1696,17 +1700,17 @@ typedef struct markdown_item { int id; /* used only for tracing the tree when debugging */ CLASS_DEFINITION } markdown_item; -#line 832 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 833 "inweb/foundation-module/Chapter 5/Markdown.w" typedef struct md_charpos { struct markdown_item *md; int at; } md_charpos; -#line 1057 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1058 "inweb/foundation-module/Chapter 5/Markdown.w" typedef struct md_links_dictionary { struct dictionary *dict; CLASS_DEFINITION } md_links_dictionary; -#line 1062 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1063 "inweb/foundation-module/Chapter 5/Markdown.w" typedef struct md_link_dictionary_entry { struct text_stream *destination; struct text_stream *title; @@ -1719,14 +1723,14 @@ typedef struct positional_marker { int at; /* character position (not string index) of the start of the marker */ int width; /* for example, 2 for |7) | or |7. |: the non-whitespace chars only */ int list_item_value; /* for example, 7 for |7) | or |7. | */ - wchar_t list_item_flavour; /* for example, |')'| for |7) | and |'.'| for |7. | */ + inchar32_t list_item_flavour; /* for example, |')'| for |7) | and |'.'| for |7. | */ int continues_from_earlier_line; int blank_counts; } positional_marker; #line 182 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" typedef struct md_fencing_data { - wchar_t material; /* character used in the fence syntax */ + inchar32_t material; /* character used in the fence syntax */ int width; struct markdown_item *fenced_code; int left_margin; /* measured as a position, not a string index */ @@ -1755,7 +1759,7 @@ typedef struct md_doc_state { CLASS_DEFINITION } md_doc_state; -#line 878 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 879 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" typedef struct md_link_parse { int is_link; /* |TRUE| for link, |FALSE| for image, |NOT_APPLICABLE| for fail */ struct md_charpos first; /* leftmost character of the whole construct */ @@ -1771,7 +1775,7 @@ typedef struct md_link_parse { struct md_link_dictionary_entry *link_reference; /* or |NULL| if it's not by reference */ struct md_charpos last; /* rightmost character of the whole construct */ } md_link_parse; -#line 1437 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1440 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" typedef struct md_emphasis_delimiter { struct md_charpos pos; /* first character in the run */ int width; /* for example, 7 for a run of seven asterisks */ @@ -1794,13 +1798,16 @@ typedef struct markdown_feature { struct method_set *methods; CLASS_DEFINITION } markdown_feature; -#line 415 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 416 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" typedef struct IFM_example { struct text_stream *name; struct text_stream *description; struct markdown_item *header; struct markdown_item *secondary_header; struct markdown_item *cue; + struct markdown_item *secondary_cue; + struct text_stream *primary_label; + struct text_stream *secondary_label; int star_count; int number; struct text_stream *insignia; @@ -2053,8 +2060,8 @@ typedef struct programming_language { text_stream *end_ifdef; text_stream *start_ifndef; text_stream *end_ifndef; - wchar_t type_notation[MAX_ILDF_REGEXP_LENGTH]; - wchar_t function_notation[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t type_notation[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t function_notation[MAX_ILDF_REGEXP_LENGTH]; int suppress_disclaimer; int C_like; /* languages with this set have access to extra features */ @@ -2077,7 +2084,7 @@ typedef struct colouring_language_block { int run; /* one of the |*_CRULE_RUN| values, or else a colour */ struct text_stream *run_instance; /* used only for |INSTANCES_CRULE_RUN| */ struct text_stream *char_set; /* used only for |CHARACTERS_IN_CRULE_RUN| */ - wchar_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; /* used for |MATCHES_CRULE_RUN|, |BRACKETS_CRULE_RUN| */ + inchar32_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; /* used for |MATCHES_CRULE_RUN|, |BRACKETS_CRULE_RUN| */ /* workspace during painting */ struct match_results mr; /* of a regular expression */ @@ -2087,18 +2094,18 @@ typedef struct colouring_language_block { typedef struct colouring_rule { /* the premiss: */ int sense; /* |FALSE| to negate the condition */ - wchar_t match_colour; /* for |coloured C|, or else |NOT_A_COLOUR| */ - wchar_t match_keyword_of_colour; /* for |keyword C|, or else |NOT_A_COLOUR| */ + inchar32_t match_colour; /* for |coloured C|, or else |NOT_A_COLOUR| */ + inchar32_t match_keyword_of_colour; /* for |keyword C|, or else |NOT_A_COLOUR| */ struct text_stream *match_text; /* or length 0 to mean "anything" */ int match_prefix; /* one of the |*_RULE_PREFIX| values above */ - wchar_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; int number; /* for |number N| rules; 0 for others */ int number_of; /* for |number N of M| rules; 0 for others */ /* the conclusion: */ struct colouring_language_block *execute_block; /* or |NULL|, in which case... */ - wchar_t set_to_colour; /* ...paint the snippet in this colour */ - wchar_t set_prefix_to_colour; /* ...also paint this (same for suffix) */ + inchar32_t set_to_colour; /* ...paint the snippet in this colour */ + inchar32_t set_prefix_to_colour; /* ...also paint this (same for suffix) */ int debug; /* ...or print debugging text to console */ /* workspace during painting */ @@ -2856,13 +2863,13 @@ typedef void (*writer_function_I)(text_stream *, char *, int); typedef void (*log_function)(text_stream *, void *); typedef void (*log_function_I)(text_stream *, int); typedef char string[MAX_STRING_LENGTH+1]; -#line 90 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 91 "inweb/foundation-module/Chapter 1/Foundation Module.w" void Foundation__start(int argc, char **argv) ; -#line 175 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 176 "inweb/foundation-module/Chapter 1/Foundation Module.w" void Foundation__end(void) ; #ifdef PLATFORM_POSIX #line 81 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -int Platform__is_folder_separator(wchar_t c) ; +int Platform__is_folder_separator(inchar32_t c) ; #endif /* PLATFORM_POSIX */ #ifdef PLATFORM_POSIX #line 102 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" @@ -2871,19 +2878,19 @@ char * Platform__getenv(const char *name) ; #ifdef PLATFORM_LINUX #ifdef PLATFORM_POSIX #line 115 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) ; +void Platform__where_am_i(inchar32_t *p, size_t length) ; #endif /* PLATFORM_LINUX */ #endif /* PLATFORM_POSIX */ #ifdef PLATFORM_UNIX #ifdef PLATFORM_POSIX #line 166 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) ; +void Platform__where_am_i(inchar32_t *p, size_t length) ; #endif /* PLATFORM_UNIX */ #endif /* PLATFORM_POSIX */ #ifdef PLATFORM_ANDROID #ifdef PLATFORM_POSIX #line 173 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) ; +void Platform__where_am_i(inchar32_t *p, size_t length) ; #endif /* PLATFORM_ANDROID */ #endif /* PLATFORM_POSIX */ #ifndef PLATFORM_MACOS @@ -3001,103 +3008,99 @@ int Platform__get_core_count(void) ; #endif /* PLATFORM_ANDROID */ #endif /* PLATFORM_POSIX */ #ifdef PLATFORM_WINDOWS -#line 46 "inweb/foundation-module/Chapter 1/Windows Platform.w" -int Platform__Windows_isdigit(int c) ; -#endif /* PLATFORM_WINDOWS */ -#ifdef PLATFORM_WINDOWS -#line 58 "inweb/foundation-module/Chapter 1/Windows Platform.w" -int Platform__is_folder_separator(wchar_t c) ; +#line 38 "inweb/foundation-module/Chapter 1/Windows Platform.w" +int Platform__is_folder_separator(inchar32_t c) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 90 "inweb/foundation-module/Chapter 1/Windows Platform.w" -void Platform__where_am_i(wchar_t *p, size_t length) ; +#line 70 "inweb/foundation-module/Chapter 1/Windows Platform.w" +void Platform__where_am_i(inchar32_t *p, size_t length) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 187 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 185 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__mkdir(char *transcoded_pathname) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 195 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 193 "inweb/foundation-module/Chapter 1/Windows Platform.w" void * Platform__opendir(char *dir_name) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 200 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 198 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__readdir(void *D, char *dir_name, char *leafname) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 217 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 215 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__closedir(void *D) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 225 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 223 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__rename_file(char *old_transcoded_pathname, char *new_transcoded_pathname) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 231 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 229 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__rename_directory(char *old_transcoded_pathname, char *new_transcoded_pathname) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 240 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 238 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__copy_file(char *from_transcoded_pathname, char *to_transcoded_pathname) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 247 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 245 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__path_add(const char* base, const char* add, char* path) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 257 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 255 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__rsync(char *transcoded_source, char *transcoded_dest) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 336 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 334 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__sleep(int seconds) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 343 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 341 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__notification(text_stream *text, int happy) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 361 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 359 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__Win32_ResetConsole(void) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 370 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 368 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__configure_terminal(void) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 412 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 414 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__create_thread(foundation_thread *pt, const foundation_thread_attributes *pa, void *(*fn)(void *), void *arg) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 427 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 429 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__join_thread(foundation_thread pt, void** rv) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 431 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 433 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__init_thread(foundation_thread_attributes* pa, size_t size) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 434 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 437 "inweb/foundation-module/Chapter 1/Windows Platform.w" size_t Platform__get_thread_stack_size(foundation_thread_attributes* pa) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 444 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 447 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__get_core_count(void) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 465 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 468 "inweb/foundation-module/Chapter 1/Windows Platform.w" time_t Platform__never_time(void) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 469 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 472 "inweb/foundation-module/Chapter 1/Windows Platform.w" time_t Platform__timestamp(char *transcoded_filename) ; #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 475 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 478 "inweb/foundation-module/Chapter 1/Windows Platform.w" off_t Platform__size(char *transcoded_filename) ; #endif /* PLATFORM_WINDOWS */ #line 64 "inweb/foundation-module/Chapter 2/Debugging Log.w" -void Log__declare_aspect(int a, wchar_t *name, int def, int alt) ; +void Log__declare_aspect(int a, inchar32_t *name, int def, int alt) ; #line 111 "inweb/foundation-module/Chapter 2/Debugging Log.w" filename * Log__get_debug_log_filename(void) ; #line 115 "inweb/foundation-module/Chapter 2/Debugging Log.w" @@ -3221,60 +3224,62 @@ int Streams__open_to_file_append(text_stream *stream, filename *name, int encod #line 440 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_to_memory(text_stream *stream, int capacity) ; #line 456 "inweb/foundation-module/Chapter 2/Streams.w" -text_stream Streams__new_buffer(int capacity, wchar_t *at) ; +text_stream Streams__new_buffer(int capacity, inchar32_t *at) ; #line 474 "inweb/foundation-module/Chapter 2/Streams.w" -int Streams__open_from_wide_string(text_stream *stream, const wchar_t *c_string) ; -#line 482 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__write_wide_string(text_stream *stream, const wchar_t *c_string) ; -#line 490 "inweb/foundation-module/Chapter 2/Streams.w" +int Streams__open_from_wide_string(text_stream *stream, const inchar32_t *c_string, int capacity) ; +#line 481 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__write_wide_string(text_stream *stream, const inchar32_t *c_string) ; +#line 489 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_ISO_string(text_stream *stream, const char *c_string) ; -#line 498 "inweb/foundation-module/Chapter 2/Streams.w" +#line 497 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_ISO_string(text_stream *stream, const char *c_string) ; -#line 505 "inweb/foundation-module/Chapter 2/Streams.w" +#line 504 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_UTF8_string(text_stream *stream, const char *c_string) ; -#line 513 "inweb/foundation-module/Chapter 2/Streams.w" +#line 512 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_UTF8_string(text_stream *stream, const char *c_string) ; -#line 532 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__write_as_wide_string(wchar_t *C_string, text_stream *stream, int buffer_size) ; -#line 551 "inweb/foundation-module/Chapter 2/Streams.w" +#line 531 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__write_as_wide_string(inchar32_t *C_string, text_stream *stream, int buffer_size) ; +#line 550 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_as_ISO_string(char *C_string, text_stream *stream, int buffer_size) ; -#line 568 "inweb/foundation-module/Chapter 2/Streams.w" +#line 567 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_as_UTF8_string(char *C_string, text_stream *stream, int buffer_size) ; -#line 608 "inweb/foundation-module/Chapter 2/Streams.w" +#line 607 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_locale_string(text_stream *stream, const char *C_string) ; -#line 617 "inweb/foundation-module/Chapter 2/Streams.w" +#line 616 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_as_locale_string(char *C_string, text_stream *stream, int buffer_size) ; -#line 625 "inweb/foundation-module/Chapter 2/Streams.w" +#line 624 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_locale_string(text_stream *stream, char *C_string) ; -#line 638 "inweb/foundation-module/Chapter 2/Streams.w" +#line 637 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__flush(text_stream *stream) ; -#line 646 "inweb/foundation-module/Chapter 2/Streams.w" +#line 645 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__close(text_stream *stream) ; -#line 697 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__putc(int c_int, text_stream *stream) ; -#line 814 "inweb/foundation-module/Chapter 2/Streams.w" +#line 696 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__putc(inchar32_t c, text_stream *stream) ; +#line 744 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__putci(int c_int, text_stream *stream) ; +#line 817 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__literal(text_stream *stream, char *p) ; -#line 828 "inweb/foundation-module/Chapter 2/Streams.w" +#line 831 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__indent(text_stream *stream) ; -#line 833 "inweb/foundation-module/Chapter 2/Streams.w" +#line 836 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__outdent(text_stream *stream) ; -#line 842 "inweb/foundation-module/Chapter 2/Streams.w" +#line 845 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__set_indentation(text_stream *stream, int N) ; -#line 849 "inweb/foundation-module/Chapter 2/Streams.w" +#line 852 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__get_indentation(text_stream *stream) ; -#line 861 "inweb/foundation-module/Chapter 2/Streams.w" +#line 864 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__get_position(text_stream *stream) ; -#line 875 "inweb/foundation-module/Chapter 2/Streams.w" +#line 878 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__latest(text_stream *stream) ; -#line 891 "inweb/foundation-module/Chapter 2/Streams.w" -wchar_t Streams__get_char_at_index(text_stream *stream, int position) ; -#line 903 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__put_char_at_index(text_stream *stream, int position, wchar_t C) ; -#line 929 "inweb/foundation-module/Chapter 2/Streams.w" +#line 894 "inweb/foundation-module/Chapter 2/Streams.w" +inchar32_t Streams__get_char_at_index(text_stream *stream, int position) ; +#line 906 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__put_char_at_index(text_stream *stream, int position, inchar32_t C) ; +#line 932 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__set_position(text_stream *stream, int position) ; -#line 953 "inweb/foundation-module/Chapter 2/Streams.w" +#line 956 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__copy(text_stream *to, text_stream *from) ; -#line 970 "inweb/foundation-module/Chapter 2/Streams.w" +#line 973 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__writer(OUTPUT_STREAM, char *format_string, void *vS) ; #line 51 "inweb/foundation-module/Chapter 2/Writers and Loggers.w" void Writers__log_escape_usage(void) ; @@ -3335,11 +3340,11 @@ dict_entry * Dictionaries__create(dictionary *D, text_stream *K) ; #line 91 "inweb/foundation-module/Chapter 2/Dictionaries.w" void Dictionaries__destroy(dictionary *D, text_stream *K) ; #line 100 "inweb/foundation-module/Chapter 2/Dictionaries.w" -dict_entry * Dictionaries__find_literal(dictionary *D, wchar_t *lit) ; +dict_entry * Dictionaries__find_literal(dictionary *D, inchar32_t *lit) ; #line 107 "inweb/foundation-module/Chapter 2/Dictionaries.w" -dict_entry * Dictionaries__create_literal(dictionary *D, wchar_t *lit) ; +dict_entry * Dictionaries__create_literal(dictionary *D, inchar32_t *lit) ; #line 114 "inweb/foundation-module/Chapter 2/Dictionaries.w" -void Dictionaries__destroy_literal(dictionary *D, wchar_t *lit) ; +void Dictionaries__destroy_literal(dictionary *D, inchar32_t *lit) ; #line 125 "inweb/foundation-module/Chapter 2/Dictionaries.w" dict_entry * Dictionaries__find_p(dictionary *D, text_stream *K, int change) ; #line 202 "inweb/foundation-module/Chapter 2/Dictionaries.w" @@ -3347,19 +3352,19 @@ void * Dictionaries__value_for_entry(dict_entry *de) ; #line 207 "inweb/foundation-module/Chapter 2/Dictionaries.w" void * Dictionaries__read_value(dictionary *D, text_stream *key) ; #line 215 "inweb/foundation-module/Chapter 2/Dictionaries.w" -void * Dictionaries__read_value_literal(dictionary *D, wchar_t *key) ; +void * Dictionaries__read_value_literal(dictionary *D, inchar32_t *key) ; #line 224 "inweb/foundation-module/Chapter 2/Dictionaries.w" void Dictionaries__write_value(dictionary *D, text_stream *key, void *val) ; #line 232 "inweb/foundation-module/Chapter 2/Dictionaries.w" -void Dictionaries__write_value_literal(dictionary *D, wchar_t *key, void *val) ; +void Dictionaries__write_value_literal(dictionary *D, inchar32_t *key, void *val) ; #line 245 "inweb/foundation-module/Chapter 2/Dictionaries.w" text_stream * Dictionaries__create_text(dictionary *D, text_stream *key) ; #line 251 "inweb/foundation-module/Chapter 2/Dictionaries.w" -text_stream * Dictionaries__create_text_literal(dictionary *D, wchar_t *lit) ; +text_stream * Dictionaries__create_text_literal(dictionary *D, inchar32_t *lit) ; #line 262 "inweb/foundation-module/Chapter 2/Dictionaries.w" text_stream * Dictionaries__get_text(dictionary *D, text_stream *key) ; #line 270 "inweb/foundation-module/Chapter 2/Dictionaries.w" -text_stream * Dictionaries__get_text_literal(dictionary *D, wchar_t *lit) ; +text_stream * Dictionaries__get_text_literal(dictionary *D, inchar32_t *lit) ; #line 283 "inweb/foundation-module/Chapter 2/Dictionaries.w" void Dictionaries__dispose_of(dictionary *D) ; #line 18 "inweb/foundation-module/Chapter 2/Trees.w" @@ -3441,15 +3446,15 @@ void CommandLine__begin_group(int id, text_stream *name) ; #line 71 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" void CommandLine__end_group(void) ; #line 74 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" -command_line_switch * CommandLine__declare_switch(int id, wchar_t *name_literal, int val, wchar_t *help_literal) ; +command_line_switch * CommandLine__declare_switch(int id, inchar32_t *name_literal, int val, inchar32_t *help_literal) ; #line 80 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" command_line_switch * CommandLine__declare_switch_p(int id, text_stream *name, int val, text_stream *help_literal) ; #line 117 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" -command_line_switch * CommandLine__declare_boolean_switch(int id, wchar_t *name_literal, int val, wchar_t *help_literal, int active) ; +command_line_switch * CommandLine__declare_boolean_switch(int id, inchar32_t *name_literal, int val, inchar32_t *help_literal, int active) ; #line 136 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" -void CommandLine__declare_numerical_switch(int id, wchar_t *name_literal, int val, wchar_t *help_literal) ; +void CommandLine__declare_numerical_switch(int id, inchar32_t *name_literal, int val, inchar32_t *help_literal) ; #line 143 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" -void CommandLine__declare_textual_switch(int id, wchar_t *name_literal, int val, wchar_t *help_literal) ; +void CommandLine__declare_textual_switch(int id, inchar32_t *name_literal, int val, inchar32_t *help_literal) ; #line 179 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" int CommandLine__read(int argc, char **argv, void *state, void (*f)(int, int, text_stream *, void *), void (*g)(int, text_stream *, void *)) ; #line 189 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" @@ -3473,7 +3478,7 @@ int CommandLine__read_pair(clf_reader_state *crs, text_stream *opt, text_stream #line 332 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" int CommandLine__read_pair_p(text_stream *opt, text_stream *opt_val, int N, text_stream *arg, void *state, void (*f)(int, int, text_stream *, void *), int *substantive) ; #line 424 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" -void CommandLine__declare_heading(wchar_t *heading_text_literal) ; +void CommandLine__declare_heading(inchar32_t *heading_text_literal) ; #line 428 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" void CommandLine__write_help(OUTPUT_STREAM) ; #line 486 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" @@ -3495,7 +3500,7 @@ pathname * Pathnames__from_text_relative(pathname *P, text_stream *path) ; #line 141 "inweb/foundation-module/Chapter 3/Pathnames.w" void Pathnames__writer(OUTPUT_STREAM, char *format_string, void *vP) ; #line 148 "inweb/foundation-module/Chapter 3/Pathnames.w" -void Pathnames__writer_r(OUTPUT_STREAM, pathname *P, int divider) ; +void Pathnames__writer_r(OUTPUT_STREAM, pathname *P, inchar32_t divider) ; #line 178 "inweb/foundation-module/Chapter 3/Pathnames.w" void Pathnames__to_text_relative(OUTPUT_STREAM, pathname *P, pathname *R) ; #line 193 "inweb/foundation-module/Chapter 3/Pathnames.w" @@ -3627,55 +3632,51 @@ void Time__resume_stopwatch(stopwatch_timer *st) ; #line 220 "inweb/foundation-module/Chapter 3/Time.w" void Time__log_timing(stopwatch_timer *st, int total) ; #line 8 "inweb/foundation-module/Chapter 4/Characters.w" -wchar_t Characters__tolower(wchar_t c) ; +inchar32_t Characters__tolower(inchar32_t c) ; #line 11 "inweb/foundation-module/Chapter 4/Characters.w" -wchar_t Characters__toupper(wchar_t c) ; +inchar32_t Characters__toupper(inchar32_t c) ; #line 14 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isalpha(wchar_t c) ; +int Characters__isalpha(inchar32_t c) ; #line 17 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isdigit(wchar_t c) ; +int Characters__isdigit(inchar32_t c) ; #line 20 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isupper(wchar_t c) ; +int Characters__isupper(inchar32_t c) ; #line 23 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__islower(wchar_t c) ; +int Characters__islower(inchar32_t c) ; #line 26 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isalnum(wchar_t c) ; +int Characters__isalnum(inchar32_t c) ; #line 29 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__iscntrl(wchar_t c) ; -#line 33 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__vowel(wchar_t c) ; -#line 41 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_space_or_tab(int c) ; -#line 45 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_whitespace(int c) ; -#line 55 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_babel_whitespace(int c) ; -#line 65 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_Unicode_whitespace(wchar_t c) ; -#line 94 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_ASCII_punctuation(wchar_t c) ; -#line 107 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_Unicode_punctuation(wchar_t c) ; -#line 938 "inweb/foundation-module/Chapter 4/Characters.w" -void Characters__full_Unicode_fold(wchar_t c, wchar_t *F) ; -#line 1755 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_ASCII_letter(wchar_t c) ; -#line 1761 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_ASCII_digit(wchar_t c) ; -#line 1766 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_control_character(wchar_t c) ; -#line 1779 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__combine_accent(int accent, int letter) ; -#line 1833 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__make_filename_safe(int charcode) ; -#line 1839 "inweb/foundation-module/Chapter 4/Characters.w" -wchar_t Characters__make_wchar_t_filename_safe(wchar_t charcode) ; -#line 1848 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__remove_accent(int charcode) ; -#line 1875 "inweb/foundation-module/Chapter 4/Characters.w" -wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) ; -#line 1882 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isalphabetic(int letter) ; +int Characters__iscntrl(inchar32_t c) ; +#line 32 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__vowel(inchar32_t c) ; +#line 40 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_space_or_tab(inchar32_t c) ; +#line 44 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_whitespace(inchar32_t c) ; +#line 54 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_babel_whitespace(inchar32_t c) ; +#line 64 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_Unicode_whitespace(inchar32_t c) ; +#line 93 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_ASCII_punctuation(inchar32_t c) ; +#line 106 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_Unicode_punctuation(inchar32_t c) ; +#line 937 "inweb/foundation-module/Chapter 4/Characters.w" +void Characters__full_Unicode_fold(inchar32_t c, inchar32_t *F) ; +#line 1754 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_ASCII_letter(inchar32_t c) ; +#line 1760 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_ASCII_digit(inchar32_t c) ; +#line 1765 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_control_character(inchar32_t c) ; +#line 1778 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__combine_accent(inchar32_t accent, inchar32_t letter) ; +#line 1832 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__make_filename_safe(inchar32_t charcode) ; +#line 1841 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__remove_accent(inchar32_t charcode) ; +#line 1871 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__isalphabetic(inchar32_t letter) ; #line 25 "inweb/foundation-module/Chapter 4/C Strings.w" int CStrings__strlen_unbounded(const char *p) ; #line 35 "inweb/foundation-module/Chapter 4/C Strings.w" @@ -3698,12 +3699,14 @@ void CStrings__truncated_strcpy(char *to, char *from, int max) ; char * CStrings__park_string(char *from) ; #line 141 "inweb/foundation-module/Chapter 4/C Strings.w" void CStrings__free_ssas(void) ; -#line 14 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__len(wchar_t *p) ; -#line 21 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__cmp(wchar_t *A, wchar_t *B) ; -#line 26 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__atoi(wchar_t *p) ; +#line 11 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__len(const inchar32_t *p) ; +#line 20 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__cmp(inchar32_t *A, inchar32_t *B) ; +#line 40 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__atoi(inchar32_t *p) ; +#line 57 "inweb/foundation-module/Chapter 4/Wide Strings.w" +void Wide__copy(inchar32_t *to, inchar32_t *from) ; #line 38 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__new(void) ; #line 42 "inweb/foundation-module/Chapter 4/String Manipulation.w" @@ -3713,141 +3716,141 @@ void Str__dispose_of(text_stream *text) ; #line 57 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__duplicate(text_stream *E) ; #line 73 "inweb/foundation-module/Chapter 4/String Manipulation.w" -text_stream * Str__new_from_wide_string(const wchar_t *C_string) ; -#line 79 "inweb/foundation-module/Chapter 4/String Manipulation.w" +text_stream * Str__new_from_wide_string(const inchar32_t *C_string) ; +#line 80 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__new_from_ISO_string(const char *C_string) ; -#line 85 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 86 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__new_from_UTF8_string(const char *C_string) ; -#line 91 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 92 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__new_from_locale_string(const char *C_string) ; -#line 100 "inweb/foundation-module/Chapter 4/String Manipulation.w" -text_stream * Str__from_wide_string(text_stream *S, wchar_t *c_string) ; -#line 105 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 101 "inweb/foundation-module/Chapter 4/String Manipulation.w" +text_stream * Str__from_wide_string(text_stream *S, inchar32_t *c_string) ; +#line 107 "inweb/foundation-module/Chapter 4/String Manipulation.w" text_stream * Str__from_locale_string(text_stream *S, char *c_string) ; -#line 113 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 115 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_to_ISO_string(char *C_string, text_stream *S, int buffer_size) ; -#line 117 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 119 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_to_UTF8_string(char *C_string, text_stream *S, int buffer_size) ; -#line 121 "inweb/foundation-module/Chapter 4/String Manipulation.w" -void Str__copy_to_wide_string(wchar_t *C_string, text_stream *S, int buffer_size) ; -#line 125 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 123 "inweb/foundation-module/Chapter 4/String Manipulation.w" +void Str__copy_to_wide_string(inchar32_t *C_string, text_stream *S, int buffer_size) ; +#line 127 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_to_locale_string(char *C_string, text_stream *S, int buffer_size) ; -#line 132 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 134 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__atoi(text_stream *S, int index) ; -#line 146 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 148 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__len(text_stream *S) ; -#line 167 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 169 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__start(text_stream *S) ; -#line 171 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 173 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__at(text_stream *S, int i) ; -#line 177 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 179 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__end(text_stream *S) ; -#line 184 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 186 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__back(string_position P) ; -#line 188 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 190 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__forward(string_position P) ; -#line 192 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 194 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__plus(string_position P, int increment) ; -#line 196 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 198 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__width_between(string_position P1, string_position P2) ; -#line 201 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 203 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__in_range(string_position P) ; -#line 206 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 208 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__index(string_position P) ; -#line 222 "inweb/foundation-module/Chapter 4/String Manipulation.w" -wchar_t Str__get(string_position P) ; -#line 227 "inweb/foundation-module/Chapter 4/String Manipulation.w" -wchar_t Str__get_at(text_stream *S, int index) ; -#line 232 "inweb/foundation-module/Chapter 4/String Manipulation.w" -wchar_t Str__get_first_char(text_stream *S) ; -#line 236 "inweb/foundation-module/Chapter 4/String Manipulation.w" -wchar_t Str__get_last_char(text_stream *S) ; -#line 243 "inweb/foundation-module/Chapter 4/String Manipulation.w" -void Str__put(string_position P, wchar_t C) ; -#line 255 "inweb/foundation-module/Chapter 4/String Manipulation.w" -void Str__put_at(text_stream *S, int index, wchar_t C) ; -#line 262 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 224 "inweb/foundation-module/Chapter 4/String Manipulation.w" +inchar32_t Str__get(string_position P) ; +#line 229 "inweb/foundation-module/Chapter 4/String Manipulation.w" +inchar32_t Str__get_at(text_stream *S, int index) ; +#line 234 "inweb/foundation-module/Chapter 4/String Manipulation.w" +inchar32_t Str__get_first_char(text_stream *S) ; +#line 238 "inweb/foundation-module/Chapter 4/String Manipulation.w" +inchar32_t Str__get_last_char(text_stream *S) ; +#line 245 "inweb/foundation-module/Chapter 4/String Manipulation.w" +void Str__put(string_position P, inchar32_t C) ; +#line 257 "inweb/foundation-module/Chapter 4/String Manipulation.w" +void Str__put_at(text_stream *S, int index, inchar32_t C) ; +#line 264 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__clear(text_stream *S) ; -#line 266 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 268 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__truncate(text_stream *S, int len) ; -#line 274 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 276 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__remove_indentation(text_stream *S, int spaces_per_tab) ; -#line 300 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 302 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__rectify_indentation(text_stream *S, int spaces_per_tab) ; -#line 313 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 315 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__concatenate(text_stream *S1, text_stream *S2) ; -#line 317 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 319 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy(text_stream *S1, text_stream *S2) ; -#line 323 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 325 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_tail(text_stream *S1, text_stream *S2, int from) ; -#line 334 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 336 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_ISO_string(text_stream *S, char *C_string) ; -#line 339 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 341 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_UTF8_string(text_stream *S, char *C_string) ; -#line 344 "inweb/foundation-module/Chapter 4/String Manipulation.w" -void Str__copy_wide_string(text_stream *S, wchar_t *C_string) ; -#line 353 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 346 "inweb/foundation-module/Chapter 4/String Manipulation.w" +void Str__copy_wide_string(text_stream *S, inchar32_t *C_string) ; +#line 355 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__eq(text_stream *S1, text_stream *S2) ; -#line 358 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 360 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__eq_insensitive(text_stream *S1, text_stream *S2) ; -#line 363 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 365 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__ne(text_stream *S1, text_stream *S2) ; -#line 368 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 370 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__ne_insensitive(text_stream *S1, text_stream *S2) ; -#line 390 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 392 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__cmp(text_stream *S1, text_stream *S2) ; -#line 400 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 402 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__cmp_insensitive(text_stream *S1, text_stream *S2) ; -#line 421 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 423 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__prefix_eq(text_stream *S1, text_stream *S2, int N) ; -#line 430 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 432 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__suffix_eq(text_stream *S1, text_stream *S2, int N) ; -#line 439 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 441 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__begins_with(text_stream *S1, text_stream *S2) ; -#line 443 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 445 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__ends_with(text_stream *S1, text_stream *S2) ; -#line 447 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__begins_with_wide_string(text_stream *S, wchar_t *prefix) ; -#line 456 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__ends_with_wide_string(text_stream *S, wchar_t *suffix) ; -#line 466 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__eq_wide_string(text_stream *S1, wchar_t *S2) ; -#line 477 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 449 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__begins_with_wide_string(text_stream *S, inchar32_t *prefix) ; +#line 458 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__ends_with_wide_string(text_stream *S, inchar32_t *suffix) ; +#line 468 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__eq_wide_string(text_stream *S1, inchar32_t *S2) ; +#line 479 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__eq_narrow_string(text_stream *S1, char *S2) ; -#line 488 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__ne_wide_string(text_stream *S1, wchar_t *S2) ; -#line 495 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 490 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__ne_wide_string(text_stream *S1, inchar32_t *S2) ; +#line 497 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__is_whitespace(text_stream *S) ; -#line 505 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 507 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__trim_white_space(text_stream *S) ; -#line 534 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 536 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__trim_white_space_at_end(text_stream *S) ; -#line 545 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 547 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__trim_all_white_space_at_end(text_stream *S) ; -#line 559 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 561 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__delete_first_character(text_stream *S) ; -#line 563 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 565 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__delete_last_character(text_stream *S) ; -#line 568 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 570 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__delete_nth_character(text_stream *S, int n) ; -#line 573 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 575 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__delete_n_characters(text_stream *S, int n) ; -#line 586 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 588 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__substr(OUTPUT_STREAM, string_position from, string_position to) ; -#line 592 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__includes_character(text_stream *S, wchar_t c) ; -#line 600 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__includes_wide_string_at(text_stream *S, wchar_t *prefix, int j) ; -#line 609 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__includes_wide_string_at_insensitive(text_stream *S, wchar_t *prefix, int j) ; -#line 618 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 594 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__includes_character(text_stream *S, inchar32_t c) ; +#line 602 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__includes_wide_string_at(text_stream *S, inchar32_t *prefix, int j) ; +#line 611 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__includes_wide_string_at_insensitive(text_stream *S, inchar32_t *prefix, int j) ; +#line 620 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__includes(text_stream *S, text_stream *T) ; -#line 633 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 635 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__includes_insensitive(text_stream *S, text_stream *T) ; -#line 649 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 651 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__includes_at(text_stream *line, int i, text_stream *pattern) ; -#line 672 "inweb/foundation-module/Chapter 4/String Manipulation.w" -text_stream * Str__literal(wchar_t *wide_C_string) ; +#line 674 "inweb/foundation-module/Chapter 4/String Manipulation.w" +text_stream * Str__literal(inchar32_t *wide_C_string) ; #line 24 "inweb/foundation-module/Chapter 4/Tab Stops.w" tabbed_string_iterator TabbedStr__new(text_stream *line, int tab_spacing) ; #line 37 "inweb/foundation-module/Chapter 4/Tab Stops.w" @@ -3855,7 +3858,7 @@ int TabbedStr__get_index(tabbed_string_iterator *mdw) ; #line 41 "inweb/foundation-module/Chapter 4/Tab Stops.w" int TabbedStr__get_position(tabbed_string_iterator *mdw) ; #line 50 "inweb/foundation-module/Chapter 4/Tab Stops.w" -wchar_t TabbedStr__get_character(tabbed_string_iterator *mdw) ; +inchar32_t TabbedStr__get_character(tabbed_string_iterator *mdw) ; #line 60 "inweb/foundation-module/Chapter 4/Tab Stops.w" int TabbedStr__at_whole_character(tabbed_string_iterator *mdw) ; #line 70 "inweb/foundation-module/Chapter 4/Tab Stops.w" @@ -3882,22 +3885,22 @@ text_file_position TextFiles__nowhere(void) ; text_file_position TextFiles__at(filename *F, int line) ; #line 84 "inweb/foundation-module/Chapter 4/Text Files.w" int TextFiles__read(filename *F, int escape_oddities, char *message, int serious, void (iterator)(text_stream *, text_file_position *, void *), text_file_position *start_at, void *state) ; -#line 177 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 180 "inweb/foundation-module/Chapter 4/Text Files.w" void TextFiles__read_line(OUTPUT_STREAM, int escape_oddities, text_file_position *tfp) ; -#line 201 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 205 "inweb/foundation-module/Chapter 4/Text Files.w" void TextFiles__lose_interest(text_file_position *tfp) ; -#line 239 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 243 "inweb/foundation-module/Chapter 4/Text Files.w" unicode_file_buffer TextFiles__create_ufb(void) ; -#line 246 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 250 "inweb/foundation-module/Chapter 4/Text Files.w" unicode_file_buffer TextFiles__create_filtered_ufb(int mode) ; -#line 252 "inweb/foundation-module/Chapter 4/Text Files.w" -int TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) ; -#line 344 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 256 "inweb/foundation-module/Chapter 4/Text Files.w" +inchar32_t TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) ; +#line 348 "inweb/foundation-module/Chapter 4/Text Files.w" int TextFiles__write_file_contents(OUTPUT_STREAM, filename *F) ; -#line 349 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 353 "inweb/foundation-module/Chapter 4/Text Files.w" void TextFiles__write_file_contents_helper(text_stream *text, text_file_position *tfp, void *state) ; #line 28 "inweb/foundation-module/Chapter 4/Preprocessor.w" -void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, linked_list *special_macros, general_pointer specifics, wchar_t comment_char, int encoding) ; +void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, linked_list *special_macros, general_pointer specifics, inchar32_t comment_char, int encoding) ; #line 95 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__set_loop_var_name(preprocessor_loop *loop, text_stream *name) ; #line 98 "inweb/foundation-module/Chapter 4/Preprocessor.w" @@ -3941,9 +3944,9 @@ void Preprocessor__repeat_expander(preprocessor_macro *mm, preprocessor_state * #line 816 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ; #line 77 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -wchar_t * Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) ; +inchar32_t * Tries__search(match_trie *T, text_stream *p, inchar32_t *add_outcome) ; #line 237 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -int Tries__matches(match_trie *pos, int c) ; +int Tries__matches(match_trie *pos, inchar32_t c) ; #line 257 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" int Tries__is_ambiguous(match_trie *pos) ; #line 267 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" @@ -3951,21 +3954,21 @@ match_trie * Tries__new(int mc) ; #line 293 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" match_avinue * Tries__new_avinue(int from_start) ; #line 300 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -void Tries__add_to_avinue(match_avinue *mt, text_stream *from, wchar_t *to) ; +void Tries__add_to_avinue(match_avinue *mt, text_stream *from, inchar32_t *to) ; #line 309 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" match_avinue * Tries__duplicate_avinue(match_avinue *A) ; #line 327 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -wchar_t * Tries__search_avinue(match_avinue *T, text_stream *p) ; +inchar32_t * Tries__search_avinue(match_avinue *T, text_stream *p) ; #line 339 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" void Tries__log_avinue(OUTPUT_STREAM, void *vA) ; #line 352 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" void Tries__log(OUTPUT_STREAM, match_trie *T) ; #line 10 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__white_space(int c) ; +int Regexp__white_space(inchar32_t c) ; #line 20 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__identifier_char(int c) ; +int Regexp__identifier_char(inchar32_t c) ; #line 35 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__find_expansion(text_stream *text, wchar_t on1, wchar_t on2, wchar_t off1, wchar_t off2, int *len) ; +int Regexp__find_expansion(text_stream *text, inchar32_t on1, inchar32_t on2, inchar32_t off1, inchar32_t off2, int *len) ; #line 51 "inweb/foundation-module/Chapter 4/Pattern Matching.w" int Regexp__find_open_brace(text_stream *text) ; #line 62 "inweb/foundation-module/Chapter 4/Pattern Matching.w" @@ -3975,19 +3978,19 @@ match_results Regexp__create_mr(void) ; #line 154 "inweb/foundation-module/Chapter 4/Pattern Matching.w" void Regexp__dispose_of(match_results *mr) ; #line 168 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__match(match_results *mr, text_stream *text, wchar_t *pattern) ; +int Regexp__match(match_results *mr, text_stream *text, inchar32_t *pattern) ; #line 175 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__match_from(match_results *mr, text_stream *text, wchar_t *pattern, int x, int allow_partial) ; +int Regexp__match_from(match_results *mr, text_stream *text, inchar32_t *pattern, int x, int allow_partial) ; #line 191 "inweb/foundation-module/Chapter 4/Pattern Matching.w" void Regexp__prepare(match_results *mr) ; #line 207 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__match_r(match_results *mr, text_stream *text, wchar_t *pattern, match_position *scan_from, int allow_partial) ; +int Regexp__match_r(match_results *mr, text_stream *text, inchar32_t *pattern, match_position *scan_from, int allow_partial) ; #line 338 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__get_cclass(wchar_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) ; +int Regexp__get_cclass(inchar32_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) ; #line 368 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__test_cclass(int c, int chcl, int range_from, int range_to, wchar_t *drawn_from, int reverse) ; +int Regexp__test_cclass(inchar32_t c, int chcl, int range_from, int range_to, inchar32_t *drawn_from, int reverse) ; #line 415 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__replace(text_stream *text, wchar_t *pattern, wchar_t *replacement, int options) ; +int Regexp__replace(text_stream *text, inchar32_t *pattern, inchar32_t *replacement, int options) ; #line 47 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__write_type(OUTPUT_STREAM, int t) ; #line 80 "inweb/foundation-module/Chapter 4/JSON.w" @@ -4257,7 +4260,7 @@ void HTML__heading(OUTPUT_STREAM, char *tag, text_stream *text) ; #line 690 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__hr(OUTPUT_STREAM, char *class) ; #line 855 "inweb/foundation-module/Chapter 5/HTML.w" -wchar_t * HTML__translate_colour_name(wchar_t *original) ; +inchar32_t * HTML__translate_colour_name(inchar32_t *original) ; #line 863 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__begin_colour(OUTPUT_STREAM, text_stream *col) ; #line 866 "inweb/foundation-module/Chapter 5/HTML.w" @@ -4269,9 +4272,9 @@ void HTML__end_span(OUTPUT_STREAM) ; #line 888 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) ; #line 919 "inweb/foundation-module/Chapter 5/HTML.w" -void HTML__put(OUTPUT_STREAM, int charcode) ; +void HTML__put(OUTPUT_STREAM, inchar32_t charcode) ; #line 16 "inweb/foundation-module/Chapter 5/HTML Entities.w" -int HTMLEntities__parse(text_stream *entity, wchar_t *A, wchar_t *B) ; +int HTMLEntities__parse(text_stream *entity, inchar32_t *A, inchar32_t *B) ; #line 57 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_tracing(int state) ; #line 99 "inweb/foundation-module/Chapter 5/Markdown.w" @@ -4346,123 +4349,123 @@ int Markdown__item_type_quasi_plainish(int t) ; markdown_item * Markdown__new_item(int type) ; #line 547 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item * Markdown__deep_copy(markdown_item *md) ; -#line 566 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 567 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__add_to(markdown_item *md, markdown_item *owner) ; -#line 576 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 577 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_heading_level(markdown_item *md) ; -#line 581 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 582 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_heading_level(markdown_item *md, int L) ; -#line 590 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 591 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_column_count(markdown_item *md) ; -#line 595 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 596 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_column_count(markdown_item *md, int L) ; -#line 604 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 605 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_alignment(markdown_item *md) ; -#line 609 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 610 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_alignment(markdown_item *md, int L) ; -#line 618 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 619 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_filtered_state(markdown_item *md) ; -#line 623 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 624 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_filtered_state(markdown_item *md, int L) ; -#line 629 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 630 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__tag_should_be_filtered(text_stream *tag) ; -#line 645 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 646 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_add_protocol_state(markdown_item *md) ; -#line 652 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 653 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_add_protocol_state(markdown_item *md, int L) ; -#line 663 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 664 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_tick_state(markdown_item *md) ; -#line 668 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 669 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_tick_state(markdown_item *md, int L) ; -#line 678 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 679 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_backtick_count(markdown_item *md) ; -#line 683 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 684 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__set_backtick_count(markdown_item *md, int L) ; -#line 692 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 693 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_item_number(markdown_item *md) ; -#line 698 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_item_flavour(markdown_item *md) ; -#line 709 "inweb/foundation-module/Chapter 5/Markdown.w" -void Markdown__set_item_number_and_flavour(markdown_item *md, int L, wchar_t f) ; -#line 729 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_unescaped(md_charpos pos, int offset) ; -#line 742 "inweb/foundation-module/Chapter 5/Markdown.w" -int Markdown__unescaped_run(md_charpos pos, wchar_t of) ; -#line 752 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 699 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_item_flavour(markdown_item *md) ; +#line 710 "inweb/foundation-module/Chapter 5/Markdown.w" +void Markdown__set_item_number_and_flavour(markdown_item *md, int L, inchar32_t f) ; +#line 730 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_unescaped(md_charpos pos, int offset) ; +#line 743 "inweb/foundation-module/Chapter 5/Markdown.w" +int Markdown__unescaped_run(md_charpos pos, inchar32_t of) ; +#line 753 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item * Markdown__new_volume_marker(text_stream *title) ; -#line 758 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 759 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item * Markdown__new_file_marker(filename *F) ; -#line 764 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 765 "inweb/foundation-module/Chapter 5/Markdown.w" filename * Markdown__get_filename(markdown_item *md) ; -#line 776 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 777 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item * Markdown__new_slice(int type, text_stream *text, int from, int to) ; -#line 790 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_at(markdown_item *md, int at) ; -#line 801 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 791 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_at(markdown_item *md, int at) ; +#line 802 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__width(markdown_item *md) ; -#line 840 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 841 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__nowhere(void) ; -#line 847 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 848 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__pos(markdown_item *md, int at) ; -#line 855 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 856 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__somewhere(md_charpos pos) ; -#line 863 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 864 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__pos_eq(md_charpos A, md_charpos B) ; -#line 874 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 875 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__is_in(md_charpos pos, markdown_item *md) ; -#line 886 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 887 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__left_edge_of(markdown_item *md) ; -#line 896 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 897 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance(md_charpos pos) ; -#line 909 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 910 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_plainish_only(md_charpos pos) ; -#line 921 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 922 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_quasi_plainish_only(md_charpos pos) ; -#line 933 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 934 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_up_to(md_charpos pos, md_charpos end) ; -#line 940 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 941 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_up_to_plainish_only(md_charpos pos, md_charpos end) ; -#line 947 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 948 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_up_to_quasi_plainish_only(md_charpos pos, md_charpos end) ; -#line 957 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get(md_charpos pos) ; -#line 961 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_offset(md_charpos pos, int by) ; -#line 966 "inweb/foundation-module/Chapter 5/Markdown.w" -void Markdown__put(md_charpos pos, wchar_t c) ; -#line 970 "inweb/foundation-module/Chapter 5/Markdown.w" -void Markdown__put_offset(md_charpos pos, int by, wchar_t c) ; -#line 983 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 958 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get(md_charpos pos) ; +#line 962 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_offset(md_charpos pos, int by) ; +#line 967 "inweb/foundation-module/Chapter 5/Markdown.w" +void Markdown__put(md_charpos pos, inchar32_t c) ; +#line 971 "inweb/foundation-module/Chapter 5/Markdown.w" +void Markdown__put_offset(md_charpos pos, int by, inchar32_t c) ; +#line 984 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_to_just_before(markdown_item *chain_from, md_charpos cut_point, markdown_item **left_segment, markdown_item **right_segment) ; -#line 1013 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1014 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_to_just_at(markdown_item *chain_from, md_charpos cut_point, markdown_item **left_segment, markdown_item **right_segment) ; -#line 1043 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1044 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_interval(markdown_item *chain_from, md_charpos A, md_charpos B, markdown_item **left_segment, markdown_item **middle_segment, markdown_item **right_segment) ; -#line 1068 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1069 "inweb/foundation-module/Chapter 5/Markdown.w" md_links_dictionary * Markdown__new_links_dictionary(void) ; -#line 1081 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1082 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__create(md_links_dictionary *dict, text_stream *label, text_stream *destination, text_stream *title) ; -#line 1104 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1105 "inweb/foundation-module/Chapter 5/Markdown.w" md_link_dictionary_entry * Markdown__look_up(md_links_dictionary *dict, text_stream *label) ; -#line 1125 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1126 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__normalise_link_label(text_stream *label) ; -#line 1148 "inweb/foundation-module/Chapter 5/Markdown.w" -void Markdown__debug_char(OUTPUT_STREAM, wchar_t c) ; -#line 1159 "inweb/foundation-module/Chapter 5/Markdown.w" -void Markdown__debug_char_briefly(OUTPUT_STREAM, wchar_t c) ; -#line 1169 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1149 "inweb/foundation-module/Chapter 5/Markdown.w" +void Markdown__debug_char(OUTPUT_STREAM, inchar32_t c) ; +#line 1160 "inweb/foundation-module/Chapter 5/Markdown.w" +void Markdown__debug_char_briefly(OUTPUT_STREAM, inchar32_t c) ; +#line 1170 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_pos(OUTPUT_STREAM, md_charpos A) ; -#line 1178 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1179 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_interval(OUTPUT_STREAM, md_charpos A, md_charpos B) ; -#line 1193 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1194 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_item(OUTPUT_STREAM, markdown_item *md) ; -#line 1238 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1239 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_subtree(OUTPUT_STREAM, markdown_item *md) ; -#line 1243 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1244 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_chain(OUTPUT_STREAM, markdown_item *md) ; -#line 1247 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1248 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_chain_label(OUTPUT_STREAM, markdown_item *md, text_stream *label) ; -#line 1264 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1265 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_item_r(OUTPUT_STREAM, markdown_item *md) ; #line 77 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" md_doc_state * MDBlockParser__initialise(markdown_variation *variation, markdown_item *head, md_links_dictionary *dict) ; @@ -4499,9 +4502,9 @@ void MDBlockParser__debug_marker(OUTPUT_STREAM, positional_marker *marker, int #line 337 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" tabbed_string_iterator MDBlockParser__block_quote_marker(tabbed_string_iterator line_scanner) ; #line 346 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" -tabbed_string_iterator MDBlockParser__bullet_list_marker(tabbed_string_iterator line_scanner, wchar_t *flavour) ; +tabbed_string_iterator MDBlockParser__bullet_list_marker(tabbed_string_iterator line_scanner, inchar32_t *flavour) ; #line 365 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" -tabbed_string_iterator MDBlockParser__ordered_list_marker(tabbed_string_iterator line_scanner, int *v, wchar_t *flavour) ; +tabbed_string_iterator MDBlockParser__ordered_list_marker(tabbed_string_iterator line_scanner, int *v, inchar32_t *flavour) ; #line 394 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" int MDBlockParser__thematic_marker(text_stream *line, int index) ; #line 427 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" @@ -4550,31 +4553,31 @@ markdown_item * MDInlineParser__inline(markdown_variation *variation, md_links_ markdown_item * MDInlineParser__make_inline_chain(markdown_variation *variation, markdown_item *owner, text_stream *text) ; #line 107 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__backtick_string(text_stream *text, int at) ; -#line 559 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_domain_char(wchar_t c) ; -#line 568 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_email_char(wchar_t c) ; -#line 576 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_xmpp_resource_char(wchar_t c) ; -#line 585 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_trailing_punctuation_char(wchar_t c) ; -#line 824 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 560 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_domain_char(inchar32_t c) ; +#line 569 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_email_char(inchar32_t c) ; +#line 577 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_xmpp_resource_char(inchar32_t c) ; +#line 586 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_trailing_punctuation_char(inchar32_t c) ; +#line 825 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" void MDInlineParser__links_and_images(markdown_variation *variation, md_links_dictionary *link_refs, markdown_item *owner, int images_only) ; -#line 960 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 961 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, md_links_dictionary *link_refs, md_charpos from, md_charpos to, int images_only, int links_only) ; -#line 1274 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1277 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owner, int mask) ; -#line 1304 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1307 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__delimiter_run(md_charpos pos, int mask) ; -#line 1335 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1338 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__left_flanking(md_charpos pos, int count) ; -#line 1347 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1350 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__right_flanking(md_charpos pos, int count) ; -#line 1362 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1365 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__can_open_emphasis(md_charpos pos, int count) ; -#line 1371 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1374 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__can_close_emphasis(md_charpos pos, int count) ; -#line 1676 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1681 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__penalty(markdown_item *md) ; #line 25 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" void MDRenderer__render_extended(OUTPUT_STREAM, markdown_item *md, markdown_variation *variation) ; @@ -4582,9 +4585,11 @@ void MDRenderer__render_extended(OUTPUT_STREAM, markdown_item *md, markdown_va void MDRenderer__recurse(OUTPUT_STREAM, markdown_item *md, int mode, markdown_variation *variation) ; #line 388 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" void MDRenderer__slice(OUTPUT_STREAM, markdown_item *md, int mode) ; -#line 430 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" -void MDRenderer__char(OUTPUT_STREAM, wchar_t c, int mode) ; -#line 484 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" +#line 429 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" +void MDRenderer__stream(OUTPUT_STREAM, text_stream *stream, int mode) ; +#line 438 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" +void MDRenderer__char(OUTPUT_STREAM, inchar32_t c, int mode) ; +#line 492 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" void MDRenderer__hex_digit(OUTPUT_STREAM, unsigned int x) ; #line 15 "inweb/foundation-module/Chapter 5/Markdown Variations.w" void MarkdownVariations__start(void) ; @@ -4652,39 +4657,41 @@ int InformFlavouredMarkdown__render_descriptive_headings(markdown_feature *feat void InformFlavouredMarkdown__EE_intervene_after_Phase_I(markdown_feature *feature, markdown_item *tree, md_links_dictionary *link_references) ; #line 328 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__detect_embedded_examples_r(markdown_item *md, int *example_number) ; -#line 365 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 366 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__regroup_examples_r(markdown_item *md, int *example_number) ; -#line 392 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 393 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" markdown_item * InformFlavouredMarkdown__find_example(markdown_item *tree, int eg) ; -#line 400 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 401 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__find_e(markdown_item *md, int eg, markdown_item **result, int *counter) ; -#line 430 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 434 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" IFM_example * InformFlavouredMarkdown__new_example(text_stream *title, text_stream *desc, int star_count, int ecount) ; -#line 453 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 460 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__EE_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) ; -#line 463 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -void InformFlavouredMarkdown__render_example_heading(OUTPUT_STREAM, IFM_example *E, int in_stand_alone_file) ; -#line 530 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 471 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +void InformFlavouredMarkdown__render_example_heading(OUTPUT_STREAM, IFM_example *E, markdown_item *md) ; +#line 571 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__paste_buttons_intervene_after_Phase_I(markdown_feature *feature, markdown_item *tree, md_links_dictionary *link_references) ; -#line 535 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 576 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__pbiapi_r(markdown_item *md) ; -#line 583 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 628 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +void InformFlavouredMarkdown__PD_intervene_after_Phase_I(markdown_feature *feature, markdown_item *md, md_links_dictionary *link_references) ; +#line 680 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__PD_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) ; -#line 639 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 727 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__HM_intervene_after_Phase_I(markdown_feature *feature, markdown_item *md, md_links_dictionary *link_references) ; -#line 676 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 764 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__PG_intervene_after_Phase_I(markdown_feature *feature, markdown_item *md, md_links_dictionary *link_references) ; -#line 698 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 786 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__expand_gate(markdown_item *md) ; -#line 719 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 807 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__set_gatekeeper_function(int (gatekeeper)(text_stream *)) ; -#line 723 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 811 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__PG_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) ; -#line 749 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 837 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) ; -#line 1007 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1095 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__syntax_coloured_code(OUTPUT_STREAM, text_stream *text, text_stream *colouring, int from, int to, int mode) ; -#line 1041 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1129 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__render_text(OUTPUT_STREAM, text_stream *text) ; #line 106 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" ebook * Epub__new(text_stream *title, char *prefix) ; @@ -4693,11 +4700,11 @@ void Epub__use_CSS_throughout(ebook *B, filename *F) ; #line 126 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" void Epub__use_CSS(ebook_volume *V, filename *F) ; #line 130 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" -text_stream * Epub__attach_metadata(ebook *B, wchar_t *K, text_stream *V) ; +text_stream * Epub__attach_metadata(ebook *B, inchar32_t *K, text_stream *V) ; #line 144 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" -text_stream * Epub__get_metadata(ebook *B, wchar_t *K) ; +text_stream * Epub__get_metadata(ebook *B, inchar32_t *K) ; #line 152 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" -text_stream * Epub__ensure_metadata(ebook *B, wchar_t *K) ; +text_stream * Epub__ensure_metadata(ebook *B, inchar32_t *K) ; #line 158 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" ebook_page * Epub__note_page(ebook *B, filename *F, text_stream *title, text_stream *type) ; #line 178 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" @@ -4913,19 +4920,19 @@ colouring_rule * Languages__new_rule(colouring_language_block *within) ; #line 484 "inweb/foundation-module/Chapter 9/Programming Languages.w" void Languages__parse_rule(language_reader_state *state, text_stream *premiss, text_stream *action, text_file_position *tfp) ; #line 564 "inweb/foundation-module/Chapter 9/Programming Languages.w" -reserved_word * Languages__reserved(programming_language *pl, text_stream *W, wchar_t C, text_file_position *tfp) ; +reserved_word * Languages__reserved(programming_language *pl, text_stream *W, inchar32_t C, text_file_position *tfp) ; #line 601 "inweb/foundation-module/Chapter 9/Programming Languages.w" -wchar_t Languages__colour(text_stream *T, text_file_position *tfp) ; +inchar32_t Languages__colour(text_stream *T, text_file_position *tfp) ; #line 626 "inweb/foundation-module/Chapter 9/Programming Languages.w" int Languages__boolean(text_stream *T, text_file_position *tfp) ; #line 640 "inweb/foundation-module/Chapter 9/Programming Languages.w" text_stream * Languages__text(text_stream *T, text_file_position *tfp, int allow) ; #line 727 "inweb/foundation-module/Chapter 9/Programming Languages.w" -void Languages__regexp(wchar_t *write_to, text_stream *T, text_file_position *tfp) ; +void Languages__regexp(inchar32_t *write_to, text_stream *T, text_file_position *tfp) ; #line 777 "inweb/foundation-module/Chapter 9/Programming Languages.w" -int Languages__add_to_regexp(wchar_t *write_to, int i, wchar_t c) ; +int Languages__add_to_regexp(inchar32_t *write_to, int i, inchar32_t c) ; #line 782 "inweb/foundation-module/Chapter 9/Programming Languages.w" -int Languages__add_escape_to_regexp(wchar_t *write_to, int i, wchar_t c) ; +int Languages__add_escape_to_regexp(inchar32_t *write_to, int i, inchar32_t c) ; #line 17 "inweb/foundation-module/Chapter 9/Reserved Words.w" int ReservedWords__hash_code_from_word(text_stream *text) ; #line 47 "inweb/foundation-module/Chapter 9/Reserved Words.w" @@ -5191,7 +5198,7 @@ void TextWeaver__comment_text_in_code(heterogeneous_tree *tree, tree_node *ap, #line 19 "inweb/Chapter 3/The Weaver of Text.w" void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, int within, int in_code) ; #line 200 "inweb/Chapter 3/The Weaver of Text.w" -int TextWeaver__boundary_character(int before, wchar_t c) ; +int TextWeaver__boundary_character(int before, inchar32_t c) ; #line 210 "inweb/Chapter 3/The Weaver of Text.w" void TextWeaver__commentary_fragment(heterogeneous_tree *tree, tree_node *ap, text_stream *fragment, int in_code) ; #line 216 "inweb/Chapter 3/The Weaver of Text.w" @@ -5366,23 +5373,23 @@ void InCSupport__expand_formula(text_stream *OUT, source_line *AL, preform_nont int InCSupport__tangle_line(programming_language *self, text_stream *OUT, text_stream *original) ; #line 666 "inweb/Chapter 4/InC Support.w" void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_nonterminal *pnt, text_stream *original) ; -#line 916 "inweb/Chapter 4/InC Support.w" +#line 917 "inweb/Chapter 4/InC Support.w" preform_nonterminal * InCSupport__nonterminal_by_name(text_stream *name) ; -#line 930 "inweb/Chapter 4/InC Support.w" +#line 931 "inweb/Chapter 4/InC Support.w" text_stream * InCSupport__nonterminal_variable_identifier(text_stream *name) ; -#line 951 "inweb/Chapter 4/InC Support.w" +#line 952 "inweb/Chapter 4/InC Support.w" void InCSupport__additional_tangling(programming_language *self, web *W, tangle_target *target) ; -#line 1014 "inweb/Chapter 4/InC Support.w" +#line 1015 "inweb/Chapter 4/InC Support.w" void InCSupport__weave_grammar_index(OUTPUT_STREAM) ; -#line 1092 "inweb/Chapter 4/InC Support.w" +#line 1093 "inweb/Chapter 4/InC Support.w" int InCSupport__skip_in_weaving(programming_language *self, weave_order *wv, source_line *L) ; -#line 1107 "inweb/Chapter 4/InC Support.w" +#line 1108 "inweb/Chapter 4/InC Support.w" int InCSupport__weave_code_line(programming_language *self, text_stream *OUT, weave_order *wv, web *W, chapter *C, section *S, source_line *L, text_stream *matter, text_stream *concluding_comment) ; -#line 1121 "inweb/Chapter 4/InC Support.w" +#line 1122 "inweb/Chapter 4/InC Support.w" void InCSupport__new_tag_declared(programming_language *self, theme_tag *tag) ; -#line 1128 "inweb/Chapter 4/InC Support.w" +#line 1129 "inweb/Chapter 4/InC Support.w" void InCSupport__analyse_code(programming_language *self, web *W) ; -#line 1135 "inweb/Chapter 4/InC Support.w" +#line 1136 "inweb/Chapter 4/InC Support.w" int InCSupport__share_element(programming_language *self, text_stream *elname) ; #line 301 "inweb/Chapter 5/Weave Tree.w" heterogeneous_tree * WeaveTree__new_tree(weave_order *wv) ; @@ -8827,6 +8834,14 @@ text_stream *TL_IS_3158 = NULL; text_stream *TL_IS_3159 = NULL; text_stream *TL_IS_3160 = NULL; text_stream *TL_IS_3161 = NULL; +text_stream *TL_IS_3162 = NULL; +text_stream *TL_IS_3163 = NULL; +text_stream *TL_IS_3164 = NULL; +text_stream *TL_IS_3165 = NULL; +text_stream *TL_IS_3166 = NULL; +text_stream *TL_IS_3167 = NULL; +text_stream *TL_IS_3168 = NULL; +text_stream *TL_IS_3169 = NULL; void register_tangled_text_literals(void); #line 57 "inweb/foundation-module/Chapter 2/Streams.w" #define WRITE(args...) Writers__printf(OUT, args) @@ -8841,26 +8856,26 @@ void register_tangled_text_literals(void); if (Log__aspect_switched_on(aspect##_DA)) Writers__printf(DL, args); \ } -#line 51 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 52 "inweb/foundation-module/Chapter 1/Foundation Module.w" text_stream *DL = NULL; /* Current destination of debugging text: kept |NULL| until opened */ -#line 80 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 81 "inweb/foundation-module/Chapter 1/Foundation Module.w" -#line 90 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 91 "inweb/foundation-module/Chapter 1/Foundation Module.w" void Foundation__start(int argc, char **argv) { CommandLine__set_locale(argc, argv); Platform__configure_terminal(); Memory__start(); { -#line 110 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 111 "inweb/foundation-module/Chapter 1/Foundation Module.w" Writers__register_writer('f', &Filenames__writer); Writers__register_writer('p', &Pathnames__writer); Writers__register_writer('v', &VersionNumbers__writer); Writers__register_writer('S', &Streams__writer); } -#line 94 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 95 "inweb/foundation-module/Chapter 1/Foundation Module.w" ; register_tangled_text_literals(); ; @@ -8869,52 +8884,52 @@ void Foundation__start(int argc, char **argv) { MarkdownVariations__start(); { -#line 121 "inweb/foundation-module/Chapter 1/Foundation Module.w" - Log__declare_aspect(DEBUGGING_LOG_INCLUSIONS_DA, L"debugging log inclusions", FALSE, FALSE); - Log__declare_aspect(SHELL_USAGE_DA, L"shell usage", FALSE, FALSE); - Log__declare_aspect(MEMORY_USAGE_DA, L"memory usage", FALSE, FALSE); - Log__declare_aspect(TEXT_FILES_DA, L"text files", FALSE, FALSE); +#line 122 "inweb/foundation-module/Chapter 1/Foundation Module.w" + Log__declare_aspect(DEBUGGING_LOG_INCLUSIONS_DA, U"debugging log inclusions", FALSE, FALSE); + Log__declare_aspect(SHELL_USAGE_DA, U"shell usage", FALSE, FALSE); + Log__declare_aspect(MEMORY_USAGE_DA, U"memory usage", FALSE, FALSE); + Log__declare_aspect(TEXT_FILES_DA, U"text files", FALSE, FALSE); } -#line 99 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 100 "inweb/foundation-module/Chapter 1/Foundation Module.w" ; { -#line 132 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 133 "inweb/foundation-module/Chapter 1/Foundation Module.w" Writers__register_logger('a', &Tries__log_avinue); Writers__register_logger('S', &Streams__log); } -#line 100 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 101 "inweb/foundation-module/Chapter 1/Foundation Module.w" ; { -#line 152 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 153 "inweb/foundation-module/Chapter 1/Foundation Module.w" CommandLine__begin_group(FOUNDATION_CLSG, NULL); - CommandLine__declare_switch(LOG_CLSW, L"log", 2, - L"write the debugging log to include diagnostics on X"); - CommandLine__declare_switch(VERSION_CLSW, L"version", 1, - L"print out version number"); - CommandLine__declare_boolean_switch(CRASH_CLSW, L"crash", 1, - L"intentionally crash on internal errors, for backtracing", FALSE); - CommandLine__declare_switch(HELP_CLSW, L"help", 1, - L"print this help information"); - CommandLine__declare_boolean_switch(FIXTIME_CLSW, L"fixtime", 1, - L"pretend the time is 11 a.m. on 28 March 2016 for testing", FALSE); - CommandLine__declare_switch(AT_CLSW, L"at", 2, - L"specify that this tool is installed at X"); - CommandLine__declare_switch(LOCALE_CLSW, L"locale", 2, - L"set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1"); + CommandLine__declare_switch(LOG_CLSW, U"log", 2, + U"write the debugging log to include diagnostics on X"); + CommandLine__declare_switch(VERSION_CLSW, U"version", 1, + U"print out version number"); + CommandLine__declare_boolean_switch(CRASH_CLSW, U"crash", 1, + U"intentionally crash on internal errors, for backtracing", FALSE); + CommandLine__declare_switch(HELP_CLSW, U"help", 1, + U"print this help information"); + CommandLine__declare_boolean_switch(FIXTIME_CLSW, U"fixtime", 1, + U"pretend the time is 11 a.m. on 28 March 2016 for testing", FALSE); + CommandLine__declare_switch(AT_CLSW, U"at", 2, + U"specify that this tool is installed at X"); + CommandLine__declare_switch(LOCALE_CLSW, U"locale", 2, + U"set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1"); CommandLine__end_group(); } -#line 101 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 102 "inweb/foundation-module/Chapter 1/Foundation Module.w" ; } -#line 150 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 151 "inweb/foundation-module/Chapter 1/Foundation Module.w" -#line 175 "inweb/foundation-module/Chapter 1/Foundation Module.w" +#line 176 "inweb/foundation-module/Chapter 1/Foundation Module.w" void Foundation__end(void) { if (Log__aspect_switched_on(MEMORY_USAGE_DA)) Memory__log_statistics(); Log__close(); @@ -8929,7 +8944,7 @@ void Foundation__end(void) { #endif /* PLATFORM_POSIX */ #ifdef PLATFORM_POSIX #line 81 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -int Platform__is_folder_separator(wchar_t c) { +int Platform__is_folder_separator(inchar32_t c) { return (c == FOLDER_SEPARATOR); } @@ -8953,7 +8968,7 @@ char *Platform__getenv(const char *name) { #ifdef PLATFORM_LINUX #ifdef PLATFORM_POSIX #line 115 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) { +void Platform__where_am_i(inchar32_t *p, size_t length) { char buffer[PATH_MAX + 1]; { @@ -8981,7 +8996,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) { { #ifdef PLATFORM_POSIX #line 136 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" - size_t convert_len = mbstowcs(p, buffer, length); + size_t convert_len = mbstowcs((wchar_t *) p, buffer, length); if (convert_len == (size_t)-1) { #ifdef PLATFORM_POSIX @@ -9005,7 +9020,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) { #ifdef PLATFORM_UNIX #ifdef PLATFORM_POSIX #line 166 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) { +void Platform__where_am_i(inchar32_t *p, size_t length) { { #ifdef PLATFORM_POSIX @@ -9024,7 +9039,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) { #ifdef PLATFORM_ANDROID #ifdef PLATFORM_POSIX #line 173 "inweb/foundation-module/Chapter 1/POSIX Platforms.w" -void Platform__where_am_i(wchar_t *p, size_t length) { +void Platform__where_am_i(inchar32_t *p, size_t length) { { #ifdef PLATFORM_POSIX @@ -9281,29 +9296,40 @@ int Platform__get_core_count(void) { #ifdef PLATFORM_WINDOWS #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 46 "inweb/foundation-module/Chapter 1/Windows Platform.w" -int Platform__Windows_isdigit(int c) { - return ((c >= '0') && (c <= '9')) ? 1 : 0; -} - -#endif /* PLATFORM_WINDOWS */ -#ifdef PLATFORM_WINDOWS -#line 58 "inweb/foundation-module/Chapter 1/Windows Platform.w" -int Platform__is_folder_separator(wchar_t c) { +#line 38 "inweb/foundation-module/Chapter 1/Windows Platform.w" +int Platform__is_folder_separator(inchar32_t c) { return ((c == '\\') || (c == '/')); } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 90 "inweb/foundation-module/Chapter 1/Windows Platform.w" -void Platform__where_am_i(wchar_t *p, size_t length) { - DWORD result = GetModuleFileNameW(NULL, p, (DWORD)length); - if ((result == 0) || (result == length)) p[0] = 0; +#line 70 "inweb/foundation-module/Chapter 1/Windows Platform.w" +void Platform__where_am_i(inchar32_t *p, size_t length) { + WCHAR path[_MAX_PATH]; + DWORD result = GetModuleFileNameW(NULL, path, _MAX_PATH); + if ((result == 0) || (result >= _MAX_PATH)) + { + p[0] = 0; + return; + } + + size_t i = 0; + while (1) + { + if ((i >= length) || (i >= _MAX_PATH)) + { + p[0] = 0; + return; + } + p[i] = (inchar32_t)path[i]; + if (p[i] == '\0') return; + i++; + } } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 187 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 185 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__mkdir(char *transcoded_pathname) { errno = 0; int rv = mkdir(transcoded_pathname); @@ -9341,7 +9367,7 @@ void Platform__closedir(void *D) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 225 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 223 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__rename_file(char *old_transcoded_pathname, char *new_transcoded_pathname) { if (rename(old_transcoded_pathname, new_transcoded_pathname) != 0) return FALSE; @@ -9356,14 +9382,14 @@ int Platform__rename_directory(char *old_transcoded_pathname, char *new_transcod #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 240 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 238 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__copy_file(char *from_transcoded_pathname, char *to_transcoded_pathname) { CopyFile(from_transcoded_pathname, to_transcoded_pathname, FALSE); } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 247 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 245 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__path_add(const char* base, const char* add, char* path) { char last; @@ -9451,20 +9477,20 @@ void Platform__rsync(char *transcoded_source, char *transcoded_dest) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 336 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 334 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__sleep(int seconds) { Sleep((DWORD)(1000*seconds)); } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 343 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 341 "inweb/foundation-module/Chapter 1/Windows Platform.w" void Platform__notification(text_stream *text, int happy) { } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 354 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 352 "inweb/foundation-module/Chapter 1/Windows Platform.w" #define WIN32CONS_RESET_MODE 1 #define WIN32CONS_RESET_OUTCP 2 @@ -9508,7 +9534,7 @@ void Platform__configure_terminal(void) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 405 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 407 "inweb/foundation-module/Chapter 1/Windows Platform.w" DWORD WINAPI Platform__Win32_Thread_Func(LPVOID param) { struct Win32_Thread_Start* start = (struct Win32_Thread_Start*)param; (start->fn)(start->arg); @@ -9521,7 +9547,7 @@ int Platform__create_thread(foundation_thread *pt, const foundation_thread_attri struct Win32_Thread_Start* start = (struct Win32_Thread_Start*) malloc(sizeof (struct Win32_Thread_Start)); start->fn = fn; start->arg = arg; - HANDLE thread = CreateThread(0, 0, Platform__Win32_Thread_Func, start, 0, 0); + HANDLE thread = CreateThread(0, pa->StackSize, Platform__Win32_Thread_Func, start, 0, 0); if (thread == 0) { free(start); return 1; @@ -9536,15 +9562,16 @@ int Platform__join_thread(foundation_thread pt, void** rv) { } void Platform__init_thread(foundation_thread_attributes* pa, size_t size) { + pa->StackSize = size; } size_t Platform__get_thread_stack_size(foundation_thread_attributes* pa) { - return 1000000; /* 1Mb, the Windows default */ + return pa->StackSize; } #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 444 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 447 "inweb/foundation-module/Chapter 1/Windows Platform.w" int Platform__get_core_count(void) { int count = 0; SYSTEM_INFO sysInfo; @@ -9560,7 +9587,7 @@ int Platform__get_core_count(void) { #endif /* PLATFORM_WINDOWS */ #ifdef PLATFORM_WINDOWS -#line 465 "inweb/foundation-module/Chapter 1/Windows Platform.w" +#line 468 "inweb/foundation-module/Chapter 1/Windows Platform.w" time_t Platform__never_time(void) { return (time_t) 0; } @@ -9590,7 +9617,7 @@ text_stream *debug_log_file = &debug_log_file_struct; /* The actual debugging lo int das_created = FALSE; debugging_aspect the_debugging_aspects[NO_DEFINED_DA_VALUES]; -void Log__declare_aspect(int a, wchar_t *name, int def, int alt) { +void Log__declare_aspect(int a, inchar32_t *name, int def, int alt) { if (das_created == FALSE) { das_created = TRUE; @@ -9617,7 +9644,7 @@ void Log__declare_aspect(int a, wchar_t *name, int def, int alt) { #line 86 "inweb/foundation-module/Chapter 2/Debugging Log.w" WRITE_TO(da->negated_name, "no-"); for (int i=0; name[i]; i++) { - wchar_t c = name[i]; + inchar32_t c = name[i]; PUT_TO(da->unhyphenated_name, c); if (Characters__is_space_or_tab(c)) c = '-'; PUT_TO(da->hyphenated_name, c); @@ -9713,9 +9740,9 @@ void Log__set_all_aspects(int new_state) { #line 210 "inweb/foundation-module/Chapter 2/Debugging Log.w" int Log__set_aspect_from_command_line(text_stream *name, int give_error) { int list_mode = FALSE; - if (Str__eq_wide_string(name, L"everything")) { Log__set_all_aspects(TRUE); return TRUE; } - if (Str__eq_wide_string(name, L"nothing")) { Log__set_all_aspects(FALSE); return TRUE; } - if (Str__eq_wide_string(name, L"list")) list_mode = TRUE; + if (Str__eq_wide_string(name, U"everything")) { Log__set_all_aspects(TRUE); return TRUE; } + if (Str__eq_wide_string(name, U"nothing")) { Log__set_all_aspects(FALSE); return TRUE; } + if (Str__eq_wide_string(name, U"list")) list_mode = TRUE; for (int i=0; iwrite_to_memory = Memory__calloc(capacity, sizeof(wchar_t), STREAM_MREASON); + stream->write_to_memory = Memory__calloc(capacity, sizeof(inchar32_t), STREAM_MREASON); if (stream->write_to_memory == NULL) return FALSE; (stream->write_to_memory)[0] = 0; stream->stream_flags |= MALLOCED_STRF; @@ -10531,7 +10558,7 @@ int Streams__open_to_memory(text_stream *stream, int capacity) { } #line 456 "inweb/foundation-module/Chapter 2/Streams.w" -text_stream Streams__new_buffer(int capacity, wchar_t *at) { +text_stream Streams__new_buffer(int capacity, inchar32_t *at) { if (at == NULL) internal_error("tried to make stream wrapper for NULL string"); if (capacity < SPACE_AT_END_OF_STREAM) internal_error("memory stream too small"); @@ -10544,65 +10571,64 @@ text_stream Streams__new_buffer(int capacity, wchar_t *at) { } #line 474 "inweb/foundation-module/Chapter 2/Streams.w" -int Streams__open_from_wide_string(text_stream *stream, const wchar_t *c_string) { +int Streams__open_from_wide_string(text_stream *stream, const inchar32_t *c_string, int capacity) { if (stream == NULL) internal_error("tried to open NULL stream"); - int capacity = (c_string)?((int) wcslen(c_string)):0; { -#line 523 "inweb/foundation-module/Chapter 2/Streams.w" +#line 522 "inweb/foundation-module/Chapter 2/Streams.w" if (capacity < 8) capacity = 8; capacity += 1+SPACE_AT_END_OF_STREAM; int rv = Streams__open_to_memory(stream, capacity); if (rv == FALSE) return FALSE; } -#line 477 "inweb/foundation-module/Chapter 2/Streams.w" +#line 476 "inweb/foundation-module/Chapter 2/Streams.w" ; if (c_string) Streams__write_wide_string(stream, c_string); return TRUE; } -void Streams__write_wide_string(text_stream *stream, const wchar_t *c_string) { +void Streams__write_wide_string(text_stream *stream, const inchar32_t *c_string) { for (int i=0; c_string[i]; i++) Streams__putc(c_string[i], stream); } -#line 490 "inweb/foundation-module/Chapter 2/Streams.w" +#line 489 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_ISO_string(text_stream *stream, const char *c_string) { if (stream == NULL) internal_error("tried to open NULL stream"); int capacity = (c_string)?((int) strlen(c_string)):0; { -#line 523 "inweb/foundation-module/Chapter 2/Streams.w" +#line 522 "inweb/foundation-module/Chapter 2/Streams.w" if (capacity < 8) capacity = 8; capacity += 1+SPACE_AT_END_OF_STREAM; int rv = Streams__open_to_memory(stream, capacity); if (rv == FALSE) return FALSE; } -#line 493 "inweb/foundation-module/Chapter 2/Streams.w" +#line 492 "inweb/foundation-module/Chapter 2/Streams.w" ; if (c_string) Streams__write_ISO_string(stream, c_string); return TRUE; } void Streams__write_ISO_string(text_stream *stream, const char *c_string) { - for (int i=0; c_string[i]; i++) Streams__putc(c_string[i], stream); + for (int i=0; c_string[i]; i++) Streams__putci(c_string[i], stream); } -#line 505 "inweb/foundation-module/Chapter 2/Streams.w" +#line 504 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_UTF8_string(text_stream *stream, const char *c_string) { if (stream == NULL) internal_error("tried to open NULL stream"); int capacity = (c_string)?((int) strlen(c_string)):0; { -#line 523 "inweb/foundation-module/Chapter 2/Streams.w" +#line 522 "inweb/foundation-module/Chapter 2/Streams.w" if (capacity < 8) capacity = 8; capacity += 1+SPACE_AT_END_OF_STREAM; int rv = Streams__open_to_memory(stream, capacity); if (rv == FALSE) return FALSE; } -#line 508 "inweb/foundation-module/Chapter 2/Streams.w" +#line 507 "inweb/foundation-module/Chapter 2/Streams.w" ; if (c_string) Streams__write_UTF8_string(stream, c_string); return TRUE; @@ -10610,13 +10636,13 @@ int Streams__open_from_UTF8_string(text_stream *stream, const char *c_string) { void Streams__write_UTF8_string(text_stream *stream, const char *c_string) { unicode_file_buffer ufb = TextFiles__create_ufb(); - int c; + inchar32_t c; while ((c = TextFiles__utf8_fgetc(NULL, &c_string, &ufb)) != 0) Streams__putc(c, stream); } -#line 532 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__write_as_wide_string(wchar_t *C_string, text_stream *stream, int buffer_size) { +#line 531 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__write_as_wide_string(inchar32_t *C_string, text_stream *stream, int buffer_size) { if (buffer_size == 0) return; if (stream == NULL) { C_string[0] = 0; return; } if (stream->write_to_file) internal_error("stream_get_text on file stream"); @@ -10631,7 +10657,7 @@ void Streams__write_as_wide_string(wchar_t *C_string, text_stream *stream, int b C_string[i] = 0; } -#line 551 "inweb/foundation-module/Chapter 2/Streams.w" +#line 550 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_as_ISO_string(char *C_string, text_stream *stream, int buffer_size) { if (buffer_size == 0) return; if (stream == NULL) { C_string[0] = 0; return; } @@ -10640,7 +10666,7 @@ void Streams__write_as_ISO_string(char *C_string, text_stream *stream, int buffe while (stream) { for (int j=0; jchars_written; j++) { if (i >= buffer_size-1) break; - wchar_t c = stream->write_to_memory[j]; + inchar32_t c = stream->write_to_memory[j]; if (c < 256) C_string[i++] = (char) c; else C_string[i++] = '?'; } stream = stream->stream_continues; @@ -10648,7 +10674,7 @@ void Streams__write_as_ISO_string(char *C_string, text_stream *stream, int buffe C_string[i] = 0; } -#line 568 "inweb/foundation-module/Chapter 2/Streams.w" +#line 567 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__write_as_UTF8_string(char *C_string, text_stream *stream, int buffer_size) { if (buffer_size == 0) return; if (stream == NULL) { C_string[0] = 0; return; } @@ -10686,7 +10712,7 @@ void Streams__write_as_UTF8_string(char *C_string, text_stream *stream, int buff to[i] = 0; } -#line 608 "inweb/foundation-module/Chapter 2/Streams.w" +#line 607 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__open_from_locale_string(text_stream *stream, const char *C_string) { if (Locales__get(SHELL_LOCALE) == FILE_ENCODING_UTF8_STRF) return Streams__open_from_UTF8_string(stream, C_string); @@ -10712,13 +10738,13 @@ void Streams__write_locale_string(text_stream *stream, char *C_string) { else Errors__fatal("unknown command line locale"); } -#line 638 "inweb/foundation-module/Chapter 2/Streams.w" +#line 637 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__flush(text_stream *stream) { if (stream == NULL) return; if (stream->write_to_file) fflush(stream->write_to_file); } -#line 646 "inweb/foundation-module/Chapter 2/Streams.w" +#line 645 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__close(text_stream *stream) { if (stream == NULL) internal_error("tried to close NULL stream"); if (stream == &STDOUT_struct) internal_error("tried to close STDOUT stream"); @@ -10731,7 +10757,7 @@ void Streams__close(text_stream *stream) { stream->chars_capacity = -1; /* mark as closed */ if (stream->write_to_file) { -#line 667 "inweb/foundation-module/Chapter 2/Streams.w" +#line 666 "inweb/foundation-module/Chapter 2/Streams.w" if ((ferror(stream->write_to_file)) || (fclose(stream->write_to_file) == EOF)) Errors__fatal("The host computer reported an error trying to write a text file"); if (stream != DL) @@ -10742,32 +10768,30 @@ void Streams__close(text_stream *stream) { stream->write_to_file = NULL; } -#line 656 "inweb/foundation-module/Chapter 2/Streams.w" +#line 655 "inweb/foundation-module/Chapter 2/Streams.w" ; if (stream->write_to_memory) { -#line 686 "inweb/foundation-module/Chapter 2/Streams.w" +#line 685 "inweb/foundation-module/Chapter 2/Streams.w" if ((stream->stream_flags) & MALLOCED_STRF) { - wchar_t *mem = stream->write_to_memory; + inchar32_t *mem = stream->write_to_memory; stream->write_to_memory = NULL; - Memory__I7_free(mem, STREAM_MREASON, stream->chars_capacity*((int) sizeof(wchar_t))); + Memory__I7_free(mem, STREAM_MREASON, stream->chars_capacity*((int) sizeof(inchar32_t))); stream = NULL; } } -#line 657 "inweb/foundation-module/Chapter 2/Streams.w" +#line 656 "inweb/foundation-module/Chapter 2/Streams.w" ; } -#line 697 "inweb/foundation-module/Chapter 2/Streams.w" -void Streams__putc(int c_int, text_stream *stream) { - unsigned int c; - if (c_int >= 0) c = (unsigned int) c_int; else c = (unsigned int) (c_int + 256); +#line 696 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__putc(inchar32_t c, text_stream *stream) { if (stream == NULL) return; text_stream *first_stream = stream; if (c != '\n') { -#line 767 "inweb/foundation-module/Chapter 2/Streams.w" +#line 770 "inweb/foundation-module/Chapter 2/Streams.w" if (first_stream->stream_flags & INDENT_PENDING_STRF) { first_stream->stream_flags -= INDENT_PENDING_STRF; int L = (first_stream->stream_flags & INDENTATION_MASK_STRF)/INDENTATION_BASE_STRF; @@ -10778,7 +10802,7 @@ void Streams__putc(int c_int, text_stream *stream) { } } -#line 702 "inweb/foundation-module/Chapter 2/Streams.w" +#line 699 "inweb/foundation-module/Chapter 2/Streams.w" ; if (stream->stream_flags & READ_ONLY_STRF) internal_error("modifying read-only stream"); if ((stream->stream_flags) & USES_XML_ESCAPES_STRF) { @@ -10792,11 +10816,11 @@ void Streams__putc(int c_int, text_stream *stream) { while (stream->stream_continues) stream = stream->stream_continues; { -#line 794 "inweb/foundation-module/Chapter 2/Streams.w" +#line 797 "inweb/foundation-module/Chapter 2/Streams.w" if (stream->chars_written + SPACE_AT_END_OF_STREAM >= stream->chars_capacity) { if (stream->write_to_file) return; /* write nothing further */ if (stream->write_to_memory) { - int offset = (32 + 2*(stream->chars_capacity))*((int) sizeof(wchar_t)); + int offset = (32 + 2*(stream->chars_capacity))*((int) sizeof(inchar32_t)); int needed = offset + ((int) sizeof(text_stream)) + 32; void *further_allocation = Memory__malloc(needed, STREAM_MREASON); if (further_allocation == NULL) Errors__fatal("Out of memory"); @@ -10811,13 +10835,13 @@ void Streams__putc(int c_int, text_stream *stream) { } } -#line 713 "inweb/foundation-module/Chapter 2/Streams.w" +#line 710 "inweb/foundation-module/Chapter 2/Streams.w" ; if (stream->write_to_file) { if (stream->stream_flags & FILE_ENCODING_UTF8_STRF) { -#line 750 "inweb/foundation-module/Chapter 2/Streams.w" +#line 753 "inweb/foundation-module/Chapter 2/Streams.w" if (c >= 0x200000) { /* invalid Unicode */ fputc('?', stream->write_to_file); } else if (c >= 0x10000) { @@ -10835,7 +10859,7 @@ void Streams__putc(int c_int, text_stream *stream) { } else fputc((int) c, stream->write_to_file); } -#line 716 "inweb/foundation-module/Chapter 2/Streams.w" +#line 713 "inweb/foundation-module/Chapter 2/Streams.w" else if (stream->stream_flags & FILE_ENCODING_ISO_STRF) { if (c >= 0x100) c = '?'; @@ -10855,28 +10879,34 @@ void Streams__putc(int c_int, text_stream *stream) { } else if (stream->write_to_memory) { if ((c >= 0x0300) && (c <= 0x036F) && (stream->chars_written > 0)) { unsigned int newc = (unsigned int) Characters__combine_accent( - (int) c, (stream->write_to_memory)[stream->chars_written - 1]); + c, (stream->write_to_memory)[stream->chars_written - 1]); if (newc) { c = newc; stream->chars_written--; } } - (stream->write_to_memory)[stream->chars_written] = (wchar_t) c; + (stream->write_to_memory)[stream->chars_written] = c; } if (c == '\n') first_stream->stream_flags |= INDENT_PENDING_STRF; stream->chars_written++; } -#line 814 "inweb/foundation-module/Chapter 2/Streams.w" +void Streams__putci(int c_int, text_stream *stream) { + inchar32_t c; + if (c_int >= 0) c = (inchar32_t) c_int; else c = (inchar32_t) (c_int + 256); + Streams__putc(c, stream); +} + +#line 817 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__literal(text_stream *stream, char *p) { if (stream == NULL) return; int i, x = ((stream->stream_flags) & USES_XML_ESCAPES_STRF); if (x) stream->stream_flags -= USES_XML_ESCAPES_STRF; - for (i=0; p[i]; i++) Streams__putc((int) p[i], stream); + for (i=0; p[i]; i++) Streams__putci(p[i], stream); if (x) stream->stream_flags += USES_XML_ESCAPES_STRF; } -#line 828 "inweb/foundation-module/Chapter 2/Streams.w" +#line 831 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__indent(text_stream *stream) { if (stream == NULL) return; stream->stream_flags += INDENTATION_BASE_STRF; @@ -10903,7 +10933,7 @@ int Streams__get_indentation(text_stream *stream) { return (stream->stream_flags & INDENTATION_MASK_STRF)/INDENTATION_BASE_STRF; } -#line 861 "inweb/foundation-module/Chapter 2/Streams.w" +#line 864 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__get_position(text_stream *stream) { int t = 0; while (stream) { @@ -10913,7 +10943,7 @@ int Streams__get_position(text_stream *stream) { return t; } -#line 875 "inweb/foundation-module/Chapter 2/Streams.w" +#line 878 "inweb/foundation-module/Chapter 2/Streams.w" int Streams__latest(text_stream *stream) { if (stream == NULL) return 0; if (stream->write_to_file) internal_error("stream_latest on file stream"); @@ -10926,8 +10956,8 @@ int Streams__latest(text_stream *stream) { return 0; } -#line 891 "inweb/foundation-module/Chapter 2/Streams.w" -wchar_t Streams__get_char_at_index(text_stream *stream, int position) { +#line 894 "inweb/foundation-module/Chapter 2/Streams.w" +inchar32_t Streams__get_char_at_index(text_stream *stream, int position) { if (stream == NULL) internal_error("examining null stream"); if (stream->write_to_file) internal_error("examining file stream"); while (position >= stream->chars_written) { @@ -10939,7 +10969,7 @@ wchar_t Streams__get_char_at_index(text_stream *stream, int position) { return (stream->write_to_memory)[position]; } -void Streams__put_char_at_index(text_stream *stream, int position, wchar_t C) { +void Streams__put_char_at_index(text_stream *stream, int position, inchar32_t C) { if (stream == NULL) internal_error("modifying null stream"); if (stream->write_to_file) internal_error("modifying file stream"); if (stream->stream_flags & READ_ONLY_STRF) internal_error("modifying read-only stream"); @@ -10958,7 +10988,7 @@ void Streams__put_char_at_index(text_stream *stream, int position, wchar_t C) { } } -#line 929 "inweb/foundation-module/Chapter 2/Streams.w" +#line 932 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__set_position(text_stream *stream, int position) { if (stream == NULL) return; if (position < 0) position = 0; /* to simplify the implementation of backspacing */ @@ -10979,21 +11009,21 @@ void Streams__set_position(text_stream *stream, int position) { } } -#line 953 "inweb/foundation-module/Chapter 2/Streams.w" +#line 956 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__copy(text_stream *to, text_stream *from) { if ((from == NULL) || (to == NULL)) return; if (from == to) internal_error("tried to copy a stream to itself"); if (from->write_to_file) internal_error("stream_copy from file stream"); if (from->write_to_memory) { for (int i=0; ichars_written; i++) { - int c = (int) ((from->write_to_memory)[i]); + inchar32_t c = (from->write_to_memory)[i]; Streams__putc(c, to); } if (from->stream_continues) Streams__copy(to, from->stream_continues); } } -#line 970 "inweb/foundation-module/Chapter 2/Streams.w" +#line 973 "inweb/foundation-module/Chapter 2/Streams.w" void Streams__writer(OUTPUT_STREAM, char *format_string, void *vS) { text_stream *S = (text_stream *) vS; Streams__copy(OUT, S); @@ -11068,8 +11098,8 @@ void Writers__register_writer_p(int set, int esc, void *f, int cat) { #line 88 "inweb/foundation-module/Chapter 2/Writers and Loggers.w" ; if ((esc < 0) || (esc >= 128) || - ((Characters__isalpha((wchar_t) esc) == FALSE) && - (Characters__isdigit((wchar_t) esc) == FALSE))) + ((Characters__isalpha((inchar32_t) esc) == FALSE) && + (Characters__isdigit((inchar32_t) esc) == FALSE))) internal_error("nonalphabetic escape"); if (escapes_category[set][esc] != VACANT_ECAT) { WRITE_TO(STDERR, "Clashing escape is %s%c\n", (set == 0)?"%":"$", esc); @@ -11151,28 +11181,28 @@ void Writers__printf(text_stream *stream, char *fmt, ...) { switch (esc_number) { case 'c': { /* |char| is promoted to |int| in variable arguments */ int ival = va_arg(ap, int); - Streams__putc(ival, stream); + Streams__putci(ival, stream); break; } case 'd': case 'i': case 'x': { int ival = va_arg(ap, int); char temp[256]; if (snprintf(temp, 255, format_string, ival) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams__putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams__putci(temp[j], stream); break; } case 'g': { double dval = va_arg(ap, double); char temp[256]; if (snprintf(temp, 255, format_string, dval) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams__putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams__putci(temp[j], stream); break; } case 's': - for (char *sval = va_arg(ap, char *); *sval; sval++) Streams__putc(*sval, stream); + for (char *sval = va_arg(ap, char *); *sval; sval++) Streams__putci(*sval, stream); break; case 'w': { - wchar_t *W = (wchar_t *) va_arg(ap, wchar_t *); + inchar32_t *W = (inchar32_t *) va_arg(ap, inchar32_t *); for (int j = 0; W[j]; j++) Streams__putc(W[j], stream); break; } @@ -11261,28 +11291,28 @@ void Writers__printf(text_stream *stream, char *fmt, ...) { switch (esc_number) { case 'c': { /* |char| is promoted to |int| in variable arguments */ int ival = va_arg(ap, int); - Streams__putc(ival, stream); + Streams__putci(ival, stream); break; } case 'd': case 'i': case 'x': { int ival = va_arg(ap, int); char temp[256]; if (snprintf(temp, 255, format_string, ival) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams__putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams__putci(temp[j], stream); break; } case 'g': { double dval = va_arg(ap, double); char temp[256]; if (snprintf(temp, 255, format_string, dval) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams__putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams__putci(temp[j], stream); break; } case 's': - for (char *sval = va_arg(ap, char *); *sval; sval++) Streams__putc(*sval, stream); + for (char *sval = va_arg(ap, char *); *sval; sval++) Streams__putci(*sval, stream); break; case 'w': { - wchar_t *W = (wchar_t *) va_arg(ap, wchar_t *); + inchar32_t *W = (inchar32_t *) va_arg(ap, inchar32_t *); for (int j = 0; W[j]; j++) Streams__putc(W[j], stream); break; } @@ -11309,12 +11339,12 @@ void Writers__printf(text_stream *stream, char *fmt, ...) { case '"': if (stream->stream_flags & USES_I6_ESCAPES_STRF) Streams__putc('~', stream); - else Streams__putc(*p, stream); + else Streams__putci(*p, stream); break; case '\n': - Streams__putc(*p, stream); + Streams__putci(*p, stream); break; - default: Streams__putc(*p, stream); break; + default: Streams__putci(*p, stream); break; } } va_end(ap); /* macro to end variable argument processing */ @@ -11544,21 +11574,21 @@ void Dictionaries__destroy(dictionary *D, text_stream *K) { } #line 100 "inweb/foundation-module/Chapter 2/Dictionaries.w" -dict_entry *Dictionaries__find_literal(dictionary *D, wchar_t *lit) { +dict_entry *Dictionaries__find_literal(dictionary *D, inchar32_t *lit) { TEMPORARY_TEXT(K) WRITE_TO(K, "%w", lit); dict_entry *E = Dictionaries__find(D, K); DISCARD_TEXT(K) return E; } -dict_entry *Dictionaries__create_literal(dictionary *D, wchar_t *lit) { +dict_entry *Dictionaries__create_literal(dictionary *D, inchar32_t *lit) { TEMPORARY_TEXT(K) WRITE_TO(K, "%w", lit); dict_entry *E = Dictionaries__create(D, K); DISCARD_TEXT(K) return E; } -void Dictionaries__destroy_literal(dictionary *D, wchar_t *lit) { +void Dictionaries__destroy_literal(dictionary *D, inchar32_t *lit) { TEMPORARY_TEXT(K) WRITE_TO(K, "%w", lit); Dictionaries__destroy(D, K); @@ -11668,7 +11698,7 @@ void *Dictionaries__read_value(dictionary *D, text_stream *key) { if (E->vacant) internal_error("read vacant dictionary entry"); return E->value; } -void *Dictionaries__read_value_literal(dictionary *D, wchar_t *key) { +void *Dictionaries__read_value_literal(dictionary *D, inchar32_t *key) { if (D == NULL) return NULL; if (D->textual) internal_error("textual dictionary accessed as pointy"); dict_entry *E = Dictionaries__find_literal(D, key); @@ -11685,7 +11715,7 @@ void Dictionaries__write_value(dictionary *D, text_stream *key, void *val) { if (E->vacant) internal_error("wrote vacant dictionary entry"); E->value = val; } -void Dictionaries__write_value_literal(dictionary *D, wchar_t *key, void *val) { +void Dictionaries__write_value_literal(dictionary *D, inchar32_t *key, void *val) { if (D == NULL) internal_error("wrote to null dictionary"); if (D->textual) internal_error("textual dictionary accessed as pointy"); dict_entry *E = Dictionaries__find_literal(D, key); @@ -11701,7 +11731,7 @@ text_stream *Dictionaries__create_text(dictionary *D, text_stream *key) { dict_entry *E = Dictionaries__create(D, key); return (text_stream *) E->value; } -text_stream *Dictionaries__create_text_literal(dictionary *D, wchar_t *lit) { +text_stream *Dictionaries__create_text_literal(dictionary *D, inchar32_t *lit) { if (D == NULL) internal_error("wrote to null dictionary"); if (D->textual == FALSE) internal_error("pointy dictionary accessed as textual"); dict_entry *E = Dictionaries__create_literal(D, lit); @@ -11717,7 +11747,7 @@ text_stream *Dictionaries__get_text(dictionary *D, text_stream *key) { return (text_stream *) E->value; } -text_stream *Dictionaries__get_text_literal(dictionary *D, wchar_t *lit) { +text_stream *Dictionaries__get_text_literal(dictionary *D, inchar32_t *lit) { if (D == NULL) return NULL; if (D->textual == FALSE) internal_error("pointy dictionary accessed as textual"); dict_entry *E = Dictionaries__find_literal(D, lit); @@ -12093,7 +12123,7 @@ void CommandLine__end_group(void) { current_switch_group = NO_CLSG; } command_line_switch *CommandLine__declare_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { return CommandLine__declare_switch_p(id, Str__new_from_wide_string(name_literal), val, Str__new_from_wide_string(help_literal)); @@ -12111,7 +12141,7 @@ command_line_switch *CommandLine__declare_switch_p(int id, { #line 107 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" cls->switch_sort_name = Str__duplicate(name); - if (Str__begins_with_wide_string(name, L"no-")) { + if (Str__begins_with_wide_string(name, U"no-")) { Str__delete_n_characters(cls->switch_sort_name, 3); WRITE_TO(cls->switch_sort_name, "_"); } @@ -12133,7 +12163,7 @@ command_line_switch *CommandLine__declare_switch_p(int id, #line 117 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" command_line_switch *CommandLine__declare_boolean_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal, int active) { + inchar32_t *name_literal, int val, inchar32_t *help_literal, int active) { command_line_switch *cls = CommandLine__declare_switch(id, name_literal, val, help_literal); text_stream *neg = Str__new(); @@ -12152,14 +12182,14 @@ command_line_switch *CommandLine__declare_boolean_switch(int id, } void CommandLine__declare_numerical_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { command_line_switch *cls = CommandLine__declare_switch(id, name_literal, val, help_literal); cls->form = NUMERICAL_CLSF; } void CommandLine__declare_textual_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { command_line_switch *cls = CommandLine__declare_switch(id, name_literal, val, help_literal); cls->form = TEXTUAL_CLSF; @@ -12246,19 +12276,19 @@ void CommandLine__read_file(clf_reader_state *crs) { void CommandLine__read_file_helper(text_stream *text, text_file_position *tfp, void *state) { clf_reader_state *crs = (clf_reader_state *) state; match_results mr = Regexp__create_mr(); - if ((Str__is_whitespace(text)) || (Regexp__match(&mr, text, L" *#%c*"))) { + if ((Str__is_whitespace(text)) || (Regexp__match(&mr, text, U" *#%c*"))) { ; } else { text_stream *logline = Str__new(); WRITE_TO(logline, "line %d: %S", tfp->line_count, text); CommandLine__record_log(logline); - if (Regexp__match(&mr, text, L" *-*(%C+) (%c+?) *")) { + if (Regexp__match(&mr, text, U" *-*(%C+) (%c+?) *")) { int N = CommandLine__read_pair(crs, mr.exp[0], mr.exp[1]); if (N == 0) Errors__fatal_with_text("unknown command line switch: -%S", mr.exp[0]); if (N == 1) Errors__fatal_with_text("command line switch does not take value: -%S", mr.exp[0]); - } else if (Regexp__match(&mr, text, L" *-*(%C+) *")) { + } else if (Regexp__match(&mr, text, U" *-*(%C+) *")) { int N = CommandLine__read_pair(crs, mr.exp[0], NULL); if (N == 0) Errors__fatal_with_text("unknown command line switch: -%S", mr.exp[0]); @@ -12284,12 +12314,12 @@ int CommandLine__read_pair(clf_reader_state *crs, text_stream *opt, text_stream Str__copy(opt_p, opt); int N = BOGUS_CLSN; match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, opt, L"(%c+)=(%d+)")) || - (Regexp__match(&mr, opt, L"(%c+)=(-%d+)"))) { + if ((Regexp__match(&mr, opt, U"(%c+)=(%d+)")) || + (Regexp__match(&mr, opt, U"(%c+)=(-%d+)"))) { N = Str__atoi(mr.exp[1], 0); Str__copy(opt_p, mr.exp[0]); Str__copy(opt_val, mr.exp[1]); - } else if (Regexp__match(&mr, opt, L"(%c+)=(%c*)")) { + } else if (Regexp__match(&mr, opt, U"(%c+)=(%c*)")) { Str__copy(opt_p, mr.exp[0]); Str__copy(opt_val, mr.exp[1]); } @@ -12348,11 +12378,11 @@ int CommandLine__read_pair_p(text_stream *opt, text_stream *opt_val, int N, ; innocuous = TRUE; break; case VERSION_CLSW: { PRINT("inweb"); - char *svn = "7.2.1-beta+1B48"; + char *svn = "7.2.1-beta+1B50"; if (svn[0]) PRINT(" version %s", svn); char *vname = "Escape to Danger"; if (vname[0]) PRINT(" '%s'", vname); - char *d = "5 September 2023"; + char *d = "9 September 2023"; if (d[0]) PRINT(" (%s)", d); PRINT("\n"); innocuous = TRUE; break; @@ -12388,7 +12418,7 @@ int CommandLine__read_pair_p(text_stream *opt, text_stream *opt_val, int N, #line 422 "inweb/foundation-module/Chapter 3/Command Line Arguments.w" text_stream *cls_heading = NULL; -void CommandLine__declare_heading(wchar_t *heading_text_literal) { +void CommandLine__declare_heading(inchar32_t *heading_text_literal) { cls_heading = Str__new_from_wide_string(heading_text_literal); } @@ -12552,7 +12582,7 @@ void Pathnames__set_installation_path(pathname *P) { } pathname *Pathnames__installation_path(const char *V, text_stream *def) { if (installation_path) return installation_path; - wchar_t where[4*MAX_FILENAME_LENGTH]; + inchar32_t where[4*MAX_FILENAME_LENGTH]; where[0] = 0; Platform__where_am_i(where, 4*MAX_FILENAME_LENGTH); if (where[0]) { @@ -12612,12 +12642,12 @@ pathname *Pathnames__from_text_relative(pathname *P, text_stream *path) { #line 141 "inweb/foundation-module/Chapter 3/Pathnames.w" void Pathnames__writer(OUTPUT_STREAM, char *format_string, void *vP) { pathname *P = (pathname *) vP; - int divider = FOLDER_SEPARATOR; + inchar32_t divider = FOLDER_SEPARATOR; if (format_string[0] == '/') divider = '/'; if (P) Pathnames__writer_r(OUT, P, divider); else WRITE("."); } -void Pathnames__writer_r(OUTPUT_STREAM, pathname *P, int divider) { +void Pathnames__writer_r(OUTPUT_STREAM, pathname *P, inchar32_t divider) { if (P->pathname_of_parent) { Pathnames__writer_r(OUT, P->pathname_of_parent, divider); PUT(divider); @@ -12845,7 +12875,7 @@ text_stream *Filenames__get_leafname(filename *F) { void Filenames__write_unextended_leafname(OUTPUT_STREAM, filename *F) { LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == '.') return; PUT(c); } @@ -12855,7 +12885,7 @@ void Filenames__write_unextended_leafname(OUTPUT_STREAM, filename *F) { void Filenames__write_extension(OUTPUT_STREAM, filename *F) { int on = FALSE; LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == '.') on = TRUE; if (on) PUT(c); } @@ -12864,7 +12894,7 @@ void Filenames__write_extension(OUTPUT_STREAM, filename *F) { filename *Filenames__set_extension(filename *F, text_stream *extension) { TEMPORARY_TEXT(NEWLEAF) LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == '.') break; PUT_TO(NEWLEAF, c); } @@ -12883,25 +12913,25 @@ int Filenames__guess_format(filename *F) { Filenames__write_extension(EXT, F); TEMPORARY_TEXT(NORMALISED) LOOP_THROUGH_TEXT(pos, EXT) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c != ' ') PUT_TO(NORMALISED, Characters__tolower(c)); } DISCARD_TEXT(EXT) int verdict = FORMAT_UNRECOGNISED; - if (Str__eq_wide_string(NORMALISED, L".html")) verdict = FORMAT_PERHAPS_HTML; - else if (Str__eq_wide_string(NORMALISED, L".htm")) verdict = FORMAT_PERHAPS_HTML; - else if (Str__eq_wide_string(NORMALISED, L".jpg")) verdict = FORMAT_PERHAPS_JPEG; - else if (Str__eq_wide_string(NORMALISED, L".jpeg")) verdict = FORMAT_PERHAPS_JPEG; - else if (Str__eq_wide_string(NORMALISED, L".png")) verdict = FORMAT_PERHAPS_PNG; - else if (Str__eq_wide_string(NORMALISED, L".ogg")) verdict = FORMAT_PERHAPS_OGG; - else if (Str__eq_wide_string(NORMALISED, L".aiff")) verdict = FORMAT_PERHAPS_AIFF; - else if (Str__eq_wide_string(NORMALISED, L".aif")) verdict = FORMAT_PERHAPS_AIFF; - else if (Str__eq_wide_string(NORMALISED, L".midi")) verdict = FORMAT_PERHAPS_MIDI; - else if (Str__eq_wide_string(NORMALISED, L".mid")) verdict = FORMAT_PERHAPS_MIDI; - else if (Str__eq_wide_string(NORMALISED, L".mod")) verdict = FORMAT_PERHAPS_MOD; - else if (Str__eq_wide_string(NORMALISED, L".svg")) verdict = FORMAT_PERHAPS_SVG; - else if (Str__eq_wide_string(NORMALISED, L".gif")) verdict = FORMAT_PERHAPS_GIF; + if (Str__eq_wide_string(NORMALISED, U".html")) verdict = FORMAT_PERHAPS_HTML; + else if (Str__eq_wide_string(NORMALISED, U".htm")) verdict = FORMAT_PERHAPS_HTML; + else if (Str__eq_wide_string(NORMALISED, U".jpg")) verdict = FORMAT_PERHAPS_JPEG; + else if (Str__eq_wide_string(NORMALISED, U".jpeg")) verdict = FORMAT_PERHAPS_JPEG; + else if (Str__eq_wide_string(NORMALISED, U".png")) verdict = FORMAT_PERHAPS_PNG; + else if (Str__eq_wide_string(NORMALISED, U".ogg")) verdict = FORMAT_PERHAPS_OGG; + else if (Str__eq_wide_string(NORMALISED, U".aiff")) verdict = FORMAT_PERHAPS_AIFF; + else if (Str__eq_wide_string(NORMALISED, U".aif")) verdict = FORMAT_PERHAPS_AIFF; + else if (Str__eq_wide_string(NORMALISED, U".midi")) verdict = FORMAT_PERHAPS_MIDI; + else if (Str__eq_wide_string(NORMALISED, U".mid")) verdict = FORMAT_PERHAPS_MIDI; + else if (Str__eq_wide_string(NORMALISED, U".mod")) verdict = FORMAT_PERHAPS_MOD; + else if (Str__eq_wide_string(NORMALISED, U".svg")) verdict = FORMAT_PERHAPS_SVG; + else if (Str__eq_wide_string(NORMALISED, U".gif")) verdict = FORMAT_PERHAPS_GIF; else if (Str__len(NORMALISED) > 0) { if ((Str__get(Str__at(NORMALISED, 0)) == '.') && (Str__get(Str__at(NORMALISED, 1)) == 'z') && @@ -13506,7 +13536,7 @@ FILE *CIFilingSystem__fopen(const char *path, const char *mode) { char *CIFilingSystem__strrchr(const char *p) { const char *q = NULL; while (*p) { - if (Platform__is_folder_separator((wchar_t) (*p))) q = p; + if (Platform__is_folder_separator((inchar32_t) (*p))) q = p; p++; } return (char *) q; @@ -13562,7 +13592,7 @@ void Shell__plain_text(OUTPUT_STREAM, text_stream *raw) { void Shell__quote_text(OUTPUT_STREAM, text_stream *raw) { PUT(SHELL_QUOTE_CHARACTER); LOOP_THROUGH_TEXT(pos, raw) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == SHELL_QUOTE_CHARACTER) PUT('\\'); PUT(c); } @@ -13896,55 +13926,54 @@ void Time__log_timing(stopwatch_timer *st, int total) { } #line 8 "inweb/foundation-module/Chapter 4/Characters.w" -wchar_t Characters__tolower(wchar_t c) { - return (wchar_t) tolower((int) c); +inchar32_t Characters__tolower(inchar32_t c) { + return (inchar32_t) tolower((int) c); } -wchar_t Characters__toupper(wchar_t c) { - return (wchar_t) toupper((int) c); +inchar32_t Characters__toupper(inchar32_t c) { + return (inchar32_t) toupper((int) c); } -int Characters__isalpha(wchar_t c) { +int Characters__isalpha(inchar32_t c) { return isalpha((int) c); } -int Characters__isdigit(wchar_t c) { +int Characters__isdigit(inchar32_t c) { return isdigit((int) c); } -int Characters__isupper(wchar_t c) { +int Characters__isupper(inchar32_t c) { return isupper((int) c); } -int Characters__islower(wchar_t c) { +int Characters__islower(inchar32_t c) { return islower((int) c); } -int Characters__isalnum(wchar_t c) { +int Characters__isalnum(inchar32_t c) { return isalnum((int) c); } -int Characters__iscntrl(wchar_t c) { - int i = c; - return ((i >= 0) && (i < 32)); +int Characters__iscntrl(inchar32_t c) { + return (c < 32); } -int Characters__vowel(wchar_t c) { +int Characters__vowel(inchar32_t c) { if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) return TRUE; return FALSE; } -#line 41 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_space_or_tab(int c) { +#line 40 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_space_or_tab(inchar32_t c) { if ((c == ' ') || (c == '\t')) return TRUE; return FALSE; } -int Characters__is_whitespace(int c) { +int Characters__is_whitespace(inchar32_t c) { if ((c == ' ') || (c == '\t') || (c == '\n')) return TRUE; return FALSE; } -#line 55 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_babel_whitespace(int c) { +#line 54 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_babel_whitespace(inchar32_t c) { if ((c == ' ') || (c == '\t') || (c == '\x0a') || (c == '\x0d') || (c == NEWLINE_IN_STRING)) return TRUE; return FALSE; } -#line 65 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_Unicode_whitespace(wchar_t c) { +#line 64 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_Unicode_whitespace(inchar32_t c) { if (c == 0x0009) return TRUE; if (c == 0x000A) return TRUE; if (c == 0x000C) return TRUE; @@ -13969,8 +13998,8 @@ int Characters__is_Unicode_whitespace(wchar_t c) { return FALSE; } -#line 94 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_ASCII_punctuation(wchar_t c) { +#line 93 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_ASCII_punctuation(inchar32_t c) { if ((c >= 0x0021) && (c <= 0x002F)) return TRUE; if ((c >= 0x003A) && (c <= 0x0040)) return TRUE; if ((c >= 0x005B) && (c <= 0x0060)) return TRUE; @@ -13978,9 +14007,9 @@ int Characters__is_ASCII_punctuation(wchar_t c) { return FALSE; } -#line 107 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_Unicode_punctuation(wchar_t c) { - if ((c >= 0) && (c < 0x80)) return Characters__is_ASCII_punctuation(c); +#line 106 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_Unicode_punctuation(inchar32_t c) { + if (c < 0x80) return Characters__is_ASCII_punctuation(c); if (c == 0x00A1) return TRUE; // INVERTED EXCLAMATION MARK if (c == 0x00A7) return TRUE; // SECTION SIGN if (c == 0x00AB) return TRUE; // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -14805,10 +14834,10 @@ int Characters__is_Unicode_punctuation(wchar_t c) { return FALSE; } -#line 938 "inweb/foundation-module/Chapter 4/Characters.w" -void Characters__full_Unicode_fold(wchar_t c, wchar_t *F) { +#line 937 "inweb/foundation-module/Chapter 4/Characters.w" +void Characters__full_Unicode_fold(inchar32_t c, inchar32_t *F) { F[1] = 0; F[2] = 0; F[3] = 0; - if ((c >= 0) && (c < 0x0100)) { + if (c < 0x0100) { if ((c >= 0x0041) && (c <= 0x005A)) { F[0] = 0x0061 + (c - 0x0041); return; } /* LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z */ if (c == 0x00B5) { F[0] = 0x03BC; return; } /* MICRO SIGN */ if ((c >= 0x00C0) && (c <= 0x00D6)) { F[0] = 0x00E0 + (c - 0x00C0); return; } /* LATIN CAPITAL LETTER A WITH GRAVE to LATIN CAPITAL LETTER O WITH DIAERESIS */ @@ -15620,26 +15649,26 @@ void Characters__full_Unicode_fold(wchar_t c, wchar_t *F) { F[0] = c; return; } -#line 1755 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_ASCII_letter(wchar_t c) { +#line 1754 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_ASCII_letter(inchar32_t c) { if ((c >= 'a') && (c <= 'z')) return TRUE; if ((c >= 'A') && (c <= 'Z')) return TRUE; return FALSE; } -int Characters__is_ASCII_digit(wchar_t c) { +int Characters__is_ASCII_digit(inchar32_t c) { if ((c >= '0') && (c <= '9')) return TRUE; return FALSE; } -int Characters__is_control_character(wchar_t c) { +int Characters__is_control_character(inchar32_t c) { if ((c >= 0x0001) && (c <= 0x001f)) return TRUE; if (c == 0x007f) return TRUE; return FALSE; } -#line 1779 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__combine_accent(int accent, int letter) { +#line 1778 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__combine_accent(inchar32_t accent, inchar32_t letter) { switch(accent) { case 0x0300: /* Unicode combining grave */ switch(letter) { @@ -15688,21 +15717,15 @@ int Characters__combine_accent(int accent, int letter) { return 0; } -#line 1833 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__make_filename_safe(int charcode) { +#line 1832 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__make_filename_safe(inchar32_t charcode) { charcode = Characters__remove_accent(charcode); if (charcode >= 128) charcode = '-'; return charcode; } -wchar_t Characters__make_wchar_t_filename_safe(wchar_t charcode) { - charcode = Characters__remove_wchar_t_accent(charcode); - if (charcode >= 128) charcode = '-'; - return charcode; -} - -#line 1848 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__remove_accent(int charcode) { +#line 1841 "inweb/foundation-module/Chapter 4/Characters.w" +inchar32_t Characters__remove_accent(inchar32_t charcode) { switch (charcode) { case 0xC0: case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: charcode = 'A'; break; @@ -15729,13 +15752,9 @@ int Characters__remove_accent(int charcode) { return charcode; } -wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) { - return (wchar_t) Characters__remove_accent((int) charcode); -} - -#line 1882 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__isalphabetic(int letter) { - return Characters__isalpha((wchar_t) Characters__remove_accent(letter)); +#line 1871 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__isalphabetic(inchar32_t letter) { + return Characters__isalpha(Characters__remove_accent(letter)); } @@ -15829,19 +15848,59 @@ void CStrings__free_ssas(void) { -#line 14 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__len(wchar_t *p) { - return (int) wcslen(p); +#line 11 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__len(const inchar32_t *p) { + int l = 0; + while (p[l] != 0) l++; + return l; } -#line 21 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__cmp(wchar_t *A, wchar_t *B) { - return wcscmp(A, B); +#line 20 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__cmp(inchar32_t *A, inchar32_t *B) { + int i = 0; + while (1) + { + inchar32_t a = A[i]; + inchar32_t b = B[i]; + if (a == b) + { + if (a == 0) return 0; + } + else + { + return (a > b) ? 1 : -1; + } + i++; + } + return 0; +} + +#line 40 "inweb/foundation-module/Chapter 4/Wide Strings.w" +int Wide__atoi(inchar32_t *p) { + int val = 0, sign = 1; + while (Characters__is_whitespace(*p)) p++; + if (*p == '-') + { + sign = -1; + p++; + } + while (Characters__isdigit(*p)) + { + val = (val * 10) + (int) (*p - '0'); + p++; + } + return val * sign; } -#line 26 "inweb/foundation-module/Chapter 4/Wide Strings.w" -int Wide__atoi(wchar_t *p) { - return (int) wcstol(p, NULL, 10); +#line 57 "inweb/foundation-module/Chapter 4/Wide Strings.w" +void Wide__copy(inchar32_t *to, inchar32_t *from) { + int i = 0; + while (1) + { + to[i] = from[i]; + if (to[i] == 0) return; + i++; + } } #line 38 "inweb/foundation-module/Chapter 4/String Manipulation.w" @@ -15871,9 +15930,10 @@ text_stream *Str__duplicate(text_stream *E) { } #line 73 "inweb/foundation-module/Chapter 4/String Manipulation.w" -text_stream *Str__new_from_wide_string(const wchar_t *C_string) { +text_stream *Str__new_from_wide_string(const inchar32_t *C_string) { text_stream *S = CREATE(text_stream); - if (Streams__open_from_wide_string(S, C_string)) return S; + int C_len = (C_string)?Wide__len(C_string):0; + if (Streams__open_from_wide_string(S, C_string, C_len)) return S; return NULL; } @@ -15895,9 +15955,10 @@ text_stream *Str__new_from_locale_string(const char *C_string) { return NULL; } -#line 100 "inweb/foundation-module/Chapter 4/String Manipulation.w" -text_stream *Str__from_wide_string(text_stream *S, wchar_t *c_string) { - if (Streams__open_from_wide_string(S, c_string) == FALSE) return NULL; +#line 101 "inweb/foundation-module/Chapter 4/String Manipulation.w" +text_stream *Str__from_wide_string(text_stream *S, inchar32_t *c_string) { + int c_len = (c_string)?Wide__len(c_string):0; + if (Streams__open_from_wide_string(S, c_string, c_len) == FALSE) return NULL; return S; } @@ -15906,7 +15967,7 @@ text_stream *Str__from_locale_string(text_stream *S, char *c_string) { return S; } -#line 113 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 115 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_to_ISO_string(char *C_string, text_stream *S, int buffer_size) { Streams__write_as_ISO_string(C_string, S, buffer_size); } @@ -15915,7 +15976,7 @@ void Str__copy_to_UTF8_string(char *C_string, text_stream *S, int buffer_size) { Streams__write_as_UTF8_string(C_string, S, buffer_size); } -void Str__copy_to_wide_string(wchar_t *C_string, text_stream *S, int buffer_size) { +void Str__copy_to_wide_string(inchar32_t *C_string, text_stream *S, int buffer_size) { Streams__write_as_wide_string(C_string, S, buffer_size); } @@ -15923,7 +15984,7 @@ void Str__copy_to_locale_string(char *C_string, text_stream *S, int buffer_size) Streams__write_as_locale_string(C_string, S, buffer_size); } -#line 132 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 134 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__atoi(text_stream *S, int index) { char buffer[32]; int i = 0; @@ -15934,14 +15995,14 @@ int Str__atoi(text_stream *S, int index) { return atoi(buffer); } -#line 146 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 148 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__len(text_stream *S) { return Streams__get_position(S); } -#line 163 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 165 "inweb/foundation-module/Chapter 4/String Manipulation.w" -#line 167 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 169 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__start(text_stream *S) { string_position P; P.S = S; P.index = 0; return P; } @@ -15956,7 +16017,7 @@ string_position Str__end(text_stream *S) { string_position P; P.S = S; P.index = Str__len(S); return P; } -#line 184 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 186 "inweb/foundation-module/Chapter 4/String Manipulation.w" string_position Str__back(string_position P) { if (P.index > 0) P.index--; return P; } @@ -15983,45 +16044,45 @@ int Str__index(string_position P) { return P.index; } -#line 222 "inweb/foundation-module/Chapter 4/String Manipulation.w" -wchar_t Str__get(string_position P) { +#line 224 "inweb/foundation-module/Chapter 4/String Manipulation.w" +inchar32_t Str__get(string_position P) { if ((P.S == NULL) || (P.index < 0)) return 0; return Streams__get_char_at_index(P.S, P.index); } -wchar_t Str__get_at(text_stream *S, int index) { +inchar32_t Str__get_at(text_stream *S, int index) { if ((S == NULL) || (index < 0)) return 0; return Streams__get_char_at_index(S, index); } -wchar_t Str__get_first_char(text_stream *S) { +inchar32_t Str__get_first_char(text_stream *S) { return Str__get(Str__at(S, 0)); } -wchar_t Str__get_last_char(text_stream *S) { +inchar32_t Str__get_last_char(text_stream *S) { int L = Str__len(S); if (L == 0) return 0; return Str__get(Str__at(S, L-1)); } -#line 243 "inweb/foundation-module/Chapter 4/String Manipulation.w" -void Str__put(string_position P, wchar_t C) { +#line 245 "inweb/foundation-module/Chapter 4/String Manipulation.w" +void Str__put(string_position P, inchar32_t C) { if (P.index < 0) internal_error("wrote before start of string"); if (P.S == NULL) internal_error("wrote to null stream"); int ext = Str__len(P.S); if (P.index > ext) internal_error("wrote beyond end of string"); if (P.index == ext) { - if (C) PUT_TO(P.S, (int) C); + if (C) PUT_TO(P.S, C); return; } Streams__put_char_at_index(P.S, P.index, C); } -void Str__put_at(text_stream *S, int index, wchar_t C) { +void Str__put_at(text_stream *S, int index, inchar32_t C) { Str__put(Str__at(S, index), C); } -#line 262 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 264 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__clear(text_stream *S) { Str__truncate(S, 0); } @@ -16031,7 +16092,7 @@ void Str__truncate(text_stream *S, int len) { if (len < Str__len(S)) Str__put(Str__at(S, len), 0); } -#line 274 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 276 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__remove_indentation(text_stream *S, int spaces_per_tab) { int spaces_in = 0, tab_stops_of_indentation = 0; while (Characters__is_space_or_tab(Str__get_first_char(S))) { @@ -16068,7 +16129,7 @@ void Str__rectify_indentation(text_stream *S, int spaces_per_tab) { DISCARD_TEXT(tail) } -#line 313 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 315 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__concatenate(text_stream *S1, text_stream *S2) { Streams__copy(S1, S2); } @@ -16087,7 +16148,7 @@ void Str__copy_tail(text_stream *S1, text_stream *S2, int from) { PUT_TO(S1, Str__get(P)); } -#line 334 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 336 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__copy_ISO_string(text_stream *S, char *C_string) { Str__clear(S); Streams__write_ISO_string(S, C_string); @@ -16098,12 +16159,12 @@ void Str__copy_UTF8_string(text_stream *S, char *C_string) { Streams__write_UTF8_string(S, C_string); } -void Str__copy_wide_string(text_stream *S, wchar_t *C_string) { +void Str__copy_wide_string(text_stream *S, inchar32_t *C_string) { Str__clear(S); Streams__write_wide_string(S, C_string); } -#line 353 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 355 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__eq(text_stream *S1, text_stream *S2) { if (Str__cmp(S1, S2) == 0) return TRUE; return FALSE; @@ -16124,7 +16185,7 @@ int Str__ne_insensitive(text_stream *S1, text_stream *S2) { return FALSE; } -#line 390 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 392 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__cmp(text_stream *S1, text_stream *S2) { int L1 = Str__len(S1), L2 = Str__len(S2), M = L1; if (L2 < M) M = L2; @@ -16145,7 +16206,7 @@ int Str__cmp_insensitive(text_stream *S1, text_stream *S2) { return Str__len(S1) - Str__len(S2); } -#line 421 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 423 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__prefix_eq(text_stream *S1, text_stream *S2, int N) { int L1 = Str__len(S1), L2 = Str__len(S2); if ((N > L1) || (N > L2)) return FALSE; @@ -16172,7 +16233,7 @@ int Str__ends_with(text_stream *S1, text_stream *S2) { return Str__suffix_eq(S1, S2, Str__len(S2)); } -int Str__begins_with_wide_string(text_stream *S, wchar_t *prefix) { +int Str__begins_with_wide_string(text_stream *S, inchar32_t *prefix) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -16181,19 +16242,19 @@ int Str__begins_with_wide_string(text_stream *S, wchar_t *prefix) { return TRUE; } -int Str__ends_with_wide_string(text_stream *S, wchar_t *suffix) { +int Str__ends_with_wide_string(text_stream *S, inchar32_t *suffix) { if ((suffix == NULL) || (*suffix == 0)) return TRUE; if (S == NULL) return FALSE; - for (int i = 0, at = Str__len(S) - (int) wcslen(suffix); suffix[i]; i++) + for (int i = 0, at = Str__len(S) - Wide__len(suffix); suffix[i]; i++) if (Str__get_at(S, at+i) != suffix[i]) return FALSE; return TRUE; } -#line 466 "inweb/foundation-module/Chapter 4/String Manipulation.w" -int Str__eq_wide_string(text_stream *S1, wchar_t *S2) { +#line 468 "inweb/foundation-module/Chapter 4/String Manipulation.w" +int Str__eq_wide_string(text_stream *S1, inchar32_t *S2) { if (S2 == NULL) return (Str__len(S1) == 0)?TRUE:FALSE; - if (Str__len(S1) == (int) wcslen(S2)) { + if (Str__len(S1) == Wide__len(S2)) { int i=0; LOOP_THROUGH_TEXT(P, S1) if (Str__get(P) != S2[i++]) @@ -16207,17 +16268,17 @@ int Str__eq_narrow_string(text_stream *S1, char *S2) { if (Str__len(S1) == (int) strlen(S2)) { int i=0; LOOP_THROUGH_TEXT(P, S1) - if (Str__get(P) != (wchar_t) S2[i++]) + if (Str__get(P) != (inchar32_t) S2[i++]) return FALSE; return TRUE; } return FALSE; } -int Str__ne_wide_string(text_stream *S1, wchar_t *S2) { +int Str__ne_wide_string(text_stream *S1, inchar32_t *S2) { return (Str__eq_wide_string(S1, S2)?FALSE:TRUE); } -#line 495 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 497 "inweb/foundation-module/Chapter 4/String Manipulation.w" int Str__is_whitespace(text_stream *S) { LOOP_THROUGH_TEXT(pos, S) if (Characters__is_space_or_tab(Str__get(pos)) == FALSE) @@ -16225,7 +16286,7 @@ int Str__is_whitespace(text_stream *S) { return TRUE; } -#line 505 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 507 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__trim_white_space(text_stream *S) { int len = Str__len(S), i = 0, j = 0; string_position F = Str__start(S); @@ -16243,7 +16304,7 @@ void Str__trim_white_space(text_stream *S) { Str__truncate(S, len); if (i > 0) { string_position P = Str__start(S); - wchar_t c = 0; + inchar32_t c = 0; do { c = Str__get(F); Str__put(P, c); @@ -16277,7 +16338,7 @@ int Str__trim_all_white_space_at_end(text_stream *S) { return shortened; } -#line 559 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 561 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__delete_first_character(text_stream *S) { Str__delete_nth_character(S, 0); } @@ -16302,14 +16363,14 @@ void Str__delete_n_characters(text_stream *S, int n) { } } -#line 586 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 588 "inweb/foundation-module/Chapter 4/String Manipulation.w" void Str__substr(OUTPUT_STREAM, string_position from, string_position to) { if (from.S != to.S) internal_error("substr on two different strings"); for (int i = from.index; i < to.index; i++) PUT(Str__get_at(from.S, i)); } -int Str__includes_character(text_stream *S, wchar_t c) { +int Str__includes_character(text_stream *S, inchar32_t c) { if (S) LOOP_THROUGH_TEXT(pos, S) if (Str__get(pos) == c) @@ -16317,7 +16378,7 @@ int Str__includes_character(text_stream *S, wchar_t c) { return FALSE; } -int Str__includes_wide_string_at(text_stream *S, wchar_t *prefix, int j) { +int Str__includes_wide_string_at(text_stream *S, inchar32_t *prefix, int j) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -16326,7 +16387,7 @@ int Str__includes_wide_string_at(text_stream *S, wchar_t *prefix, int j) { return TRUE; } -int Str__includes_wide_string_at_insensitive(text_stream *S, wchar_t *prefix, int j) { +int Str__includes_wide_string_at_insensitive(text_stream *S, inchar32_t *prefix, int j) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -16376,16 +16437,16 @@ int Str__includes_at(text_stream *line, int i, text_stream *pattern) { return TRUE; } -#line 670 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 672 "inweb/foundation-module/Chapter 4/String Manipulation.w" dictionary *string_literals_dictionary = NULL; -text_stream *Str__literal(wchar_t *wide_C_string) { +text_stream *Str__literal(inchar32_t *wide_C_string) { text_stream *answer = NULL; CREATE_MUTEX(mutex); LOCK_MUTEX(mutex); { -#line 682 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 684 "inweb/foundation-module/Chapter 4/String Manipulation.w" if (string_literals_dictionary == NULL) string_literals_dictionary = Dictionaries__new(100, TRUE); answer = Dictionaries__get_text_literal(string_literals_dictionary, wide_C_string); @@ -16397,7 +16458,7 @@ text_stream *Str__literal(wchar_t *wide_C_string) { } } -#line 676 "inweb/foundation-module/Chapter 4/String Manipulation.w" +#line 678 "inweb/foundation-module/Chapter 4/String Manipulation.w" ; UNLOCK_MUTEX(mutex); return answer; @@ -16424,15 +16485,15 @@ int TabbedStr__get_position(tabbed_string_iterator *mdw) { } #line 50 "inweb/foundation-module/Chapter 4/Tab Stops.w" -wchar_t TabbedStr__get_character(tabbed_string_iterator *mdw) { - wchar_t c = Str__get_at(mdw->line, mdw->read_index); +inchar32_t TabbedStr__get_character(tabbed_string_iterator *mdw) { + inchar32_t c = Str__get_at(mdw->line, mdw->read_index); if (c == '\t') return ' '; return c; } #line 60 "inweb/foundation-module/Chapter 4/Tab Stops.w" int TabbedStr__at_whole_character(tabbed_string_iterator *mdw) { - wchar_t c = Str__get_at(mdw->line, mdw->read_index); + inchar32_t c = Str__get_at(mdw->line, mdw->read_index); if (c != '\t') return TRUE; if (mdw->line_position % mdw->tab_spacing == 0) return TRUE; return FALSE; @@ -16491,7 +16552,7 @@ int TabbedStr__spaces_available(tabbed_string_iterator *mdw) { #line 130 "inweb/foundation-module/Chapter 4/Tab Stops.w" int TabbedStr__blank_from_here(tabbed_string_iterator *mdw) { for (int i=mdw->read_index; iline); i++) { - wchar_t c = Str__get_at(mdw->line, i); + inchar32_t c = Str__get_at(mdw->line, i); if ((c != ' ') && (c != '\t')) return FALSE; } return TRUE; @@ -16582,29 +16643,30 @@ int TextFiles__read(filename *F, int escape_oddities, char *message, int serious ; { -#line 130 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 132 "inweb/foundation-module/Chapter 4/Text Files.w" TEMPORARY_TEXT(line) - int i = 0, c = ' '; - while ((c != EOF) && (tfp.actively_scanning)) { + int i = 0; + inchar32_t c = ' '; + while ((c != CH32EOF) && (tfp.actively_scanning)) { c = TextFiles__utf8_fgetc(tfp.handle_when_open, NULL, &tfp.ufb); - if ((c == EOF) || (c == '\x0a') || (c == '\x0d')) { + if ((c == CH32EOF) || (c == '\x0a') || (c == '\x0d')) { Str__put_at(line, i, 0); if ((i > 0) || (c != tfp.skip_terminator)) { { -#line 154 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 157 "inweb/foundation-module/Chapter 4/Text Files.w" iterator(line, &tfp, state); tfp.line_count++; } -#line 137 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 140 "inweb/foundation-module/Chapter 4/Text Files.w" ; if (c == '\x0a') tfp.skip_terminator = '\x0d'; if (c == '\x0d') tfp.skip_terminator = '\x0a'; } else tfp.skip_terminator = 'X'; { -#line 168 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 171 "inweb/foundation-module/Chapter 4/Text Files.w" tfp.line_position = (int) (ftell(tfp.handle_when_open)); if (tfp.line_position == -1) { if (serious) @@ -16614,22 +16676,22 @@ int TextFiles__read(filename *F, int escape_oddities, char *message, int serious } } -#line 141 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 144 "inweb/foundation-module/Chapter 4/Text Files.w" ; i = 0; } else { - Str__put_at(line, i++, (wchar_t) c); + Str__put_at(line, i++, c); } } if ((i > 0) && (tfp.actively_scanning)) { -#line 154 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 157 "inweb/foundation-module/Chapter 4/Text Files.w" iterator(line, &tfp, state); tfp.line_count++; } -#line 148 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 151 "inweb/foundation-module/Chapter 4/Text Files.w" ; DISCARD_TEXT(line) @@ -16640,13 +16702,14 @@ int TextFiles__read(filename *F, int escape_oddities, char *message, int serious return tfp.line_count; } -#line 177 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 180 "inweb/foundation-module/Chapter 4/Text Files.w" void TextFiles__read_line(OUTPUT_STREAM, int escape_oddities, text_file_position *tfp) { Str__clear(OUT); - int i = 0, c = ' '; - while ((c != EOF) && (tfp->actively_scanning)) { + int i = 0; + inchar32_t c = ' '; + while ((c != CH32EOF) && (tfp->actively_scanning)) { c = TextFiles__utf8_fgetc(tfp->handle_when_open, NULL, &tfp->ufb); - if ((c == EOF) || (c == '\x0a') || (c == '\x0d')) { + if ((c == CH32EOF) || (c == '\x0a') || (c == '\x0d')) { Str__put_at(OUT, i, 0); if ((i > 0) || (c != tfp->skip_terminator)) { if (c == '\x0a') tfp->skip_terminator = '\x0d'; @@ -16656,19 +16719,19 @@ void TextFiles__read_line(OUTPUT_STREAM, int escape_oddities, text_file_position i = 0; tfp->line_count++; return; } - Str__put_at(OUT, i++, (wchar_t) c); + Str__put_at(OUT, i++, c); } if ((i > 0) && (tfp->actively_scanning)) tfp->line_count++; } -#line 201 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 205 "inweb/foundation-module/Chapter 4/Text Files.w" void TextFiles__lose_interest(text_file_position *tfp) { tfp->actively_scanning = FALSE; } -#line 231 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 235 "inweb/foundation-module/Chapter 4/Text Files.w" -#line 238 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 242 "inweb/foundation-module/Chapter 4/Text Files.w" unicode_file_buffer TextFiles__create_ufb(void) { unicode_file_buffer ufb; @@ -16683,19 +16746,19 @@ unicode_file_buffer TextFiles__create_filtered_ufb(int mode) { return ufb; } -int TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) { +inchar32_t TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) { int c = EOF, conts, mode = (ufb)?ufb->handling_mode:NONE_UFBHM; if ((ufb) && (ufb->ufb_counter >= 0)) { if (ufb->unicode_feed_buffer[ufb->ufb_counter] == 0) ufb->ufb_counter = -1; - else return ufb->unicode_feed_buffer[ufb->ufb_counter++]; + else return (inchar32_t) ufb->unicode_feed_buffer[ufb->ufb_counter++]; } if (from) c = fgetc(from); else if (or_from) c = ((unsigned char) *((*or_from)++)); - if (c == EOF) return c; /* ruling out EOF leaves a genuine byte from the file */ - if (c<0x80) return c; /* in all other cases, a UTF-8 continuation sequence begins */ + if (c == EOF) return CH32EOF; /* ruling out EOF leaves a genuine byte from the file */ + if (c<0x80) return (inchar32_t) c; /* in all other cases, a UTF-8 continuation sequence begins */ { -#line 286 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 290 "inweb/foundation-module/Chapter 4/Text Files.w" if (c<0xC0) return '?'; /* malformed UTF-8 */ if (c<0xE0) { c = c & 0x1f; conts = 1; } else if (c<0xF0) { c = c & 0xf; conts = 2; } @@ -16712,13 +16775,13 @@ int TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer } } -#line 262 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 266 "inweb/foundation-module/Chapter 4/Text Files.w" ; - if (c == 0xFEFF) return c; /* the Unicode BOM non-character */ + if (c == 0xFEFF) return (inchar32_t) c; /* the Unicode BOM non-character */ if (mode != NONE_UFBHM) { -#line 329 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 333 "inweb/foundation-module/Chapter 4/Text Files.w" if (c == 0x85) return '\x0d'; /* NEL, or "next line" */ if (c == 0xa0) return ' '; /* non-breaking space */ if (c == 0xd7) return 'x'; /* convert multiplication sign to lower case "x" */ @@ -16729,23 +16792,23 @@ int TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer if ((c >= 0x2028) && (c <= 0x2029)) return '\x0d'; /* fancy newlines */ } -#line 265 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 269 "inweb/foundation-module/Chapter 4/Text Files.w" ; if (mode == ZSCII_UFBHM) { { -#line 311 "inweb/foundation-module/Chapter 4/Text Files.w" - if ((c == 0xa1) || (c == 0xa3) || (c == 0xbf)) return c; /* pound sign, inverted ! and ? */ +#line 315 "inweb/foundation-module/Chapter 4/Text Files.w" + if ((c == 0xa1) || (c == 0xa3) || (c == 0xbf)) return (inchar32_t) c; /* pound sign, inverted ! and ? */ if ((c >= 0xc0) && (c <= 0xff)) { /* accented West European letters, but... */ if ((c != 0xd0) && (c != 0xf0) && /* not Icelandic eths */ (c != 0xde) && (c != 0xfe) && /* nor Icelandic thorns */ (c != 0xf7)) /* nor division signs */ - return c; + return (inchar32_t) c; } } -#line 268 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 272 "inweb/foundation-module/Chapter 4/Text Files.w" ; if (ufb) { sprintf(ufb->unicode_feed_buffer, "[unicode %d]", c); @@ -16754,10 +16817,10 @@ int TextFiles__utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer } return '?'; } - return c; + return (inchar32_t) c; } -#line 344 "inweb/foundation-module/Chapter 4/Text Files.w" +#line 348 "inweb/foundation-module/Chapter 4/Text Files.w" int TextFiles__write_file_contents(OUTPUT_STREAM, filename *F) { return TextFiles__read(F, FALSE, NULL, FALSE, &TextFiles__write_file_contents_helper, NULL, OUT); @@ -16771,7 +16834,7 @@ void TextFiles__write_file_contents_helper(text_stream *text, text_file_position #line 28 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, - linked_list *special_macros, general_pointer specifics, wchar_t comment_char, + linked_list *special_macros, general_pointer specifics, inchar32_t comment_char, int encoding) { struct text_stream processed_file; if (STREAM_OPEN_TO_FILE(&processed_file, F, encoding) == FALSE) @@ -16801,7 +16864,7 @@ void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *hea TextFiles__read(prototype, FALSE, "can't open prototype file", TRUE, Preprocessor__scan_line, NULL, &PPS); for (int i=0; icomment_character) return; if (Characters__is_whitespace(c) == FALSE) break; } @@ -16840,9 +16903,9 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X { #line 130 "inweb/foundation-module/Chapter 4/Preprocessor.w" for (int i = 0; i < Str__len(line); i++) { - wchar_t c = Str__get_at(line, i); + inchar32_t c = Str__get_at(line, i); if (c == '\\') { - wchar_t d = Str__get_at(line, i+1); + inchar32_t d = Str__get_at(line, i+1); switch (d) { case '{': Str__put_at(line, i, PROTECTED_OPEN_BRACE_PPCHAR); @@ -16870,7 +16933,7 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X { #line 155 "inweb/foundation-module/Chapter 4/Preprocessor.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L" *{define: *(%C+) *} *")) + if (Regexp__match(&mr, line, U" *{define: *(%C+) *} *")) { #line 163 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining) @@ -16885,7 +16948,7 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X } #line 156 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; - if (Regexp__match(&mr, line, L" *{define: *(%C+) (%c*)} *")) + if (Regexp__match(&mr, line, U" *{define: *(%C+) (%c*)} *")) { #line 173 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining) @@ -16900,7 +16963,7 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X } #line 157 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; - if (Regexp__match(&mr, line, L" *{end-define} *")) + if (Regexp__match(&mr, line, U" *{end-define} *")) { #line 188 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining == NULL) @@ -16955,7 +17018,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess TEMPORARY_TEXT(after_matter) int bl = 0, after_times = FALSE; for (int i = 0; i < Str__len(text); i++) { - wchar_t c = Str__get_at(text, i); + inchar32_t c = Str__get_at(text, i); if (after_times) PUT_TO(after_matter, c); else if (c == '{') { bl++; @@ -17010,7 +17073,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess text_stream *identifier = braced_matter; text_stream *parameter_settings = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, identifier, L"(%C+) (%c*)")) { + if (Regexp__match(&mr, identifier, U"(%C+) (%c*)")) { identifier = mr.exp[0]; parameter_settings = mr.exp[1]; } @@ -17086,12 +17149,12 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess { #line 391 "inweb/foundation-module/Chapter 4/Preprocessor.w" match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, parameter_settings, L" *(%C+): *(%c*)")) { + while (Regexp__match(&mr, parameter_settings, U" *(%C+): *(%c*)")) { text_stream *setting = mr.exp[0]; text_stream *value = mr.exp[1]; text_stream *remainder = NULL; match_results mr3 = Regexp__create_mr(); - if (Regexp__match(&mr3, value, L"(%c+?) *(%C+:[^/]%c*)")) { + if (Regexp__match(&mr3, value, U"(%c+?) *(%C+:[^/]%c*)")) { value = mr3.exp[0]; remainder = mr3.exp[1]; } @@ -17189,7 +17252,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess #line 457 "inweb/foundation-module/Chapter 4/Preprocessor.w" int Preprocessor__acceptable_variable_name(text_stream *name) { LOOP_THROUGH_TEXT(pos, name) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if ((c >= '0') && (c <= '9')) continue; if ((c >= 'A') && (c <= 'Z')) continue; if (c == '_') continue; @@ -17288,7 +17351,7 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, #line 633 "inweb/foundation-module/Chapter 4/Preprocessor.w" text_stream *spec = Str__duplicate(parameter_specification); match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, spec, L" *(%C+): *(%C+) *(%c*)")) { + while (Regexp__match(&mr, spec, U" *(%C+): *(%C+) *(%c*)")) { text_stream *par_name = mr.exp[0]; text_stream *token_name = mr.exp[1]; Str__clear(spec); @@ -17433,7 +17496,7 @@ void Preprocessor__repeat_expander(preprocessor_macro *mm, preprocessor_state *P text_stream *in = parameter_values[1]; Preprocessor__set_loop_var_name(loop, with); match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, in, L"(%c*?),(%c*)")) { + while (Regexp__match(&mr, in, U"(%c*?),(%c*)")) { text_stream *value = mr.exp[0]; Str__trim_white_space(value); Preprocessor__add_loop_iteration(loop, value); @@ -17489,7 +17552,7 @@ void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state #line 49 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" #line 77 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -wchar_t *Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) { +inchar32_t *Tries__search(match_trie *T, text_stream *p, inchar32_t *add_outcome) { if (T == NULL) internal_error("no trie to search"); int start, endpoint, delta; @@ -17520,19 +17583,19 @@ wchar_t *Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) { match_trie *rewind_prev_positions[MAX_TRIE_REWIND]; for (int i = start; i != endpoint+delta; i += delta) { - wchar_t group[MAX_TRIE_GROUP_SIZE+1]; + inchar32_t group[MAX_TRIE_GROUP_SIZE+1]; int g = 0; /* size of group */ - wchar_t c = (i<0)?0:(Str__get_at(p, i)); /* i.e., zero at the two ends of the text */ + inchar32_t c = (i<0)?0:(Str__get_at(p, i)); /* i.e., zero at the two ends of the text */ if ((c >= 0x20) && (c <= 0x7f)) c = Characters__tolower(c); /* normalise it within ASCII */ if (c == 0x20) { c = 0; i = endpoint - delta; } /* force any space to be equivalent to the final 0 */ if (add_outcome) { - wchar_t pairc = 0; + inchar32_t pairc = 0; if (c == '<') pairc = '>'; if (c == '>') pairc = '<'; if (pairc) { int j; for (j = i+delta; j != endpoint; j += delta) { - wchar_t ch = (j<0)?0:(Str__get_at(p, j)); + inchar32_t ch = (j<0)?0:(Str__get_at(p, j)); if (ch == pairc) break; if (g > MAX_TRIE_GROUP_SIZE) { g = 0; break; } group[g++] = ch; @@ -17599,15 +17662,15 @@ wchar_t *Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) { match_trie *new_pos = NULL; if (g > 0) { int nt = TRIE_ANY_GROUP; - wchar_t *from = group; + inchar32_t *from = group; if (group[0] == '!') { from++; nt = TRIE_NOT_GROUP; } if (group[(int) Wide__len(group)-1] == '!') { group[(int) Wide__len(group)-1] = 0; nt = TRIE_NOT_GROUP; } new_pos = Tries__new(nt); - wcscpy(new_pos->group_characters, from); + Wide__copy(new_pos->group_characters, from); } else if (c == '*') new_pos = Tries__new(TRIE_ANYTHING); - else new_pos = Tries__new(c); + else new_pos = Tries__new((int)c); if (prev->on_success == NULL) prev->on_success = new_pos; else { @@ -17682,7 +17745,7 @@ wchar_t *Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) { } #line 237 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -int Tries__matches(match_trie *pos, int c) { +int Tries__matches(match_trie *pos, inchar32_t c) { if (pos->match_character == TRIE_ANYTHING) return TRUE; if (pos->match_character == TRIE_ANY_GROUP) { int k; @@ -17698,7 +17761,7 @@ int Tries__matches(match_trie *pos, int c) { return FALSE; return TRUE; } - if (pos->match_character == c) return TRUE; + if (pos->match_character == (int)c) return TRUE; return FALSE; } @@ -17729,7 +17792,7 @@ match_avinue *Tries__new_avinue(int from_start) { return A; } -void Tries__add_to_avinue(match_avinue *mt, text_stream *from, wchar_t *to) { +void Tries__add_to_avinue(match_avinue *mt, text_stream *from, inchar32_t *to) { if ((mt == NULL) || (mt->the_trie == NULL)) internal_error("null trie"); Tries__search(mt->the_trie, from, to); } @@ -17750,8 +17813,8 @@ match_avinue *Tries__duplicate_avinue(match_avinue *A) { } #line 327 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" -wchar_t *Tries__search_avinue(match_avinue *T, text_stream *p) { - wchar_t *result = NULL; +inchar32_t *Tries__search_avinue(match_avinue *T, text_stream *p) { + inchar32_t *result = NULL; while ((T) && (result == NULL)) { result = Tries__search(T->the_trie, p, NULL); T = T->next; @@ -17794,13 +17857,13 @@ void Tries__log(OUTPUT_STREAM, match_trie *T) { } #line 10 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__white_space(int c) { +int Regexp__white_space(inchar32_t c) { if ((c == ' ') || (c == '\t')) return TRUE; return FALSE; } #line 20 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__identifier_char(int c) { +int Regexp__identifier_char(inchar32_t c) { if ((c == '_') || (c == ':') || ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || @@ -17809,8 +17872,8 @@ int Regexp__identifier_char(int c) { } #line 35 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__find_expansion(text_stream *text, wchar_t on1, wchar_t on2, - wchar_t off1, wchar_t off2, int *len) { +int Regexp__find_expansion(text_stream *text, inchar32_t on1, inchar32_t on2, + inchar32_t off1, inchar32_t off2, int *len) { for (int i = 0; i < Str__len(text); i++) if ((Str__get_at(text, i) == on1) && (Str__get_at(text, i+1) == on2)) { for (int j=i+2; j < Str__len(text); j++) @@ -17865,14 +17928,14 @@ void Regexp__dispose_of(match_results *mr) { } #line 168 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__match(match_results *mr, text_stream *text, wchar_t *pattern) { +int Regexp__match(match_results *mr, text_stream *text, inchar32_t *pattern) { if (mr) Regexp__prepare(mr); int rv = (Regexp__match_r(mr, text, pattern, NULL, FALSE) >= 0)?TRUE:FALSE; if ((mr) && (rv == FALSE)) Regexp__dispose_of(mr); return rv; } -int Regexp__match_from(match_results *mr, text_stream *text, wchar_t *pattern, +int Regexp__match_from(match_results *mr, text_stream *text, inchar32_t *pattern, int x, int allow_partial) { int match_to = x; if (x < Str__len(text)) { @@ -17904,7 +17967,7 @@ void Regexp__prepare(match_results *mr) { } #line 207 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__match_r(match_results *mr, text_stream *text, wchar_t *pattern, +int Regexp__match_r(match_results *mr, text_stream *text, inchar32_t *pattern, match_position *scan_from, int allow_partial) { match_position at; if (scan_from) at = *scan_from; @@ -18024,7 +18087,7 @@ int Regexp__match_r(match_results *mr, text_stream *text, wchar_t *pattern, } #line 338 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__get_cclass(wchar_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) { +int Regexp__get_cclass(inchar32_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) { if (pattern[ppos] == '^') { ppos++; *reverse = TRUE; } else { *reverse = FALSE; } switch (pattern[ppos]) { case '%': @@ -18054,11 +18117,11 @@ int Regexp__get_cclass(wchar_t *pattern, int ppos, int *len, int *from, int *to, } #line 368 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__test_cclass(int c, int chcl, int range_from, int range_to, wchar_t *drawn_from, int reverse) { +int Regexp__test_cclass(inchar32_t c, int chcl, int range_from, int range_to, inchar32_t *drawn_from, int reverse) { int match = FALSE; switch (chcl) { case ANY_CHARCLASS: if (c) match = TRUE; break; - case DIGIT_CHARCLASS: if (isdigit(c)) match = TRUE; break; + case DIGIT_CHARCLASS: if (Characters__isdigit(c)) match = TRUE; break; case WHITESPACE_CHARCLASS: if (Characters__is_whitespace(c)) match = TRUE; break; case TAB_CHARCLASS: if (c == '\t') match = TRUE; break; case NONWHITESPACE_CHARCLASS: if (!(Characters__is_whitespace(c))) match = TRUE; break; @@ -18075,7 +18138,7 @@ int Regexp__test_cclass(int c, int chcl, int range_from, int range_to, wchar_t * range_from++; reverse = reverse?FALSE:TRUE; } for (int j = range_from; j <= range_to; j++) { - int c1 = drawn_from[j], c2 = c1; + inchar32_t c1 = drawn_from[j], c2 = c1; if ((j+1 < range_to) && (drawn_from[j+1] == '-')) { c2 = drawn_from[j+2]; j += 2; } if ((c >= c1) && (c <= c2)) { match = TRUE; break; @@ -18088,7 +18151,7 @@ int Regexp__test_cclass(int c, int chcl, int range_from, int range_to, wchar_t * } #line 415 "inweb/foundation-module/Chapter 4/Pattern Matching.w" -int Regexp__replace(text_stream *text, wchar_t *pattern, wchar_t *replacement, int options) { +int Regexp__replace(text_stream *text, inchar32_t *pattern, inchar32_t *replacement, int options) { TEMPORARY_TEXT(altered) match_results mr = Regexp__create_mr(); int changes = 0; @@ -18099,11 +18162,11 @@ int Regexp__replace(text_stream *text, wchar_t *pattern, wchar_t *replacement, i if (try >= 0) { if (replacement) for (int j=0; replacement[j]; j++) { - int c = replacement[j]; + inchar32_t c = replacement[j]; if (c == '%') { j++; - int ind = replacement[j] - '0'; - if ((ind >= 0) && (ind < MAX_BRACKETED_SUBEXPRESSIONS)) + inchar32_t ind = replacement[j] - '0'; + if (ind < MAX_BRACKETED_SUBEXPRESSIONS) WRITE_TO(altered, "%S", mr.exp[ind]); else PUT_TO(altered, replacement[j]); @@ -18320,7 +18383,7 @@ JSON_value *JSON__decode_error_q(text_stream *err, text_file_position *tfp, #line 272 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value *JSON__decode_range(text_stream *T, int from, int to, text_file_position *tfp) { int first_nws = -1, last_nws = -1; - wchar_t first_c = 0, last_c = 0; + inchar32_t first_c = 0, last_c = 0; { #line 301 "inweb/foundation-module/Chapter 4/JSON.w" @@ -18374,7 +18437,7 @@ JSON_value *JSON__decode_array(JSON_value *array, text_stream *T, int from, int NextEntry: ; int first_comma = -1, bl = 0; for (int i=from, quoted = FALSE; i= '0') && (digit <= '9')) v = (int) (digit-'0'); else if ((digit >= 'a') && (digit <= 'f')) v = 10 + ((int) (digit-'a')); else if ((digit >= 'A') && (digit <= 'F')) v = 10 + ((int) (digit-'A')); else return JSON__decode_error(TL_IS_28, tfp); hex = hex * 16 + v; } - c = (wchar_t) hex; + c = (inchar32_t) hex; i += 4; } @@ -18604,7 +18667,7 @@ void JSON__encode(OUTPUT_STREAM, JSON_value *J) { #line 579 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_string(OUTPUT_STREAM, text_stream *T) { LOOP_THROUGH_TEXT(pos, T) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); switch (c) { case '\\': WRITE("\\\\"); break; case 8: WRITE("\\b"); break; @@ -18954,7 +19017,7 @@ JSON_requirement *JSON__decode_req(text_stream *T, dictionary *known_names) { JSON_requirement *JSON__decode_req_range(text_stream *T, int from, int to, dictionary *known_names) { int first_nws = -1, last_nws = -1; - wchar_t first_c = 0, last_c = 0; + inchar32_t first_c = 0, last_c = 0; { #line 1126 "inweb/foundation-module/Chapter 4/JSON.w" @@ -18981,7 +19044,7 @@ JSON_requirement *JSON__decode_req_range(text_stream *T, int from, int to, NextEntry: ; int first_pipe = -1, bl = 0; for (int i=from, quoted = FALSE; i *::= *(%c*)")) { + if (Regexp__match(&mr, text, U" *<(%C+)> *::= *(%c*)")) { JSON__process_req_defn(state); WRITE_TO(state->name, "%S", mr.exp[0]); WRITE_TO(state->defn, "%S", mr.exp[1]); state->at = *tfp; - } else if (Regexp__match(&mr, text, L" *!%c*")) { + } else if (Regexp__match(&mr, text, U" *!%c*")) { /* do nothing: this line is a comment */ - } else if (Regexp__match(&mr, text, L" *")) { + } else if (Regexp__match(&mr, text, U" *")) { /* do nothing: this line is blank */ } else if (Str__len(state->name) > 0) { WRITE_TO(state->defn, "%S\n", text); @@ -19944,155 +20007,155 @@ void HTML__hr(OUTPUT_STREAM, char *class) { #line 703 "inweb/foundation-module/Chapter 5/HTML.w" colour_translation table_of_translations[] = { - { L"Alice Blue", L"F0F8FF" }, - { L"Antique White", L"FAEBD7" }, - { L"Aqua", L"00FFFF" }, - { L"Aquamarine", L"7FFFD4" }, - { L"Azure", L"F0FFFF" }, - { L"Beige", L"F5F5DC" }, - { L"Bisque", L"FFE4C4" }, - { L"Black", L"000000" }, - { L"Blanched Almond", L"FFEBCD" }, - { L"Blue", L"0000FF" }, - { L"Blue Violet", L"8A2BE2" }, - { L"Brown", L"A52A2A" }, - { L"Burly Wood", L"DEB887" }, - { L"Cadet Blue", L"5F9EA0" }, - { L"Chartreuse", L"7FFF00" }, - { L"Chocolate", L"D2691E" }, - { L"Coral", L"FF7F50" }, - { L"Cornflower Blue", L"6495ED" }, - { L"Cornsilk", L"FFF8DC" }, - { L"Crimson", L"DC143C" }, - { L"Cyan", L"00FFFF" }, - { L"Dark Blue", L"00008B" }, - { L"Dark Cyan", L"008B8B" }, - { L"Dark Golden Rod", L"B8860B" }, - { L"Dark Gray", L"A9A9A9" }, - { L"Dark Green", L"006400" }, - { L"Dark Khaki", L"BDB76B" }, - { L"Dark Magenta", L"8B008B" }, - { L"Dark Olive Green", L"556B2F" }, - { L"Dark Orange", L"FF8C00" }, - { L"Dark Orchid", L"9932CC" }, - { L"Dark Red", L"8B0000" }, - { L"Dark Salmon", L"E9967A" }, - { L"Dark Sea Green", L"8FBC8F" }, - { L"Dark Slate Blue", L"483D8B" }, - { L"Dark Slate Gray", L"2F4F4F" }, - { L"Dark Turquoise", L"00CED1" }, - { L"Dark Violet", L"9400D3" }, - { L"Deep Pink", L"FF1493" }, - { L"Deep Sky Blue", L"00BFFF" }, - { L"Dim Gray", L"696969" }, - { L"Dodger Blue", L"1E90FF" }, - { L"Feldspar", L"D19275" }, - { L"Fire Brick", L"B22222" }, - { L"Floral White", L"FFFAF0" }, - { L"Forest Green", L"228B22" }, - { L"Fuchsia", L"FF00FF" }, - { L"Gainsboro", L"DCDCDC" }, - { L"Ghost White", L"F8F8FF" }, - { L"Gold", L"FFD700" }, - { L"Golden Rod", L"DAA520" }, - { L"Gray", L"808080" }, - { L"Green", L"008000" }, - { L"Green Yellow", L"ADFF2F" }, - { L"Honey Dew", L"F0FFF0" }, - { L"Hot Pink", L"FF69B4" }, - { L"Indian Red", L"CD5C5C" }, - { L"Indigo", L"4B0082" }, - { L"Ivory", L"FFFFF0" }, - { L"Khaki", L"F0E68C" }, - { L"Lavender", L"E6E6FA" }, - { L"Lavender Blush", L"FFF0F5" }, - { L"Lawn Green", L"7CFC00" }, - { L"Lemon Chiffon", L"FFFACD" }, - { L"Light Blue", L"ADD8E6" }, - { L"Light Coral", L"F08080" }, - { L"Light Cyan", L"E0FFFF" }, - { L"Light Golden Rod Yellow", L"FAFAD2" }, - { L"Light Grey", L"D3D3D3" }, - { L"Light Green", L"90EE90" }, - { L"Light Pink", L"FFB6C1" }, - { L"Light Salmon", L"FFA07A" }, - { L"Light Sea Green", L"20B2AA" }, - { L"Light Sky Blue", L"87CEFA" }, - { L"Light Slate Blue", L"8470FF" }, - { L"Light Slate Gray", L"778899" }, - { L"Light Steel Blue", L"B0C4DE" }, - { L"Light Yellow", L"FFFFE0" }, - { L"Lime", L"00FF00" }, - { L"Lime Green", L"32CD32" }, - { L"Linen", L"FAF0E6" }, - { L"Magenta", L"FF00FF" }, - { L"Maroon", L"800000" }, - { L"Medium Aquamarine", L"66CDAA" }, - { L"Medium Blue", L"0000CD" }, - { L"Medium Orchid", L"BA55D3" }, - { L"Medium Purple", L"9370D8" }, - { L"Medium Sea Green", L"3CB371" }, - { L"Medium Slate Blue", L"7B68EE" }, - { L"Medium Spring Green", L"00FA9A" }, - { L"Medium Turquoise", L"48D1CC" }, - { L"Medium Violet Red", L"CA226B" }, - { L"Midnight Blue", L"191970" }, - { L"Mint Cream", L"F5FFFA" }, - { L"Misty Rose", L"FFE4E1" }, - { L"Moccasin", L"FFE4B5" }, - { L"Navajo White", L"FFDEAD" }, - { L"Navy", L"000080" }, - { L"Old Lace", L"FDF5E6" }, - { L"Olive", L"808000" }, - { L"Olive Drab", L"6B8E23" }, - { L"Orange", L"FFA500" }, - { L"Orange Red", L"FF4500" }, - { L"Orchid", L"DA70D6" }, - { L"Pale Golden Rod", L"EEE8AA" }, - { L"Pale Green", L"98FB98" }, - { L"Pale Turquoise", L"AFEEEE" }, - { L"Pale Violet Red", L"D87093" }, - { L"Papaya Whip", L"FFEFD5" }, - { L"Peach Puff", L"FFDAB9" }, - { L"Peru", L"CD853F" }, - { L"Pink", L"FFC0CB" }, - { L"Plum", L"DDA0DD" }, - { L"Powder Blue", L"B0E0E6" }, - { L"Purple", L"800080" }, - { L"Red", L"FF0000" }, - { L"Rosy Brown", L"BC8F8F" }, - { L"Royal Blue", L"4169E1" }, - { L"Saddle Brown", L"8B4513" }, - { L"Salmon", L"FA8072" }, - { L"Sandy Brown", L"F4A460" }, - { L"Sea Green", L"2E8B57" }, - { L"Sea Shell", L"FFF5EE" }, - { L"Sienna", L"A0522D" }, - { L"Silver", L"C0C0C0" }, - { L"Sky Blue", L"87CEEB" }, - { L"Slate Blue", L"6A5ACD" }, - { L"Slate Gray", L"708090" }, - { L"Snow", L"FFFAFA" }, - { L"Spring Green", L"00FF7F" }, - { L"Steel Blue", L"4682B4" }, - { L"Tan", L"D2B48C" }, - { L"Teal", L"008080" }, - { L"Thistle", L"D8BFD8" }, - { L"Tomato", L"FF6347" }, - { L"Turquoise", L"40E0D0" }, - { L"Violet", L"EE82EE" }, - { L"Violet Red", L"D02090" }, - { L"Wheat", L"F5DEB3" }, - { L"White", L"FFFFFF" }, - { L"White Smoke", L"F5F5F5" }, - { L"Yellow", L"FFFF00" }, - { L"Yellow Green", L"9ACD32" }, - { L"", L"" } + { U"Alice Blue", U"F0F8FF" }, + { U"Antique White", U"FAEBD7" }, + { U"Aqua", U"00FFFF" }, + { U"Aquamarine", U"7FFFD4" }, + { U"Azure", U"F0FFFF" }, + { U"Beige", U"F5F5DC" }, + { U"Bisque", U"FFE4C4" }, + { U"Black", U"000000" }, + { U"Blanched Almond", U"FFEBCD" }, + { U"Blue", U"0000FF" }, + { U"Blue Violet", U"8A2BE2" }, + { U"Brown", U"A52A2A" }, + { U"Burly Wood", U"DEB887" }, + { U"Cadet Blue", U"5F9EA0" }, + { U"Chartreuse", U"7FFF00" }, + { U"Chocolate", U"D2691E" }, + { U"Coral", U"FF7F50" }, + { U"Cornflower Blue", U"6495ED" }, + { U"Cornsilk", U"FFF8DC" }, + { U"Crimson", U"DC143C" }, + { U"Cyan", U"00FFFF" }, + { U"Dark Blue", U"00008B" }, + { U"Dark Cyan", U"008B8B" }, + { U"Dark Golden Rod", U"B8860B" }, + { U"Dark Gray", U"A9A9A9" }, + { U"Dark Green", U"006400" }, + { U"Dark Khaki", U"BDB76B" }, + { U"Dark Magenta", U"8B008B" }, + { U"Dark Olive Green", U"556B2F" }, + { U"Dark Orange", U"FF8C00" }, + { U"Dark Orchid", U"9932CC" }, + { U"Dark Red", U"8B0000" }, + { U"Dark Salmon", U"E9967A" }, + { U"Dark Sea Green", U"8FBC8F" }, + { U"Dark Slate Blue", U"483D8B" }, + { U"Dark Slate Gray", U"2F4F4F" }, + { U"Dark Turquoise", U"00CED1" }, + { U"Dark Violet", U"9400D3" }, + { U"Deep Pink", U"FF1493" }, + { U"Deep Sky Blue", U"00BFFF" }, + { U"Dim Gray", U"696969" }, + { U"Dodger Blue", U"1E90FF" }, + { U"Feldspar", U"D19275" }, + { U"Fire Brick", U"B22222" }, + { U"Floral White", U"FFFAF0" }, + { U"Forest Green", U"228B22" }, + { U"Fuchsia", U"FF00FF" }, + { U"Gainsboro", U"DCDCDC" }, + { U"Ghost White", U"F8F8FF" }, + { U"Gold", U"FFD700" }, + { U"Golden Rod", U"DAA520" }, + { U"Gray", U"808080" }, + { U"Green", U"008000" }, + { U"Green Yellow", U"ADFF2F" }, + { U"Honey Dew", U"F0FFF0" }, + { U"Hot Pink", U"FF69B4" }, + { U"Indian Red", U"CD5C5C" }, + { U"Indigo", U"4B0082" }, + { U"Ivory", U"FFFFF0" }, + { U"Khaki", U"F0E68C" }, + { U"Lavender", U"E6E6FA" }, + { U"Lavender Blush", U"FFF0F5" }, + { U"Lawn Green", U"7CFC00" }, + { U"Lemon Chiffon", U"FFFACD" }, + { U"Light Blue", U"ADD8E6" }, + { U"Light Coral", U"F08080" }, + { U"Light Cyan", U"E0FFFF" }, + { U"Light Golden Rod Yellow", U"FAFAD2" }, + { U"Light Grey", U"D3D3D3" }, + { U"Light Green", U"90EE90" }, + { U"Light Pink", U"FFB6C1" }, + { U"Light Salmon", U"FFA07A" }, + { U"Light Sea Green", U"20B2AA" }, + { U"Light Sky Blue", U"87CEFA" }, + { U"Light Slate Blue", U"8470FF" }, + { U"Light Slate Gray", U"778899" }, + { U"Light Steel Blue", U"B0C4DE" }, + { U"Light Yellow", U"FFFFE0" }, + { U"Lime", U"00FF00" }, + { U"Lime Green", U"32CD32" }, + { U"Linen", U"FAF0E6" }, + { U"Magenta", U"FF00FF" }, + { U"Maroon", U"800000" }, + { U"Medium Aquamarine", U"66CDAA" }, + { U"Medium Blue", U"0000CD" }, + { U"Medium Orchid", U"BA55D3" }, + { U"Medium Purple", U"9370D8" }, + { U"Medium Sea Green", U"3CB371" }, + { U"Medium Slate Blue", U"7B68EE" }, + { U"Medium Spring Green", U"00FA9A" }, + { U"Medium Turquoise", U"48D1CC" }, + { U"Medium Violet Red", U"CA226B" }, + { U"Midnight Blue", U"191970" }, + { U"Mint Cream", U"F5FFFA" }, + { U"Misty Rose", U"FFE4E1" }, + { U"Moccasin", U"FFE4B5" }, + { U"Navajo White", U"FFDEAD" }, + { U"Navy", U"000080" }, + { U"Old Lace", U"FDF5E6" }, + { U"Olive", U"808000" }, + { U"Olive Drab", U"6B8E23" }, + { U"Orange", U"FFA500" }, + { U"Orange Red", U"FF4500" }, + { U"Orchid", U"DA70D6" }, + { U"Pale Golden Rod", U"EEE8AA" }, + { U"Pale Green", U"98FB98" }, + { U"Pale Turquoise", U"AFEEEE" }, + { U"Pale Violet Red", U"D87093" }, + { U"Papaya Whip", U"FFEFD5" }, + { U"Peach Puff", U"FFDAB9" }, + { U"Peru", U"CD853F" }, + { U"Pink", U"FFC0CB" }, + { U"Plum", U"DDA0DD" }, + { U"Powder Blue", U"B0E0E6" }, + { U"Purple", U"800080" }, + { U"Red", U"FF0000" }, + { U"Rosy Brown", U"BC8F8F" }, + { U"Royal Blue", U"4169E1" }, + { U"Saddle Brown", U"8B4513" }, + { U"Salmon", U"FA8072" }, + { U"Sandy Brown", U"F4A460" }, + { U"Sea Green", U"2E8B57" }, + { U"Sea Shell", U"FFF5EE" }, + { U"Sienna", U"A0522D" }, + { U"Silver", U"C0C0C0" }, + { U"Sky Blue", U"87CEEB" }, + { U"Slate Blue", U"6A5ACD" }, + { U"Slate Gray", U"708090" }, + { U"Snow", U"FFFAFA" }, + { U"Spring Green", U"00FF7F" }, + { U"Steel Blue", U"4682B4" }, + { U"Tan", U"D2B48C" }, + { U"Teal", U"008080" }, + { U"Thistle", U"D8BFD8" }, + { U"Tomato", U"FF6347" }, + { U"Turquoise", U"40E0D0" }, + { U"Violet", U"EE82EE" }, + { U"Violet Red", U"D02090" }, + { U"Wheat", U"F5DEB3" }, + { U"White", U"FFFFFF" }, + { U"White Smoke", U"F5F5F5" }, + { U"Yellow", U"FFFF00" }, + { U"Yellow Green", U"9ACD32" }, + { U"", U"" } }; #line 855 "inweb/foundation-module/Chapter 5/HTML.w" -wchar_t *HTML__translate_colour_name(wchar_t *original) { - for (int j=0; Wide__cmp(table_of_translations[j].chip_name, L""); j++) +inchar32_t *HTML__translate_colour_name(inchar32_t *original) { + for (int j=0; Wide__cmp(table_of_translations[j].chip_name, U""); j++) if (Wide__cmp(table_of_translations[j].chip_name, original) == 0) return table_of_translations[j].html_colour; return NULL; @@ -20121,7 +20184,7 @@ void HTML__end_span(OUTPUT_STREAM) { #line 888 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) { LOOP_THROUGH_TEXT(pos, txt) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); switch(c) { case '&': WRITE("&"); break; case '<': WRITE("<"); break; @@ -20135,7 +20198,7 @@ void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) { text_stream *source_ref_fields[3] = { NULL, NULL, NULL }; /* paraphrase, filename, line */ int source_ref_field = -1; /* which field we are buffering */ -void HTML__put(OUTPUT_STREAM, int charcode) { +void HTML__put(OUTPUT_STREAM, inchar32_t charcode) { { #line 943 "inweb/foundation-module/Chapter 5/HTML.w" @@ -20188,7 +20251,7 @@ void HTML__put(OUTPUT_STREAM, int charcode) { } #line 16 "inweb/foundation-module/Chapter 5/HTML Entities.w" -int HTMLEntities__parse(text_stream *entity, wchar_t *A, wchar_t *B) { +int HTMLEntities__parse(text_stream *entity, inchar32_t *A, inchar32_t *B) { if (Str__get_at(entity, 0) != '&') return FALSE; if (Str__get_at(entity, 1) == '#') { int base = 10, from = 2; @@ -20198,7 +20261,7 @@ int HTMLEntities__parse(text_stream *entity, wchar_t *A, wchar_t *B) { int total = 0, dc = 0; while (Str__get_at(entity, from)) { int dval = -1; - wchar_t digit = Str__get_at(entity, from); + inchar32_t digit = Str__get_at(entity, from); if ((digit >= '0') && (digit <= '9')) dval = (int) digit - (int) '0'; else if ((base == 16) && (digit >= 'a') && (digit <= 'f')) dval = 10 + (int) digit - (int) 'a'; else if ((base == 16) && (digit >= 'A') && (digit <= 'F')) dval = 10 + (int) digit - (int) 'A'; @@ -20209,7 +20272,7 @@ int HTMLEntities__parse(text_stream *entity, wchar_t *A, wchar_t *B) { if (dc > 7) return FALSE; } if (dc == 0) return FALSE; - if (A) *A = total; if (B) *B = 0; + if (A) *A = (inchar32_t)total; if (B) *B = 0; return TRUE; } else { switch (Str__get_at(entity, 1)) { @@ -22649,7 +22712,7 @@ markdown_item *Markdown__parse_general(markdown_item *tree, text_stream *text, #line 223 "inweb/foundation-module/Chapter 5/Markdown.w" TEMPORARY_TEXT(line) LOOP_THROUGH_TEXT(pos, text) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == '\n') { MDBlockParser__add_to_document(state, line); Str__clear(line); @@ -22904,13 +22967,14 @@ markdown_item *Markdown__deep_copy(markdown_item *md) { } copied->from = md->from; copied->to = md->to; + copied->stashed = md->stashed; copied->copied_from = md; for (markdown_item *c = md->down; c; c = c->next) Markdown__add_to(Markdown__deep_copy(c), copied); return copied; } -#line 566 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 567 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__add_to(markdown_item *md, markdown_item *owner) { md->next = NULL; if (owner->down == NULL) { owner->down = md; return; } @@ -22918,7 +22982,7 @@ void Markdown__add_to(markdown_item *md, markdown_item *owner) { if (ch->next == NULL) { ch->next = md; return; } } -#line 576 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 577 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_heading_level(markdown_item *md) { if ((md == NULL) || (md->type != HEADING_MIT)) return 0; return md->details; @@ -22930,7 +22994,7 @@ void Markdown__set_heading_level(markdown_item *md, int L) { md->details = L; } -#line 590 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 591 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_column_count(markdown_item *md) { if ((md == NULL) || (md->type != TABLE_MIT)) return 0; return md->details; @@ -22942,7 +23006,7 @@ void Markdown__set_column_count(markdown_item *md, int L) { md->details = L; } -#line 604 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 605 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_alignment(markdown_item *md) { if ((md == NULL) || (md->type != TABLE_COLUMN_MIT)) return 0; return md->details; @@ -22954,7 +23018,7 @@ void Markdown__set_alignment(markdown_item *md, int L) { md->details = L; } -#line 618 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 619 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_filtered_state(markdown_item *md) { if ((md == NULL) || (md->type != INLINE_HTML_MIT)) return FALSE; return md->details; @@ -22979,7 +23043,7 @@ int Markdown__tag_should_be_filtered(text_stream *tag) { return FALSE; } -#line 645 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 646 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_add_protocol_state(markdown_item *md) { if ((md == NULL) || ((md->type != URI_AUTOLINK_MIT) && (md->type != EMAIL_AUTOLINK_MIT) && (md->type != XMPP_AUTOLINK_MIT))) @@ -22995,7 +23059,7 @@ void Markdown__set_add_protocol_state(markdown_item *md, int L) { md->details = L; } -#line 663 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 664 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_tick_state(markdown_item *md) { if ((md == NULL) || (md->type != TICKBOX_MIT)) return FALSE; return md->details; @@ -23007,7 +23071,7 @@ void Markdown__set_tick_state(markdown_item *md, int L) { md->details = L; } -#line 678 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 679 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_backtick_count(markdown_item *md) { if ((md == NULL) || (md->type != CODE_MIT)) return FALSE; return md->details; @@ -23019,14 +23083,14 @@ void Markdown__set_backtick_count(markdown_item *md, int L) { md->details = L; } -#line 692 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 693 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__get_item_number(markdown_item *md) { if ((md == NULL) || (md->type != ORDERED_LIST_ITEM_MIT)) return 0; if (md->details < 0) return -(md->details+1); return md->details; } -wchar_t Markdown__get_item_flavour(markdown_item *md) { +inchar32_t Markdown__get_item_flavour(markdown_item *md) { if ((md == NULL) || ((md->type != ORDERED_LIST_ITEM_MIT) && (md->type != UNORDERED_LIST_ITEM_MIT))) return 0; @@ -23034,10 +23098,10 @@ wchar_t Markdown__get_item_flavour(markdown_item *md) { if (md->details >= 0) return ')'; return '.'; } - return (wchar_t) md->details; + return (inchar32_t) md->details; } -void Markdown__set_item_number_and_flavour(markdown_item *md, int L, wchar_t f) { +void Markdown__set_item_number_and_flavour(markdown_item *md, int L, inchar32_t f) { if (md->type == ORDERED_LIST_ITEM_MIT) { if (L < 0) internal_error("bad list item number"); if (f == ')') md->details = L; @@ -23045,13 +23109,13 @@ void Markdown__set_item_number_and_flavour(markdown_item *md, int L, wchar_t f) } if (md->type == UNORDERED_LIST_ITEM_MIT) { if (L != 0) internal_error("inappropriate list item number"); - md->details = f; + md->details = (int)f; } } -#line 729 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_unescaped(md_charpos pos, int offset) { - wchar_t c = Markdown__get_offset(pos, offset); +#line 730 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_unescaped(md_charpos pos, int offset) { + inchar32_t c = Markdown__get_offset(pos, offset); int preceding_backslashes = 0; while (Markdown__get_offset(pos, offset - 1 - preceding_backslashes) == '\\') preceding_backslashes++; @@ -23059,15 +23123,15 @@ wchar_t Markdown__get_unescaped(md_charpos pos, int offset) { return c; } -#line 742 "inweb/foundation-module/Chapter 5/Markdown.w" -int Markdown__unescaped_run(md_charpos pos, wchar_t of) { +#line 743 "inweb/foundation-module/Chapter 5/Markdown.w" +int Markdown__unescaped_run(md_charpos pos, inchar32_t of) { int count = 0; while (Markdown__get_unescaped(pos, count) == of) count++; if (Markdown__get_unescaped(pos, -1) == of) count = 0; return count; } -#line 752 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 753 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item *Markdown__new_volume_marker(text_stream *title) { markdown_item *md = Markdown__new_item(VOLUME_MIT); md->stashed = Str__duplicate(title); @@ -23085,7 +23149,7 @@ filename *Markdown__get_filename(markdown_item *md) { return RETRIEVE_POINTER_filename(md->user_state); } -#line 776 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 777 "inweb/foundation-module/Chapter 5/Markdown.w" markdown_item *Markdown__new_slice(int type, text_stream *text, int from, int to) { markdown_item *md = Markdown__new_item(type); md->sliced_from = text; @@ -23094,20 +23158,20 @@ markdown_item *Markdown__new_slice(int type, text_stream *text, int from, int to return md; } -#line 790 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get_at(markdown_item *md, int at) { +#line 791 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get_at(markdown_item *md, int at) { if (md == NULL) return 0; if (Str__len(md->sliced_from) == 0) return 0; return Str__get_at(md->sliced_from, at); } -#line 801 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 802 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__width(markdown_item *md) { if (md) { int width = 0; if (md->type == PLAIN_MIT) { for (int i=md->from; i<=md->to; i++) { - wchar_t c = Markdown__get_at(md, i); + inchar32_t c = Markdown__get_at(md, i); if (c == '\\') i++; width++; } @@ -23127,9 +23191,9 @@ int Markdown__width(markdown_item *md) { return 0; } -#line 836 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 837 "inweb/foundation-module/Chapter 5/Markdown.w" -#line 840 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 841 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__nowhere(void) { md_charpos pos; pos.md = NULL; @@ -23150,14 +23214,14 @@ int Markdown__somewhere(md_charpos pos) { return FALSE; } -#line 863 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 864 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__pos_eq(md_charpos A, md_charpos B) { if ((A.md) && (A.md == B.md) && (A.at == B.at)) return TRUE; if ((A.md == NULL) && (B.md == NULL)) return TRUE; return FALSE; } -#line 874 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 875 "inweb/foundation-module/Chapter 5/Markdown.w" int Markdown__is_in(md_charpos pos, markdown_item *md) { if ((Markdown__somewhere(pos)) && (md)) { if ((md->sliced_from) && (md->sliced_from == pos.md->sliced_from) && @@ -23166,13 +23230,13 @@ int Markdown__is_in(md_charpos pos, markdown_item *md) { return FALSE; } -#line 886 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 887 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__left_edge_of(markdown_item *md) { if (md == NULL) return Markdown__nowhere(); return Markdown__pos(md, md->from); } -#line 896 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 897 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance(md_charpos pos) { if (Markdown__somewhere(pos)) { if (pos.at < pos.md->to) { pos.at++; return pos; } @@ -23183,7 +23247,7 @@ md_charpos Markdown__advance(md_charpos pos) { return Markdown__nowhere(); } -#line 909 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 910 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_plainish_only(md_charpos pos) { if (Markdown__somewhere(pos)) { if (pos.at < pos.md->to) { pos.at++; return pos; } @@ -23193,7 +23257,7 @@ md_charpos Markdown__advance_plainish_only(md_charpos pos) { return Markdown__nowhere(); } -#line 921 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 922 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_quasi_plainish_only(md_charpos pos) { if (Markdown__somewhere(pos)) { if (pos.at < pos.md->to) { pos.at++; return pos; } @@ -23203,7 +23267,7 @@ md_charpos Markdown__advance_quasi_plainish_only(md_charpos pos) { return Markdown__nowhere(); } -#line 933 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 934 "inweb/foundation-module/Chapter 5/Markdown.w" md_charpos Markdown__advance_up_to(md_charpos pos, md_charpos end) { if ((Markdown__somewhere(end)) && (pos.md->sliced_from == end.md->sliced_from) && (pos.at >= end.at)) @@ -23225,25 +23289,25 @@ md_charpos Markdown__advance_up_to_quasi_plainish_only(md_charpos pos, md_charpo return Markdown__advance_quasi_plainish_only(pos); } -#line 957 "inweb/foundation-module/Chapter 5/Markdown.w" -wchar_t Markdown__get(md_charpos pos) { +#line 958 "inweb/foundation-module/Chapter 5/Markdown.w" +inchar32_t Markdown__get(md_charpos pos) { return Markdown__get_offset(pos, 0); } -wchar_t Markdown__get_offset(md_charpos pos, int by) { +inchar32_t Markdown__get_offset(md_charpos pos, int by) { if (Markdown__somewhere(pos)) return Markdown__get_at(pos.md, pos.at + by); return 0; } -void Markdown__put(md_charpos pos, wchar_t c) { +void Markdown__put(md_charpos pos, inchar32_t c) { Markdown__put_offset(pos, 0, c); } -void Markdown__put_offset(md_charpos pos, int by, wchar_t c) { +void Markdown__put_offset(md_charpos pos, int by, inchar32_t c) { if (Markdown__somewhere(pos)) Str__put_at(pos.md->sliced_from, pos.at + by, c); } -#line 983 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 984 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_to_just_before(markdown_item *chain_from, md_charpos cut_point, markdown_item **left_segment, markdown_item **right_segment) { markdown_item *L = chain_from, *R = NULL; @@ -23270,7 +23334,7 @@ void Markdown__cut_to_just_before(markdown_item *chain_from, md_charpos cut_poin if (right_segment) *right_segment = R; } -#line 1013 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1014 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_to_just_at(markdown_item *chain_from, md_charpos cut_point, markdown_item **left_segment, markdown_item **right_segment) { markdown_item *L = chain_from, *R = NULL; @@ -23297,7 +23361,7 @@ void Markdown__cut_to_just_at(markdown_item *chain_from, md_charpos cut_point, if (right_segment) *right_segment = R; } -#line 1043 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1044 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__cut_interval(markdown_item *chain_from, md_charpos A, md_charpos B, markdown_item **left_segment, markdown_item **middle_segment, markdown_item **right_segment) { markdown_item *interstitial = NULL; @@ -23306,9 +23370,9 @@ void Markdown__cut_interval(markdown_item *chain_from, md_charpos A, md_charpos if (middle_segment) *middle_segment = interstitial; } -#line 1061 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1062 "inweb/foundation-module/Chapter 5/Markdown.w" -#line 1067 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1068 "inweb/foundation-module/Chapter 5/Markdown.w" md_links_dictionary *Markdown__new_links_dictionary(void) { md_links_dictionary *dict = CREATE(md_links_dictionary); @@ -23316,7 +23380,7 @@ md_links_dictionary *Markdown__new_links_dictionary(void) { return dict; } -#line 1081 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1082 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__create(md_links_dictionary *dict, text_stream *label, text_stream *destination, text_stream *title) { if (dict) { @@ -23336,7 +23400,7 @@ void Markdown__create(md_links_dictionary *dict, text_stream *label, } } -#line 1104 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1105 "inweb/foundation-module/Chapter 5/Markdown.w" md_link_dictionary_entry *Markdown__look_up(md_links_dictionary *dict, text_stream *label) { if (dict == NULL) return NULL; if (Str__is_whitespace(label)) return NULL; @@ -23349,18 +23413,18 @@ md_link_dictionary_entry *Markdown__look_up(md_links_dictionary *dict, text_stre return NULL; } -#line 1125 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1126 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__normalise_link_label(text_stream *label) { TEMPORARY_TEXT(normal) for (int i=0, ws = FALSE; iwhitespace_follows) WRITE("+ws"); } -#line 1236 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1237 "inweb/foundation-module/Chapter 5/Markdown.w" int md_db_cycle_count = 1; void Markdown__debug_subtree(OUTPUT_STREAM, markdown_item *md) { @@ -23477,7 +23541,7 @@ void Markdown__debug_chain_label(OUTPUT_STREAM, markdown_item *md, text_stream * OUTDENT; } -#line 1264 "inweb/foundation-module/Chapter 5/Markdown.w" +#line 1265 "inweb/foundation-module/Chapter 5/Markdown.w" void Markdown__debug_item_r(OUTPUT_STREAM, markdown_item *md) { if (md) { Markdown__debug_item(OUT, md); @@ -23677,10 +23741,10 @@ tabbed_string_iterator MDBlockParser__block_quote_marker(tabbed_string_iterator #line 346 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" tabbed_string_iterator MDBlockParser__bullet_list_marker(tabbed_string_iterator line_scanner, - wchar_t *flavour) { + inchar32_t *flavour) { tabbed_string_iterator old = line_scanner; if (MDBlockParser__thematic_marker(line_scanner.line, TabbedStr__get_index(&line_scanner))) return old; - wchar_t c = TabbedStr__get_character(&line_scanner); + inchar32_t c = TabbedStr__get_character(&line_scanner); if ((c == '-') || (c == '+') || (c == '*')) { TabbedStr__advance(&line_scanner); *flavour = c; @@ -23690,11 +23754,11 @@ tabbed_string_iterator MDBlockParser__bullet_list_marker(tabbed_string_iterator #line 365 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" tabbed_string_iterator MDBlockParser__ordered_list_marker(tabbed_string_iterator line_scanner, - int *v, wchar_t *flavour) { + int *v, inchar32_t *flavour) { tabbed_string_iterator old = line_scanner; if (MDBlockParser__thematic_marker(line_scanner.line, TabbedStr__get_index(&line_scanner))) return old; - wchar_t c = TabbedStr__get_character(&line_scanner); + inchar32_t c = TabbedStr__get_character(&line_scanner); int dc = 0, val = 0; while (Characters__is_ASCII_digit(c)) { val = 10*val + (int) (c - '0'); @@ -23714,11 +23778,11 @@ tabbed_string_iterator MDBlockParser__ordered_list_marker(tabbed_string_iterator #line 394 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" int MDBlockParser__thematic_marker(text_stream *line, int index) { - wchar_t c = Str__get_at(line, index); + inchar32_t c = Str__get_at(line, index); if ((c == '-') || (c == '_') || (c == '*')) { int ornament_count = 1; for (int j=index+1; j 0) ornament_count++; } else { @@ -23798,11 +23862,11 @@ int MDBlockParser__parse_positional_markers(md_doc_state *state, tabbed_string_i { #line 523 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" if (MarkdownVariations__supports(state->variation, UNORDERED_LISTS_MARKDOWNFEATURE)) { - wchar_t flavour = 0; + inchar32_t flavour = 0; tabbed_string_iterator adv = MDBlockParser__bullet_list_marker(starts_at, &flavour); int black_width = TabbedStr__get_position(&adv) - TabbedStr__get_position(line_scanner); if (black_width > 0) { - wchar_t next = TabbedStr__get_character(&adv); + inchar32_t next = TabbedStr__get_character(&adv); if ((next == ' ') || (next == 0)) { TabbedStr__eat_space(&adv); int white_width = TabbedStr__get_position(&adv) - TabbedStr__get_position(line_scanner); @@ -23831,12 +23895,12 @@ int MDBlockParser__parse_positional_markers(md_doc_state *state, tabbed_string_i { #line 562 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" if (MarkdownVariations__supports(state->variation, ORDERED_LISTS_MARKDOWNFEATURE)) { - wchar_t flavour = 0; + inchar32_t flavour = 0; int val = 0; tabbed_string_iterator adv = MDBlockParser__ordered_list_marker(starts_at, &val, &flavour); int black_width = TabbedStr__get_position(&adv) - TabbedStr__get_position(line_scanner); if (black_width > 0) { - wchar_t next = TabbedStr__get_character(&adv); + inchar32_t next = TabbedStr__get_character(&adv); if ((next == ' ') || (next == 0)) { TabbedStr__eat_space(&adv); int white_width = TabbedStr__get_position(&adv) - TabbedStr__get_position(line_scanner); @@ -24154,7 +24218,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { { #line 1180 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" - wchar_t c = Str__get_at(line, content_index); + inchar32_t c = Str__get_at(line, content_index); markdown_item *headb = MDBlockParser__latest_paragraph(state); if (headb) { MDBlockParser__remove_link_references(state, headb); @@ -24188,7 +24252,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { if ((parb) && (parb->type == PARAGRAPH_MIT)) { WRITE_TO(parb->stashed, "\n"); for (int i = content_index; istashed, c); } } else internal_error("no paragraph is open after all"); @@ -24387,7 +24451,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { int from = content_index; if (state->temporary_marker_limit == 1) from = 0; for (int i = from; istashed, c); } PUT_TO(latest->stashed, '\n'); @@ -24419,7 +24483,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { text_stream *info_string = Str__new(); MDBlockParser__can_interpret_as(state, line, indentation, content_index, CODE_FENCE_OPEN_MDINTERPRETATION, info_string, NULL); - wchar_t c = Str__get_at(line, content_index); + inchar32_t c = Str__get_at(line, content_index); markdown_item *cb = Markdown__new_item(CODE_BLOCK_MIT); cb->stashed = Str__new(); cb->info_string = info_string; @@ -24464,7 +24528,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { TabbedStr__advance(&line_scanner); } for (int i = TabbedStr__get_index(&line_scanner); istashed, c); } PUT_TO(code_block->stashed, '\n'); @@ -24489,7 +24553,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { if (indentation) for (int i=content_index; iblank_matter_after_receiver, c); } PUT_TO(state->blank_matter_after_receiver, '\n'); @@ -24507,7 +24571,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { text_stream *H = Str__new(); headb->stashed = H; for (int i=content_index+hash_count; itemporary_marker_limit == 1) from = 0; for (int i = from; istashed, c); } PUT_TO(latest->stashed, '\n'); @@ -24646,7 +24710,7 @@ void MDBlockParser__add_to_document(md_doc_state *state, text_stream *line) { TabbedStr__advance(&line_scanner); } for (int i = TabbedStr__get_index(&line_scanner); istashed, c); } PUT_TO(latest->stashed, '\n'); @@ -24733,17 +24797,17 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, if ((MarkdownVariations__supports(state->variation, INDENTED_CODE_BLOCKS_MARKDOWNFEATURE)) && (indentation)) return FALSE; if (MarkdownVariations__supports(state->variation, SETEXT_HEADINGS_MARKDOWNFEATURE)) { - wchar_t c = Str__get_at(line, content_index); + inchar32_t c = Str__get_at(line, content_index); if ((c == '-') || (c == '=')) { int ornament_count = 1, extraneous = 0; int j=content_index+1; for (; j 0) && (extraneous == 0)) return TRUE; @@ -24766,14 +24830,14 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, if ((which == CODE_FENCE_CLOSE_MDINTERPRETATION) && (state->fencing.material == 0)) return FALSE; text_stream *info_string = text_details; - wchar_t c = Str__get_at(line, content_index); + inchar32_t c = Str__get_at(line, content_index); if ((which == CODE_FENCE_CLOSE_MDINTERPRETATION) && (state->fencing.material != c)) return FALSE; if ((c == '`') || (c == '~')) { int post_count = 0; int j = content_index; for (; jvariation, HTML_BLOCKS_MARKDOWNFEATURE) == FALSE) return FALSE; - wchar_t c = Str__get_at(line, content_index); + inchar32_t c = Str__get_at(line, content_index); if (c != '<') return FALSE; int condition_type = 0; /* not a valid condition */ @@ -24828,7 +24892,7 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, int i = content_index+1; /* i.e., the index after the |<| */ TEMPORARY_TEXT(tag) for (; i')) break; PUT_TO(tag, c); } @@ -24980,7 +25044,7 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, TEMPORARY_TEXT(tag_name) int i = 0; for (; i 0) && ((Characters__is_ASCII_digit(c)) || (c == '-')))) PUT_TO(tag_name, c); @@ -24994,7 +25058,7 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, DISCARD_TEXT(tag_name) if (closing == FALSE) { while (TRUE) { - wchar_t c = Str__get_at(tag, i); + inchar32_t c = Str__get_at(tag, i); if ((c != ' ') && (c != '\t')) break; i = MDBlockParser__advance_past_spacing(tag, i); c = Str__get_at(tag, i); @@ -25008,7 +25072,7 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, if (Str__get_at(tag, i) == '=') { i++; i = MDBlockParser__advance_past_spacing(tag, i); - wchar_t c = Str__get_at(tag, i); + inchar32_t c = Str__get_at(tag, i); if (c == '\'') { i++; c = Str__get_at(tag, i); while ((c) && (c != '\'')) { @@ -25101,7 +25165,7 @@ int MDBlockParser__can_interpret_as(md_doc_state *state, text_stream *line, #line 1922 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" int MDBlockParser__advance_past_spacing(text_stream *tag, int i) { int newlines = 0; - wchar_t c = Str__get_at(tag, i); + inchar32_t c = Str__get_at(tag, i); while ((c == ' ') || (c == '\t') || (c == '\n')) { if (c == '\n') { newlines++; if (newlines == 2) break; @@ -25131,7 +25195,7 @@ int MDBlockParser__remove_link_references(md_doc_state *state, markdown_item *at { #line 1990 "inweb/foundation-module/Chapter 5/Markdown Phase I.w" for (; i 0) && (quot)) { for (i++; i 0) { Str__clear(line1); for (int i=remainder_at; idetails = count; if (name_inversion) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, md->stashed, L"(%c*) (%C+)")) { + if (Regexp__match(&mr, md->stashed, U"(%c*) (%C+)")) { Str__clear(md->stashed); WRITE_TO(md->stashed, "%S, %S", mr.exp[1], mr.exp[0]); } @@ -25618,10 +25683,10 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, ; { -#line 222 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 223 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Str__get_at(text, i) == '<') { for (int j=i+1; j') { int link_from = i+1, link_to = j-1, count = j-i+1; if (tracing_Markdown_parser) { @@ -25633,18 +25698,18 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, if (MarkdownVariations__supports(variation, WEB_AUTOLINKS_MARKDOWNFEATURE)) { -#line 264 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 265 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int colon_at = -1; for (int k=link_from; k<=link_to; k++) if (Str__get_at(text, k) == ':') { colon_at = k; break; } if (colon_at >= 0) { int scheme_valid = TRUE; { -#line 291 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 292 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int scheme_length = colon_at - link_from; if ((scheme_length < 2) || (scheme_length > 32)) scheme_valid = FALSE; for (int i=link_from; i link_from) && ((Characters__is_ASCII_digit(c)) || (c == '+') || (c == '-') || (c == '.'))))) @@ -25652,21 +25717,21 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 268 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 269 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; int link_valid = TRUE; { -#line 302 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 303 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" for (int i=colon_at+1; i<=link_to; i++) { - wchar_t c = Str__get_at(text, i); + inchar32_t c = Str__get_at(text, i); if ((c == '<') || (c == '>') || (c == ' ') || (Characters__is_control_character(c))) link_valid = FALSE; } } -#line 270 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 271 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if ((scheme_valid) && (link_valid)) { if (i-1 >= from) { @@ -25688,23 +25753,23 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 234 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 235 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (MarkdownVariations__supports(variation, EMAIL_AUTOLINKS_MARKDOWNFEATURE)) { -#line 310 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 311 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int atsign_at = -1; for (int k=link_from; k<=link_to; k++) if (Str__get_at(text, k) == '@') { atsign_at = k; break; } if (atsign_at >= 0) { int username_valid = TRUE; { -#line 342 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 343 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int username_length = atsign_at - link_from; if (username_length < 1) username_valid = FALSE; for (int i=link_from; i= 64) domain_valid = FALSE; } -#line 316 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 317 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if ((username_valid) && (domain_valid)) { if (i-1 >= from) { @@ -25780,7 +25845,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 236 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 237 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; break; } @@ -25801,12 +25866,12 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, (Characters__is_Unicode_whitespace(Str__get_at(text, i-1))))) { -#line 398 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 399 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int domain_from = i, to = i; int add_protocol = FALSE, email_address = FALSE, email_required = FALSE, xmpp = FALSE; { -#line 418 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 419 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if ((Str__get_at(text, domain_from) == 'w') && (Str__get_at(text, domain_from+1) == 'w') && (Str__get_at(text, domain_from+2) == 'w') && @@ -25852,11 +25917,11 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 400 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 401 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if ((email_required) || (to == domain_from)) { -#line 463 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 464 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int j = to; while ((MDInlineParser__extended_autolink_email_char(Str__get_at(text, j))) || (Str__get_at(text, j) == '+') || @@ -25867,7 +25932,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 401 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 402 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (((email_required == FALSE) || (email_address)) && (to > domain_from)) { if (tracing_Markdown_parser) { @@ -25877,7 +25942,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } { -#line 473 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 474 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (email_address) { while (TRUE) { if (MDInlineParser__extended_autolink_email_char(Str__get_at(text, to+1))) to++; @@ -25894,12 +25959,12 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, if (Str__get_at(text, to) == '.') to--; } -#line 408 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 409 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; int domain_name_invalid = FALSE; { -#line 489 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 490 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int dot_count = 0; for (int j=domain_from; j<=to; j++) if (Str__get_at(text, j) == '.') dot_count++; if (dot_count == 0) domain_name_invalid = TRUE; @@ -25908,19 +25973,19 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, domain_name_invalid = TRUE; } else { for (int j=domain_from, dots_passed=0; j<=to; j++) { - wchar_t c = Str__get_at(text, j); + inchar32_t c = Str__get_at(text, j); if (c == '.') dots_passed++; if ((c == '_') && (dots_passed >= dot_count - 2)) domain_name_invalid = TRUE; } } } -#line 410 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 411 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (domain_name_invalid == FALSE) { { -#line 504 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 505 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int domain_to = to; if (email_address == FALSE) { while ((Str__get_at(text, to+1) != 0) && (Str__get_at(text, to+1) != '<') && @@ -25951,11 +26016,11 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 412 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 413 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 534 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 535 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -25977,13 +26042,13 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 413 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 414 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } } -#line 254 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 255 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } @@ -25992,20 +26057,20 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, ; { -#line 592 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 593 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (MarkdownVariations__supports(variation, INLINE_HTML_MARKDOWNFEATURE)) { int filter = NOT_APPLICABLE; if (Str__get_at(text, i) == '<') { switch (Str__get_at(text, i+1)) { case '?': { -#line 618 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 619 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" for (int j = i+3; j')) { int tag_from = i, tag_to = j+1; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26018,18 +26083,18 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 621 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 622 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 596 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 597 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; break; case '!': if ((Str__get_at(text, i+2) == '-') && (Str__get_at(text, i+3) == '-')) { -#line 627 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 628 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int bad_start = FALSE; if (Str__get_at(text, i+4) == '>') bad_start = TRUE; if ((Str__get_at(text, i+4) == '-') && (Str__get_at(text, i+5) == '>')) bad_start = TRUE; @@ -26040,7 +26105,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, int tag_from = i, tag_to = j+2; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26053,14 +26118,14 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 635 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 636 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } break; } } -#line 599 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 600 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if ((Str__get_at(text, i+2) == '[') && (Str__get_at(text, i+3) == 'C') && (Str__get_at(text, i+4) == 'D') && (Str__get_at(text, i+5) == 'A') && @@ -26068,14 +26133,14 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, (Str__get_at(text, i+8) == '[')) { -#line 652 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 653 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" for (int j = i+10; j')) { int tag_from = i, tag_to = j+2; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26088,23 +26153,23 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 656 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 657 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 604 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 605 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Characters__is_ASCII_letter(Str__get_at(text, i+2))) { -#line 643 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 644 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" for (int j = i+2; j') { int tag_from = i, tag_to = j; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26117,22 +26182,22 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 646 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 647 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 606 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 607 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; break; case '/': { -#line 672 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 673 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int at = i+2; { -#line 681 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" - wchar_t c = Str__get_at(text, at); +#line 682 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" + inchar32_t c = Str__get_at(text, at); if (Characters__is_ASCII_letter(c) == FALSE) goto NotATag; TEMPORARY_TEXT(tag) while ((c == '-') || (Characters__is_ASCII_letter(c)) || (Characters__is_ASCII_digit(c))) { @@ -26145,14 +26210,14 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, DISCARD_TEXT(tag) } -#line 673 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 674 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 753 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 754 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_ending_count = 0; while (TRUE) { - wchar_t c = Str__get_at(text, at++); + inchar32_t c = Str__get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -26162,13 +26227,13 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at--; } -#line 674 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 675 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Str__get_at(text, at) == '>') { int tag_from = i, tag_to = at; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26181,22 +26246,22 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 677 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 678 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 608 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 609 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; break; default: { -#line 660 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 661 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int at = i+1; filter = FALSE; { -#line 681 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" - wchar_t c = Str__get_at(text, at); +#line 682 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" + inchar32_t c = Str__get_at(text, at); if (Characters__is_ASCII_letter(c) == FALSE) goto NotATag; TEMPORARY_TEXT(tag) while ((c == '-') || (Characters__is_ASCII_letter(c)) || (Characters__is_ASCII_digit(c))) { @@ -26209,19 +26274,19 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, DISCARD_TEXT(tag) } -#line 662 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 663 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 694 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 695 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" while (TRUE) { int start_at = at; { -#line 753 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 754 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_ending_count = 0; while (TRUE) { - wchar_t c = Str__get_at(text, at++); + inchar32_t c = Str__get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -26231,10 +26296,10 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at--; } -#line 696 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 697 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (at == start_at) break; - wchar_t c = Str__get_at(text, at); + inchar32_t c = Str__get_at(text, at); if ((c == '_') || (c == ':') || (Characters__is_ASCII_letter(c))) { while ((c == '_') || (c == ':') || (c == '.') || (c == '-') || (Characters__is_ASCII_letter(c)) || (Characters__is_ASCII_digit(c))) @@ -26242,10 +26307,10 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, int start_value_at = at; { -#line 753 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 754 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_ending_count = 0; while (TRUE) { - wchar_t c = Str__get_at(text, at++); + inchar32_t c = Str__get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -26255,7 +26320,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at--; } -#line 704 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 705 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Str__get_at(text, at) != '=') { at = start_value_at; goto DoneValueSpecification; @@ -26263,10 +26328,10 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at++; { -#line 753 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 754 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_ending_count = 0; while (TRUE) { - wchar_t c = Str__get_at(text, at++); + inchar32_t c = Str__get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -26276,11 +26341,11 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at--; } -#line 709 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 710 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 730 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 731 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Str__get_at(text, at) == '\'') { int k = at + 1; while ((Str__get_at(text, k) != '\'') && (Str__get_at(text, k) != 0)) @@ -26290,11 +26355,11 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 710 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 711 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 739 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 740 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Str__get_at(text, at) == '"') { int k = at + 1; while ((Str__get_at(text, k) != '"') && (Str__get_at(text, k) != 0)) @@ -26304,14 +26369,14 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } } -#line 711 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 712 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 718 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 719 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int k = at; while (TRUE) { - wchar_t c = Str__get_at(text, k); + inchar32_t c = Str__get_at(text, k); if ((c == ' ') || (c == '\t') || (c == '\n') || (c == '"') || (c == '\'') || (c == '=') || (c == '<') || (c == '>') || (c == '`') || (c == 0)) break; @@ -26321,21 +26386,21 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at = k; goto DoneValueSpecification; } -#line 712 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 713 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; DoneValueSpecification: ; } else { at = start_at; break; } } } -#line 663 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 664 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 753 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 754 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_ending_count = 0; while (TRUE) { - wchar_t c = Str__get_at(text, at++); + inchar32_t c = Str__get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -26345,14 +26410,14 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, at--; } -#line 664 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 665 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Str__get_at(text, at) == '/') at++; if (Str__get_at(text, at) == '>') { int tag_from = i, tag_to = at; { -#line 765 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 766 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (i-1 >= from) { markdown_item *md = Markdown__new_slice(PLAIN_MIT, text, from, i-1); Markdown__add_to(md, owner); @@ -26365,12 +26430,12 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, goto ContinueOuter; } -#line 668 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 669 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 609 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 610 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; break; } NotATag: ; @@ -26383,7 +26448,7 @@ markdown_item *MDInlineParser__make_inline_chain(markdown_variation *variation, } { -#line 777 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 778 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Str__get_at(text, i) == '\n') { int soak = 0; if (Str__get_at(text, i-1) == '\\') soak = 2; @@ -26440,32 +26505,32 @@ int MDInlineParser__backtick_string(text_stream *text, int at) { return count; } -#line 559 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_domain_char(wchar_t c) { +#line 560 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_domain_char(inchar32_t c) { if ((Characters__isalnum(c)) || (c == '_') || (c == '-')) return TRUE; return FALSE; } -#line 568 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_email_char(wchar_t c) { +#line 569 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_email_char(inchar32_t c) { if ((Characters__isalnum(c)) || (c == '_') || (c == '-')) return TRUE; return FALSE; } -#line 576 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_xmpp_resource_char(wchar_t c) { +#line 577 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_xmpp_resource_char(inchar32_t c) { if ((Characters__isalnum(c)) || (c == '@') || (c == '.')) return TRUE; return FALSE; } -#line 585 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -int MDInlineParser__extended_autolink_trailing_punctuation_char(wchar_t c) { +#line 586 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +int MDInlineParser__extended_autolink_trailing_punctuation_char(inchar32_t c) { if ((c == '?') || (c == '!') || (c == ',') || (c == '.') || (c == ':') || (c == '*') || (c == '_') || (c == '~')) return TRUE; return FALSE; } -#line 824 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 825 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" void MDInlineParser__links_and_images(markdown_variation *variation, md_links_dictionary *link_refs, markdown_item *owner, int images_only) { if (owner == NULL) return; @@ -26509,7 +26574,7 @@ void MDInlineParser__links_and_images(markdown_variation *variation, } { -#line 897 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 898 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" markdown_item *chain = owner->down, *found_text = NULL, *remainder = NULL; Markdown__cut_interval(chain, found.first, found.last, &chain, &found_text, &remainder); @@ -26569,21 +26634,21 @@ void MDInlineParser__links_and_images(markdown_variation *variation, leftmost_pos = Markdown__left_edge_of(remainder); } -#line 865 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 866 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } -#line 893 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 894 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -#line 960 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 961 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, md_links_dictionary *link_refs, md_charpos from, md_charpos to, int images_only, int links_only) { md_link_parse result; { -#line 996 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 999 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" result.is_link = NOT_APPLICABLE; result.first = Markdown__nowhere(); result.link_text_from = Markdown__nowhere(); @@ -26599,13 +26664,15 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, result.last = Markdown__nowhere(); } -#line 964 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 965 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = Markdown__nowhere(); int escaped = FALSE; + while ((Markdown__somewhere(from)) && (Markdown__plainish(from.md) == FALSE)) + from = Markdown__advance_up_to(from, to); for (md_charpos pos = from; Markdown__somewhere(pos); pos = Markdown__advance_up_to(pos, to)) { - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); if ((c == '\\') && (escaped == FALSE)) escaped = TRUE; else { if ((c == '[') && (escaped == FALSE)) { @@ -26619,7 +26686,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, if (pass == 2) pos = pass_pos; { -#line 1017 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1020 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (((links_only == FALSE) || (prev_c != '!')) && ((images_only == FALSE) || (prev_c == '!'))) { int link_rather_than_image = TRUE, uses = LINKS_MARKDOWNFEATURE; @@ -26638,11 +26705,11 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, md_charpos abandon_at = pos; { -#line 1069 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" - wchar_t c = Markdown__get(pos); +#line 1072 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" + inchar32_t c = Markdown__get(pos); md_charpos prev_pos = pos; result.link_text_from = Markdown__advance_up_to(pos, to); - wchar_t prev_c = 0; + inchar32_t prev_c = 0; int bl = 0, count = 0, escaped = FALSE; while (c != 0) { if ((c == '\\') && (escaped == FALSE)) { @@ -26670,19 +26737,19 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, pos = Markdown__advance_up_to_plainish_only(pos, to); } -#line 1033 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1036 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Markdown__get(pos) == '[') { { -#line 1100 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1103 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" md_charpos prev_pos = pos; pos = Markdown__advance_up_to_plainish_only(pos, to); result.link_destination_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; int bl = 1, escaping = FALSE; TEMPORARY_TEXT(label) - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while (c != 0) { if ((c == '\\') && (escaping == FALSE)) { escaping = TRUE; @@ -26714,7 +26781,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, result.link_reference = ref; } -#line 1035 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1038 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } else { if ((Markdown__get(pos) != '(') || (pass == 2)) { @@ -26726,7 +26793,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } { -#line 1141 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1144 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" TEMPORARY_TEXT(to) for (int i=0; i= 2) break; } pos = Markdown__advance_up_to_quasi_plainish_only(pos, to); @@ -26762,16 +26829,16 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 1053 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1056 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Markdown__get(pos) != ')') { -#line 1154 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1157 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Markdown__get(pos) == '<') { pos = Markdown__advance_up_to_quasi_plainish_only(pos, to); result.link_destination_from = pos; int empty = TRUE; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; while ((Markdown__get(pos) != '>') || (prev_c == '\\')) { if (Markdown__get(pos) == 0) ABANDON_LINK("no end to destination in angles"); if (Markdown__get(pos) == '<') ABANDON_LINK("'<' in destination in angles"); @@ -26787,12 +26854,12 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } else { result.link_destination_from = pos; int bl = 1; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; while ((Markdown__get(pos) != ' ') && (Markdown__get(pos) != '\n') && (Markdown__get(pos) != '\t')) { - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); if ((c == '(') && (prev_c != '\\')) bl++; if ((c == ')') && (prev_c != '\\')) { bl--; if (bl == 0) break; } if (c == 0) ABANDON_LINK("no end to destination"); @@ -26808,13 +26875,13 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 1054 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1057 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 1255 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1258 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_endings = 0; - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while ((c == ' ') || (c == '\t') || (c == '\n')) { if (c == '\n') { line_endings++; if (line_endings >= 2) break; } pos = Markdown__advance_up_to_quasi_plainish_only(pos, to); @@ -26822,20 +26889,20 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 1055 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1058 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Markdown__get(pos) != ')') { -#line 1195 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1198 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (Markdown__get(pos) == '"') { pos = Markdown__advance_up_to_plainish_only(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while (c != 0) { - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); if ((c == '"') && (prev_c != '\\')) break; prev_pos = pos; prev_c = c; @@ -26849,12 +26916,12 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, else if (Markdown__get(pos) == '\'') { pos = Markdown__advance_up_to_plainish_only(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while (c != 0) { - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); if ((c == '\'') && (prev_c != '\\')) break; prev_pos = pos; prev_c = c; @@ -26868,12 +26935,12 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, else if (Markdown__get(pos) == '(') { pos = Markdown__advance_up_to(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while (c != 0) { - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); if ((c == '(') && (prev_c != '\\')) ABANDON_LINK("unescaped '(' in title"); if ((c == ')') && (prev_c != '\\')) break; prev_pos = pos; @@ -26887,13 +26954,13 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 1056 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1059 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 1255 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1258 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int line_endings = 0; - wchar_t c = Markdown__get(pos); + inchar32_t c = Markdown__get(pos); while ((c == ' ') || (c == '\t') || (c == '\n')) { if (c == '\n') { line_endings++; if (line_endings >= 2) break; } pos = Markdown__advance_up_to_quasi_plainish_only(pos, to); @@ -26901,7 +26968,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 1057 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1060 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (Markdown__get(pos) != ')') ABANDON_LINK("no ')'"); } @@ -26914,7 +26981,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, } } -#line 981 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 984 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; AbandonHope: ; } @@ -26929,7 +26996,7 @@ md_link_parse MDInlineParser__first_valid_link(markdown_variation *variation, return result; } -#line 1274 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1277 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owner, int mask) { for (markdown_item *md = owner->down; md; md = md->next) @@ -26943,15 +27010,17 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } { -#line 1392 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1395 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int no_delimiters = 0; md_emphasis_delimiter delimiters[MAX_MD_EMPHASIS_DELIMITERS]; { -#line 1447 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1450 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int open_count[3] = { 0, 0, 0 }, close_count[3] = { 0, 0, 0 }, both_count[3] = { 0, 0, 0 }; - for (md_charpos pos = Markdown__left_edge_of(owner->down); - Markdown__somewhere(pos); pos = Markdown__advance(pos)) { + md_charpos from = Markdown__left_edge_of(owner->down); + while ((Markdown__somewhere(from)) && (Markdown__plainish(from.md) == FALSE)) + from = Markdown__advance(from); + for (md_charpos pos = from; Markdown__somewhere(pos); pos = Markdown__advance(pos)) { int run = MDInlineParser__delimiter_run(pos, mask); if (run != 0) { if (no_delimiters >= MAX_MD_EMPHASIS_DELIMITERS) break; @@ -26994,7 +27063,7 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1394 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1397 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; markdown_item *options[MAX_MD_EMPHASIS_DELIMITERS]; @@ -27007,7 +27076,7 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne if (CD->can_close == FALSE) continue; { -#line 1503 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1508 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" if (CD->type != OD->type) continue; if ((CD->can_open) || (OD->can_close)) { int sum = OD->width + CD->width; @@ -27018,14 +27087,14 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1404 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1407 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (tracing_Markdown_parser) { WRITE("Option %d is to pair D%d with D%d\n", no_options, open_i, close_i); } { -#line 1522 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1527 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" markdown_item *option = Markdown__deep_copy(owner); options[no_options++] = option; markdown_item *OI = NULL, *CI = NULL; @@ -27042,7 +27111,7 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne md_charpos last_trimmed_char_right; { -#line 1565 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1570 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int O_start = OD->pos.at, O_width = OD->width; if (O_start < OI->from) { O_width -= (OI->from - O_start); O_start = OI->from; } @@ -27065,25 +27134,25 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1536 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1541 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 1587 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1592 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" for (int w=0; wtype == 0) { em_top = Markdown__new_item(STRIKETHROUGH_MIT); em_bottom = em_top; @@ -27098,11 +27167,11 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1541 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1546 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; { -#line 1620 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1625 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" markdown_item *chain = option->down; if (tracing_Markdown_parser) { Markdown__debug_chain_label(OUT, chain, TL_IS_2416); @@ -27135,7 +27204,7 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne em_bottom->down = emphasis; } -#line 1542 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1547 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; MDInlineParser__emphasis(variation, em_bottom, mask); @@ -27150,13 +27219,13 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1408 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1411 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } } if (no_options > 0) { -#line 1652 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1657 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int best_is = 1, best_score = 100000000; for (int pair_i = 0; pair_i < no_options; pair_i++) { int score = MDInlineParser__penalty(options[pair_i]); @@ -27168,11 +27237,11 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne owner->down = options[best_is]->down; } -#line 1411 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1414 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; } -#line 1285 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1288 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" ; if (tracing_Markdown_parser) { OUTDENT; @@ -27180,7 +27249,7 @@ void MDInlineParser__emphasis(markdown_variation *variation, markdown_item *owne } } -#line 1304 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1307 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__delimiter_run(md_charpos pos, int mask) { int count = 0; if (mask & ASTERISK_EMPHASIS_BIT) { @@ -27199,14 +27268,14 @@ int MDInlineParser__delimiter_run(md_charpos pos, int mask) { return 0; } -#line 1335 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1338 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__left_flanking(md_charpos pos, int count) { if (count == 0) return FALSE; if (count < 0) count = -count; - wchar_t followed_by = Markdown__get_unescaped(pos, count); + inchar32_t followed_by = Markdown__get_unescaped(pos, count); if ((followed_by == 0) || (Characters__is_Unicode_whitespace(followed_by))) return FALSE; if (Characters__is_Unicode_punctuation(followed_by) == FALSE) return TRUE; - wchar_t preceded_by = Markdown__get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown__get_unescaped(pos, -1); if ((preceded_by == 0) || (Characters__is_Unicode_whitespace(preceded_by)) || (Characters__is_Unicode_punctuation(preceded_by))) return TRUE; return FALSE; @@ -27215,21 +27284,21 @@ int MDInlineParser__left_flanking(md_charpos pos, int count) { int MDInlineParser__right_flanking(md_charpos pos, int count) { if (count == 0) return FALSE; if (count < 0) count = -count; - wchar_t preceded_by = Markdown__get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown__get_unescaped(pos, -1); if ((preceded_by == 0) || (Characters__is_Unicode_whitespace(preceded_by))) return FALSE; if (Characters__is_Unicode_punctuation(preceded_by) == FALSE) return TRUE; - wchar_t followed_by = Markdown__get_unescaped(pos, count); + inchar32_t followed_by = Markdown__get_unescaped(pos, count); if ((followed_by == 0) || (Characters__is_Unicode_whitespace(followed_by)) || (Characters__is_Unicode_punctuation(followed_by))) return TRUE; return FALSE; } -#line 1362 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1365 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__can_open_emphasis(md_charpos pos, int count) { if (MDInlineParser__left_flanking(pos, count) == FALSE) return FALSE; if (count > 0) return TRUE; if (MDInlineParser__right_flanking(pos, count) == FALSE) return TRUE; - wchar_t preceded_by = Markdown__get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown__get_unescaped(pos, -1); if (Characters__is_Unicode_punctuation(preceded_by)) return TRUE; return FALSE; } @@ -27238,21 +27307,21 @@ int MDInlineParser__can_close_emphasis(md_charpos pos, int count) { if (MDInlineParser__right_flanking(pos, count) == FALSE) return FALSE; if (count > 0) return TRUE; if (MDInlineParser__left_flanking(pos, count) == FALSE) return TRUE; - wchar_t followed_by = Markdown__get_unescaped(pos, -count); /* count < 0 here */ + inchar32_t followed_by = Markdown__get_unescaped(pos, -count); /* count < 0 here */ if (Characters__is_Unicode_punctuation(followed_by)) return TRUE; return FALSE; } -#line 1445 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1448 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" -#line 1676 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" +#line 1681 "inweb/foundation-module/Chapter 5/Markdown Phase II.w" int MDInlineParser__penalty(markdown_item *md) { if (md) { int penalty = 0; if (md->type == PLAIN_MIT) { for (int i=md->from; i<=md->to; i++) { md_charpos pos = Markdown__pos(md, i); - wchar_t c = Markdown__get_unescaped(pos, 0); + inchar32_t c = Markdown__get_unescaped(pos, 0); if ((c == '*') || (c == '_')) penalty += 100000; } } @@ -27484,7 +27553,7 @@ void MDRenderer__recurse(OUTPUT_STREAM, markdown_item *md, int mode, if (mode & TAGS_MDRMODE) HTML_OPEN("pre"); TEMPORARY_TEXT(language) for (int i=0; iinfo_string); i++) { - wchar_t c = Str__get_at(md->info_string, i); + inchar32_t c = Str__get_at(md->info_string, i); if ((c == ' ') || (c == '\t')) break; PUT_TO(language, c); } @@ -27818,21 +27887,21 @@ void MDRenderer__slice(OUTPUT_STREAM, markdown_item *md, int mode) { if (md) { int angles = 0; for (int i=md->from; i<=md->to; i++) { - wchar_t c = Markdown__get_at(md, i); + inchar32_t c = Markdown__get_at(md, i); if ((mode & ESCAPES_MDRMODE) && (c == '\\') && (ito) && (Characters__is_ASCII_punctuation(Markdown__get_at(md, i+1)))) c = Markdown__get_at(md, ++i); else if ((mode & ENTITIES_MDRMODE) && (c == '&') && (i+2<=md->to)) { int at = i; TEMPORARY_TEXT(entity) - wchar_t d = c; + inchar32_t d = c; while ((d != 0) && (d != ';')) { if (at > md->to) break; d = Markdown__get_at(md, at++); PUT_TO(entity, d); } if (d == ';') { - wchar_t A = 0, B = 0; + inchar32_t A = 0, B = 0; int valid = HTMLEntities__parse(entity, &A, &B); DISCARD_TEXT(entity) if (valid) { @@ -27852,8 +27921,14 @@ void MDRenderer__slice(OUTPUT_STREAM, markdown_item *md, int mode) { } } -#line 430 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" -void MDRenderer__char(OUTPUT_STREAM, wchar_t c, int mode) { +#line 429 "inweb/foundation-module/Chapter 5/Markdown Rendering.w" +void MDRenderer__stream(OUTPUT_STREAM, text_stream *stream, int mode) { + for (int i=0; istashed, L"Chapter (%d+): *(%c*)")) { + if (Regexp__match(&mr, md->stashed, U"Chapter (%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[1]); WRITE_TO(anchor, "chapter%S", mr.exp[0]); - } else if (Regexp__match(&mr, md->stashed, L"Chapter (%d+)")) { + } else if (Regexp__match(&mr, md->stashed, U"Chapter (%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "chapter%S", mr.exp[0]); - } else if (Regexp__match(&mr, md->stashed, L"Section (%d+).(%d+): *(%c*)")) { + } else if (Regexp__match(&mr, md->stashed, U"Section (%d+).(%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[2]); WRITE_TO(anchor, "c%Ss%S", mr.exp[0], mr.exp[1]); - } else if (Regexp__match(&mr, md->stashed, L"Section (%d+).(%d+)")) { + } else if (Regexp__match(&mr, md->stashed, U"Section (%d+).(%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "c%Ss%S", mr.exp[0], mr.exp[1]); - } else if (Regexp__match(&mr, md->stashed, L"Section (%d+): *(%c*)")) { + } else if (Regexp__match(&mr, md->stashed, U"Section (%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[1]); WRITE_TO(anchor, "s%S", mr.exp[0]); - } else if (Regexp__match(&mr, md->stashed, L"Section (%d+)")) { + } else if (Regexp__match(&mr, md->stashed, U"Section (%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "s%S", mr.exp[0]); } else { @@ -28306,8 +28381,8 @@ markdown_variation *InformFlavouredMarkdown__variation(void) { ; { -#line 523 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" - markdown_feature *pi = MarkdownVariations__new_feature(TL_IS_2463, +#line 564 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + markdown_feature *pi = MarkdownVariations__new_feature(TL_IS_2465, PASTE_BUTTONS_MARKDOWNFEATURE); METHOD_ADD(pi, POST_PHASE_I_MARKDOWN_MTID, InformFlavouredMarkdown__paste_buttons_intervene_after_Phase_I); @@ -28318,60 +28393,63 @@ markdown_variation *InformFlavouredMarkdown__variation(void) { ; { -#line 577 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" - markdown_feature *pd = MarkdownVariations__new_feature(TL_IS_2466, +#line 619 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + markdown_feature *pd = MarkdownVariations__new_feature(TL_IS_2468, PHRASE_DEFN_BOXES_MARKDOWNFEATURE); + METHOD_ADD(pd, POST_PHASE_I_MARKDOWN_MTID, + InformFlavouredMarkdown__PD_intervene_after_Phase_I); METHOD_ADD(pd, RENDER_MARKDOWN_MTID, InformFlavouredMarkdown__PD_render); MarkdownVariations__add_feature(Inform_flavoured_Markdown, PHRASE_DEFN_BOXES_MARKDOWNFEATURE); + Markdown__new_leaf_block_type(PHRASE_HEADER_MIT, TL_IS_2469); } #line 27 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; { -#line 616 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" - MarkdownVariations__new_feature(TL_IS_2467, INDEXING_MARKS_MARKDOWNFEATURE); +#line 704 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + MarkdownVariations__new_feature(TL_IS_2475, INDEXING_MARKS_MARKDOWNFEATURE); MarkdownVariations__add_feature(Inform_flavoured_Markdown, INDEXING_MARKS_MARKDOWNFEATURE); - Markdown__new_quasiplainish_inline_type(INDEX_MARKER_MIT, TL_IS_2468); + Markdown__new_quasiplainish_inline_type(INDEX_MARKER_MIT, TL_IS_2476); } #line 28 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; { -#line 630 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" - markdown_feature *he = MarkdownVariations__new_feature(TL_IS_2469, +#line 718 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + markdown_feature *he = MarkdownVariations__new_feature(TL_IS_2477, HEADING_MARKERS_MARKDOWNFEATURE); METHOD_ADD(he, POST_PHASE_I_MARKDOWN_MTID, InformFlavouredMarkdown__HM_intervene_after_Phase_I); MarkdownVariations__add_feature(Inform_flavoured_Markdown, HEADING_MARKERS_MARKDOWNFEATURE); - Markdown__new_leaf_block_type(HEADING_MARKER_MIT, TL_IS_2470); + Markdown__new_leaf_block_type(HEADING_MARKER_MIT, TL_IS_2478); } #line 29 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; { -#line 666 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" - markdown_feature *pg = MarkdownVariations__new_feature(TL_IS_2471, +#line 754 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + markdown_feature *pg = MarkdownVariations__new_feature(TL_IS_2479, PARAGRAPH_GATING_MARKDOWNFEATURE); METHOD_ADD(pg, POST_PHASE_I_MARKDOWN_MTID, InformFlavouredMarkdown__PG_intervene_after_Phase_I); MarkdownVariations__add_feature(Inform_flavoured_Markdown, PARAGRAPH_GATING_MARKDOWNFEATURE); METHOD_ADD(pg, RENDER_MARKDOWN_MTID, InformFlavouredMarkdown__PG_render); - Markdown__new_container_block_type(GATE_MIT, TL_IS_2472); + Markdown__new_container_block_type(GATE_MIT, TL_IS_2480); } #line 30 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; { -#line 741 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 829 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" markdown_feature *sc = - MarkdownVariations__new_feature(TL_IS_2473, + MarkdownVariations__new_feature(TL_IS_2481, INFORM_SYNTAX_COLOURING_MARKDOWNFEATURE); METHOD_ADD(sc, RENDER_MARKDOWN_MTID, InformFlavouredMarkdown__SC_render); MarkdownVariations__add_feature(Inform_flavoured_Markdown, @@ -28412,12 +28490,12 @@ void InformFlavouredMarkdown__OIH_intervene_after_Phase_I(markdown_feature *feat if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"%[x%] *(%c+?)")) { + if (Regexp__match(&mr, line, U"%[x%] *(%c+?)")) { MDBlockParser__change_type(NULL, md, HEADING_MIT); Markdown__set_heading_level(md, 2); Str__clear(line); WRITE_TO(line, "%S", mr.exp[0]); - } else if (Regexp__match(&mr, line, L"%[Chapter: *(%c+)%] *(%c+?)")) { + } else if (Regexp__match(&mr, line, U"%[Chapter: *(%c+)%] *(%c+?)")) { MDBlockParser__change_type(NULL, md, HEADING_MIT); Markdown__set_heading_level(md, 1); Str__clear(line); @@ -28444,14 +28522,14 @@ void InformFlavouredMarkdown__Inform_headings_r(markdown_item *md) { if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, line, L"Section *: *(%c+?)")) || - (Regexp__match(&mr, line, L"Section *- *(%c+?)"))) { + if ((Regexp__match(&mr, line, U"Section *: *(%c+?)")) || + (Regexp__match(&mr, line, U"Section *- *(%c+?)"))) { MDBlockParser__change_type(NULL, md, HEADING_MIT); Markdown__set_heading_level(md, 2); Str__clear(line); WRITE_TO(line, "%S", mr.exp[0]); - } else if ((Regexp__match(&mr, line, L"Chapter *: *(%c+?)")) || - (Regexp__match(&mr, line, L"Chapter *- *(%c+?)"))) { + } else if ((Regexp__match(&mr, line, U"Chapter *: *(%c+?)")) || + (Regexp__match(&mr, line, U"Chapter *- *(%c+?)"))) { MDBlockParser__change_type(NULL, md, HEADING_MIT); Markdown__set_heading_level(md, 1); Str__clear(line); @@ -28600,13 +28678,14 @@ void InformFlavouredMarkdown__detect_embedded_examples_r(markdown_item *md, int if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, line, L"Example *: *(%**) *(%c+?)")) || - (Regexp__match(&mr, line, L"Example *- *(%**) *(%c+?)"))) { + if ((Regexp__match(&mr, line, U"Example *: *(%**) *(%c+?)")) || + (Regexp__match(&mr, line, U"Example *- *(%**) *(%c+?)"))) { MDBlockParser__change_type(NULL, md, INFORM_EXAMPLE_HEADING_MIT); int star_count = Str__len(mr.exp[0]); IFM_example *new_eg = InformFlavouredMarkdown__new_example(mr.exp[1], NULL, star_count, ++(*example_number)); new_eg->cue = NULL; + new_eg->secondary_cue = NULL; new_eg->header = md; if (star_count == 0) { markdown_item *E = InformFlavouredMarkdown__error_item( @@ -28627,7 +28706,7 @@ void InformFlavouredMarkdown__detect_embedded_examples_r(markdown_item *md, int } } -#line 365 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 366 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__regroup_examples_r(markdown_item *md, int *example_number) { if (md->type == INFORM_EXAMPLE_HEADING_MIT) { if (md->down == NULL) { @@ -28652,7 +28731,7 @@ void InformFlavouredMarkdown__regroup_examples_r(markdown_item *md, int *example } } -#line 392 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 393 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" markdown_item *InformFlavouredMarkdown__find_example(markdown_item *tree, int eg) { if (eg <= 0) return NULL; markdown_item *result = NULL; @@ -28672,7 +28751,7 @@ void InformFlavouredMarkdown__find_e(markdown_item *md, int eg, markdown_item ** } } -#line 429 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 433 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" IFM_example *InformFlavouredMarkdown__new_example(text_stream *title, text_stream *desc, int star_count, int ecount) { @@ -28682,6 +28761,9 @@ IFM_example *InformFlavouredMarkdown__new_example(text_stream *title, text_strea E->header = NULL; E->secondary_header = NULL; E->cue = NULL; + E->secondary_cue = NULL; + E->primary_label = NULL; + E->secondary_label = NULL; E->star_count = star_count; E->number = ecount; E->insignia = Str__new(); @@ -28692,46 +28774,65 @@ IFM_example *InformFlavouredMarkdown__new_example(text_stream *title, text_strea return E; } -#line 453 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 460 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__EE_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) { if (md->type == INFORM_EXAMPLE_HEADING_MIT) { + HTML_TAG("hr"); /* rule a line before the example heading */ IFM_example *E = RETRIEVE_POINTER_IFM_example(md->user_state); - InformFlavouredMarkdown__render_example_heading(OUT, E, FALSE); + InformFlavouredMarkdown__render_example_heading(OUT, E, md); return TRUE; } return FALSE; } void InformFlavouredMarkdown__render_example_heading(OUTPUT_STREAM, IFM_example *E, - int in_stand_alone_file) { + markdown_item *md) { TEMPORARY_TEXT(link) - if (E->cue) { - if (in_stand_alone_file) { - WRITE_TO(link, "style=\"text-decoration: none\" href=\"%S\"", + TEMPORARY_TEXT(linkl) + TEMPORARY_TEXT(linkr) + text_stream *label = E->secondary_label; + if (md == NULL) { + if (E->cue) { + WRITE_TO(linkl, "style=\"text-decoration: none\" href=\"%S\"", MarkdownVariations__URL_for_heading(E->cue)); - } else { - WRITE_TO(link, "style=\"text-decoration: none\" href=\"%S\"", - E->URL); + } + if (E->secondary_cue) { + WRITE_TO(linkr, "style=\"text-decoration: none\" href=\"%S\"", + MarkdownVariations__URL_for_heading(E->secondary_cue)); + } + } else { + WRITE_TO(link, "style=\"text-decoration: none\" href=\"%S\"", + E->URL); + if ((md == E->header) && (E->secondary_cue)) { + WRITE_TO(linkl, "%S", link); + WRITE_TO(linkr, "style=\"text-decoration: none\" href=\"%S\"", + MarkdownVariations__URL_for_heading(E->secondary_cue)); + label = E->secondary_label; + } + if ((md == E->secondary_header) && (E->cue)) { + WRITE_TO(linkl, "%S", link); + WRITE_TO(linkr, "style=\"text-decoration: none\" href=\"%S\"", + MarkdownVariations__URL_for_heading(E->cue)); + label = E->primary_label; } } - HTML_TAG("hr"); /* rule a line before the example heading */ HTML_OPEN_WITH("div", "class=\"examplebox\""); /* Left hand cell: the oval icon */ HTML_OPEN_WITH("div", "class=\"exampleleft\""); HTML_OPEN_WITH("span", "id=eg%S", E->insignia); /* provide the anchor point */ - if (Str__len(link) > 0) HTML_OPEN_WITH("a", "%S", link); + if (Str__len(linkl) > 0) HTML_OPEN_WITH("a", "%S", linkl); HTML__begin_span(OUT, TL_IS_2460); WRITE("%S", E->insignia); HTML__end_span(OUT); - if (Str__len(link) > 0) HTML_CLOSE("a"); + if (Str__len(linkl) > 0) HTML_CLOSE("a"); HTML_CLOSE("span"); /* end the textual link */ HTML_CLOSE("div"); - /* Right hand cell: the asterisks and title, with rubric underneath */ - HTML_OPEN_WITH("div", "class=\"exampleright\""); + /* Middle cell: the asterisks and title, with rubric underneath */ + HTML_OPEN_WITH("div", "class=\"examplemiddle\""); if (Str__len(link) > 0) HTML_OPEN_WITH("a", "%S", link); for (int asterisk = 0; asterisk < E->star_count; asterisk++) PUT(0x2605); /* the Unicode for "black star" emoji */ @@ -28744,20 +28845,35 @@ void InformFlavouredMarkdown__render_example_heading(OUTPUT_STREAM, IFM_example HTML__end_span(OUT); HTML__begin_span(OUT, TL_IS_2462); InformFlavouredMarkdown__render_text(OUT, E->name); + HTML__end_span(OUT); + HTML_CLOSE("b"); HTML_TAG("br"); + HTML__begin_span(OUT, TL_IS_2463); InformFlavouredMarkdown__render_text(OUT, E->description); HTML__end_span(OUT); - HTML_CLOSE("b"); if (Str__len(link) > 0) HTML_CLOSE("a"); HTML_CLOSE("div"); + /* Right hand cell: the cross-reference */ + HTML_OPEN_WITH("div", "class=\"exampleright\""); + HTML_OPEN_WITH("span", "id=eg%S", E->insignia); /* provide the anchor point */ + if (Str__len(linkr) > 0) HTML_OPEN_WITH("a", "%S", linkr); + HTML__begin_span(OUT, TL_IS_2464); + WRITE("%S", label); + HTML__end_span(OUT); + if (Str__len(linkr) > 0) HTML_CLOSE("a"); + HTML_CLOSE("span"); /* end the textual link */ + HTML_CLOSE("div"); + HTML_CLOSE("div"); DISCARD_TEXT(link) + DISCARD_TEXT(linkl) + DISCARD_TEXT(linkr) } -#line 521 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 562 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 530 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 571 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__paste_buttons_intervene_after_Phase_I(markdown_feature *feature, markdown_item *tree, md_links_dictionary *link_references) { InformFlavouredMarkdown__pbiapi_r(tree); @@ -28766,14 +28882,14 @@ void InformFlavouredMarkdown__paste_buttons_intervene_after_Phase_I(markdown_fea void InformFlavouredMarkdown__pbiapi_r(markdown_item *md) { markdown_item *current_sample = NULL; for (markdown_item *ch = md->down; ch; ch=ch->next) { - if ((ch->type == CODE_BLOCK_MIT) && (Str__prefix_eq(ch->stashed, TL_IS_2464, 3))) { + if ((ch->type == CODE_BLOCK_MIT) && (Str__prefix_eq(ch->stashed, TL_IS_2466, 3))) { ch->user_state = STORE_POINTER_markdown_item(ch); current_sample = ch; Str__delete_first_character(ch->stashed); Str__delete_first_character(ch->stashed); Str__delete_first_character(ch->stashed); } else if ((ch->type == CODE_BLOCK_MIT) && - (Str__prefix_eq(ch->stashed, TL_IS_2465, 3)) && (current_sample)) { + (Str__prefix_eq(ch->stashed, TL_IS_2467, 3)) && (current_sample)) { ch->user_state = STORE_POINTER_markdown_item(current_sample); Str__delete_first_character(ch->stashed); Str__delete_first_character(ch->stashed); @@ -28784,7 +28900,7 @@ void InformFlavouredMarkdown__pbiapi_r(markdown_item *md) { if (ch->type == CODE_BLOCK_MIT) { TEMPORARY_TEXT(detabbed) for (int i=0, margin=0; istashed); i++) { - wchar_t c = Str__get_at(ch->stashed, i); + inchar32_t c = Str__get_at(ch->stashed, i); if (c == '\t') { PUT_TO(detabbed, ' '); margin++; while (margin % 4 != 0) { PUT_TO(detabbed, ' '); margin++; } @@ -28800,47 +28916,118 @@ void InformFlavouredMarkdown__pbiapi_r(markdown_item *md) { } } -#line 575 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 617 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 583 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -int InformFlavouredMarkdown__PD_render(markdown_feature *feature, text_stream *OUT, - markdown_item *md, int mode) { +#line 628 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +void InformFlavouredMarkdown__PD_intervene_after_Phase_I(markdown_feature *feature, + markdown_item *md, md_links_dictionary *link_references) { if (md->type == BLOCK_QUOTE_MIT) { if ((md->down) && (md->down->type == PARAGRAPH_MIT)) { match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, md->down->stashed, L"phrase: *{(%c*?)} *(%c+?)\n(%c*)")) || - (Regexp__match(&mr, md->down->stashed, L"(phrase): *(%c+?)\n(%c*)"))) { - HTML_OPEN_WITH("div", "class=\"definition\""); - HTML_OPEN_WITH("p", "class=\"defnprototype\""); - WRITE("%S", mr.exp[1]); - HTML_CLOSE("p"); - HTML_TAG("br"); - markdown_item *remainder = - Markdown__parse_inline_extended(mr.exp[2], InformFlavouredMarkdown__variation()); - Markdown__render_extended(OUT, remainder, InformFlavouredMarkdown__variation()); - for (markdown_item *ch = md->down->next; ch; ch = ch->next) - Markdown__render_extended(OUT, ch, InformFlavouredMarkdown__variation()); - HTML_CLOSE("div"); - Regexp__dispose_of(&mr); - return TRUE; + if ((Regexp__match(&mr, md->down->stashed, U"phrase: *%{(%c*?)%} *(%c+?)")) || + (Regexp__match(&mr, md->down->stashed, U"(phrase): *(%c+?)"))) { + markdown_item *join_to = NULL; + TEMPORARY_TEXT(phrase) + for (int i=0; i 0) { + markdown_item *ph = Markdown__new_item(PHRASE_HEADER_MIT); + ph->stashed = Str__duplicate(phrase); + if (join_to == NULL) { ph->next = md->down->next; md->down = ph; } + else { ph->next = join_to->next; join_to->next = ph; } + join_to = ph; + + markdown_item *im = Markdown__new_item(INDEX_MARKER_MIT); + im->stashed = Str__new(); + text_stream *category = TL_IS_2470; + if (Str__begins_with(phrase, TL_IS_2471)) category = TL_IS_2472; + if (Str__begins_with(phrase, TL_IS_2473)) category = TL_IS_2474; + WRITE_TO(im->stashed, "%S%S", category, phrase); + if (Str__get_last_char(im->stashed) == ':') + Str__delete_last_character(im->stashed); + im->details = 1; + im->next = join_to->next; join_to->next = im; + join_to = im; + } + +} +#line 639 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +; + Str__clear(phrase); + } else { + PUT_TO(phrase, Str__get_at(mr.exp[1], i)); + } + } + +{ +#line 656 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" + Str__trim_white_space(phrase); + if (Str__len(phrase) > 0) { + markdown_item *ph = Markdown__new_item(PHRASE_HEADER_MIT); + ph->stashed = Str__duplicate(phrase); + if (join_to == NULL) { ph->next = md->down->next; md->down = ph; } + else { ph->next = join_to->next; join_to->next = ph; } + join_to = ph; + + markdown_item *im = Markdown__new_item(INDEX_MARKER_MIT); + im->stashed = Str__new(); + text_stream *category = TL_IS_2470; + if (Str__begins_with(phrase, TL_IS_2471)) category = TL_IS_2472; + if (Str__begins_with(phrase, TL_IS_2473)) category = TL_IS_2474; + WRITE_TO(im->stashed, "%S%S", category, phrase); + if (Str__get_last_char(im->stashed) == ':') + Str__delete_last_character(im->stashed); + im->details = 1; + im->next = join_to->next; join_to->next = im; + join_to = im; + } + +} +#line 645 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +; + DISCARD_TEXT(phrase) } - Regexp__dispose_of(&mr); } } + for (markdown_item *ch = md->down; ch; ch=ch->next) { + InformFlavouredMarkdown__PD_intervene_after_Phase_I(feature, ch, link_references); + } +} + +#line 680 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +int InformFlavouredMarkdown__PD_render(markdown_feature *feature, text_stream *OUT, + markdown_item *md, int mode) { + if ((md->type == BLOCK_QUOTE_MIT) && (md->down) && (md->down->type == PHRASE_HEADER_MIT)) { + HTML_OPEN_WITH("div", "class=\"definition\""); + for (markdown_item *ch = md->down; ch; ch = ch->next) + Markdown__render_extended(OUT, ch, InformFlavouredMarkdown__variation()); + HTML_CLOSE("div"); + return TRUE; + } + if (md->type == PHRASE_HEADER_MIT) { + HTML_OPEN_WITH("p", "class=\"defnprototype\""); + MDRenderer__stream(OUT, md->stashed, mode); + HTML_CLOSE("p"); + return TRUE; + } return FALSE; } -#line 614 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 702 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 628 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 716 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 639 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 727 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__HM_intervene_after_Phase_I(markdown_feature *feature, markdown_item *md, md_links_dictionary *link_references) { if ((md->type == HEADING_MIT) && (Markdown__get_heading_level(md) <= 2)) { text_stream *line = md->stashed; match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, line, L"(%c*) %{(%C+)%} *")) { + while (Regexp__match(&mr, line, U"(%c*) %{(%C+)%} *")) { markdown_item *hm_item = Markdown__new_item(HEADING_MARKER_MIT); hm_item->stashed = Str__duplicate(mr.exp[1]); Str__clear(line); Str__copy(line, mr.exp[0]); @@ -28854,15 +29041,15 @@ void InformFlavouredMarkdown__HM_intervene_after_Phase_I(markdown_feature *featu } } -#line 664 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 752 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 676 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 764 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__PG_intervene_after_Phase_I(markdown_feature *feature, markdown_item *md, md_links_dictionary *link_references) { if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"%{(%C+?):%} *(%c*)")) { + if (Regexp__match(&mr, line, U"%{(%C+?):%} *(%c*)")) { MDBlockParser__change_type(NULL, md, GATE_MIT); md->details = TRUE; Str__clear(line); Str__copy(line, mr.exp[0]); @@ -28917,15 +29104,15 @@ int InformFlavouredMarkdown__PG_render(markdown_feature *feature, text_stream *O return FALSE; } -#line 739 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 827 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" -#line 749 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 837 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *OUT, markdown_item *md, int mode) { switch (md->type) { case CODE_MIT: { -#line 763 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 851 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" if (mode & TAGS_MDRMODE) { if (Markdown__get_backtick_count(md) == 1) { HTML_OPEN_WITH("code", "class=\"inlinesourcetext\""); @@ -28942,15 +29129,15 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O if (mode & TAGS_MDRMODE) HTML_CLOSE("code"); } -#line 752 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 840 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; return TRUE; case CODE_BLOCK_MIT: { -#line 782 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 870 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" TEMPORARY_TEXT(language_text) TEMPORARY_TEXT(language) for (int i=0; iinfo_string); i++) { - wchar_t c = Str__get_at(md->info_string, i); + inchar32_t c = Str__get_at(md->info_string, i); if ((c == ' ') || (c == '\t')) break; PUT_TO(language_text, c); } @@ -28961,7 +29148,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } { -#line 810 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 898 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" if (Str__len(language) == 0) { for (int i=0; istashed); i++) if ((Str__get_at(md->stashed, i) == '>') && @@ -28973,13 +29160,13 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } } -#line 794 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 882 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; - if ((Str__eq_insensitive(language, TL_IS_2474)) || - (Str__eq_insensitive(language, TL_IS_2475))) { + if ((Str__eq_insensitive(language, TL_IS_2482)) || + (Str__eq_insensitive(language, TL_IS_2483))) { { -#line 821 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 909 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML_OPEN("blockquote"); if (GENERAL_POINTER_IS_NULL(md->user_state) == FALSE) { markdown_item *first = RETRIEVE_POINTER_markdown_item(md->user_state); @@ -28998,17 +29185,17 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O DISCARD_TEXT(accumulated) } TEMPORARY_TEXT(colouring) - programming_language *default_language = Languages__find_by_name(TL_IS_2477, NULL, FALSE); + programming_language *default_language = Languages__find_by_name(TL_IS_2485, NULL, FALSE); programming_language *pl = default_language; if (pl) { Painter__reset_syntax_colouring(pl); Painter__syntax_colour(pl, NULL, md->stashed, colouring, FALSE); - if (Str__eq(pl->language_name, TL_IS_2478)) { + if (Str__eq(pl->language_name, TL_IS_2486)) { int ts = FALSE; for (int i=0; istashed, i); + inchar32_t c = Str__get_at(md->stashed, i); if (c == '[') ts = TRUE; if (ts) Str__put_at(colouring, i, EXTRACT_COLOUR); if (c == ']') ts = FALSE; @@ -29016,7 +29203,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } } } - HTML__begin_span(OUT, TL_IS_2479); + HTML__begin_span(OUT, TL_IS_2487); int tabulating = FALSE, tabular = FALSE, line_count = 0; TEMPORARY_TEXT(line) TEMPORARY_TEXT(line_colouring) @@ -29024,68 +29211,68 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O if (Str__get_at(md->stashed, k) == '\n') { { -#line 879 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 967 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" line_count++; if (Str__is_whitespace(line)) tabular = FALSE; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"Table %c*")) tabular = TRUE; + if (Regexp__match(&mr, line, U"Table %c*")) tabular = TRUE; Regexp__dispose_of(&mr); if (tabular) { if (tabulating) { { -#line 943 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1031 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__first_html_column(OUT, 0); } -#line 886 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 974 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } else { { -#line 927 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1015 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__end_span(OUT); HTML_TAG("br"); HTML__begin_plain_html_table(OUT); HTML__first_html_column(OUT, 0); } -#line 888 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 976 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; tabulating = TRUE; } int cell_from = 0, cell_to = 0, i = 0; { -#line 939 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1027 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" cell_from = i; cell_to = cell_from; - HTML__begin_span(OUT, TL_IS_2480); + HTML__begin_span(OUT, TL_IS_2488); } -#line 892 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 980 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; for (; i 1) HTML_TAG("br"); if (tabulating) { { -#line 949 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1037 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__end_html_table(OUT); - HTML__begin_span(OUT, TL_IS_2481); + HTML__begin_span(OUT, TL_IS_2489); } -#line 908 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 996 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; tabulating = FALSE; } @@ -29138,7 +29325,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O WRITE("\n"); } -#line 863 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 951 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; Str__clear(line); Str__clear(line_colouring); @@ -29148,68 +29335,68 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } if ((k == Str__len(md->stashed) - 1) && (Str__len(line) > 0)) { -#line 879 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 967 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" line_count++; if (Str__is_whitespace(line)) tabular = FALSE; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"Table %c*")) tabular = TRUE; + if (Regexp__match(&mr, line, U"Table %c*")) tabular = TRUE; Regexp__dispose_of(&mr); if (tabular) { if (tabulating) { { -#line 943 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1031 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__first_html_column(OUT, 0); } -#line 886 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 974 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } else { { -#line 927 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1015 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__end_span(OUT); HTML_TAG("br"); HTML__begin_plain_html_table(OUT); HTML__first_html_column(OUT, 0); } -#line 888 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 976 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; tabulating = TRUE; } int cell_from = 0, cell_to = 0, i = 0; { -#line 939 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1027 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" cell_from = i; cell_to = cell_from; - HTML__begin_span(OUT, TL_IS_2480); + HTML__begin_span(OUT, TL_IS_2488); } -#line 892 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 980 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; for (; i 1) HTML_TAG("br"); if (tabulating) { { -#line 949 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1037 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__end_html_table(OUT); - HTML__begin_span(OUT, TL_IS_2481); + HTML__begin_span(OUT, TL_IS_2489); } -#line 908 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 996 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; tabulating = FALSE; } @@ -29262,30 +29449,30 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O WRITE("\n"); } -#line 870 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 958 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } HTML_CLOSE("span"); if (tabulating) { -#line 949 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1037 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" HTML__end_html_table(OUT); - HTML__begin_span(OUT, TL_IS_2481); + HTML__begin_span(OUT, TL_IS_2489); } -#line 873 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 961 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; HTML_CLOSE("blockquote"); DISCARD_TEXT(line) DISCARD_TEXT(line_colouring) } -#line 797 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 885 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; - } else if (Str__eq_insensitive(language, TL_IS_2476)) { + } else if (Str__eq_insensitive(language, TL_IS_2484)) { { -#line 953 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1041 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" if (mode & TAGS_MDRMODE) HTML_OPEN_WITH("div", "class=\"extract-problems\""); if (mode & TAGS_MDRMODE) HTML_OPEN("blockquote"); @@ -29295,12 +29482,12 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O if (mode & TAGS_MDRMODE) HTML_CLOSE("div"); } -#line 799 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 887 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } else { { -#line 962 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1050 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" programming_language *pl = NULL; if (Str__len(language) > 0) { if (mode & TAGS_MDRMODE) @@ -29323,7 +29510,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O if (Str__get_at(md->stashed, k) == '\n') { { -#line 1000 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1088 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" if (pl) Painter__syntax_colour(pl, NULL, line, line_colouring, FALSE); InformFlavouredMarkdown__syntax_coloured_code(OUT, line, line_colouring, 0, Str__len(line), mode); @@ -29331,7 +29518,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } -#line 982 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1070 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; Str__clear(line); Str__clear(line_colouring); @@ -29341,7 +29528,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O if ((k == Str__len(md->stashed) - 1) && (Str__len(line) > 0)) { -#line 1000 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1088 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" if (pl) Painter__syntax_colour(pl, NULL, line, line_colouring, FALSE); InformFlavouredMarkdown__syntax_coloured_code(OUT, line, line_colouring, 0, Str__len(line), mode); @@ -29349,7 +29536,7 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } -#line 989 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1077 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } DISCARD_TEXT(line) @@ -29361,41 +29548,41 @@ int InformFlavouredMarkdown__SC_render(markdown_feature *feature, text_stream *O } } -#line 801 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 889 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; } DISCARD_TEXT(language_text) DISCARD_TEXT(language) } -#line 753 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 841 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" ; return TRUE; } return FALSE; } -#line 1007 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" +#line 1095 "inweb/foundation-module/Chapter 5/Inform-Flavoured Markdown.w" void InformFlavouredMarkdown__syntax_coloured_code(OUTPUT_STREAM, text_stream *text, text_stream *colouring, int from, int to, int mode) { - wchar_t current_col = 0; + inchar32_t current_col = 0; for (int i=from; icurrent_chapter = NULL; B->eventual_epub = NULL; B->prefix = prefix; - Epub__attach_metadata(B, L"title", title); + Epub__attach_metadata(B, U"title", title); return B; } @@ -29452,7 +29639,7 @@ void Epub__use_CSS(ebook_volume *V, filename *F) { V->CSS_file = F; } -text_stream *Epub__attach_metadata(ebook *B, wchar_t *K, text_stream *V) { +text_stream *Epub__attach_metadata(ebook *B, inchar32_t *K, text_stream *V) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) if (Str__eq_wide_string(D->key, K)) { @@ -29466,7 +29653,7 @@ text_stream *Epub__attach_metadata(ebook *B, wchar_t *K, text_stream *V) { return D->value; } -text_stream *Epub__get_metadata(ebook *B, wchar_t *K) { +text_stream *Epub__get_metadata(ebook *B, inchar32_t *K) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) if (Str__eq_wide_string(D->key, K)) @@ -29474,7 +29661,7 @@ text_stream *Epub__get_metadata(ebook *B, wchar_t *K) { return NULL; } -text_stream *Epub__ensure_metadata(ebook *B, wchar_t *K) { +text_stream *Epub__ensure_metadata(ebook *B, inchar32_t *K) { text_stream *S = Epub__get_metadata(B, K); if (S == NULL) S = Epub__attach_metadata(B, K, NULL); return S; @@ -29493,7 +29680,7 @@ ebook_page *Epub__note_page(ebook *B, filename *F, text_stream *title, text_stre WRITE_TO(P->page_ID, B->prefix); Filenames__write_unextended_leafname(P->page_ID, F); LOOP_THROUGH_TEXT(pos, P->page_ID) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if ((c == '-') || (c == ' ')) Str__put(pos, '_'); } ADD_TO_LINKED_LIST(P, ebook_page, B->ebook_page_list); @@ -29544,18 +29731,18 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) if (Pathnames__create_in_file_system(P) == FALSE) return NULL; TEMPORARY_TEXT(TEMP) - WRITE_TO(TEMP, "%S.epub", Epub__get_metadata(B, L"title")); + WRITE_TO(TEMP, "%S.epub", Epub__get_metadata(B, U"title")); B->eventual_epub = Filenames__in(P, TEMP); DISCARD_TEXT(TEMP) - pathname *Holder = Pathnames__down(P, TL_IS_2493); + pathname *Holder = Pathnames__down(P, TL_IS_2501); if (Pathnames__create_in_file_system(Holder) == FALSE) return NULL; B->holder = Holder; { #line 245 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *Mimetype = Filenames__in(Holder, TL_IS_2495); + filename *Mimetype = Filenames__in(Holder, TL_IS_2503); text_stream EM_struct; text_stream *OUT = &EM_struct; if (STREAM_OPEN_TO_FILE(OUT, Mimetype, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open mimetype file for output: %f", @@ -29569,9 +29756,9 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) { #line 254 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - pathname *META_INF = Pathnames__down(Holder, TL_IS_2496); + pathname *META_INF = Pathnames__down(Holder, TL_IS_2504); if (Pathnames__create_in_file_system(META_INF) == FALSE) return NULL; - filename *container = Filenames__in(META_INF, TL_IS_2497); + filename *container = Filenames__in(META_INF, TL_IS_2505); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, container, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open container file for output: %f", @@ -29591,18 +29778,18 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) } #line 236 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" ; - pathname *OEBPS = Pathnames__down(Holder, TL_IS_2494); + pathname *OEBPS = Pathnames__down(Holder, TL_IS_2502); if (Pathnames__create_in_file_system(OEBPS) == FALSE) return NULL; if (cover_image) { #line 280 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *cover = Filenames__in(OEBPS, TL_IS_2498); + filename *cover = Filenames__in(OEBPS, TL_IS_2506); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, cover, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open cover file for output: %f", cover); - Epub__note_page(B, cover, TL_IS_2499, TL_IS_2500); + Epub__note_page(B, cover, TL_IS_2507, TL_IS_2508); HTML__declare_as_HTML(OUT, TRUE); HTML__begin_head(OUT, NULL); @@ -29615,7 +29802,7 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) HTML__end_head(OUT); HTML__begin_body(OUT, NULL); HTML_OPEN_WITH("div", "id=\"cover-image\""); - HTML_TAG_WITH("img", "src=\"%/f\" alt=\"%S\"", cover_image, Epub__get_metadata(B, L"title")); + HTML_TAG_WITH("img", "src=\"%/f\" alt=\"%S\"", cover_image, Epub__get_metadata(B, U"title")); WRITE("\n"); HTML_CLOSE("div"); HTML__end_body(OUT); @@ -29634,7 +29821,7 @@ void Epub__end_construction(ebook *B) { { #line 315 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - text_stream *datestamp = Epub__ensure_metadata(B, L"date"); + text_stream *datestamp = Epub__ensure_metadata(B, U"date"); if (Str__len(datestamp) == 0) { WRITE_TO(datestamp, "%04d-%02d-%02d", the_present->tm_year + 1900, (the_present->tm_mon)+1, the_present->tm_mday); @@ -29642,15 +29829,15 @@ void Epub__end_construction(ebook *B) { TEMPORARY_TEXT(TEMP) WRITE_TO(TEMP, "urn:www.inform7.com:"); - text_stream *identifier = Epub__ensure_metadata(B, L"identifier"); + text_stream *identifier = Epub__ensure_metadata(B, U"identifier"); if (Str__len(identifier) == 0) - WRITE_TO(TEMP, "%S", Epub__get_metadata(B, L"title")); + WRITE_TO(TEMP, "%S", Epub__get_metadata(B, U"title")); else WRITE_TO(TEMP, "%S", identifier); Str__copy(identifier, TEMP); DISCARD_TEXT(TEMP) - text_stream *lang = Epub__ensure_metadata(B, L"language"); + text_stream *lang = Epub__ensure_metadata(B, U"language"); if (Str__len(lang) == 0) WRITE_TO(lang, "en-UK"); } @@ -29659,7 +29846,7 @@ void Epub__end_construction(ebook *B) { { #line 335 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *content = Filenames__in(B->OEBPS_path, TL_IS_2501); + filename *content = Filenames__in(B->OEBPS_path, TL_IS_2509); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, content, UTF8_ENC) == FALSE) Errors__fatal_with_file("unable to open content file for output: %f", @@ -29676,7 +29863,7 @@ void Epub__end_construction(ebook *B) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) { WRITE("key); - if (Str__eq_wide_string(D->key, L"identifier")) WRITE(" id=\"bookid\""); + if (Str__eq_wide_string(D->key, U"identifier")) WRITE(" id=\"bookid\""); WRITE(">"); WRITE("%S\n", D->value, D->key); } @@ -29784,7 +29971,7 @@ void Epub__end_construction(ebook *B) { { #line 434 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *toc = Filenames__in(B->OEBPS_path, TL_IS_2502); + filename *toc = Filenames__in(B->OEBPS_path, TL_IS_2510); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, toc, UTF8_ENC) == FALSE) Errors__fatal_with_file("unable to open ncx file for output: %f", @@ -29803,13 +29990,13 @@ void Epub__end_construction(ebook *B) { { #line 456 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" WRITE("\n"); INDENT; - WRITE("\n", Epub__get_metadata(B, L"identifier")); + WRITE("\n", Epub__get_metadata(B, U"identifier")); WRITE("\n", depth); WRITE("\n"); WRITE("\n"); OUTDENT; WRITE("\n"); WRITE("\n"); INDENT; - WRITE("%S\n", Epub__get_metadata(B, L"title")); + WRITE("%S\n", Epub__get_metadata(B, U"title")); OUTDENT; WRITE("\n"); } @@ -29828,8 +30015,8 @@ void Epub__end_construction(ebook *B) { ebook_page *P; LOOP_OVER_LINKED_LIST(P, ebook_page, B->ebook_page_list) { int in_phase = 1; - if ((Str__eq_wide_string(P->page_ID, L"cover")) || - (Str__eq_wide_string(P->page_ID, L"index"))) + if ((Str__eq_wide_string(P->page_ID, U"cover")) || + (Str__eq_wide_string(P->page_ID, U"index"))) in_phase = 0; if ((in_phase == phase) && (P->nav_entry_written == FALSE)) { @@ -30003,8 +30190,8 @@ void Epub__end_construction(ebook *B) { ebook_page *P; LOOP_OVER_LINKED_LIST(P, ebook_page, B->ebook_page_list) { int in_phase = 1; - if ((Str__eq_wide_string(P->page_ID, L"cover")) || - (Str__eq_wide_string(P->page_ID, L"index"))) + if ((Str__eq_wide_string(P->page_ID, U"cover")) || + (Str__eq_wide_string(P->page_ID, U"index"))) in_phase = 0; if ((in_phase == phase) && (P->nav_entry_written == FALSE)) { @@ -30052,7 +30239,7 @@ void Epub__end_construction(ebook *B) { { #line 551 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - pathname *up = Pathnames__from_text(TL_IS_2503); + pathname *up = Pathnames__from_text(TL_IS_2511); filename *ePub_relative = Filenames__in(up, Filenames__get_leafname(B->eventual_epub)); @@ -31294,7 +31481,7 @@ semantic_version_number VersionNumbers__from_text(text_stream *T) { int part = MMP_SEMVERPART; TEMPORARY_TEXT(prerelease) LOOP_THROUGH_TEXT(pos, T) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); switch (part) { case MMP_SEMVERPART: if (c == '.') dots_used++; @@ -31307,7 +31494,7 @@ semantic_version_number VersionNumbers__from_text(text_stream *T) { if (c == '-') part = PRE_SEMVERPART; if (c == '+') part = BM_SEMVERPART; } else if (Characters__isdigit(c)) { - int digit = c - '0'; + int digit = (int) (c - '0'); if ((val == 0) && (slashes_used == 0)) return VersionNumbers__null(); if (val < 0) val = digit; else val = 10*val + digit; @@ -31422,7 +31609,7 @@ int VersionNumbers__strict_atoi(text_stream *T) { LOOP_THROUGH_TEXT(pos, T) if (Characters__isdigit(Str__get(pos)) == FALSE) return -1; - wchar_t c = Str__get_first_char(T); + inchar32_t c = Str__get_first_char(T); if ((c == '0') && (Str__len(T) > 1)) return -1; return Str__atoi(T, 0); } @@ -31504,7 +31691,7 @@ semver_range *VersionNumberRanges__compatibility_range(semantic_version_number V semantic_version_number W = VersionNumbers__null(); W.version_numbers[0] = V.version_numbers[0] + 1; W.prerelease_segments = NEW_LINKED_LIST(text_stream); - ADD_TO_LINKED_LIST(TL_IS_2504, text_stream, W.prerelease_segments); + ADD_TO_LINKED_LIST(TL_IS_2512, text_stream, W.prerelease_segments); R->upper.end_value = W; } return R; @@ -31668,7 +31855,7 @@ web_md *WebMetadata__get(pathname *P, filename *alt_F, int syntax_version, { #line 141 "inweb/foundation-module/Chapter 8/Web Structure.w" int sequential = FALSE; /* are we numbering sections sequentially? */ - if (Str__eq(Bibliographic__get_datum(Wm, TL_IS_2505), TL_IS_2506)) + if (Str__eq(Bibliographic__get_datum(Wm, TL_IS_2513), TL_IS_2514)) sequential = TRUE; chapter_md *Cm; section_md *Sm; @@ -31699,7 +31886,7 @@ web_md *WebMetadata__get(pathname *P, filename *alt_F, int syntax_version, else { if (letters_from_current_word < letters_from_each_word) { if (Str__get_at(from, sn) != '-') { - wchar_t l = Characters__tolower(Str__get_at(from, sn)); + inchar32_t l = Characters__tolower(Str__get_at(from, sn)); if ((letters_from_current_word == 0) || ((l != 'a') && (l != 'e') && (l != 'i') && (l != 'o') && (l != 'u'))) { @@ -31835,9 +32022,9 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 346 "inweb/foundation-module/Chapter 8/Web Structure.w" - if (Str__eq(line, TL_IS_2507)) + if (Str__eq(line, TL_IS_2515)) RS->Wm->default_syntax = V1_SYNTAX; - else if (Str__eq(line, TL_IS_2508)) + else if (Str__eq(line, TL_IS_2516)) RS->Wm->default_syntax = V2_SYNTAX; } @@ -31851,9 +32038,9 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 357 "inweb/foundation-module/Chapter 8/Web Structure.w" RS->halted = TRUE; - text_stream *new_chapter_range = TL_IS_2509; + text_stream *new_chapter_range = TL_IS_2517; text_stream *language_name = NULL; - line = TL_IS_2510; + line = TL_IS_2518; { #line 560 "inweb/foundation-module/Chapter 8/Web Structure.w" @@ -31862,7 +32049,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, if (line == NULL) PRINT("Nullity!\n"); Cm->ch_title = Str__duplicate(line); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, Cm->ch_title, L"(%c*?): *(%c*)")) { + if (Regexp__match(&mr, Cm->ch_title, U"(%c*?): *(%c*)")) { Cm->ch_basic_title = Str__duplicate(mr.exp[0]); Cm->ch_decorated_title = Str__duplicate(mr.exp[1]); } else { @@ -31883,7 +32070,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, } #line 361 "inweb/foundation-module/Chapter 8/Web Structure.w" ; - line = TL_IS_2511; + line = TL_IS_2519; filename_of_single_file_web = tfp->text_file_filename; { @@ -31900,7 +32087,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, Str__clear(RS->titling_line_to_insert); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+) %^\"(%c+)\" *")) { + if (Regexp__match(&mr, line, U"(%c+) %^\"(%c+)\" *")) { Sm->sect_title = Str__duplicate(mr.exp[0]); Sm->tag_name = Str__duplicate(mr.exp[1]); } else { @@ -31931,14 +32118,14 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, #line 624 "inweb/foundation-module/Chapter 8/Web Structure.w" Sm->sect_language_name = RS->chapter_being_scanned->ch_language_name; /* by default */ match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c*%C) %(Independent (%c*) *%)")) { + if (Regexp__match(&mr, line, U"(%c*%C) %(Independent (%c*) *%)")) { text_stream *title_alone = mr.exp[0]; text_stream *language_name = mr.exp[1]; { #line 635 "inweb/foundation-module/Chapter 8/Web Structure.w" text_stream *p = language_name; - if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_2515); + if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_2523); Sm->sect_independent_language = Str__duplicate(p); } @@ -31999,7 +32186,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, #line 387 "inweb/foundation-module/Chapter 8/Web Structure.w" if (RS->main_web_not_module) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+?): (%c+?) *")) { + if (Regexp__match(&mr, line, U"(%c+?): (%c+?) *")) { TEMPORARY_TEXT(key) Str__copy(key, mr.exp[0]); TEMPORARY_TEXT(value) @@ -32009,7 +32196,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, #line 407 "inweb/foundation-module/Chapter 8/Web Structure.w" if (Bibliographic__datum_can_be_declared(RS->Wm, key)) { if (Bibliographic__datum_on_or_off(RS->Wm, key)) { - if ((Str__ne_wide_string(value, L"On")) && (Str__ne_wide_string(value, L"Off"))) { + if ((Str__ne_wide_string(value, U"On")) && (Str__ne_wide_string(value, U"Off"))) { TEMPORARY_TEXT(err) WRITE_TO(err, "this setting must be 'On' or 'Off': %S", key); Errors__in_text_file_S(err, tfp); @@ -32073,16 +32260,16 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, text_stream *language_name = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c*%C) %(Independent(%c*)%)")) { + if (Regexp__match(&mr, line, U"(%c*%C) %(Independent(%c*)%)")) { text_stream *title_alone = mr.exp[0]; language_name = mr.exp[1]; { #line 552 "inweb/foundation-module/Chapter 8/Web Structure.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, language_name, L" *")) - language_name = Bibliographic__get_datum(RS->Wm, TL_IS_2514); - else if (Regexp__match(&mr, language_name, L" *(%c*?) *")) + if (Regexp__match(&mr, language_name, U" *")) + language_name = Bibliographic__get_datum(RS->Wm, TL_IS_2522); + else if (Regexp__match(&mr, language_name, U" *(%c*?) *")) language_name = mr.exp[0]; Regexp__dispose_of(&mr); @@ -32093,36 +32280,36 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, } int this_is_a_chapter = TRUE; Str__clear(RS->chapter_dir_name); - if (Str__eq_wide_string(line, L"Sections")) { + if (Str__eq_wide_string(line, U"Sections")) { WRITE_TO(new_chapter_range, "S"); WRITE_TO(RS->chapter_dir_name, "Sections"); WRITE_TO(pdf_leafname, "Sections.pdf"); RS->Wm->chaptered = FALSE; Str__clear(RS->titling_line_to_insert); - } else if (Str__eq_wide_string(line, L"Preliminaries")) { + } else if (Str__eq_wide_string(line, U"Preliminaries")) { WRITE_TO(new_chapter_range, "P"); WRITE_TO(RS->chapter_dir_name, "Preliminaries"); Str__clear(RS->titling_line_to_insert); WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Preliminaries.pdf"); RS->Wm->chaptered = TRUE; - } else if (Str__eq_wide_string(line, L"Manual")) { + } else if (Str__eq_wide_string(line, U"Manual")) { WRITE_TO(new_chapter_range, "M"); WRITE_TO(RS->chapter_dir_name, "Manual"); Str__clear(RS->titling_line_to_insert); WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Manual.pdf"); RS->Wm->chaptered = TRUE; - } else if (Regexp__match(&mr, line, L"Header: (%c+)")) { + } else if (Regexp__match(&mr, line, U"Header: (%c+)")) { pathname *P = RS->path_to; if (P == NULL) P = RS->Wm->path_to_web; - P = Pathnames__down(P, TL_IS_2512); + P = Pathnames__down(P, TL_IS_2520); filename *HF = Filenames__in(P, mr.exp[0]); ADD_TO_LINKED_LIST(HF, filename, RS->Wm->header_filenames); this_is_a_chapter = FALSE; - } else if (Regexp__match(&mr, line, L"Import: (%c+)")) { + } else if (Regexp__match(&mr, line, U"Import: (%c+)")) { if (RS->halt_at_at) - Errors__in_text_file_S(TL_IS_2513, tfp); + Errors__in_text_file_S(TL_IS_2521, tfp); else if (RS->import_from) { module *imported = WebModules__find(RS->Wm, RS->import_from, mr.exp[0], RS->path_to_inweb); @@ -32142,7 +32329,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, } } this_is_a_chapter = FALSE; - } else if (Regexp__match(&mr, line, L"Chapter (%d+): %c+")) { + } else if (Regexp__match(&mr, line, U"Chapter (%d+): %c+")) { int n = Str__atoi(mr.exp[0], 0); WRITE_TO(new_chapter_range, "%d", n); WRITE_TO(RS->chapter_dir_name, "Chapter %d", n); @@ -32150,7 +32337,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Chapter-%d.pdf", n); RS->Wm->chaptered = TRUE; - } else if (Regexp__match(&mr, line, L"Appendix (%c): %c+")) { + } else if (Regexp__match(&mr, line, U"Appendix (%c): %c+")) { text_stream *letter = mr.exp[0]; Str__copy(new_chapter_range, letter); WRITE_TO(RS->chapter_dir_name, "Appendix %S", letter); @@ -32176,7 +32363,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, if (line == NULL) PRINT("Nullity!\n"); Cm->ch_title = Str__duplicate(line); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, Cm->ch_title, L"(%c*?): *(%c*)")) { + if (Regexp__match(&mr, Cm->ch_title, U"(%c*?): *(%c*)")) { Cm->ch_basic_title = Str__duplicate(mr.exp[0]); Cm->ch_decorated_title = Str__duplicate(mr.exp[1]); } else { @@ -32219,7 +32406,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, Str__clear(RS->titling_line_to_insert); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+) %^\"(%c+)\" *")) { + if (Regexp__match(&mr, line, U"(%c+) %^\"(%c+)\" *")) { Sm->sect_title = Str__duplicate(mr.exp[0]); Sm->tag_name = Str__duplicate(mr.exp[1]); } else { @@ -32250,14 +32437,14 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, #line 624 "inweb/foundation-module/Chapter 8/Web Structure.w" Sm->sect_language_name = RS->chapter_being_scanned->ch_language_name; /* by default */ match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c*%C) %(Independent (%c*) *%)")) { + if (Regexp__match(&mr, line, U"(%c*%C) %(Independent (%c*) *%)")) { text_stream *title_alone = mr.exp[0]; text_stream *language_name = mr.exp[1]; { #line 635 "inweb/foundation-module/Chapter 8/Web Structure.w" text_stream *p = language_name; - if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_2515); + if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_2523); Sm->sect_independent_language = Str__duplicate(p); } @@ -32312,7 +32499,7 @@ int WebMetadata__directory_looks_like_a_web(pathname *P) { } filename *WebMetadata__contents_filename(pathname *P) { - return Filenames__in(P, TL_IS_2516); + return Filenames__in(P, TL_IS_2524); } #line 673 "inweb/foundation-module/Chapter 8/Web Structure.w" @@ -32351,38 +32538,38 @@ int Bibliographic__datum_on_or_off(web_md *Wm, text_stream *key) { void Bibliographic__initialise_data(web_md *Wm) { web_bibliographic_datum *bd; - bd = Bibliographic__set_datum(Wm, TL_IS_2517, NULL); bd->declaration_mandatory = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2518, NULL); bd->declaration_mandatory = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2519, TL_IS_2520); - bd = Bibliographic__set_datum(Wm, TL_IS_2521, TL_IS_2522); - - bd = Bibliographic__set_datum(Wm, TL_IS_2523, NULL); - bd->alias = Bibliographic__set_datum(Wm, TL_IS_2524, NULL); /* alias US to UK spelling */ - - Bibliographic__set_datum(Wm, TL_IS_2525, NULL); - Bibliographic__set_datum(Wm, TL_IS_2526, NULL); - Bibliographic__set_datum(Wm, TL_IS_2527, NULL); - Bibliographic__set_datum(Wm, TL_IS_2528, NULL); - Bibliographic__set_datum(Wm, TL_IS_2529, NULL); - Bibliographic__set_datum(Wm, TL_IS_2530, NULL); - Bibliographic__set_datum(Wm, TL_IS_2531, TL_IS_2532); + bd = Bibliographic__set_datum(Wm, TL_IS_2525, NULL); bd->declaration_mandatory = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_2526, NULL); bd->declaration_mandatory = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_2527, TL_IS_2528); + bd = Bibliographic__set_datum(Wm, TL_IS_2529, TL_IS_2530); + + bd = Bibliographic__set_datum(Wm, TL_IS_2531, NULL); + bd->alias = Bibliographic__set_datum(Wm, TL_IS_2532, NULL); /* alias US to UK spelling */ + Bibliographic__set_datum(Wm, TL_IS_2533, NULL); Bibliographic__set_datum(Wm, TL_IS_2534, NULL); Bibliographic__set_datum(Wm, TL_IS_2535, NULL); - - bd = Bibliographic__set_datum(Wm, TL_IS_2536, TL_IS_2537); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2538, TL_IS_2539); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2540, TL_IS_2541); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2542, TL_IS_2543); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_2544, TL_IS_2545); - bd = Bibliographic__set_datum(Wm, TL_IS_2546, TL_IS_2547); - bd = Bibliographic__set_datum(Wm, TL_IS_2548, TL_IS_2549); - bd = Bibliographic__set_datum(Wm, TL_IS_2550, TL_IS_2551); + Bibliographic__set_datum(Wm, TL_IS_2536, NULL); + Bibliographic__set_datum(Wm, TL_IS_2537, NULL); + Bibliographic__set_datum(Wm, TL_IS_2538, NULL); + Bibliographic__set_datum(Wm, TL_IS_2539, TL_IS_2540); + Bibliographic__set_datum(Wm, TL_IS_2541, NULL); + Bibliographic__set_datum(Wm, TL_IS_2542, NULL); + Bibliographic__set_datum(Wm, TL_IS_2543, NULL); + + bd = Bibliographic__set_datum(Wm, TL_IS_2544, TL_IS_2545); bd->on_or_off = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_2546, TL_IS_2547); bd->on_or_off = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_2548, TL_IS_2549); bd->on_or_off = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_2550, TL_IS_2551); bd->on_or_off = TRUE; bd = Bibliographic__set_datum(Wm, TL_IS_2552, TL_IS_2553); bd = Bibliographic__set_datum(Wm, TL_IS_2554, TL_IS_2555); bd = Bibliographic__set_datum(Wm, TL_IS_2556, TL_IS_2557); - bd = Bibliographic__set_datum(Wm, TL_IS_2558, NULL); - bd = Bibliographic__set_datum(Wm, TL_IS_2559, TL_IS_2560); + bd = Bibliographic__set_datum(Wm, TL_IS_2558, TL_IS_2559); + bd = Bibliographic__set_datum(Wm, TL_IS_2560, TL_IS_2561); + bd = Bibliographic__set_datum(Wm, TL_IS_2562, TL_IS_2563); + bd = Bibliographic__set_datum(Wm, TL_IS_2564, TL_IS_2565); + bd = Bibliographic__set_datum(Wm, TL_IS_2566, NULL); + bd = Bibliographic__set_datum(Wm, TL_IS_2567, TL_IS_2568); } #line 86 "inweb/foundation-module/Chapter 8/Bibliographic Data for Webs.w" @@ -32437,14 +32624,14 @@ web_bibliographic_datum *Bibliographic__set_datum(web_md *Wm, text_stream *key, #line 128 "inweb/foundation-module/Chapter 8/Bibliographic Data for Webs.w" else Str__copy(bd->value, val); - if (Str__eq_wide_string(key, L"Title")) + if (Str__eq_wide_string(key, U"Title")) { #line 150 "inweb/foundation-module/Chapter 8/Bibliographic Data for Webs.w" TEMPORARY_TEXT(recapped) Str__copy(recapped, val); LOOP_THROUGH_TEXT(P, recapped) Str__put(P, Characters__toupper(Str__get(P))); - Bibliographic__set_datum(Wm, TL_IS_2561, recapped); + Bibliographic__set_datum(Wm, TL_IS_2569, recapped); DISCARD_TEXT(recapped) } @@ -32462,7 +32649,7 @@ module *WebModules__new(text_stream *name, pathname *at, int m) { M->module_name = Str__duplicate(name); M->dependencies = NEW_LINKED_LIST(module); M->origin_marker = m; - M->module_tag = TL_IS_2562; + M->module_tag = TL_IS_2570; M->chapters_md = NEW_LINKED_LIST(chapter_md); M->sections_md = NEW_LINKED_LIST(section_md); return M; @@ -32470,7 +32657,7 @@ module *WebModules__new(text_stream *name, pathname *at, int m) { #line 52 "inweb/foundation-module/Chapter 8/Web Modules.w" module *WebModules__create_main_module(web_md *WS) { - return WebModules__new(TL_IS_2563, WS->path_to_web, READING_WEB_MOM); + return WebModules__new(TL_IS_2571, WS->path_to_web, READING_WEB_MOM); } #line 63 "inweb/foundation-module/Chapter 8/Web Modules.w" @@ -32532,7 +32719,7 @@ int WebModules__named_reference(module **return_M, section_md **return_Sm, match_results mr = Regexp__create_mr(); text_stream *seek = text; text_stream *seek_module = NULL; - if (Regexp__match(&mr, text, L"(%C+?): *(%c+?) *")) { + if (Regexp__match(&mr, text, U"(%C+?): *(%c+?) *")) { seek_module = mr.exp[0]; seek = mr.exp[1]; } else { seek_module = from_M->module_name; seek = text; @@ -32739,9 +32926,9 @@ int WebModules__named_reference(module **return_M, section_md **return_Sm, #line 10 "inweb/foundation-module/Chapter 8/Build Files.w" filename *BuildFiles__build_file_for_web(web_md *WS) { - filename *F = Filenames__in(WS->path_to_web, TL_IS_2564); + filename *F = Filenames__in(WS->path_to_web, TL_IS_2572); if (TextFiles__exists(F)) return F; - F = Filenames__in(NULL, TL_IS_2565); + F = Filenames__in(NULL, TL_IS_2573); if (TextFiles__exists(F)) return F; return NULL; } @@ -32763,11 +32950,11 @@ void BuildFiles__build_file_helper(text_stream *text, text_file_position *tfp, v build_file_data *bfd = (build_file_data *) state; if (Str__len(text) == 0) return; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, text, L"Build Date: *(%c*)")) { + if (Regexp__match(&mr, text, U"Build Date: *(%c*)")) { bfd->build_date = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, text, L"Build Number: *(%c*)")) { + } else if (Regexp__match(&mr, text, U"Build Number: *(%c*)")) { bfd->build_code = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, text, L"Prerelease: *(%c*)")) { + } else if (Regexp__match(&mr, text, U"Prerelease: *(%c*)")) { bfd->prerelease_text = Str__duplicate(mr.exp[0]); } else { Errors__in_text_file("can't parse build file line", tfp); @@ -32795,25 +32982,25 @@ void BuildFiles__set_bibliographic_data_for(web_md *WS) { if (F) { build_file_data bfd = BuildFiles__read(F); if (Str__len(bfd.prerelease_text) > 0) - Bibliographic__set_datum(WS, TL_IS_2566, bfd.prerelease_text); + Bibliographic__set_datum(WS, TL_IS_2574, bfd.prerelease_text); if (Str__len(bfd.build_code) > 0) - Bibliographic__set_datum(WS, TL_IS_2567, bfd.build_code); + Bibliographic__set_datum(WS, TL_IS_2575, bfd.build_code); if (Str__len(bfd.build_date) > 0) - Bibliographic__set_datum(WS, TL_IS_2568, bfd.build_date); + Bibliographic__set_datum(WS, TL_IS_2576, bfd.build_date); } } #line 99 "inweb/foundation-module/Chapter 8/Build Files.w" void BuildFiles__deduce_semver(web_md *WS) { TEMPORARY_TEXT(combined) - text_stream *s = Bibliographic__get_datum(WS, TL_IS_2569); + text_stream *s = Bibliographic__get_datum(WS, TL_IS_2577); if (Str__len(s) > 0) WRITE_TO(combined, "%S", s); else { - text_stream *v = Bibliographic__get_datum(WS, TL_IS_2570); + text_stream *v = Bibliographic__get_datum(WS, TL_IS_2578); if (Str__len(v) > 0) WRITE_TO(combined, "%S", v); - text_stream *p = Bibliographic__get_datum(WS, TL_IS_2571); + text_stream *p = Bibliographic__get_datum(WS, TL_IS_2579); if (Str__len(p) > 0) WRITE_TO(combined, "-%S", p); - text_stream *b = Bibliographic__get_datum(WS, TL_IS_2572); + text_stream *b = Bibliographic__get_datum(WS, TL_IS_2580); if (Str__len(b) > 0) WRITE_TO(combined, "+%S", b); } if (Str__len(combined) > 0) { @@ -32823,7 +33010,7 @@ void BuildFiles__deduce_semver(web_md *WS) { "Combined version '%S' does not comply with the semver standard", combined); } else { - Bibliographic__set_datum(WS, TL_IS_2573, combined); + Bibliographic__set_datum(WS, TL_IS_2581, combined); } } DISCARD_TEXT(combined) @@ -32865,12 +33052,11 @@ int BuildFiles__dated_today(text_stream *dateline) { void BuildFiles__increment(text_stream *T) { if (Str__len(T) != 4) Errors__with_text("build code malformed: %S", T); else { - int N = Str__get_at(T, 0) - '0'; - int L = Str__get_at(T, 1); - int M1 = Str__get_at(T, 2) - '0'; - int M2 = Str__get_at(T, 3) - '0'; - if ((N < 0) || (N > 9) || (L < 'A') || (L > 'Z') || - (M1 < 0) || (M1 > 9) || (M2 < 0) || (M2 > 9)) { + inchar32_t N = Str__get_at(T, 0) - '0'; + inchar32_t L = Str__get_at(T, 1); + inchar32_t M1 = Str__get_at(T, 2) - '0'; + inchar32_t M2 = Str__get_at(T, 3) - '0'; + if ((N > 9) || (L < 'A') || (L > 'Z') || (M1 > 9) || (M2 > 9)) { Errors__with_text("build code malformed: %S", T); } else { M2++; @@ -32969,7 +33155,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, docket->current_filename = F; Input_File = Filenames__fopen(F, "r"); } else if (Str__len(leafname) > 0) { - pathname *P = Pathnames__down(docket->web_path, TL_IS_2574); + pathname *P = Pathnames__down(docket->web_path, TL_IS_2582); docket->current_filename = Filenames__in(P, leafname); Input_File = Filenames__fopen(docket->current_filename, "r"); } @@ -32987,25 +33173,26 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, TEMPORARY_TEXT(command) TEMPORARY_TEXT(argument) int skip_part = FALSE, extract = FALSE; - int col = 1, cr, prev_cr = 0, line_count = 1, sfp = 0, final_newline = FALSE; + int col = 1, line_count = 1, sfp = 0, final_newline = FALSE; + inchar32_t cr = 0, prev_cr = 0; do { Str__clear(command); Str__clear(argument); { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33015,31 +33202,31 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 144 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 145 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; - NewCharacter: if (cr == EOF) break; + NewCharacter: if (cr == CH32EOF) break; if (((cr == '@') || (cr == '=')) && (col == 1)) { int inweb_syntax = -1; if (cr == '=') { -#line 239 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 240 "inweb/foundation-module/Chapter 8/Simple Tangler.w" TEMPORARY_TEXT(equals_cmd) while (TRUE) { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33049,17 +33236,17 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 241 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 242 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; if ((cr == 10) || (cr == 13)) break; PUT_TO(equals_cmd, cr); } match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, equals_cmd, L" %(text%c*%) *")) { + if (Regexp__match(&mr, equals_cmd, U" %(text%c*%) *")) { inweb_syntax = INWEB_EXTRACT_SYNTAX; - } else if (Regexp__match(&mr, equals_cmd, L" %(figure%c*%) *")) { + } else if (Regexp__match(&mr, equals_cmd, U" %(figure%c*%) *")) { inweb_syntax = INWEB_FIGURE_SYNTAX; - } else if (Regexp__match(&mr, equals_cmd, L" %(%c*%) *")) { + } else if (Regexp__match(&mr, equals_cmd, U" %(%c*%) *")) { (*(docket->error_callback))( "unsupported '= (...)' marker at column 0", NULL); } else { @@ -33069,29 +33256,29 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, DISCARD_TEXT(equals_cmd) } -#line 148 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 149 "inweb/foundation-module/Chapter 8/Simple Tangler.w" else { -#line 197 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 198 "inweb/foundation-module/Chapter 8/Simple Tangler.w" TEMPORARY_TEXT(at_cmd) int committed = FALSE, unacceptable_character = FALSE; while (TRUE) { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33101,20 +33288,20 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 200 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 201 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; if ((committed == FALSE) && ((cr == 10) || (cr == 13) || (cr == ' '))) { - if (Str__eq_wide_string(at_cmd, L"")) + if (Str__eq_wide_string(at_cmd, U"")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str__eq_wide_string(at_cmd, L"p")) + else if (Str__eq_wide_string(at_cmd, U"p")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str__eq_wide_string(at_cmd, L"h")) + else if (Str__eq_wide_string(at_cmd, U"h")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str__eq_wide_string(at_cmd, L"c")) + else if (Str__eq_wide_string(at_cmd, U"c")) inweb_syntax = INWEB_CODE_SYNTAX; else if (Str__get_first_char(at_cmd) == '-') inweb_syntax = INWEB_DASH_SYNTAX; - else if (Str__begins_with_wide_string(at_cmd, L"Purpose:")) + else if (Str__begins_with_wide_string(at_cmd, U"Purpose:")) inweb_syntax = INWEB_PURPOSE_SYNTAX; committed = TRUE; if (inweb_syntax == -1) { @@ -33141,16 +33328,16 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, DISCARD_TEXT(at_cmd) } -#line 149 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 150 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; { -#line 260 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 261 "inweb/foundation-module/Chapter 8/Simple Tangler.w" switch (inweb_syntax) { case INWEB_PARAGRAPH_SYNTAX: { TEMPORARY_TEXT(heading_name) Str__copy_tail(heading_name, command, 2); - int c; + inchar32_t c; while (((c = Str__get_last_char(heading_name)) != 0) && ((c == ' ') || (c == '\t') || (c == '.'))) Str__delete_last_character(heading_name); @@ -33164,7 +33351,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, case INWEB_CODE_SYNTAX: { -#line 294 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 295 "inweb/foundation-module/Chapter 8/Simple Tangler.w" extract = FALSE; if (skip_part == FALSE) { comment = FALSE; @@ -33173,7 +33360,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, } } -#line 276 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 277 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; break; case INWEB_EQUALS_SYNTAX: @@ -33182,7 +33369,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, } else { { -#line 294 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 295 "inweb/foundation-module/Chapter 8/Simple Tangler.w" extract = FALSE; if (skip_part == FALSE) { comment = FALSE; @@ -33191,7 +33378,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, } } -#line 282 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 283 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; } break; @@ -33204,29 +33391,29 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, } } -#line 150 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 151 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; continue; } if (comment == FALSE) { -#line 302 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 303 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (cr == '{') { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33236,31 +33423,31 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 303 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 304 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; if ((cr == '-') && (docket->command_callback)) { { -#line 331 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 332 "inweb/foundation-module/Chapter 8/Simple Tangler.w" Str__clear(command); Str__clear(argument); int com_mode = TRUE; while (TRUE) { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33270,16 +33457,16 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 335 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 336 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; - if ((cr == '}') || (cr == EOF)) break; + if ((cr == '}') || (cr == CH32EOF)) break; if ((cr == ':') && (com_mode)) { com_mode = FALSE; continue; } if (com_mode) PUT_TO(command, cr); else PUT_TO(argument, cr); } } -#line 305 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 306 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; if (Str__get_first_char(command) == '!') continue; (*(docket->command_callback))(OUT, command, argument, docket); @@ -33292,19 +33479,19 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, if ((cr == '(') && (docket->bplus_callback)) { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33314,29 +33501,29 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 315 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 316 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; if (cr == '+') { { -#line 346 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 347 "inweb/foundation-module/Chapter 8/Simple Tangler.w" TEMPORARY_TEXT(material) while (TRUE) { { -#line 165 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 166 "inweb/foundation-module/Chapter 8/Simple Tangler.w" if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str__get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str__get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -33346,9 +33533,9 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, prev_cr = cr; } -#line 348 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 349 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; - if (cr == EOF) break; + if (cr == CH32EOF) break; if ((cr == ')') && (Str__get_last_char(material) == '+')) { Str__delete_last_character(material); break; } PUT_TO(material, cr); @@ -33357,7 +33544,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, DISCARD_TEXT(material) } -#line 317 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 318 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; continue; } else { /* otherwise the open bracket was a literal */ @@ -33368,9 +33555,9 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, PUT_TO(OUT, cr); } -#line 153 "inweb/foundation-module/Chapter 8/Simple Tangler.w" +#line 154 "inweb/foundation-module/Chapter 8/Simple Tangler.w" ; - } while (cr != EOF); + } while (cr != CH32EOF); DISCARD_TEXT(command) DISCARD_TEXT(argument) @@ -33548,7 +33735,7 @@ programming_language *Languages__read_definition(filename *F) { #line 215 "inweb/foundation-module/Chapter 9/Programming Languages.w" #ifdef THIS_IS_INWEB if (pl->C_like) CLike__make_c_like(pl); - if (Str__eq(pl->language_name, TL_IS_2575)) InCSupport__add_features(pl); + if (Str__eq(pl->language_name, TL_IS_2583)) InCSupport__add_features(pl); ACMESupport__add_fallbacks(pl); #endif @@ -33571,36 +33758,36 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp, if (state->current_block) { #line 325 "inweb/foundation-module/Chapter 9/Programming Languages.w" - if (Str__eq(line, TL_IS_2607)) { + if (Str__eq(line, TL_IS_2615)) { state->current_block = state->current_block->parent; - } else if (Regexp__match(&mr, line, L"characters {")) { + } else if (Regexp__match(&mr, line, U"characters {")) { colouring_rule *rule = Languages__new_rule(state->current_block); rule->execute_block = Languages__new_block(state->current_block, CHARACTERS_CRULE_RUN); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, line, L"characters in (%c+) {")) { + } else if (Regexp__match(&mr, line, U"characters in (%c+) {")) { colouring_rule *rule = Languages__new_rule(state->current_block); rule->execute_block = Languages__new_block(state->current_block, CHARACTERS_IN_CRULE_RUN); rule->execute_block->char_set = Languages__text(mr.exp[0], tfp, FALSE); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, line, L"runs of (%c+) {")) { + } else if (Regexp__match(&mr, line, U"runs of (%c+) {")) { colouring_rule *rule = Languages__new_rule(state->current_block); - wchar_t r = UNQUOTED_COLOUR; - if (Str__ne(mr.exp[0], TL_IS_2608)) r = Languages__colour(mr.exp[0], tfp); + inchar32_t r = UNQUOTED_COLOUR; + if (Str__ne(mr.exp[0], TL_IS_2616)) r = Languages__colour(mr.exp[0], tfp); rule->execute_block = Languages__new_block(state->current_block, (int) r); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, line, L"instances of (%c+) {")) { + } else if (Regexp__match(&mr, line, U"instances of (%c+) {")) { colouring_rule *rule = Languages__new_rule(state->current_block); rule->execute_block = Languages__new_block(state->current_block, INSTANCES_CRULE_RUN); rule->execute_block->run_instance = Languages__text(mr.exp[0], tfp, FALSE); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, line, L"matches of (%c+) {")) { + } else if (Regexp__match(&mr, line, U"matches of (%c+) {")) { colouring_rule *rule = Languages__new_rule(state->current_block); rule->execute_block = Languages__new_block(state->current_block, MATCHES_CRULE_RUN); Languages__regexp(rule->execute_block->match_regexp_text, mr.exp[0], tfp); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, line, L"brackets in (%c+) {")) { + } else if (Regexp__match(&mr, line, U"brackets in (%c+) {")) { colouring_rule *rule = Languages__new_rule(state->current_block); rule->execute_block = Languages__new_block(state->current_block, BRACKETS_CRULE_RUN); Languages__regexp(rule->execute_block->match_regexp_text, mr.exp[0], tfp); @@ -33632,76 +33819,76 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp, else { #line 242 "inweb/foundation-module/Chapter 9/Programming Languages.w" - if (Regexp__match(&mr, line, L"colouring {")) { + if (Regexp__match(&mr, line, U"colouring {")) { if (pl->program) Errors__in_text_file("duplicate colouring program", tfp); pl->program = Languages__new_block(NULL, WHOLE_LINE_CRULE_RUN); state->current_block = pl->program; - } else if (Regexp__match(&mr, line, L"keyword (%C+) of (%c+?)")) { + } else if (Regexp__match(&mr, line, U"keyword (%C+) of (%c+?)")) { Languages__reserved(pl, Languages__text(mr.exp[0], tfp, FALSE), Languages__colour(mr.exp[1], tfp), tfp); - } else if (Regexp__match(&mr, line, L"keyword (%C+)")) { + } else if (Regexp__match(&mr, line, U"keyword (%C+)")) { Languages__reserved(pl, Languages__text(mr.exp[0], tfp, FALSE), RESERVED_COLOUR, tfp); - } else if (Regexp__match(&mr, line, L"(%c+) *: *(%c+?)")) { + } else if (Regexp__match(&mr, line, U"(%c+) *: *(%c+?)")) { text_stream *key = mr.exp[0], *value = Str__duplicate(mr.exp[1]); - if (Str__eq(key, TL_IS_2576)) pl->language_name = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2577)) + if (Str__eq(key, TL_IS_2584)) pl->language_name = Languages__text(value, tfp, TRUE); + else if (Str__eq(key, TL_IS_2585)) pl->language_details = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2578)) + else if (Str__eq(key, TL_IS_2586)) pl->file_extension = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2579)) + else if (Str__eq(key, TL_IS_2587)) pl->line_comment = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2580)) + else if (Str__eq(key, TL_IS_2588)) pl->whole_line_comment = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2581)) + else if (Str__eq(key, TL_IS_2589)) pl->multiline_comment_open = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2582)) + else if (Str__eq(key, TL_IS_2590)) pl->multiline_comment_close = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2583)) + else if (Str__eq(key, TL_IS_2591)) pl->string_literal = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2584)) + else if (Str__eq(key, TL_IS_2592)) pl->string_literal_escape = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2585)) + else if (Str__eq(key, TL_IS_2593)) pl->character_literal = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2586)) + else if (Str__eq(key, TL_IS_2594)) pl->character_literal_escape = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2587)) + else if (Str__eq(key, TL_IS_2595)) pl->binary_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2588)) + else if (Str__eq(key, TL_IS_2596)) pl->octal_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2589)) + else if (Str__eq(key, TL_IS_2597)) pl->hexadecimal_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2590)) + else if (Str__eq(key, TL_IS_2598)) pl->negative_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2591)) + else if (Str__eq(key, TL_IS_2599)) pl->shebang = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2592)) + else if (Str__eq(key, TL_IS_2600)) pl->line_marker = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2593)) + else if (Str__eq(key, TL_IS_2601)) pl->before_macro_expansion = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2594)) + else if (Str__eq(key, TL_IS_2602)) pl->after_macro_expansion = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2595)) + else if (Str__eq(key, TL_IS_2603)) pl->start_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2596)) + else if (Str__eq(key, TL_IS_2604)) pl->prolong_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2597)) + else if (Str__eq(key, TL_IS_2605)) pl->end_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2598)) + else if (Str__eq(key, TL_IS_2606)) pl->start_ifdef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2599)) + else if (Str__eq(key, TL_IS_2607)) pl->start_ifndef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2600)) + else if (Str__eq(key, TL_IS_2608)) pl->end_ifdef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2601)) + else if (Str__eq(key, TL_IS_2609)) pl->end_ifndef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_2602)) + else if (Str__eq(key, TL_IS_2610)) pl->C_like = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_2603)) + else if (Str__eq(key, TL_IS_2611)) pl->suppress_disclaimer = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_2604)) + else if (Str__eq(key, TL_IS_2612)) pl->supports_namespaces = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_2605)) + else if (Str__eq(key, TL_IS_2613)) Languages__regexp(pl->function_notation, value, tfp); - else if (Str__eq(key, TL_IS_2606)) + else if (Str__eq(key, TL_IS_2614)) Languages__regexp(pl->type_notation, value, tfp); else { Errors__in_text_file("unknown property name before ':'", tfp); @@ -33766,40 +33953,40 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss, { #line 495 "inweb/foundation-module/Chapter 9/Programming Languages.w" - while (Regexp__match(&mr, premiss, L"not (%c+)")) { + while (Regexp__match(&mr, premiss, U"not (%c+)")) { rule->sense = (rule->sense)?FALSE:TRUE; Str__clear(premiss); Str__copy(premiss, mr.exp[0]); } - if (Regexp__match(&mr, premiss, L"number (%d+)")) { + if (Regexp__match(&mr, premiss, U"number (%d+)")) { rule->number = Str__atoi(mr.exp[0], 0); - } else if (Regexp__match(&mr, premiss, L"number (%d+) of (%d+)")) { + } else if (Regexp__match(&mr, premiss, U"number (%d+) of (%d+)")) { rule->number = Str__atoi(mr.exp[0], 0); rule->number_of = Str__atoi(mr.exp[1], 0); - } else if (Regexp__match(&mr, premiss, L"keyword of (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"keyword of (%c+)")) { rule->match_keyword_of_colour = Languages__colour(mr.exp[0], tfp); - } else if (Regexp__match(&mr, premiss, L"keyword")) { + } else if (Regexp__match(&mr, premiss, U"keyword")) { Errors__in_text_file("ambiguous: make it keyword of !reserved or \"keyword\"", tfp); - } else if (Regexp__match(&mr, premiss, L"prefix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"prefix (%c+)")) { rule->match_prefix = UNSPACED_RULE_PREFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"matching (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"matching (%c+)")) { Languages__regexp(rule->match_regexp_text, mr.exp[0], tfp); - } else if (Regexp__match(&mr, premiss, L"spaced prefix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"spaced prefix (%c+)")) { rule->match_prefix = SPACED_RULE_PREFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"optionally spaced prefix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"optionally spaced prefix (%c+)")) { rule->match_prefix = OPTIONALLY_SPACED_RULE_PREFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"suffix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"suffix (%c+)")) { rule->match_prefix = UNSPACED_RULE_SUFFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"spaced suffix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"spaced suffix (%c+)")) { rule->match_prefix = SPACED_RULE_SUFFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"optionally spaced suffix (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"optionally spaced suffix (%c+)")) { rule->match_prefix = OPTIONALLY_SPACED_RULE_SUFFIX; rule->match_text = Languages__text(mr.exp[0], tfp, FALSE); - } else if (Regexp__match(&mr, premiss, L"coloured (%c+)")) { + } else if (Regexp__match(&mr, premiss, U"coloured (%c+)")) { rule->match_colour = Languages__colour(mr.exp[0], tfp); } else if (Str__len(premiss) > 0) { rule->match_text = Languages__text(premiss, tfp, FALSE); @@ -33811,20 +33998,20 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss, { #line 535 "inweb/foundation-module/Chapter 9/Programming Languages.w" - if (Str__eq(action, TL_IS_2609)) { + if (Str__eq(action, TL_IS_2617)) { rule->execute_block = Languages__new_block(state->current_block, WHOLE_LINE_CRULE_RUN); state->current_block = rule->execute_block; - } else if (Regexp__match(&mr, action, L"(!%c+) on prefix")) { + } else if (Regexp__match(&mr, action, U"(!%c+) on prefix")) { rule->set_prefix_to_colour = Languages__colour(mr.exp[0], tfp); - } else if (Regexp__match(&mr, action, L"(!%c+) on suffix")) { + } else if (Regexp__match(&mr, action, U"(!%c+) on suffix")) { rule->set_prefix_to_colour = Languages__colour(mr.exp[0], tfp); - } else if (Regexp__match(&mr, action, L"(!%c+) on both")) { + } else if (Regexp__match(&mr, action, U"(!%c+) on both")) { rule->set_to_colour = Languages__colour(mr.exp[0], tfp); rule->set_prefix_to_colour = rule->set_to_colour; } else if (Str__get_first_char(action) == '!') { rule->set_to_colour = Languages__colour(action, tfp); - } else if (Str__eq(action, TL_IS_2610)) { + } else if (Str__eq(action, TL_IS_2618)) { rule->debug = TRUE; } else { Errors__in_text_file("action after '=>' illegible", tfp); @@ -33838,7 +34025,7 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss, #line 563 "inweb/foundation-module/Chapter 9/Programming Languages.w" -reserved_word *Languages__reserved(programming_language *pl, text_stream *W, wchar_t C, +reserved_word *Languages__reserved(programming_language *pl, text_stream *W, inchar32_t C, text_file_position *tfp) { reserved_word *rw; LOOP_OVER_LINKED_LIST(rw, reserved_word, pl->reserved_words) @@ -33854,22 +34041,22 @@ reserved_word *Languages__reserved(programming_language *pl, text_stream *W, wch } #line 601 "inweb/foundation-module/Chapter 9/Programming Languages.w" -wchar_t Languages__colour(text_stream *T, text_file_position *tfp) { +inchar32_t Languages__colour(text_stream *T, text_file_position *tfp) { if (Str__get_first_char(T) != '!') { Errors__in_text_file("colour names must begin with !", tfp); return PLAIN_COLOUR; } - if (Str__eq(T, TL_IS_2611)) return STRING_COLOUR; - else if (Str__eq(T, TL_IS_2612)) return FUNCTION_COLOUR; - else if (Str__eq(T, TL_IS_2613)) return DEFINITION_COLOUR; - else if (Str__eq(T, TL_IS_2614)) return RESERVED_COLOUR; - else if (Str__eq(T, TL_IS_2615)) return ELEMENT_COLOUR; - else if (Str__eq(T, TL_IS_2616)) return IDENTIFIER_COLOUR; - else if (Str__eq(T, TL_IS_2617)) return CHARACTER_COLOUR; - else if (Str__eq(T, TL_IS_2618)) return CONSTANT_COLOUR; - else if (Str__eq(T, TL_IS_2619)) return PLAIN_COLOUR; - else if (Str__eq(T, TL_IS_2620)) return EXTRACT_COLOUR; - else if (Str__eq(T, TL_IS_2621)) return COMMENT_COLOUR; + if (Str__eq(T, TL_IS_2619)) return STRING_COLOUR; + else if (Str__eq(T, TL_IS_2620)) return FUNCTION_COLOUR; + else if (Str__eq(T, TL_IS_2621)) return DEFINITION_COLOUR; + else if (Str__eq(T, TL_IS_2622)) return RESERVED_COLOUR; + else if (Str__eq(T, TL_IS_2623)) return ELEMENT_COLOUR; + else if (Str__eq(T, TL_IS_2624)) return IDENTIFIER_COLOUR; + else if (Str__eq(T, TL_IS_2625)) return CHARACTER_COLOUR; + else if (Str__eq(T, TL_IS_2626)) return CONSTANT_COLOUR; + else if (Str__eq(T, TL_IS_2627)) return PLAIN_COLOUR; + else if (Str__eq(T, TL_IS_2628)) return EXTRACT_COLOUR; + else if (Str__eq(T, TL_IS_2629)) return COMMENT_COLOUR; else { Errors__in_text_file("no such !colour", tfp); return PLAIN_COLOUR; @@ -33878,8 +34065,8 @@ wchar_t Languages__colour(text_stream *T, text_file_position *tfp) { #line 626 "inweb/foundation-module/Chapter 9/Programming Languages.w" int Languages__boolean(text_stream *T, text_file_position *tfp) { - if (Str__eq(T, TL_IS_2622)) return TRUE; - else if (Str__eq(T, TL_IS_2623)) return FALSE; + if (Str__eq(T, TL_IS_2630)) return TRUE; + else if (Str__eq(T, TL_IS_2631)) return FALSE; else { Errors__in_text_file("must be true or false", tfp); return FALSE; @@ -33896,7 +34083,7 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) bareword = FALSE; from++; to--; } for (int i=from; i<=to; i++) { - wchar_t c = Str__get_at(T, i); + inchar32_t c = Str__get_at(T, i); if (c == ' ') spaced = TRUE; if ((c == '\\') && (Str__get_at(T, i+1) == 'n')) { PUT_TO(V, '\n'); @@ -33937,14 +34124,6 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) } if (bareword) { int rw = FALSE; - if (Str__eq(V, TL_IS_2624)) rw = TRUE; - if (Str__eq(V, TL_IS_2625)) rw = TRUE; - if (Str__eq(V, TL_IS_2626)) rw = TRUE; - if (Str__eq(V, TL_IS_2627)) rw = TRUE; - if (Str__eq(V, TL_IS_2628)) rw = TRUE; - if (Str__eq(V, TL_IS_2629)) rw = TRUE; - if (Str__eq(V, TL_IS_2630)) rw = TRUE; - if (Str__eq(V, TL_IS_2631)) rw = TRUE; if (Str__eq(V, TL_IS_2632)) rw = TRUE; if (Str__eq(V, TL_IS_2633)) rw = TRUE; if (Str__eq(V, TL_IS_2634)) rw = TRUE; @@ -33959,6 +34138,14 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) if (Str__eq(V, TL_IS_2643)) rw = TRUE; if (Str__eq(V, TL_IS_2644)) rw = TRUE; if (Str__eq(V, TL_IS_2645)) rw = TRUE; + if (Str__eq(V, TL_IS_2646)) rw = TRUE; + if (Str__eq(V, TL_IS_2647)) rw = TRUE; + if (Str__eq(V, TL_IS_2648)) rw = TRUE; + if (Str__eq(V, TL_IS_2649)) rw = TRUE; + if (Str__eq(V, TL_IS_2650)) rw = TRUE; + if (Str__eq(V, TL_IS_2651)) rw = TRUE; + if (Str__eq(V, TL_IS_2652)) rw = TRUE; + if (Str__eq(V, TL_IS_2653)) rw = TRUE; if (rw) { TEMPORARY_TEXT(err) @@ -33972,7 +34159,7 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) } #line 727 "inweb/foundation-module/Chapter 9/Programming Languages.w" -void Languages__regexp(wchar_t *write_to, text_stream *T, text_file_position *tfp) { +void Languages__regexp(inchar32_t *write_to, text_stream *T, text_file_position *tfp) { if (write_to == NULL) internal_error("no buffer"); write_to[0] = 0; if (Str__len(T) > 0) { @@ -33981,9 +34168,9 @@ void Languages__regexp(wchar_t *write_to, text_stream *T, text_file_position *tf (Str__get_at(T, from) == '/') && (Str__get_at(T, to) == '/')) { from++; to--; for (int i=from; i<=to; i++) { - wchar_t c = Str__get_at(T, i); + inchar32_t c = Str__get_at(T, i); if (c == '\\') { - wchar_t w = Str__get_at(T, i+1); + inchar32_t w = Str__get_at(T, i+1); if (w == '\\') { x = Languages__add_to_regexp(write_to, x, w); } else if (w == 'd') { @@ -34022,12 +34209,12 @@ void Languages__regexp(wchar_t *write_to, text_stream *T, text_file_position *tf } } -int Languages__add_to_regexp(wchar_t *write_to, int i, wchar_t c) { +int Languages__add_to_regexp(inchar32_t *write_to, int i, inchar32_t c) { if (i < MAX_ILDF_REGEXP_LENGTH) write_to[i++] = c; return i; } -int Languages__add_escape_to_regexp(wchar_t *write_to, int i, wchar_t c) { +int Languages__add_escape_to_regexp(inchar32_t *write_to, int i, inchar32_t c) { i = Languages__add_to_regexp(write_to, i, '%'); i = Languages__add_to_regexp(write_to, i, c); return i; @@ -34045,12 +34232,12 @@ int ReservedWords__hash_code_from_word(text_stream *text) { int numeric = TRUE; /* the first character may prove to be the start of a number: is this true? */ for (p = Str__forward(p); Str__in_range(p); p = Str__forward(p)) - if (isdigit(Str__get(p)) == FALSE) numeric = FALSE; + if (Characters__isdigit(Str__get(p)) == FALSE) numeric = FALSE; if (numeric) return NUMBER_HASH; } } for (p=Str__start(text); Str__in_range(p); p = Str__forward(p)) - hash_code = (unsigned int) ((int) (hash_code*30011) + (Str__get(p))); + hash_code = (hash_code*30011) + Str__get(p); return (int) (1+(hash_code % (HASH_TAB_SIZE-1))); /* result of X 30011, plus 1 */ } @@ -34149,16 +34336,16 @@ void Painter__syntax_colour_inner(programming_language *pl, { #line 75 "inweb/foundation-module/Chapter 9/The Painter.w" - int squote = Str__get_first_char(pl->character_literal); - int squote_escape = Str__get_first_char(pl->character_literal_escape); - int dquote = Str__get_first_char(pl->string_literal); - int dquote_escape = Str__get_first_char(pl->string_literal_escape); + inchar32_t squote = Str__get_first_char(pl->character_literal); + inchar32_t squote_escape = Str__get_first_char(pl->character_literal_escape); + inchar32_t dquote = Str__get_first_char(pl->string_literal); + inchar32_t dquote_escape = Str__get_first_char(pl->string_literal_escape); for (int i=from; i <= to; i++) { - wchar_t skip = NOT_A_COLOUR; + inchar32_t skip = NOT_A_COLOUR; int one_off = -1, will_be = -1, glob = 1; switch (colouring_state) { case PLAIN_COLOUR: { - wchar_t c = Str__get_at(matter, i); + inchar32_t c = Str__get_at(matter, i); if (c == dquote) { colouring_state = STRING_COLOUR; break; @@ -34185,21 +34372,21 @@ void Painter__syntax_colour_inner(programming_language *pl, } break; case CHARACTER_COLOUR: { - wchar_t c = Str__get_at(matter, i); + inchar32_t c = Str__get_at(matter, i); if (c == squote) will_be = PLAIN_COLOUR; if (c == squote_escape) skip = CHARACTER_COLOUR; break; } case STRING_COLOUR: { - wchar_t c = Str__get_at(matter, i); + inchar32_t c = Str__get_at(matter, i); if (c == dquote) will_be = PLAIN_COLOUR; if (c == dquote_escape) skip = STRING_COLOUR; break; } } for (int j=0; j= 0) Str__put_at(colouring, i+j, (wchar_t) one_off); - else Str__put_at(colouring, i+j, (wchar_t) colouring_state); + if (one_off >= 0) Str__put_at(colouring, i+j, (inchar32_t) one_off); + else Str__put_at(colouring, i+j, (inchar32_t) colouring_state); } i += glob - 1; if (will_be >= 0) colouring_state = will_be; @@ -34218,7 +34405,7 @@ void Painter__syntax_colour_inner(programming_language *pl, for (int i=from; i <= to; i++) { if ((Str__get_at(colouring, i) == PLAIN_COLOUR) || (Str__get_at(colouring, i) == IDENTIFIER_COLOUR)) { - wchar_t c = Str__get_at(matter, i); + inchar32_t c = Str__get_at(matter, i); if (Str__includes_at(matter, i, pl->binary_literal_prefix)) { base = 2; for (int j=0; jbinary_literal_prefix); j++) @@ -34254,7 +34441,7 @@ void Painter__syntax_colour_inner(programming_language *pl, case 2: if ((c == '0') || (c == '1')) pass = TRUE; break; case 10: if (Characters__isdigit(c)) pass = TRUE; break; case 16: if (Characters__isdigit(c)) pass = TRUE; - int d = Characters__tolower(c); + inchar32_t d = Characters__tolower(c); if ((d == 'a') || (d == 'b') || (d == 'c') || (d == 'd') || (d == 'e') || (d == 'f')) pass = TRUE; break; @@ -34286,7 +34473,7 @@ void Painter__syntax_colour_inner(programming_language *pl, #line 196 "inweb/foundation-module/Chapter 9/The Painter.w" int Painter__identifier_at(programming_language *pl, text_stream *matter, text_stream *colouring, int i) { - wchar_t c = Str__get_at(matter, i); + inchar32_t c = Str__get_at(matter, i); if ((i > 0) && (Str__get_at(colouring, i-1) == IDENTIFIER_COLOUR)) { if ((c == '_') || ((c >= 'A') && (c <= 'Z')) || @@ -34294,7 +34481,7 @@ int Painter__identifier_at(programming_language *pl, ((c >= '0') && (c <= '9'))) return TRUE; if ((c == ':') && (pl->supports_namespaces)) return TRUE; } else { - wchar_t d = 0; + inchar32_t d = 0; if (i > 0) d = Str__get_at(matter, i); if ((d >= '0') && (d <= '9')) return FALSE; if ((c == '_') || @@ -34363,7 +34550,7 @@ void Painter__execute(hash_table *HT, colouring_language_block *block, text_stre default: { int ident_from = -1, count = 1; for (int i=from; i<=to; i++) { - int col = Str__get_at(colouring_at_start, i); + int col = (int) Str__get_at(colouring_at_start, i); if ((col == block->run) || ((block->run == UNQUOTED_COLOUR) && ((col != STRING_COLOUR) && (col != CHARACTER_COLOUR)))) { @@ -34411,7 +34598,7 @@ int Painter__satisfies(hash_table *HT, colouring_rule *rule, text_stream *matter (rule->match_prefix == OPTIONALLY_SPACED_RULE_PREFIX)) { int pos = from; if (rule->match_prefix != UNSPACED_RULE_PREFIX) { - while ((pos > 0) && (Characters__is_whitespace(pos-1))) pos--; + while ((pos > 0) && (Characters__is_whitespace(Str__get_at(rule->match_text, pos-1)))) pos--; if ((rule->match_prefix == SPACED_RULE_PREFIX) && (pos == from)) return FALSE; } @@ -34424,7 +34611,7 @@ int Painter__satisfies(hash_table *HT, colouring_rule *rule, text_stream *matter (rule->match_prefix == OPTIONALLY_SPACED_RULE_SUFFIX)) { int pos = to + 1; if (rule->match_prefix != UNSPACED_RULE_SUFFIX) { - while ((pos < Str__len(rule->match_text)) && (Characters__is_whitespace(pos))) pos++; + while ((pos < Str__len(rule->match_text)) && (Characters__is_whitespace(Str__get_at(rule->match_text, pos)))) pos++; if ((rule->match_prefix == SPACED_RULE_SUFFIX) && (pos == from)) return FALSE; } @@ -34541,7 +34728,7 @@ int Painter__parse_comment(programming_language *pl, text_stream *line, text_stream *part_before_comment, text_stream *part_within_comment) { int q_mode = 0, c_mode = 0, non_white_space = FALSE, c_position = -1, c_end = -1; for (int i=0; imakefile_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_2650); + ins->prototype_setting = Filenames__from_text(TL_IS_2658); if ((ins->gitignore_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_2651); + ins->prototype_setting = Filenames__from_text(TL_IS_2659); if ((ins->writeme_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_2652); + ins->prototype_setting = Filenames__from_text(TL_IS_2660); if (ins->makefile_setting) Makefiles__write(W, ins->prototype_setting, ins->makefile_setting, WebModules__make_search_path(ins->import_setting), ins->platform_setting); @@ -34865,15 +35052,15 @@ void Main__follow_instructions(inweb_instructions *ins) { #line 198 "inweb/Chapter 1/Program Control.w" TEMPORARY_TEXT(tangle_leaf) tangle_target *tn = NULL; - if (Str__eq_wide_string(ins->chosen_range, L"0")) { + if (Str__eq_wide_string(ins->chosen_range, U"0")) { { #line 222 "inweb/Chapter 1/Program Control.w" tn = NULL; - if (Bibliographic__data_exists(W->md, TL_IS_2653)) - Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_2654)); + if (Bibliographic__data_exists(W->md, TL_IS_2661)) + Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_2662)); else - Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_2655)); + Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_2663)); Str__concatenate(tangle_leaf, W->main_language->file_extension); } @@ -35015,106 +35202,106 @@ inweb_instructions Configuration__read(int argc, char **argv) { { #line 167 "inweb/Chapter 1/Configuration.w" - CommandLine__declare_heading(L"inweb: a tool for literate programming\n\n" - L"Usage: inweb WEB OPTIONS RANGE\n\n" - L"WEB must be a directory holding a literate program (a 'web')\n\n" - L"The legal RANGEs are:\n" - L" all: complete web (the default if no TARGETS set)\n" - L" P: all preliminaries\n" - L" 1: Chapter 1 (and so on)\n" - L" A: Appendix A (and so on, up to Appendix O)\n" - L" 3/eg: section with abbreviated name \"3/eg\" (and so on)\n" - L"You can also, or instead, specify:\n" - L" index: to weave an HTML page indexing the project\n" - L" chapters: to weave all chapters as individual documents\n" - L" sections: ditto with sections\n"); + CommandLine__declare_heading(U"inweb: a tool for literate programming\n\n" + U"Usage: inweb WEB OPTIONS RANGE\n\n" + U"WEB must be a directory holding a literate program (a 'web')\n\n" + U"The legal RANGEs are:\n" + U" all: complete web (the default if no TARGETS set)\n" + U" P: all preliminaries\n" + U" 1: Chapter 1 (and so on)\n" + U" A: Appendix A (and so on, up to Appendix O)\n" + U" 3/eg: section with abbreviated name \"3/eg\" (and so on)\n" + U"You can also, or instead, specify:\n" + U" index: to weave an HTML page indexing the project\n" + U" chapters: to weave all chapters as individual documents\n" + U" sections: ditto with sections\n"); CommandLine__begin_group(LANGUAGES_CLSG, - TL_IS_2657); - CommandLine__declare_switch(LANGUAGE_CLSW, L"read-language", 2, - L"read language definition from file X"); - CommandLine__declare_switch(LANGUAGES_CLSW, L"read-languages", 2, - L"read all language definitions in path X"); - CommandLine__declare_switch(SHOW_LANGUAGES_CLSW, L"show-languages", 1, - L"list programming languages supported by Inweb"); - CommandLine__declare_switch(TEST_LANGUAGE_CLSW, L"test-language", 2, - L"test language X on..."); - CommandLine__declare_switch(TEST_LANGUAGE_ON_CLSW, L"test-language-on", 2, - L"...the code in the file X"); + TL_IS_2665); + CommandLine__declare_switch(LANGUAGE_CLSW, U"read-language", 2, + U"read language definition from file X"); + CommandLine__declare_switch(LANGUAGES_CLSW, U"read-languages", 2, + U"read all language definitions in path X"); + CommandLine__declare_switch(SHOW_LANGUAGES_CLSW, U"show-languages", 1, + U"list programming languages supported by Inweb"); + CommandLine__declare_switch(TEST_LANGUAGE_CLSW, U"test-language", 2, + U"test language X on..."); + CommandLine__declare_switch(TEST_LANGUAGE_ON_CLSW, U"test-language-on", 2, + U"...the code in the file X"); CommandLine__end_group(); CommandLine__begin_group(ANALYSIS_CLSG, - TL_IS_2658); - CommandLine__declare_switch(CATALOGUE_CLSW, L"catalogue", 1, - L"list the sections in the web"); - CommandLine__declare_switch(CATALOGUE_CLSW, L"catalog", 1, - L"same as '-catalogue'"); - CommandLine__declare_switch(MAKEFILE_CLSW, L"makefile", 2, - L"write a makefile for this web and store it in X"); - CommandLine__declare_switch(GITIGNORE_CLSW, L"gitignore", 2, - L"write a .gitignore file for this web and store it in X"); - CommandLine__declare_switch(ADVANCE_FILE_CLSW, L"advance-build-file", 2, - L"increment daily build code in file X"); - CommandLine__declare_switch(WRITEME_CLSW, L"write-me", 2, - L"write a read-me file following instructions in file X"); - CommandLine__declare_switch(PLATFORM_CLSW, L"platform", 2, - L"use platform X (e.g. 'windows') when making e.g. makefiles"); - CommandLine__declare_switch(PROTOTYPE_CLSW, L"prototype", 2, - L"translate makefile from prototype X"); - CommandLine__declare_switch(FUNCTIONS_CLSW, L"functions", 1, - L"catalogue the functions in the web"); - CommandLine__declare_switch(STRUCTURES_CLSW, L"structures", 1, - L"catalogue the structures in the web"); - CommandLine__declare_switch(ADVANCE_CLSW, L"advance-build", 1, - L"increment daily build code for the web"); - CommandLine__declare_switch(SCAN_CLSW, L"scan", 1, - L"scan the web"); + TL_IS_2666); + CommandLine__declare_switch(CATALOGUE_CLSW, U"catalogue", 1, + U"list the sections in the web"); + CommandLine__declare_switch(CATALOGUE_CLSW, U"catalog", 1, + U"same as '-catalogue'"); + CommandLine__declare_switch(MAKEFILE_CLSW, U"makefile", 2, + U"write a makefile for this web and store it in X"); + CommandLine__declare_switch(GITIGNORE_CLSW, U"gitignore", 2, + U"write a .gitignore file for this web and store it in X"); + CommandLine__declare_switch(ADVANCE_FILE_CLSW, U"advance-build-file", 2, + U"increment daily build code in file X"); + CommandLine__declare_switch(WRITEME_CLSW, U"write-me", 2, + U"write a read-me file following instructions in file X"); + CommandLine__declare_switch(PLATFORM_CLSW, U"platform", 2, + U"use platform X (e.g. 'windows') when making e.g. makefiles"); + CommandLine__declare_switch(PROTOTYPE_CLSW, U"prototype", 2, + U"translate makefile from prototype X"); + CommandLine__declare_switch(FUNCTIONS_CLSW, U"functions", 1, + U"catalogue the functions in the web"); + CommandLine__declare_switch(STRUCTURES_CLSW, U"structures", 1, + U"catalogue the structures in the web"); + CommandLine__declare_switch(ADVANCE_CLSW, U"advance-build", 1, + U"increment daily build code for the web"); + CommandLine__declare_switch(SCAN_CLSW, U"scan", 1, + U"scan the web"); CommandLine__end_group(); CommandLine__begin_group(WEAVING_CLSG, - TL_IS_2659); - CommandLine__declare_switch(WEAVE_CLSW, L"weave", 1, - L"weave the web into human-readable form"); - CommandLine__declare_switch(WEAVE_INTO_CLSW, L"weave-into", 2, - L"weave, but into directory X"); - CommandLine__declare_switch(WEAVE_TO_CLSW, L"weave-to", 2, - L"weave, but to filename X (for single files only)"); - CommandLine__declare_switch(OPEN_CLSW, L"open", 1, - L"weave then open woven file"); - CommandLine__declare_switch(WEAVE_AS_CLSW, L"weave-as", 2, - L"set weave pattern to X (default is 'HTML')"); - CommandLine__declare_switch(WEAVE_TAG_CLSW, L"weave-tag", 2, - L"weave, but only using material tagged as X"); - CommandLine__declare_switch(BREADCRUMB_CLSW, L"breadcrumb", 2, - L"use the text X as a breadcrumb in overhead navigation"); - CommandLine__declare_switch(NAVIGATION_CLSW, L"navigation", 2, - L"use the file X as a column of navigation links"); + TL_IS_2667); + CommandLine__declare_switch(WEAVE_CLSW, U"weave", 1, + U"weave the web into human-readable form"); + CommandLine__declare_switch(WEAVE_INTO_CLSW, U"weave-into", 2, + U"weave, but into directory X"); + CommandLine__declare_switch(WEAVE_TO_CLSW, U"weave-to", 2, + U"weave, but to filename X (for single files only)"); + CommandLine__declare_switch(OPEN_CLSW, U"open", 1, + U"weave then open woven file"); + CommandLine__declare_switch(WEAVE_AS_CLSW, U"weave-as", 2, + U"set weave pattern to X (default is 'HTML')"); + CommandLine__declare_switch(WEAVE_TAG_CLSW, U"weave-tag", 2, + U"weave, but only using material tagged as X"); + CommandLine__declare_switch(BREADCRUMB_CLSW, U"breadcrumb", 2, + U"use the text X as a breadcrumb in overhead navigation"); + CommandLine__declare_switch(NAVIGATION_CLSW, U"navigation", 2, + U"use the file X as a column of navigation links"); CommandLine__end_group(); CommandLine__begin_group(TANGLING_CLSG, - TL_IS_2660); - CommandLine__declare_switch(TANGLE_CLSW, L"tangle", 1, - L"tangle the web into machine-compilable form"); - CommandLine__declare_switch(TANGLE_TO_CLSW, L"tangle-to", 2, - L"tangle, but to filename X"); - CommandLine__declare_switch(CTAGS_TO_CLSW, L"ctags-to", 2, - L"tangle, but write Universal Ctags file to X not to 'tags'"); - CommandLine__declare_boolean_switch(CTAGS_CLSW, L"ctags", 1, - L"write a Universal Ctags file when tangling", TRUE); + TL_IS_2668); + CommandLine__declare_switch(TANGLE_CLSW, U"tangle", 1, + U"tangle the web into machine-compilable form"); + CommandLine__declare_switch(TANGLE_TO_CLSW, U"tangle-to", 2, + U"tangle, but to filename X"); + CommandLine__declare_switch(CTAGS_TO_CLSW, U"ctags-to", 2, + U"tangle, but write Universal Ctags file to X not to 'tags'"); + CommandLine__declare_boolean_switch(CTAGS_CLSW, U"ctags", 1, + U"write a Universal Ctags file when tangling", TRUE); CommandLine__end_group(); CommandLine__begin_group(COLONIAL_CLSG, - TL_IS_2661); - CommandLine__declare_switch(COLONY_CLSW, L"colony", 2, - L"use the file X as a list of webs in this colony"); - CommandLine__declare_switch(MEMBER_CLSW, L"member", 2, - L"use member X from the colony as our web"); + TL_IS_2669); + CommandLine__declare_switch(COLONY_CLSW, U"colony", 2, + U"use the file X as a list of webs in this colony"); + CommandLine__declare_switch(MEMBER_CLSW, U"member", 2, + U"use member X from the colony as our web"); CommandLine__end_group(); - CommandLine__declare_boolean_switch(VERBOSE_CLSW, L"verbose", 1, - L"explain what inweb is doing", FALSE); - CommandLine__declare_switch(IMPORT_FROM_CLSW, L"import-from", 2, - L"specify that imported modules are at pathname X"); + CommandLine__declare_boolean_switch(VERBOSE_CLSW, U"verbose", 1, + U"explain what inweb is doing", FALSE); + CommandLine__declare_switch(IMPORT_FROM_CLSW, U"import-from", 2, + U"specify that imported modules are at pathname X"); } #line 62 "inweb/Chapter 1/Configuration.w" @@ -35129,7 +35316,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { args.inweb_mode = NO_MODE; } if (Str__len(args.chosen_range) == 0) { - Str__copy(args.chosen_range, TL_IS_2656); + Str__copy(args.chosen_range, TL_IS_2664); } return args; } @@ -35291,7 +35478,7 @@ void Configuration__member_and_colony(inweb_instructions *args) { void Configuration__bareword(int id, text_stream *opt, void *state) { inweb_instructions *args = (inweb_instructions *) state; if ((args->chosen_web == NULL) && (args->chosen_file == NULL)) { - if (Str__suffix_eq(opt, TL_IS_2662, 6)) + if (Str__suffix_eq(opt, TL_IS_2670, 6)) args->chosen_file = Filenames__from_text(opt); else args->chosen_web = Pathnames__from_text(opt); @@ -35301,18 +35488,18 @@ void Configuration__bareword(int id, text_stream *opt, void *state) { #line 424 "inweb/Chapter 1/Configuration.w" void Configuration__set_range(inweb_instructions *args, text_stream *opt) { match_results mr = Regexp__create_mr(); - if (Str__eq_wide_string(opt, L"index")) { + if (Str__eq_wide_string(opt, U"index")) { args->swarm_mode = SWARM_INDEX_SWM; - } else if (Str__eq_wide_string(opt, L"chapters")) { + } else if (Str__eq_wide_string(opt, U"chapters")) { args->swarm_mode = SWARM_CHAPTERS_SWM; - } else if (Str__eq_wide_string(opt, L"sections")) { + } else if (Str__eq_wide_string(opt, U"sections")) { args->swarm_mode = SWARM_SECTIONS_SWM; } else { if (++args->targets > 1) Errors__fatal("at most one target may be given"); - if (Str__eq_wide_string(opt, L"all")) { - Str__copy(args->chosen_range, TL_IS_2663); - } else if (((isalnum(Str__get_first_char(opt))) && (Str__len(opt) == 1)) - || (Regexp__match(&mr, opt, L"%i+/%i+"))) { + if (Str__eq_wide_string(opt, U"all")) { + Str__copy(args->chosen_range, TL_IS_2671); + } else if (((Characters__isalnum(Str__get_first_char(opt))) && (Str__len(opt) == 1)) + || (Regexp__match(&mr, opt, U"%i+/%i+"))) { Str__copy(args->chosen_range, opt); string_position P = Str__start(args->chosen_range); Str__put(P, Characters__toupper(Str__get(P))); @@ -35406,12 +35593,12 @@ weave_order *Swarm__weave_subset(web *W, text_stream *range, int open_afterwards { #line 140 "inweb/Chapter 1/The Swarm.w" match_results mr = Regexp__create_mr(); - if (Str__eq_wide_string(range, L"0")) { + if (Str__eq_wide_string(range, U"0")) { if (W->md->single_file) { - wv->booklet_title = Str__duplicate(Bibliographic__get_datum(W->md, TL_IS_2664)); + wv->booklet_title = Str__duplicate(Bibliographic__get_datum(W->md, TL_IS_2672)); Filenames__write_unextended_leafname(leafname, W->md->single_file); } else { - wv->booklet_title = Str__new_from_wide_string(L"Complete Program"); + wv->booklet_title = Str__new_from_wide_string(U"Complete Program"); WRITE_TO(leafname, "Complete"); } if (wv->theme_match) @@ -35424,19 +35611,19 @@ weave_order *Swarm__weave_subset(web *W, text_stream *range, int open_afterwards } #line 149 "inweb/Chapter 1/The Swarm.w" ; - } else if (Regexp__match(&mr, range, L"%d+")) { + } else if (Regexp__match(&mr, range, U"%d+")) { Str__clear(wv->booklet_title); WRITE_TO(wv->booklet_title, "Chapter %S", range); Str__copy(leafname, wv->booklet_title); - } else if (Regexp__match(&mr, range, L"%[A-O]")) { + } else if (Regexp__match(&mr, range, U"%[A-O]")) { Str__clear(wv->booklet_title); WRITE_TO(wv->booklet_title, "Appendix %S", range); Str__copy(leafname, wv->booklet_title); - } else if (Str__eq_wide_string(range, L"P")) { - wv->booklet_title = Str__new_from_wide_string(L"Preliminaries"); + } else if (Str__eq_wide_string(range, U"P")) { + wv->booklet_title = Str__new_from_wide_string(U"Preliminaries"); Str__copy(leafname, wv->booklet_title); - } else if (Str__eq_wide_string(range, L"M")) { - wv->booklet_title = Str__new_from_wide_string(L"Manual"); + } else if (Str__eq_wide_string(range, U"M")) { + wv->booklet_title = Str__new_from_wide_string(U"Manual"); Str__copy(leafname, wv->booklet_title); } else { section *S = Reader__get_section_for_range(W, range); @@ -35444,7 +35631,7 @@ weave_order *Swarm__weave_subset(web *W, text_stream *range, int open_afterwards else Str__copy(wv->booklet_title, range); Str__copy(leafname, range); } - Bibliographic__set_datum(W->md, TL_IS_2665, wv->booklet_title); + Bibliographic__set_datum(W->md, TL_IS_2673, wv->booklet_title); LOOP_THROUGH_TEXT(P, leafname) if ((Str__get(P) == '/') || (Str__get(P) == ' ')) Str__put(P, '-'); @@ -35511,12 +35698,12 @@ colour_scheme *Swarm__ensure_colour_scheme(weave_order *wv, text_stream *name, return existing; colour_scheme *cs = Assets__find_colour_scheme(wv->pattern, name, pre); if (cs == NULL) { - if (Str__eq(name, TL_IS_2666)) { + if (Str__eq(name, TL_IS_2674)) { TEMPORARY_TEXT(err) WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found", name); Main__error_in_web(err, NULL); } else { - return Swarm__ensure_colour_scheme(wv, TL_IS_2667, TL_IS_2668); + return Swarm__ensure_colour_scheme(wv, TL_IS_2675, TL_IS_2676); } } if (cs) ADD_TO_LINKED_LIST(cs, colour_scheme, wv->colour_schemes); @@ -35535,18 +35722,18 @@ void Swarm__include_plugins(OUTPUT_STREAM, web *W, weave_order *wv, filename *fr #line 231 "inweb/Chapter 1/The Swarm.w" void Swarm__weave_index_templates(web *W, text_stream *range, weave_pattern *pattern, pathname *into, filename *nav, linked_list *crumbs) { - if (!(Bibliographic__data_exists(W->md, TL_IS_2669))) - Bibliographic__set_datum(W->md, TL_IS_2670, TL_IS_2671); - filename *INF = Patterns__find_template(pattern, TL_IS_2672); + if (!(Bibliographic__data_exists(W->md, TL_IS_2677))) + Bibliographic__set_datum(W->md, TL_IS_2678, TL_IS_2679); + filename *INF = Patterns__find_template(pattern, TL_IS_2680); if (INF) { pathname *H = W->redirect_weaves_to; if (H == NULL) H = Reader__woven_folder(W); - filename *Contents = Filenames__in(H, TL_IS_2673); + filename *Contents = Filenames__in(H, TL_IS_2681); text_stream TO_struct; text_stream *OUT = &TO_struct; if (STREAM_OPEN_TO_FILE(OUT, Contents, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to write contents file", Contents); if (W->as_ebook) - Epub__note_page(W->as_ebook, Contents, TL_IS_2674, TL_IS_2675); + Epub__note_page(W->as_ebook, Contents, TL_IS_2682, TL_IS_2683); PRINT("[Index file: %f]\n", Contents); Collater__collate(OUT, W, range, INF, pattern, nav, crumbs, NULL, Contents); STREAM_CLOSE(OUT); @@ -35572,7 +35759,7 @@ weave_pattern *Patterns__find(web *W, text_stream *name) { wp->number_sections = FALSE; wp->footnotes_plugin = NULL; wp->mathematics_plugin = NULL; - wp->default_range = Str__duplicate(TL_IS_2676); + wp->default_range = Str__duplicate(TL_IS_2684); wp->initial_extension = NULL; wp->post_commands = NEW_LINKED_LIST(text_stream); wp->blocked_templates = NEW_LINKED_LIST(text_stream); @@ -35589,19 +35776,19 @@ weave_pattern *Patterns__find(web *W, text_stream *name) { pathname *CP = Colonies__patterns_path(); if (CP) { wp->pattern_location = Pathnames__down(CP, name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_2677); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_2685); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) { wp->pattern_location = Pathnames__down( - Pathnames__down(W->md->path_to_web, TL_IS_2678), name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_2679); + Pathnames__down(W->md->path_to_web, TL_IS_2686), name); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_2687); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) { wp->pattern_location = Pathnames__down( path_to_inweb_patterns, name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_2680); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_2688); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) @@ -35637,11 +35824,11 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi wp->commands++; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+) *: *(%c+?)")) { + if (Regexp__match(&mr, line, U"(%c+) *: *(%c+?)")) { text_stream *key = mr.exp[0], *value = Str__duplicate(mr.exp[1]); - if ((Str__eq_insensitive(key, TL_IS_2681)) && (wp->commands == 1)) { + if ((Str__eq_insensitive(key, TL_IS_2689)) && (wp->commands == 1)) { match_results mr2 = Regexp__create_mr(); - if (Regexp__match(&mr2, value, L"(%c+?) based on (%c+)")) { + if (Regexp__match(&mr2, value, U"(%c+?) based on (%c+)")) { if (Str__ne_insensitive(mr2.exp[0], wp->pattern_name)) { Errors__in_text_file("wrong pattern name", tfp); } @@ -35658,39 +35845,39 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi } Regexp__dispose_of(&mr2); wp->name_command_given = TRUE; - } else if (Str__eq_insensitive(key, TL_IS_2682)) { + } else if (Str__eq_insensitive(key, TL_IS_2690)) { text_stream *name = Patterns__plugin_name(value, tfp); if (Str__len(name) > 0) { weave_plugin *plugin = Assets__new(name); ADD_TO_LINKED_LIST(plugin, weave_plugin, wp->plugins); } - } else if (Str__eq_insensitive(key, TL_IS_2683)) { + } else if (Str__eq_insensitive(key, TL_IS_2691)) { wp->pattern_format = Formats__find_by_name(value); - } else if (Str__eq_insensitive(key, TL_IS_2684)) { + } else if (Str__eq_insensitive(key, TL_IS_2692)) { wp->number_sections = Patterns__yes_or_no(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_2685)) { + } else if (Str__eq_insensitive(key, TL_IS_2693)) { wp->default_range = Str__duplicate(value); - } else if (Str__eq_insensitive(key, TL_IS_2686)) { + } else if (Str__eq_insensitive(key, TL_IS_2694)) { wp->initial_extension = Str__duplicate(value); - } else if (Str__eq_insensitive(key, TL_IS_2687)) { + } else if (Str__eq_insensitive(key, TL_IS_2695)) { wp->mathematics_plugin = Patterns__plugin_name(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_2688)) { + } else if (Str__eq_insensitive(key, TL_IS_2696)) { wp->footnotes_plugin = Patterns__plugin_name(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_2689)) { + } else if (Str__eq_insensitive(key, TL_IS_2697)) { ADD_TO_LINKED_LIST(Str__duplicate(value), text_stream, wp->blocked_templates); - } else if (Str__eq_insensitive(key, TL_IS_2690)) { + } else if (Str__eq_insensitive(key, TL_IS_2698)) { ADD_TO_LINKED_LIST(Str__duplicate(value), text_stream, wp->post_commands); - } else if (Str__eq_insensitive(key, TL_IS_2691)) { + } else if (Str__eq_insensitive(key, TL_IS_2699)) { match_results mr2 = Regexp__create_mr(); - if (Regexp__match(&mr2, value, L"(%c+?) = (%c+)")) { + if (Regexp__match(&mr2, value, U"(%c+?) = (%c+)")) { Bibliographic__set_datum(wp->patterned_for->md, mr2.exp[0], mr2.exp[1]); } else { Errors__in_text_file("syntax is 'bibliographic data: X = Y'", tfp); } Regexp__dispose_of(&mr2); - } else if (Str__eq_insensitive(key, TL_IS_2692)) { + } else if (Str__eq_insensitive(key, TL_IS_2700)) { match_results mr2 = Regexp__create_mr(); - if (Regexp__match(&mr2, value, L"(.%C+?) (%c+)")) { + if (Regexp__match(&mr2, value, U"(.%C+?) (%c+)")) { Assets__add_asset_rule(wp->asset_rules, mr2.exp[0], mr2.exp[1], tfp); } else { Errors__in_text_file("syntax is 'assets: .EXT COMMAND'", tfp); @@ -35707,16 +35894,16 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi #line 184 "inweb/Chapter 1/Patterns.w" int Patterns__yes_or_no(text_stream *arg, text_file_position *tfp) { - if (Str__eq(arg, TL_IS_2693)) return TRUE; - if (Str__eq(arg, TL_IS_2694)) return FALSE; + if (Str__eq(arg, TL_IS_2701)) return TRUE; + if (Str__eq(arg, TL_IS_2702)) return FALSE; Errors__in_text_file("setting must be 'yes' or 'no'", tfp); return FALSE; } text_stream *Patterns__plugin_name(text_stream *arg, text_file_position *tfp) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, arg, L"(%i+)")) { - if (Str__eq_insensitive(arg, TL_IS_2695)) return NULL; + if (Regexp__match(&mr, arg, U"(%i+)")) { + if (Str__eq_insensitive(arg, TL_IS_2703)) return NULL; } else { Errors__in_text_file("plugin names must be single alphanumeric words", tfp); arg = NULL; @@ -35732,10 +35919,10 @@ void Patterns__post_process(weave_pattern *pattern, weave_order *wv) { filename *last_F = NULL; TEMPORARY_TEXT(cmd) for (int i=0; iweave_to)); i += 8; - } else if (Str__includes_at(T, i, TL_IS_2697)) { + } else if (Str__includes_at(T, i, TL_IS_2705)) { filename *W = wv->weave_to; i += 5; if (Str__get_at(T, i) == '.') { @@ -35751,7 +35938,7 @@ void Patterns__post_process(weave_pattern *pattern, weave_order *wv) { i--; } else PUT_TO(cmd, Str__get_at(T, i)); } - if ((Str__includes_at(cmd, 0, TL_IS_2698)) && (last_F)) { + if ((Str__includes_at(cmd, 0, TL_IS_2706)) && (last_F)) { TeXUtilities__post_process_weave(wv, last_F); } else { if (verbose_mode) PRINT("(%S)\n", cmd); @@ -35823,8 +36010,8 @@ colour_scheme *Assets__find_colour_scheme(weave_pattern *pattern, return cs; TEMPORARY_TEXT(css) WRITE_TO(css, "%S.css", name); - filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2699, css); - if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2700, css); + filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2707, css); + if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2708, css); DISCARD_TEXT(css) if (F == NULL) return NULL; cs = CREATE(colour_scheme); @@ -35890,8 +36077,8 @@ void Assets__include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs, if (verbose_mode) PRINT("Include colour scheme '%S'\n", cs->scheme_name); TEMPORARY_TEXT(css) WRITE_TO(css, "%S.css", cs->scheme_name); - filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2701, css); - if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2702, css); + filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2709, css); + if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_2710, css); if (F == NULL) { TEMPORARY_TEXT(err) WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found", @@ -35911,7 +36098,7 @@ void Assets__include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs, #line 184 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" linked_list *Assets__new_asset_rules_list(void) { linked_list *L = NEW_LINKED_LIST(asset_rule); - Assets__add_asset_rule(L, TL_IS_2703, TL_IS_2704, NULL); + Assets__add_asset_rule(L, TL_IS_2711, TL_IS_2712, NULL); return L; } @@ -35934,11 +36121,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line text_stream *cmd = line; text_stream *detail = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+?) *= *(%c*)")) { + if (Regexp__match(&mr, line, U"(%c+?) *= *(%c*)")) { cmd = mr.exp[0]; detail = mr.exp[1]; } - if (Str__eq(cmd, TL_IS_2705)) { + if (Str__eq(cmd, TL_IS_2713)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -35950,7 +36137,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 231 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2706)) { + } else if (Str__eq(cmd, TL_IS_2714)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -35962,7 +36149,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 233 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = PRIVATE_COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2707)) { + } else if (Str__eq(cmd, TL_IS_2715)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -35974,7 +36161,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 235 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = EMBED_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2708)) { + } else if (Str__eq(cmd, TL_IS_2716)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -35986,11 +36173,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 237 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COLLATE_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2709)) { + } else if (Str__eq(cmd, TL_IS_2717)) { R->pre = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_2710)) { + } else if (Str__eq(cmd, TL_IS_2718)) { R->post = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_2711)) { + } else if (Str__eq(cmd, TL_IS_2719)) { R->transform_names = TRUE; } else Errors__in_text_file("no such asset command", tfp); Regexp__dispose_of(&mr); @@ -36019,11 +36206,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line text_stream *cmd = line; text_stream *detail = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c+?) *= *(%c*)")) { + if (Regexp__match(&mr, line, U"(%c+?) *= *(%c*)")) { cmd = mr.exp[0]; detail = mr.exp[1]; } - if (Str__eq(cmd, TL_IS_2705)) { + if (Str__eq(cmd, TL_IS_2713)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -36035,7 +36222,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 231 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2706)) { + } else if (Str__eq(cmd, TL_IS_2714)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -36047,7 +36234,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 233 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = PRIVATE_COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2707)) { + } else if (Str__eq(cmd, TL_IS_2715)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -36059,7 +36246,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 235 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = EMBED_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2708)) { + } else if (Str__eq(cmd, TL_IS_2716)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -36071,11 +36258,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 237 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COLLATE_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_2709)) { + } else if (Str__eq(cmd, TL_IS_2717)) { R->pre = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_2710)) { + } else if (Str__eq(cmd, TL_IS_2718)) { R->post = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_2711)) { + } else if (Str__eq(cmd, TL_IS_2719)) { R->transform_names = TRUE; } else Errors__in_text_file("no such asset command", tfp); Regexp__dispose_of(&mr); @@ -36098,7 +36285,7 @@ asset_rule *Assets__applicable_rule(weave_pattern *pattern, filename *F) { } asset_rule *R; LOOP_OVER_LINKED_LIST(R, asset_rule, pattern->asset_rules) - if (Str__eq_insensitive(R->applies_to, TL_IS_2712)) + if (Str__eq_insensitive(R->applies_to, TL_IS_2720)) return R; internal_error("no default asset rule"); return NULL; @@ -36118,7 +36305,7 @@ pathname *Assets__include_asset(OUTPUT_STREAM, asset_rule *R, web *W, filename * { #line 296 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" for (int i=0; ipre); i++) { - if (Str__includes_at(R->pre, i, TL_IS_2713)) { + if (Str__includes_at(R->pre, i, TL_IS_2721)) { WRITE("%S", url); i += 2; } else PUT(Str__get_at(R->pre, i)); @@ -36204,7 +36391,7 @@ pathname *Assets__include_asset(OUTPUT_STREAM, asset_rule *R, web *W, filename * { #line 334 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" for (int i=0; ipost); i++) { - if (Str__includes_at(R->post, i, TL_IS_2714)) { + if (Str__includes_at(R->post, i, TL_IS_2722)) { WRITE("%S", url); i += 2; } else PUT(Str__get_at(R->post, i)); @@ -36233,12 +36420,12 @@ void Assets__transformer(text_stream *line, text_file_position *tfp, void *X) { text_stream *OUT = cft->OUT; match_results mr = Regexp__create_mr(); TEMPORARY_TEXT(spanned) - while (Regexp__match(&mr, line, L"(%c*?span.)(%i+)(%c*?)")) { + while (Regexp__match(&mr, line, U"(%c*?span.)(%i+)(%c*?)")) { WRITE_TO(spanned, "%S%S%S", mr.exp[0], cft->trans, mr.exp[1]); Str__clear(line); Str__copy(line, mr.exp[2]); } WRITE_TO(spanned, "%S\n", line); - while (Regexp__match(&mr, spanned, L"(%c*?pre.)(%i+)(%c*?)")) { + while (Regexp__match(&mr, spanned, U"(%c*?pre.)(%i+)(%c*?)")) { WRITE("%S%S%S", mr.exp[0], cft->trans, mr.exp[1]); Str__clear(spanned); Str__copy(spanned, mr.exp[2]); } @@ -36272,7 +36459,7 @@ web *Reader__load_web(pathname *P, filename *alt_F, module_search *I, #line 134 "inweb/Chapter 2/The Reader.w" TEMPORARY_TEXT(IB) WRITE_TO(IB, "7.2.1"); - web_bibliographic_datum *bd = Bibliographic__set_datum(W->md, TL_IS_2715, IB); + web_bibliographic_datum *bd = Bibliographic__set_datum(W->md, TL_IS_2723, IB); bd->declaration_permitted = FALSE; DISCARD_TEXT(IB) @@ -36291,7 +36478,7 @@ web *Reader__load_web(pathname *P, filename *alt_F, module_search *I, W->redirect_weaves_to = NULL; W->main_language = Analyser__default_language(W); W->web_extent = 0; W->no_paragraphs = 0; - text_stream *language_name = Bibliographic__get_datum(W->md, TL_IS_2716); + text_stream *language_name = Bibliographic__get_datum(W->md, TL_IS_2724); if (Str__len(language_name) > 0) W->main_language = Analyser__find_by_name(language_name, W, TRUE); main_target = Reader__add_tangle_target(W, W->main_language); @@ -36465,7 +36652,7 @@ void Reader__read_file(web *W, chapter *C, filename *F, text_stream *titling_lin } #line 253 "inweb/Chapter 2/The Reader.w" ; - text_stream *purpose = Bibliographic__get_datum(W->md, TL_IS_2717); + text_stream *purpose = Bibliographic__get_datum(W->md, TL_IS_2725); if (Str__len(purpose) > 0) { Str__clear(line); WRITE_TO(line, "Implied Purpose: %S", purpose); @@ -36544,13 +36731,13 @@ void Reader__scan_source_line(text_stream *line, text_file_position *tfp, void * #line 296 "inweb/Chapter 2/The Reader.w" pathname *Reader__woven_folder(web *W) { - pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2718); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2726); if (Pathnames__create_in_file_system(P) == FALSE) Errors__fatal_with_path("unable to create Woven subdirectory", P); return P; } pathname *Reader__tangled_folder(web *W) { - pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2719); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2727); if (Pathnames__create_in_file_system(P) == FALSE) Errors__fatal_with_path("unable to create Tangled subdirectory", P); return P; @@ -36595,11 +36782,11 @@ section *Reader__section_by_filename(web *W, text_stream *filename) { #line 362 "inweb/Chapter 2/The Reader.w" int Reader__range_within(text_stream *range1, text_stream *range2) { - if (Str__eq_wide_string(range2, L"0")) return TRUE; + if (Str__eq_wide_string(range2, U"0")) return TRUE; if (Str__eq(range1, range2)) return TRUE; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, range2, L"%c+/%c+")) { Regexp__dispose_of(&mr); return FALSE; } - if (Regexp__match(&mr, range1, L"(%c+)/%c+")) { + if (Regexp__match(&mr, range2, U"%c+/%c+")) { Regexp__dispose_of(&mr); return FALSE; } + if (Regexp__match(&mr, range1, U"(%c+)/%c+")) { if (Str__eq(mr.exp[0], range2)) { Regexp__dispose_of(&mr); return TRUE; } } return FALSE; @@ -36629,7 +36816,7 @@ int Reader__web_has_one_section(web *W) { #line 430 "inweb/Chapter 2/The Reader.w" void Reader__print_web_statistics(web *W) { - PRINT("web \"%S\": ", Bibliographic__get_datum(W->md, TL_IS_2720)); + PRINT("web \"%S\": ", Bibliographic__get_datum(W->md, TL_IS_2728)); int c = WebMetadata__chapter_count(W->md); int s = WebMetadata__section_count(W->md); if (W->md->chaptered) PRINT("%d chapter%s : ", @@ -36741,7 +36928,7 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 80 "inweb/Chapter 2/The Parser.w" match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, tag_list, L" *%^\"(%c+?)\" *(%c*)")) { + while (Regexp__match(&mr, tag_list, U" *%^\"(%c+?)\" *(%c*)")) { Tags__add_by_name(current_paragraph, mr.exp[0]); Str__copy(tag_list, mr.exp[1]); } @@ -36756,7 +36943,7 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 64 "inweb/Chapter 2/The Parser.w" if (Str__get_first_char(L->text) == '@') { match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, L->text, L"(%c*?)( *%^\"%c+?\")(%c*)")) { + while (Regexp__match(&mr, L->text, U"(%c*?)( *%^\"%c+?\")(%c*)")) { if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "tags written ^\"thus\"", V2_SYNTAX); Str__clear(L->text); @@ -36775,12 +36962,12 @@ void Parser__parse_web(web *W, int inweb_mode) { match_results mr = Regexp__create_mr(); if ((PL) && (PL->category == CODE_BODY_LCAT) && (Str__get_first_char(L->text) == '@') && (Str__get_at(L->text, 1) == '<') && - (Regexp__match(&mr, L->text, L"%c<(%c+)@> *= *")) && + (Regexp__match(&mr, L->text, U"%c<(%c+)@> *= *")) && (S->md->using_syntax >= V2_SYNTAX)) { { #line 141 "inweb/Chapter 2/The Parser.w" - source_line *NL = Lines__new_source_line_in(TL_IS_2723, &(L->source), S); + source_line *NL = Lines__new_source_line_in(TL_IS_2731, &(L->source), S); PL->next_line = NL; NL->next_line = L; L = PL; @@ -36791,15 +36978,15 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 126 "inweb/Chapter 2/The Parser.w" ; } - if ((PL) && (Regexp__match(&mr, L->text, L"@ *= *"))) { + if ((PL) && (Regexp__match(&mr, L->text, U"@ *= *"))) { Str__clear(L->text); - Str__copy(L->text, TL_IS_2722); + Str__copy(L->text, TL_IS_2730); if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "implied paragraph breaks", V2_SYNTAX); { #line 141 "inweb/Chapter 2/The Parser.w" - source_line *NL = Lines__new_source_line_in(TL_IS_2723, &(L->source), S); + source_line *NL = Lines__new_source_line_in(TL_IS_2731, &(L->source), S); PL->next_line = NL; NL->next_line = L; L = PL; @@ -36825,7 +37012,7 @@ void Parser__parse_web(web *W, int inweb_mode) { if (L->source.line_count == 0) { #line 180 "inweb/Chapter 2/The Parser.w" - if (Str__eq_wide_string(L->text, L"Chapter Heading")) { + if (Str__eq_wide_string(L->text, U"Chapter Heading")) { comment_mode = TRUE; extract_mode = FALSE; L->is_commentary = TRUE; @@ -36840,13 +37027,13 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 192 "inweb/Chapter 2/The Parser.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"Implied Purpose: (%c+)")) { + if (Regexp__match(&mr, L->text, U"Implied Purpose: (%c+)")) { S->sect_purpose = Str__duplicate(mr.exp[0]); if (Str__len(S->sect_purpose) > 0) { L->category = PURPOSE_LCAT; L->is_commentary = TRUE; } - } else if (Regexp__match(&mr, L->text, L"%[(%C+)%] (%C+/%C+): (%c+).")) { + } else if (Regexp__match(&mr, L->text, U"%[(%C+)%] (%C+/%C+): (%c+).")) { if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "section range in header line", V1_SYNTAX); @@ -36856,7 +37043,7 @@ void Parser__parse_web(web *W, int inweb_mode) { L->text_operand = Str__duplicate(mr.exp[2]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp__match(&mr, L->text, L"(%C+/%C+): (%c+).")) { + } else if (Regexp__match(&mr, L->text, U"(%C+/%C+): (%c+).")) { if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "section range in header line", V1_SYNTAX); @@ -36865,13 +37052,13 @@ void Parser__parse_web(web *W, int inweb_mode) { L->text_operand = Str__duplicate(mr.exp[1]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp__match(&mr, L->text, L"%[(%C+::)%] (%c+).")) { + } else if (Regexp__match(&mr, L->text, U"%[(%C+::)%] (%c+).")) { S->sect_namespace = Str__duplicate(mr.exp[0]); S->md->sect_title = Str__duplicate(mr.exp[1]); L->text_operand = Str__duplicate(mr.exp[1]); L->category = SECTION_HEADING_LCAT; L->owning_paragraph = NULL; - } else if (Regexp__match(&mr, L->text, L"(%c+).")) { + } else if (Regexp__match(&mr, L->text, U"(%c+).")) { S->md->sect_title = Str__duplicate(mr.exp[0]); L->text_operand = Str__duplicate(mr.exp[0]); L->category = SECTION_HEADING_LCAT; @@ -36887,34 +37074,34 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 237 "inweb/Chapter 2/The Parser.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"%[%[(%c+)%]%]")) { + if (Regexp__match(&mr, L->text, U"%[%[(%c+)%]%]")) { TEMPORARY_TEXT(full_command) TEMPORARY_TEXT(command_text) Str__copy(full_command, mr.exp[0]); Str__copy(command_text, mr.exp[0]); L->category = COMMAND_LCAT; - if (Regexp__match(&mr, command_text, L"(%c+?): *(%c+)")) { + if (Regexp__match(&mr, command_text, U"(%c+?): *(%c+)")) { Str__copy(command_text, mr.exp[0]); L->text_operand = Str__duplicate(mr.exp[1]); } - if (Str__eq_wide_string(command_text, L"Page Break")) { + if (Str__eq_wide_string(command_text, U"Page Break")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "[[Page Break]]", V1_SYNTAX); L->command_code = PAGEBREAK_CMD; - } else if (Str__eq_wide_string(command_text, L"Grammar Index")) + } else if (Str__eq_wide_string(command_text, U"Grammar Index")) L->command_code = GRAMMAR_INDEX_CMD; - else if (Str__eq_wide_string(command_text, L"Tag")) { + else if (Str__eq_wide_string(command_text, U"Tag")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "[[Tag...]]", V1_SYNTAX); Tags__add_by_name(L->owning_paragraph, L->text_operand); L->command_code = TAG_CMD; - } else if (Str__eq_wide_string(command_text, L"Figure")) { + } else if (Str__eq_wide_string(command_text, U"Figure")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "[[Figure...]]", V1_SYNTAX); - Tags__add_by_name(L->owning_paragraph, TL_IS_2724); + Tags__add_by_name(L->owning_paragraph, TL_IS_2732); L->command_code = FIGURE_CMD; } else { - Main__error_in_web(TL_IS_2725, L); + Main__error_in_web(TL_IS_2733, L); } L->is_commentary = TRUE; DISCARD_TEXT(command_text) @@ -36930,12 +37117,12 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 277 "inweb/Chapter 2/The Parser.w" match_results mr = Regexp__create_mr(); if ((Str__get_first_char(L->text) == '@') && (Str__get_at(L->text, 1) == '<') && - (Regexp__match(&mr, L->text, L"%c<(%c+)@> *= *"))) { + (Regexp__match(&mr, L->text, U"%c<(%c+)@> *= *"))) { TEMPORARY_TEXT(para_macro_name) Str__copy(para_macro_name, mr.exp[0]); L->category = MACRO_DEFINITION_LCAT; if (current_paragraph == NULL) - Main__error_in_web(TL_IS_2726, L); + Main__error_in_web(TL_IS_2734, L); else Macros__create(S, current_paragraph, L, para_macro_name); comment_mode = FALSE; extract_mode = FALSE; L->is_commentary = FALSE; @@ -36976,24 +37163,24 @@ void Parser__parse_web(web *W, int inweb_mode) { comment_mode = FALSE; match_results mr = Regexp__create_mr(); match_results mr2 = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"= *(%c+) *")) { - if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_2727))) { + if (Regexp__match(&mr, L->text, U"= *(%c+) *")) { + if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_2735))) { current_paragraph->placed_very_early = TRUE; - } else if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_2728))) { + } else if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_2736))) { current_paragraph->placed_early = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37009,18 +37196,18 @@ void Parser__parse_web(web *W, int inweb_mode) { code_pl_for_body = NULL; extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text to *(%c+)%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text to *(%c+)%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37033,21 +37220,21 @@ void Parser__parse_web(web *W, int inweb_mode) { ; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = Str__duplicate(mr2.exp[1]); - code_pl_for_body = Analyser__find_by_name(TL_IS_2729, W, TRUE); + code_pl_for_body = Analyser__find_by_name(TL_IS_2737, W, TRUE); extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text as code%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37063,18 +37250,18 @@ void Parser__parse_web(web *W, int inweb_mode) { code_pl_for_body = S->sect_language; extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text as (%c+)%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37090,18 +37277,18 @@ void Parser__parse_web(web *W, int inweb_mode) { code_pl_for_body = Analyser__find_by_name(mr2.exp[1], W, TRUE); extract_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as code%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+) as code%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37131,7 +37318,7 @@ void Parser__parse_web(web *W, int inweb_mode) { latest->next_line = TL; latest = TL; } - source_line *EEL = Lines__new_source_line_in(TL_IS_2747, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_2755, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -37141,18 +37328,18 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 371 "inweb/Chapter 2/The Parser.w" ; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as (%c+)%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+) as (%c+)%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37182,7 +37369,7 @@ void Parser__parse_web(web *W, int inweb_mode) { latest->next_line = TL; latest = TL; } - source_line *EEL = Lines__new_source_line_in(TL_IS_2747, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_2755, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -37192,18 +37379,18 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 376 "inweb/Chapter 2/The Parser.w" ; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+)%)"))) { + (Regexp__match(&mr2, mr.exp[0], U"%((%c*?) *text from (%c+)%)"))) { { #line 494 "inweb/Chapter 2/The Parser.w" match_results mr3 = Regexp__create_mr(); while (TRUE) { - if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) { - if (Str__eq(mr3.exp[0], TL_IS_2744)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_2745)) L->enable_hyperlinks = TRUE; + if (Regexp__match(&mr3, mr2.exp[0], U" *(%C+) *(%c*?)")) { + if (Str__eq(mr3.exp[0], TL_IS_2752)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_2753)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_2746, L); + TL_IS_2754, L); } } else break; Str__clear(mr2.exp[0]); @@ -37233,7 +37420,7 @@ void Parser__parse_web(web *W, int inweb_mode) { latest->next_line = TL; latest = TL; } - source_line *EEL = Lines__new_source_line_in(TL_IS_2747, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_2755, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -37243,40 +37430,40 @@ void Parser__parse_web(web *W, int inweb_mode) { #line 381 "inweb/Chapter 2/The Parser.w" ; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(figure (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2730); + (Regexp__match(&mr2, mr.exp[0], U"%(figure (%c+)%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2738); L->command_code = FIGURE_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(html (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2731); + (Regexp__match(&mr2, mr.exp[0], U"%(html (%c+)%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2739); L->command_code = HTML_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(audio (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2732); + (Regexp__match(&mr2, mr.exp[0], U"%(audio (%c+)%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2740); L->command_code = AUDIO_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(video (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2733); + (Regexp__match(&mr2, mr.exp[0], U"%(video (%c+)%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2741); L->command_code = VIDEO_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(download (%c+) \"(%c*)\"%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2734); + (Regexp__match(&mr2, mr.exp[0], U"%(download (%c+) \"(%c*)\"%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2742); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -37284,8 +37471,8 @@ void Parser__parse_web(web *W, int inweb_mode) { L->text_operand2 = Str__duplicate(mr2.exp[1]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(download (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2735); + (Regexp__match(&mr2, mr.exp[0], U"%(download (%c+)%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2743); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -37293,48 +37480,48 @@ void Parser__parse_web(web *W, int inweb_mode) { L->text_operand2 = Str__new(); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(carousel%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2736); + (Regexp__match(&mr2, mr.exp[0], U"%(carousel%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2744); L->command_code = CAROUSEL_UNCAPTIONED_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__new(); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" below%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2737); + (Regexp__match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\" below%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2745); L->command_code = CAROUSEL_BELOW_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" above%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2738); + (Regexp__match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\" above%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2746); L->command_code = CAROUSEL_ABOVE_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\"%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2739); + (Regexp__match(&mr2, mr.exp[0], U"%(carousel \"(%c+)\"%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2747); L->command_code = CAROUSEL_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; L->text_operand = Str__duplicate(mr2.exp[0]); comment_mode = TRUE; } else if ((current_paragraph) && - (Regexp__match(&mr2, mr.exp[0], L"%(carousel end%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2740); + (Regexp__match(&mr2, mr.exp[0], U"%(carousel end%)"))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2748); L->command_code = CAROUSEL_END_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; comment_mode = TRUE; } else if ((current_paragraph) && - ((Regexp__match(&mr2, mr.exp[0], L"%(embedded (%C+) video (%c+)%)")) || - (Regexp__match(&mr2, mr.exp[0], L"%(embedded (%C+) audio (%c+)%)")))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_2741); + ((Regexp__match(&mr2, mr.exp[0], U"%(embedded (%C+) video (%c+)%)")) || + (Regexp__match(&mr2, mr.exp[0], U"%(embedded (%C+) audio (%c+)%)")))) { + Tags__add_by_name(L->owning_paragraph, TL_IS_2749); L->command_code = EMBED_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -37342,10 +37529,10 @@ void Parser__parse_web(web *W, int inweb_mode) { L->text_operand2 = Str__duplicate(mr2.exp[1]); comment_mode = TRUE; } else { - Main__error_in_web(TL_IS_2742, L); + Main__error_in_web(TL_IS_2750, L); } - } else if (Regexp__match(&mr, L->text, L"= *%C%c*")) { - Main__error_in_web(TL_IS_2743, L); + } else if (Regexp__match(&mr, L->text, U"= *%C%c*")) { + Main__error_in_web(TL_IS_2751, L); } code_plainness_for_body = L->plainer; hyperlink_body = L->enable_hyperlinks; @@ -37368,7 +37555,7 @@ void Parser__parse_web(web *W, int inweb_mode) { Str__delete_first_character(command_text); /* i.e., strip the at-sign from the front */ TEMPORARY_TEXT(remainder) match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, command_text, L"(%C*) *(%c*?)")) { + if (Regexp__match(&mr, command_text, U"(%C*) *(%c*?)")) { Str__copy(command_text, mr.exp[0]); Str__copy(remainder, mr.exp[1]); } @@ -37376,10 +37563,10 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 538 "inweb/Chapter 2/The Parser.w" extract_mode = FALSE; - if (Str__eq_wide_string(command_text, L"Purpose:")) + if (Str__eq_wide_string(command_text, U"Purpose:")) { #line 586 "inweb/Chapter 2/The Parser.w" - if (before_bar == FALSE) Main__error_in_web(TL_IS_2749, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_2757, L); if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@Purpose'", V1_SYNTAX); L->category = PURPOSE_LCAT; @@ -37390,12 +37577,12 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 539 "inweb/Chapter 2/The Parser.w" - else if (Str__eq_wide_string(command_text, L"Interface:")) + else if (Str__eq_wide_string(command_text, U"Interface:")) { #line 595 "inweb/Chapter 2/The Parser.w" if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@Interface'", V1_SYNTAX); - if (before_bar == FALSE) Main__error_in_web(TL_IS_2750, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_2758, L); L->category = INTERFACE_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -37410,12 +37597,12 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 540 "inweb/Chapter 2/The Parser.w" - else if (Str__eq_wide_string(command_text, L"Definitions:")) + else if (Str__eq_wide_string(command_text, U"Definitions:")) { #line 610 "inweb/Chapter 2/The Parser.w" if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@Definitions' headings", V1_SYNTAX); - if (before_bar == FALSE) Main__error_in_web(TL_IS_2751, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_2759, L); L->category = DEFINITIONS_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -37425,12 +37612,12 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 541 "inweb/Chapter 2/The Parser.w" - else if (Regexp__match(&mr, command_text, L"----+")) + else if (Regexp__match(&mr, command_text, U"----+")) { #line 623 "inweb/Chapter 2/The Parser.w" if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "the bar '----...'", V1_SYNTAX); - if (before_bar == FALSE) Main__error_in_web(TL_IS_2752, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_2760, L); L->category = BAR_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -37442,18 +37629,18 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 542 "inweb/Chapter 2/The Parser.w" - else if ((Str__eq_wide_string(command_text, L"c")) || - (Str__eq_wide_string(command_text, L"x")) || - ((S->md->using_syntax == V1_SYNTAX) && (Str__eq_wide_string(command_text, L"e")))) + else if ((Str__eq_wide_string(command_text, U"c")) || + (Str__eq_wide_string(command_text, U"x")) || + ((S->md->using_syntax == V1_SYNTAX) && (Str__eq_wide_string(command_text, U"e")))) { #line 641 "inweb/Chapter 2/The Parser.w" if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@c' and '@x'", V1_SYNTAX); L->category = BEGIN_CODE_LCAT; - if ((Str__eq_wide_string(command_text, L"e")) && (current_paragraph)) + if ((Str__eq_wide_string(command_text, U"e")) && (current_paragraph)) current_paragraph->placed_early = TRUE; - if (Str__eq_wide_string(command_text, L"x")) code_lcat_for_body = TEXT_EXTRACT_LCAT; + if (Str__eq_wide_string(command_text, U"x")) code_lcat_for_body = TEXT_EXTRACT_LCAT; else code_lcat_for_body = CODE_BODY_LCAT; code_pl_for_body = NULL; comment_mode = FALSE; @@ -37463,14 +37650,14 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 546 "inweb/Chapter 2/The Parser.w" - else if (Str__eq_wide_string(command_text, L"d")) + else if (Str__eq_wide_string(command_text, U"d")) { #line 657 "inweb/Chapter 2/The Parser.w" L->category = BEGIN_DEFINITION_LCAT; code_lcat_for_body = CONT_DEFINITION_LCAT; code_pl_for_body = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) { + if (Regexp__match(&mr, remainder, U"(%C+) (%c+)")) { L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */ L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */ } else { @@ -37486,7 +37673,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 547 "inweb/Chapter 2/The Parser.w" - else if (Str__eq_wide_string(command_text, L"define")) { + else if (Str__eq_wide_string(command_text, U"define")) { if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@define' for definitions (use '@d' instead)", V2_SYNTAX); @@ -37496,7 +37683,7 @@ void Parser__parse_web(web *W, int inweb_mode) { code_lcat_for_body = CONT_DEFINITION_LCAT; code_pl_for_body = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) { + if (Regexp__match(&mr, remainder, U"(%C+) (%c+)")) { L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */ L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */ } else { @@ -37512,7 +37699,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 551 "inweb/Chapter 2/The Parser.w" ; - } else if (Str__eq_wide_string(command_text, L"default")) { + } else if (Str__eq_wide_string(command_text, U"default")) { if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@default' for definitions", V2_SYNTAX); L->default_defn = TRUE; @@ -37523,7 +37710,7 @@ void Parser__parse_web(web *W, int inweb_mode) { code_lcat_for_body = CONT_DEFINITION_LCAT; code_pl_for_body = NULL; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) { + if (Regexp__match(&mr, remainder, U"(%C+) (%c+)")) { L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */ L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */ } else { @@ -37539,7 +37726,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 556 "inweb/Chapter 2/The Parser.w" ; - } else if (Str__eq_wide_string(command_text, L"enum")) + } else if (Str__eq_wide_string(command_text, U"enum")) { #line 678 "inweb/Chapter 2/The Parser.w" L->category = BEGIN_DEFINITION_LCAT; @@ -37555,11 +37742,11 @@ void Parser__parse_web(web *W, int inweb_mode) { DISCARD_TEXT(before) DISCARD_TEXT(after) Str__trim_white_space(L->text_operand); - if (Regexp__match(&mr, L->text_operand, L"(%C+) from (%c+)")) { + if (Regexp__match(&mr, L->text_operand, U"(%C+) from (%c+)")) { from = mr.exp[1]; Str__copy(L->text_operand, mr.exp[0]); - } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) { - Main__error_in_web(TL_IS_2753, L); + } else if (Regexp__match(&mr, L->text_operand, U"(%C+) (%c+)")) { + Main__error_in_web(TL_IS_2761, L); } L->text_operand2 = Str__new(); if (inweb_mode == TANGLE_MODE) @@ -37573,7 +37760,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 557 "inweb/Chapter 2/The Parser.w" - else if ((Str__eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX)) + else if ((Str__eq_wide_string(command_text, U"e")) && (S->md->using_syntax >= V2_SYNTAX)) { #line 678 "inweb/Chapter 2/The Parser.w" @@ -37590,11 +37777,11 @@ void Parser__parse_web(web *W, int inweb_mode) { DISCARD_TEXT(before) DISCARD_TEXT(after) Str__trim_white_space(L->text_operand); - if (Regexp__match(&mr, L->text_operand, L"(%C+) from (%c+)")) { + if (Regexp__match(&mr, L->text_operand, U"(%C+) from (%c+)")) { from = mr.exp[1]; Str__copy(L->text_operand, mr.exp[0]); - } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) { - Main__error_in_web(TL_IS_2753, L); + } else if (Regexp__match(&mr, L->text_operand, U"(%C+) (%c+)")) { + Main__error_in_web(TL_IS_2761, L); } L->text_operand2 = Str__new(); if (inweb_mode == TANGLE_MODE) @@ -37610,18 +37797,18 @@ void Parser__parse_web(web *W, int inweb_mode) { else { int weight = -1, new_page = FALSE; - if (Str__eq_wide_string(command_text, L"")) weight = ORDINARY_WEIGHT; - if ((Str__eq_wide_string(command_text, L"h")) || (Str__eq_wide_string(command_text, L"heading"))) { + if (Str__eq_wide_string(command_text, U"")) weight = ORDINARY_WEIGHT; + if ((Str__eq_wide_string(command_text, U"h")) || (Str__eq_wide_string(command_text, U"heading"))) { if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@h' or '@heading' for headings (use '@p' instead)", V2_SYNTAX); weight = SUBHEADING_WEIGHT; } - if (Str__eq_wide_string(command_text, L"p")) { + if (Str__eq_wide_string(command_text, U"p")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@p' for headings (use '@h' instead)", V1_SYNTAX); weight = SUBHEADING_WEIGHT; } - if (Str__eq_wide_string(command_text, L"pp")) { + if (Str__eq_wide_string(command_text, U"pp")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@pp' for super-headings", V1_SYNTAX); weight = SUBHEADING_WEIGHT; new_page = TRUE; @@ -37635,10 +37822,10 @@ void Parser__parse_web(web *W, int inweb_mode) { if (weight == SUBHEADING_WEIGHT) L->category = HEADING_START_LCAT; L->text_operand = Str__new(); /* title */ match_results mr = Regexp__create_mr(); - if ((weight == SUBHEADING_WEIGHT) && (Regexp__match(&mr, remainder, L"(%c+). (%c+)"))) { + if ((weight == SUBHEADING_WEIGHT) && (Regexp__match(&mr, remainder, U"(%c+). (%c+)"))) { L->text_operand = Str__duplicate(mr.exp[0]); L->text_operand2 = Str__duplicate(mr.exp[1]); - } else if ((weight == SUBHEADING_WEIGHT) && (Regexp__match(&mr, remainder, L"(%c+). *"))) { + } else if ((weight == SUBHEADING_WEIGHT) && (Regexp__match(&mr, remainder, U"(%c+). *"))) { L->text_operand = Str__duplicate(mr.exp[0]); L->text_operand2 = Str__new(); } else { @@ -37659,13 +37846,13 @@ void Parser__parse_web(web *W, int inweb_mode) { P->placed_very_early = FALSE; } P->invisible = FALSE; - if (Str__eq(Bibliographic__get_datum(W->md, TL_IS_2754), TL_IS_2755)) + if (Str__eq(Bibliographic__get_datum(W->md, TL_IS_2762), TL_IS_2763)) P->invisible = TRUE; P->heading_text = Str__duplicate(L->text_operand); if ((S->md->using_syntax == V1_SYNTAX) && (before_bar)) - P->ornament = Str__duplicate(TL_IS_2756); + P->ornament = Str__duplicate(TL_IS_2764); else - P->ornament = Str__duplicate(TL_IS_2757); + P->ornament = Str__duplicate(TL_IS_2765); WRITE_TO(P->paragraph_number, "%d", next_par_number++); P->parent_paragraph = NULL; P->next_child_number = 1; @@ -37695,7 +37882,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 578 "inweb/Chapter 2/The Parser.w" - else Main__error_in_web(TL_IS_2748, L); + else Main__error_in_web(TL_IS_2756, L); } } @@ -37713,7 +37900,7 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 820 "inweb/Chapter 2/The Parser.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L">> (%c+)")) { + if (Regexp__match(&mr, L->text, U">> (%c+)")) { L->category = SOURCE_DISPLAY_LCAT; L->text_operand = Str__duplicate(mr.exp[0]); } @@ -37760,7 +37947,7 @@ void Parser__parse_web(web *W, int inweb_mode) { source_line *L = S->first_line; if ((L) && (L->category == CHAPTER_HEADING_LCAT)) L = L->next_line; if (Str__len(S->sect_purpose) == 0) { - S->sect_purpose = Parser__extract_purpose(TL_IS_2721, L?L->next_line: NULL, S, NULL); + S->sect_purpose = Parser__extract_purpose(TL_IS_2729, L?L->next_line: NULL, S, NULL); if (Str__len(S->sect_purpose) > 0) L->next_line->category = PURPOSE_LCAT; } } @@ -37856,7 +38043,7 @@ void Parser__parse_web(web *W, int inweb_mode) { text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, section *S, source_line **adjust) { text_stream *P = Str__duplicate(prologue); while ((XL) && (XL->next_line) && (XL->owning_section == S) && - (((adjust) && (isalnum(Str__get_first_char(XL->text)))) || + (((adjust) && (Characters__isalnum(Str__get_first_char(XL->text)))) || ((!adjust) && (XL->category == COMMENT_BODY_LCAT)))) { WRITE_TO(P, " %S", XL->text); XL->category = PURPOSE_BODY_LCAT; @@ -37874,10 +38061,10 @@ text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, sec int Parser__detect_footnote(web *W, text_stream *matter, text_stream *before, text_stream *cue, text_stream *after) { text_stream *fn_on_notation = - Bibliographic__get_datum(W->md, TL_IS_2758); + Bibliographic__get_datum(W->md, TL_IS_2766); text_stream *fn_off_notation = - Bibliographic__get_datum(W->md, TL_IS_2759); - if (Str__ne(fn_on_notation, TL_IS_2760)) { + Bibliographic__get_datum(W->md, TL_IS_2767); + if (Str__ne(fn_on_notation, TL_IS_2768)) { int N1 = Str__len(fn_on_notation); int N2 = Str__len(fn_off_notation); if ((N1 > 0) && (N2 > 0)) @@ -37930,34 +38117,34 @@ text_stream *Parser__dimensions(text_stream *item, int *w, int *h, source_line * *w = -1; *h = -1; text_stream *use = item; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, item, L"(%c+) at (%d+) by (%d+)")) { + if (Regexp__match(&mr, item, U"(%c+) at (%d+) by (%d+)")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at X by Y", V2_SYNTAX); *w = Str__atoi(mr.exp[1], 0); *h = Str__atoi(mr.exp[2], 0); use = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, item, L"(%c+) at height (%d+)")) { + } else if (Regexp__match(&mr, item, U"(%c+) at height (%d+)")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at height Y", V2_SYNTAX); *h = Str__atoi(mr.exp[1], 0); use = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, item, L"(%c+) at width (%d+)")) { + } else if (Regexp__match(&mr, item, U"(%c+) at width (%d+)")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at width Y", V2_SYNTAX); *w = Str__atoi(mr.exp[1], 0); use = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, item, L"(%c+) at (%d+)cm by (%d+)cm")) { + } else if (Regexp__match(&mr, item, U"(%c+) at (%d+)cm by (%d+)cm")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at Xcm by Ycm", V2_SYNTAX); *w = POINTS_PER_CM*Str__atoi(mr.exp[1], 0); *h = POINTS_PER_CM*Str__atoi(mr.exp[2], 0); use = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, item, L"(%c+) at height (%d+)cm")) { + } else if (Regexp__match(&mr, item, U"(%c+) at height (%d+)cm")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at height Ycm", V2_SYNTAX); *h = POINTS_PER_CM*Str__atoi(mr.exp[1], 0); use = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, item, L"(%c+) at width (%d+)cm")) { + } else if (Regexp__match(&mr, item, U"(%c+) at width (%d+)cm")) { if (sv < V2_SYNTAX) Parser__wrong_version(sv, L, "at width Ycm", V2_SYNTAX); *w = POINTS_PER_CM*Str__atoi(mr.exp[1], 0); @@ -38012,10 +38199,10 @@ theme_tag *Tags__find_by_name(text_stream *name, int creating_if_necessary) { tag->tag_name = Str__duplicate(name); tag->ifdef_positive = NOT_APPLICABLE; tag->ifdef_symbol = Str__new(); - if (Str__prefix_eq(name, TL_IS_2761, 6)) { + if (Str__prefix_eq(name, TL_IS_2769, 6)) { Str__substr(tag->ifdef_symbol, Str__at(name, 6), Str__end(name)); tag->ifdef_positive = TRUE; - } else if (Str__prefix_eq(name, TL_IS_2762, 7)) { + } else if (Str__prefix_eq(name, TL_IS_2770, 7)) { Str__substr(tag->ifdef_symbol, Str__at(name, 7), Str__end(name)); tag->ifdef_positive = FALSE; } @@ -38043,7 +38230,7 @@ theme_tag *Tags__add_by_name(paragraph *P, text_stream *text) { TEMPORARY_TEXT(name) Str__copy(name, text); TEMPORARY_TEXT(caption) match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, name, L"(%c+?): (%c+)")) { + if (Regexp__match(&mr, name, U"(%c+?): (%c+)")) { Str__copy(name, mr.exp[0]); Str__copy(caption, mr.exp[1]); } @@ -38110,20 +38297,20 @@ void Tags__show_endnote_on_ifdefs(heterogeneous_tree *tree, tree_node *ap, parag if (d++ == 0) { tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, ap); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2764); + TextWeaver__commentary_text(tree, ap, TL_IS_2772); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2765); + TextWeaver__commentary_text(tree, ap, TL_IS_2773); } } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2766); + TextWeaver__commentary_text(tree, ap, TL_IS_2774); } TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol); } if (c > 0) { - if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2767); - else TextWeaver__commentary_text(tree, ap, TL_IS_2768); - if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_2769); - else TextWeaver__commentary_text(tree, ap, TL_IS_2770); + if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2775); + else TextWeaver__commentary_text(tree, ap, TL_IS_2776); + if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_2777); + else TextWeaver__commentary_text(tree, ap, TL_IS_2778); } } @@ -38142,26 +38329,26 @@ void Tags__show_endnote_on_ifdefs(heterogeneous_tree *tree, tree_node *ap, parag if (d++ == 0) { tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, ap); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2764); + TextWeaver__commentary_text(tree, ap, TL_IS_2772); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2765); + TextWeaver__commentary_text(tree, ap, TL_IS_2773); } } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2766); + TextWeaver__commentary_text(tree, ap, TL_IS_2774); } TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol); } if (c > 0) { - if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2767); - else TextWeaver__commentary_text(tree, ap, TL_IS_2768); - if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_2769); - else TextWeaver__commentary_text(tree, ap, TL_IS_2770); + if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2775); + else TextWeaver__commentary_text(tree, ap, TL_IS_2776); + if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_2777); + else TextWeaver__commentary_text(tree, ap, TL_IS_2778); } } #line 139 "inweb/Chapter 2/Tags.w" ; - if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2763); + if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2771); } #line 22 "inweb/Chapter 2/Enumerated Constants.w" @@ -38183,9 +38370,9 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol, { #line 54 "inweb/Chapter 2/Enumerated Constants.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, symbol, L"%c*_(%C+?)")) Str__copy(pf, mr.exp[0]); + if (Regexp__match(&mr, symbol, U"%c*_(%C+?)")) Str__copy(pf, mr.exp[0]); else { - Main__error_in_web(TL_IS_2771, L); + Main__error_in_web(TL_IS_2779, L); WRITE_TO(pf, "BOGUS"); } Regexp__dispose_of(&mr); @@ -38201,7 +38388,7 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol, if (es->stub) WRITE("(%S+", es->stub); WRITE("%d", es->next_free_value++); if (es->stub) WRITE(")"); - } else Main__error_in_web(TL_IS_2772, L); + } else Main__error_in_web(TL_IS_2780, L); } #line 45 "inweb/Chapter 2/Enumerated Constants.w" @@ -38209,14 +38396,14 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol, else { #line 70 "inweb/Chapter 2/Enumerated Constants.w" - if (es) Main__error_in_web(TL_IS_2773, L); + if (es) Main__error_in_web(TL_IS_2781, L); else { es = CREATE(enumeration_set); es->postfix = Str__duplicate(pf); es->stub = NULL; if ((Str__len(from) < 8) && - ((Regexp__match(NULL, from, L"%d+")) || - (Regexp__match(NULL, from, L"-%d+")))) { + ((Regexp__match(NULL, from, U"%d+")) || + (Regexp__match(NULL, from, U"-%d+")))) { es->first_value = Str__atoi(from, 0); es->next_free_value = es->first_value + 1; } else { @@ -38477,7 +38664,7 @@ void Analyser__catalogue_the_sections(web *W, text_stream *range, int form) { DISCARD_TEXT(main_title) } LOOP_OVER_LINKED_LIST(C, chapter, W->chapters) - if ((Str__eq_wide_string(range, L"0")) || (Str__eq(range, C->md->ch_range))) { + if ((Str__eq_wide_string(range, U"0")) || (Str__eq(range, C->md->ch_range))) { PRINT(" -----\n"); LOOP_OVER_LINKED_LIST(S, section, C->sections) { TEMPORARY_TEXT(main_title) @@ -38509,7 +38696,7 @@ void Analyser__analyse_code(web *W) { if ((L->category == INTERFACE_BODY_LCAT) && (L->interface_line_identified == FALSE) && (Regexp__string_is_white_space(L->text) == FALSE)) - Main__error_in_web(TL_IS_2774, L); + Main__error_in_web(TL_IS_2782, L); } #line 109 "inweb/Chapter 3/The Analyser.w" @@ -38683,14 +38870,14 @@ void Analyser__write_makefile(web *W, filename *F, module_search *I, text_stream pathname *P = W->md->path_to_web; text_stream *short_name = Pathnames__directory_name(P); if ((Str__len(short_name) == 0) || - (Str__eq(short_name, TL_IS_2775)) || (Str__eq(short_name, TL_IS_2776))) - short_name = TL_IS_2777; + (Str__eq(short_name, TL_IS_2783)) || (Str__eq(short_name, TL_IS_2784))) + short_name = TL_IS_2785; TEMPORARY_TEXT(leafname) WRITE_TO(leafname, "%S.mkscript", short_name); filename *prototype = Filenames__in(P, leafname); DISCARD_TEXT(leafname) if (!(TextFiles__exists(prototype))) - prototype = Filenames__in(path_to_inweb_materials, TL_IS_2778); + prototype = Filenames__in(path_to_inweb_materials, TL_IS_2786); Makefiles__write(W, prototype, F, I, platform); } @@ -38698,32 +38885,32 @@ void Analyser__write_gitignore(web *W, filename *F) { pathname *P = W->md->path_to_web; text_stream *short_name = Pathnames__directory_name(P); if ((Str__len(short_name) == 0) || - (Str__eq(short_name, TL_IS_2779)) || (Str__eq(short_name, TL_IS_2780))) - short_name = TL_IS_2781; + (Str__eq(short_name, TL_IS_2787)) || (Str__eq(short_name, TL_IS_2788))) + short_name = TL_IS_2789; TEMPORARY_TEXT(leafname) WRITE_TO(leafname, "%S.giscript", short_name); filename *prototype = Filenames__in(P, leafname); DISCARD_TEXT(leafname) if (!(TextFiles__exists(prototype))) - prototype = Filenames__in(path_to_inweb_materials, TL_IS_2782); + prototype = Filenames__in(path_to_inweb_materials, TL_IS_2790); Git__write_gitignore(W, prototype, F); } #line 330 "inweb/Chapter 3/The Analyser.w" programming_language *Analyser__default_language(web *W) { - return Analyser__find_by_name(TL_IS_2783, W, TRUE); + return Analyser__find_by_name(TL_IS_2791, W, TRUE); } programming_language *Analyser__find_by_name(text_stream *lname, web *W, int error_if_not_found) { - pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2784); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_2792); return Languages__find_by_name(lname, P, error_if_not_found); } #line 19 "inweb/Chapter 3/The Collater.w" void Collater__for_web_and_pattern(text_stream *OUT, web *W, weave_pattern *pattern, filename *F, filename *into) { - Collater__collate(OUT, W, TL_IS_2785, F, pattern, NULL, NULL, NULL, into); + Collater__collate(OUT, W, TL_IS_2793, F, pattern, NULL, NULL, NULL, into); } void Collater__for_order(text_stream *OUT, weave_order *wv, @@ -38814,7 +39001,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 144 "inweb/Chapter 3/The Collater.w" - if (Regexp__match(&mr, tl, L"(%c*?) ")) Str__copy(tl, mr.exp[0]); /* Strip trailing spaces */ + if (Regexp__match(&mr, tl, U"(%c*?) ")) Str__copy(tl, mr.exp[0]); /* Strip trailing spaces */ if (TRACE_COLLATER_EXECUTION) { @@ -38839,15 +39026,15 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 146 "inweb/Chapter 3/The Collater.w" ; - if ((Regexp__match(&mr, tl, L"%[%[(%c+)%]%]")) || - (Regexp__match(&mr, tl, L" %[%[(%c+)%]%]"))) { + if ((Regexp__match(&mr, tl, U"%[%[(%c+)%]%]")) || + (Regexp__match(&mr, tl, U" %[%[(%c+)%]%]"))) { TEMPORARY_TEXT(command) Str__copy(command, mr.exp[0]); { #line 188 "inweb/Chapter 3/The Collater.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, command, L"Select (%c*)")) { + if (Regexp__match(&mr, command, U"Select (%c*)")) { chapter *C; section *S; LOOP_OVER_LINKED_LIST(C, chapter, cls->for_web->chapters) @@ -38875,36 +39062,36 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 214 "inweb/Chapter 3/The Collater.w" - if (Regexp__match(&mr, command, L"If (%c*)")) { + if (Regexp__match(&mr, command, U"If (%c*)")) { text_stream *condition = mr.exp[0]; int level = IF_FALSE_LEVEL; - if (Str__eq(condition, TL_IS_2786)) { + if (Str__eq(condition, TL_IS_2794)) { if (cls->for_web->md->chaptered) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_2787)) { + } else if (Str__eq(condition, TL_IS_2795)) { if (LinkedLists__len(cls->modules) > 0) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_2788)) { + } else if (Str__eq(condition, TL_IS_2796)) { module *M = CONTENT_IN_ITEM( Collater__heading_topmost_on_stack(cls, MODULE_LEVEL), module); if ((M) && (Colonies__find(M->module_name))) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_2789)) { + } else if (Str__eq(condition, TL_IS_2797)) { module *M = CONTENT_IN_ITEM( Collater__heading_topmost_on_stack(cls, MODULE_LEVEL), module); if (M) { TEMPORARY_TEXT(url) TEMPORARY_TEXT(purpose) WRITE_TO(url, "%p", M->module_location); - Readme__write_var(purpose, url, TL_IS_2790); + Readme__write_var(purpose, url, TL_IS_2798); if (Str__len(purpose) > 0) level = IF_TRUE_LEVEL; DISCARD_TEXT(url) DISCARD_TEXT(purpose) } - } else if (Str__eq(condition, TL_IS_2791)) { + } else if (Str__eq(condition, TL_IS_2799)) { chapter *C = CONTENT_IN_ITEM( Collater__heading_topmost_on_stack(cls, CHAPTER_LEVEL), chapter); if ((C) && (Str__len(C->md->rubric) > 0)) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_2792)) { + } else if (Str__eq(condition, TL_IS_2800)) { section *S = CONTENT_IN_ITEM( Collater__heading_topmost_on_stack(cls, SECTION_LEVEL), section); if ((S) && (Str__len(S->sect_purpose) > 0)) level = IF_TRUE_LEVEL; @@ -38923,7 +39110,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 257 "inweb/Chapter 3/The Collater.w" - if (Regexp__match(&mr, command, L"Else")) { + if (Regexp__match(&mr, command, U"Else")) { if (cls->sp <= 0) { Errors__at_position("Else without If", cls->errors_at, lpos); @@ -38949,9 +39136,9 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 279 "inweb/Chapter 3/The Collater.w" int loop_level = 0; - if (Regexp__match(&mr, command, L"Repeat Module")) loop_level = MODULE_LEVEL; - if (Regexp__match(&mr, command, L"Repeat Chapter")) loop_level = CHAPTER_LEVEL; - if (Regexp__match(&mr, command, L"Repeat Section")) loop_level = SECTION_LEVEL; + if (Regexp__match(&mr, command, U"Repeat Module")) loop_level = MODULE_LEVEL; + if (Regexp__match(&mr, command, U"Repeat Chapter")) loop_level = CHAPTER_LEVEL; + if (Regexp__match(&mr, command, U"Repeat Section")) loop_level = SECTION_LEVEL; if (loop_level != 0) { linked_list_item *from = NULL, *to = NULL; linked_list_item *CI = FIRST_ITEM_IN_LINKED_LIST(chapter, cls->for_web->chapters); @@ -38971,7 +39158,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { #line 300 "inweb/Chapter 3/The Collater.w" from = CI; to = LAST_ITEM_IN_LINKED_LIST(chapter, cls->for_web->chapters); - if (Str__eq_wide_string(cls->restrict_to_range, L"0") == FALSE) { + if (Str__eq_wide_string(cls->restrict_to_range, U"0") == FALSE) { chapter *C; LOOP_OVER_LINKED_LIST(C, chapter, cls->for_web->chapters) if (Str__eq(C->md->ch_range, cls->restrict_to_range)) { @@ -39015,9 +39202,9 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 330 "inweb/Chapter 3/The Collater.w" int end_form = -1; - if (Regexp__match(&mr, command, L"End Repeat")) end_form = 1; - if (Regexp__match(&mr, command, L"End Select")) end_form = 2; - if (Regexp__match(&mr, command, L"End If")) end_form = 3; + if (Regexp__match(&mr, command, U"End Repeat")) end_form = 1; + if (Regexp__match(&mr, command, U"End Select")) end_form = 2; + if (Regexp__match(&mr, command, U"End If")) end_form = 3; if (end_form > 0) { if (cls->sp <= 0) { Errors__at_position("stack underflow on contents template", @@ -39162,7 +39349,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 477 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Navigation")) { + } else if (Regexp__match(&mr, varname, U"Navigation")) { { #line 547 "inweb/Chapter 3/The Collater.w" @@ -39179,7 +39366,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 479 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Breadcrumbs")) { + } else if (Regexp__match(&mr, varname, U"Breadcrumbs")) { { #line 560 "inweb/Chapter 3/The Collater.w" @@ -39189,7 +39376,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 481 "inweb/Chapter 3/The Collater.w" ; - } else if (Str__eq_wide_string(varname, L"Plugins")) { + } else if (Str__eq_wide_string(varname, U"Plugins")) { { #line 564 "inweb/Chapter 3/The Collater.w" @@ -39199,7 +39386,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 483 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Complete (%c+)")) { + } else if (Regexp__match(&mr, varname, U"Complete (%c+)")) { text_stream *detail = mr.exp[0]; { @@ -39212,7 +39399,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 486 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Module (%c+)")) { + } else if (Regexp__match(&mr, varname, U"Module (%c+)")) { text_stream *detail = mr.exp[0]; { @@ -39225,17 +39412,17 @@ void Collater__process(text_stream *OUT, collater_state *cls) { else { #line 586 "inweb/Chapter 3/The Collater.w" - if (Str__eq_wide_string(detail, L"Title")) { + if (Str__eq_wide_string(detail, U"Title")) { text_stream *owner = Collater__module_owner(M, cls->for_web); if (Str__len(owner) > 0) WRITE_TO(substituted, "%S/", owner); WRITE_TO(substituted, "%S", M->module_name); - } else if (Str__eq_wide_string(detail, L"Page")) { + } else if (Str__eq_wide_string(detail, U"Page")) { if (Colonies__find(M->module_name)) Colonies__reference_URL(substituted, M->module_name, cls->into_file); - } else if (Str__eq_wide_string(detail, L"Purpose")) { + } else if (Str__eq_wide_string(detail, U"Purpose")) { TEMPORARY_TEXT(url) WRITE_TO(url, "%p", M->module_location); - Readme__write_var(substituted, url, TL_IS_2793); + Readme__write_var(substituted, url, TL_IS_2801); DISCARD_TEXT(url) } else { WRITE_TO(substituted, "%S for %S", varname, M->module_name); @@ -39248,7 +39435,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 489 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Chapter (%c+)")) { + } else if (Regexp__match(&mr, varname, U"Chapter (%c+)")) { text_stream *detail = mr.exp[0]; { @@ -39261,11 +39448,11 @@ void Collater__process(text_stream *OUT, collater_state *cls) { else { #line 613 "inweb/Chapter 3/The Collater.w" - if (Str__eq_wide_string(detail, L"Title")) { + if (Str__eq_wide_string(detail, U"Title")) { Str__copy(substituted, C->md->ch_title); - } else if (Str__eq_wide_string(detail, L"Code")) { + } else if (Str__eq_wide_string(detail, U"Code")) { Str__copy(substituted, C->md->ch_range); - } else if (Str__eq_wide_string(detail, L"Purpose")) { + } else if (Str__eq_wide_string(detail, U"Purpose")) { Str__copy(substituted, C->md->rubric); } else if (Formats__substitute_post_processing_data(substituted, C->ch_weave, detail, cls->nav_pattern)) { @@ -39281,7 +39468,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 492 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Section (%c+)")) { + } else if (Regexp__match(&mr, varname, U"Section (%c+)")) { text_stream *detail = mr.exp[0]; { @@ -39294,21 +39481,21 @@ void Collater__process(text_stream *OUT, collater_state *cls) { else { #line 637 "inweb/Chapter 3/The Collater.w" - if (Str__eq_wide_string(detail, L"Title")) { + if (Str__eq_wide_string(detail, U"Title")) { Str__copy(substituted, S->md->sect_title); - } else if (Str__eq_wide_string(detail, L"Purpose")) { + } else if (Str__eq_wide_string(detail, U"Purpose")) { Str__copy(substituted, S->sect_purpose); - } else if (Str__eq_wide_string(detail, L"Code")) { + } else if (Str__eq_wide_string(detail, U"Code")) { Str__copy(substituted, S->md->sect_range); - } else if (Str__eq_wide_string(detail, L"Lines")) { + } else if (Str__eq_wide_string(detail, U"Lines")) { WRITE_TO(substituted, "%d", S->sect_extent); - } else if (Str__eq_wide_string(detail, L"Source")) { + } else if (Str__eq_wide_string(detail, U"Source")) { WRITE_TO(substituted, "%f", S->md->source_file_for_section); - } else if (Str__eq_wide_string(detail, L"Page")) { + } else if (Str__eq_wide_string(detail, U"Page")) { Colonies__section_URL(substituted, S->md); - } else if (Str__eq_wide_string(detail, L"Paragraphs")) { + } else if (Str__eq_wide_string(detail, U"Paragraphs")) { WRITE_TO(substituted, "%d", S->sect_paragraphs); - } else if (Str__eq_wide_string(detail, L"Mean")) { + } else if (Str__eq_wide_string(detail, U"Mean")) { int denom = S->sect_paragraphs; if (denom == 0) denom = 1; WRITE_TO(substituted, "%d", S->sect_extent/denom); @@ -39326,7 +39513,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 495 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Docs")) { + } else if (Regexp__match(&mr, varname, U"Docs")) { { #line 666 "inweb/Chapter 3/The Collater.w" @@ -39337,7 +39524,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 497 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Assets")) { + } else if (Regexp__match(&mr, varname, U"Assets")) { { #line 671 "inweb/Chapter 3/The Collater.w" @@ -39349,7 +39536,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 499 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"URL \"(%c+)\"")) { + } else if (Regexp__match(&mr, varname, U"URL \"(%c+)\"")) { text_stream *link_text = mr.exp[0]; { @@ -39361,7 +39548,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 502 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Link \"(%c+)\"")) { + } else if (Regexp__match(&mr, varname, U"Link \"(%c+)\"")) { text_stream *link_text = mr.exp[0]; { @@ -39373,7 +39560,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 505 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Menu \"(%c+)\"")) { + } else if (Regexp__match(&mr, varname, U"Menu \"(%c+)\"")) { text_stream *menu_name = mr.exp[0]; { @@ -39385,17 +39572,17 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 508 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Item \"(%c+)\"")) { + } else if (Regexp__match(&mr, varname, U"Item \"(%c+)\"")) { text_stream *item_name = mr.exp[0]; text_stream *icon_text = NULL; { #line 692 "inweb/Chapter 3/The Collater.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, item_name, L"<(%i+.%i+)> *(%c*)")) { + if (Regexp__match(&mr, item_name, U"<(%i+.%i+)> *(%c*)")) { icon_text = Str__duplicate(mr.exp[0]); item_name = Str__duplicate(mr.exp[1]); - } else if (Regexp__match(&mr, item_name, L"(%c*?) *<(%i+.%i+)>")) { + } else if (Regexp__match(&mr, item_name, U"(%c*?) *<(%i+.%i+)>")) { icon_text = Str__duplicate(mr.exp[1]); item_name = Str__duplicate(mr.exp[0]); } @@ -39435,7 +39622,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { #line 720 "inweb/Chapter 3/The Collater.w" ; WRITE_TO(substituted, ""); - } else if (Str__eq(url, TL_IS_2794)) { + } else if (Str__eq(url, TL_IS_2802)) { WRITE_TO(substituted, "", url); WRITE_TO(substituted, ""); @@ -39486,7 +39673,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { } #line 514 "inweb/Chapter 3/The Collater.w" ; - } else if (Regexp__match(&mr, varname, L"Item \"(%c+)\" -> (%c+)")) { + } else if (Regexp__match(&mr, varname, U"Item \"(%c+)\" -> (%c+)")) { text_stream *item_name = mr.exp[0]; text_stream *link_text = mr.exp[1]; text_stream *icon_text = NULL; @@ -39494,10 +39681,10 @@ void Collater__process(text_stream *OUT, collater_state *cls) { { #line 692 "inweb/Chapter 3/The Collater.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, item_name, L"<(%i+.%i+)> *(%c*)")) { + if (Regexp__match(&mr, item_name, U"<(%i+.%i+)> *(%c*)")) { icon_text = Str__duplicate(mr.exp[0]); item_name = Str__duplicate(mr.exp[1]); - } else if (Regexp__match(&mr, item_name, L"(%c*?) *<(%i+.%i+)>")) { + } else if (Regexp__match(&mr, item_name, U"(%c*?) *<(%i+.%i+)>")) { icon_text = Str__duplicate(mr.exp[1]); item_name = Str__duplicate(mr.exp[0]); } @@ -39536,7 +39723,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { #line 720 "inweb/Chapter 3/The Collater.w" ; WRITE_TO(substituted, ""); - } else if (Str__eq(url, TL_IS_2794)) { + } else if (Str__eq(url, TL_IS_2802)) { WRITE_TO(substituted, "", url); WRITE_TO(substituted, ""); @@ -39589,7 +39776,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) { ; } else { WRITE_TO(substituted, "%S", varname); - if (Regexp__match(&mr, varname, L"%i+%c*")) + if (Regexp__match(&mr, varname, U"%i+%c*")) PRINT("Warning: unable to resolve command '%S'\n", varname); } Regexp__dispose_of(&mr); @@ -39675,11 +39862,11 @@ int Collater__cmp_owners(text_stream *O1, text_stream *O2) { return 0; } if (Str__len(O2) == 0) return 1; - if (Str__eq_insensitive(O1, TL_IS_2795)) { - if (Str__eq_insensitive(O2, TL_IS_2796) == FALSE) return 1; + if (Str__eq_insensitive(O1, TL_IS_2803)) { + if (Str__eq_insensitive(O2, TL_IS_2804) == FALSE) return 1; return 0; } - if (Str__eq_insensitive(O2, TL_IS_2797)) return -1; + if (Str__eq_insensitive(O2, TL_IS_2805)) return -1; return Str__cmp_insensitive(O1, O2); } @@ -39691,7 +39878,7 @@ int Weaver__weave(weave_order *wv) { tree_node *H = WeaveTree__head(tree, banner); DISCARD_TEXT(banner) tree_node *B = WeaveTree__body(tree); - tree_node *T = WeaveTree__tail(tree, TL_IS_2798); + tree_node *T = WeaveTree__tail(tree, TL_IS_2806); Trees__make_child(H, tree->root); Trees__make_child(B, tree->root); Trees__make_child(T, tree->root); @@ -39805,7 +39992,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo continue; } if (LLL->category == DEFINITIONS_LCAT) { - Weaver__weave_subheading(tree, wv, state->ap, TL_IS_2799); + Weaver__weave_subheading(tree, wv, state->ap, TL_IS_2807); state->next_heading_without_vertical_skip = TRUE; state->horizontal_rule_just_drawn = FALSE; continue; @@ -39845,7 +40032,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo source_line *L = LLL; if ((L->category != HEADING_START_LCAT) && (L->category != PARAGRAPH_START_LCAT)) - Main__error_in_web(TL_IS_2800, L); /* should never happen */ + Main__error_in_web(TL_IS_2808, L); /* should never happen */ { @@ -40059,7 +40246,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo if ((L->next_line) && (L->next_line->category == COMMENT_BODY_LCAT)) { match_results mr = Regexp__create_mr(); if ((state->kind_of_material != CODE_MATERIAL) || - (Regexp__match(&mr, matter, L"\t|(%c*)|(%c*?)"))) + (Regexp__match(&mr, matter, U"\t|(%c*)|(%c*?)"))) Trees__make_child(WeaveTree__vskip(tree, TRUE), state->ap); Regexp__dispose_of(&mr); } @@ -40073,19 +40260,19 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo { #line 375 "inweb/Chapter 3/The Weaver.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, matter, L"%(-...%) (%c*)")) { /* continue double */ + if (Regexp__match(&mr, matter, U"%(-...%) (%c*)")) { /* continue double */ Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); - Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_2801), state->ap); + Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_2809), state->ap); Str__copy(matter, mr.exp[0]); - } else if (Regexp__match(&mr, matter, L"%(...%) (%c*)")) { /* continue single */ + } else if (Regexp__match(&mr, matter, U"%(...%) (%c*)")) { /* continue single */ Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); - Trees__make_child(WeaveTree__weave_item_node(tree, 1, TL_IS_2802), state->ap); + Trees__make_child(WeaveTree__weave_item_node(tree, 1, TL_IS_2810), state->ap); Str__copy(matter, mr.exp[0]); - } else if (Regexp__match(&mr, matter, L"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */ + } else if (Regexp__match(&mr, matter, U"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */ Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees__make_child(WeaveTree__weave_item_node(tree, 2, mr.exp[0]), state->ap); Str__copy(matter, mr.exp[1]); - } else if (Regexp__match(&mr, matter, L"%(([a-zA-Z0-9*]+)%) (%c*)")) { /* begin single */ + } else if (Regexp__match(&mr, matter, U"%(([a-zA-Z0-9*]+)%) (%c*)")) { /* begin single */ Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL); Trees__make_child(WeaveTree__weave_item_node(tree, 1, mr.exp[0]), state->ap); Str__copy(matter, mr.exp[1]); @@ -40099,7 +40286,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo { #line 399 "inweb/Chapter 3/The Weaver.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, matter, L"\t|(%c*)|(%c*?)")) { + if (Regexp__match(&mr, matter, U"\t|(%c*)|(%c*?)")) { TEMPORARY_TEXT(original) Weaver__change_material(tree, state, CODE_MATERIAL, FALSE, NULL, NULL); Str__copy(original, mr.exp[0]); @@ -40128,7 +40315,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo footnote *F = L->footnote_text; tree_node *FN = WeaveTree__footnote(tree, F->cue_text); Trees__make_child(FN, state->material_node); - if (F->cued_already == FALSE) Main__error_in_web(TL_IS_2803, L); + if (F->cued_already == FALSE) Main__error_in_web(TL_IS_2811, L); state->ap = FN; } @@ -40162,10 +40349,10 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo programming_language *pl = L->colour_as; if (pl == NULL) pl = S->sect_language; if (will_be != CODE_MATERIAL) pl = NULL; - theme_tag *T = Tags__find_by_name(TL_IS_2804, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_2812, FALSE); if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) { programming_language *prepl = - Analyser__find_by_name(TL_IS_2805, wv->weave_web, FALSE); + Analyser__find_by_name(TL_IS_2813, wv->weave_web, FALSE); if (prepl) pl = prepl; } text_stream *note = NULL; @@ -40223,16 +40410,16 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo #line 529 "inweb/Chapter 3/The Weaver.w" if (L->category == BEGIN_DEFINITION_LCAT) { match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, matter, L"@d (%c*)")) || - (Regexp__match(&mr, matter, L"@define (%c*)"))) { - Str__copy(prefatory, TL_IS_2806); + if ((Regexp__match(&mr, matter, U"@d (%c*)")) || + (Regexp__match(&mr, matter, U"@define (%c*)"))) { + Str__copy(prefatory, TL_IS_2814); Str__copy(matter, mr.exp[0]); - } else if (Regexp__match(&mr, matter, L"@default (%c*)")) { - Str__copy(prefatory, TL_IS_2807); + } else if (Regexp__match(&mr, matter, U"@default (%c*)")) { + Str__copy(prefatory, TL_IS_2815); Str__copy(matter, mr.exp[0]); - } else if ((Regexp__match(&mr, matter, L"@e (%c*)")) || - (Regexp__match(&mr, matter, L"@enum (%c*)"))) { - Str__copy(prefatory, TL_IS_2808); + } else if ((Regexp__match(&mr, matter, U"@e (%c*)")) || + (Regexp__match(&mr, matter, U"@enum (%c*)"))) { + Str__copy(prefatory, TL_IS_2816); Str__copy(matter, mr.exp[0]); } Regexp__dispose_of(&mr); @@ -40269,7 +40456,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo { #line 558 "inweb/Chapter 3/The Weaver.w" match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, matter, L"(%c*?)%@%<(%c*?)%@%>(%c*)")) { + while (Regexp__match(&mr, matter, U"(%c*?)%@%<(%c*?)%@%>(%c*)")) { para_macro *pmac = Macros__find_by_name(mr.exp[1], S); if (pmac) { TEMPORARY_TEXT(front_colouring) @@ -40359,23 +40546,23 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, paragraph *P) { tree_node *body = ap; - theme_tag *T = Tags__find_by_name(TL_IS_2809, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_2817, FALSE); if ((T) && (Tags__tagged_with(P, T))) { #line 597 "inweb/Chapter 3/The Weaver.w" tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, body); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2810); + TextWeaver__commentary_text(tree, ap, TL_IS_2818); TEMPORARY_TEXT(url) int ext = FALSE; if (Colonies__resolve_reference_in_weave(url, NULL, wv->weave_to, - TL_IS_2811, wv->weave_web->md, NULL, &ext)) - Trees__make_child(WeaveTree__url(tree, url, TL_IS_2812, ext), ap); + TL_IS_2819, wv->weave_web->md, NULL, &ext)) + Trees__make_child(WeaveTree__url(tree, url, TL_IS_2820, ext), ap); else - TextWeaver__commentary_text(tree, ap, TL_IS_2813); + TextWeaver__commentary_text(tree, ap, TL_IS_2821); DISCARD_TEXT(url) - TextWeaver__commentary_text(tree, ap, TL_IS_2814); + TextWeaver__commentary_text(tree, ap, TL_IS_2822); } #line 584 "inweb/Chapter 3/The Weaver.w" @@ -40387,30 +40574,30 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, #line 611 "inweb/Chapter 3/The Weaver.w" tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, body); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2815); + TextWeaver__commentary_text(tree, ap, TL_IS_2823); int ct = 0; macro_usage *mu; LOOP_OVER_LINKED_LIST(mu, macro_usage, P->defines_macro->macro_usages) ct++; - if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2816); + if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_2824); else { int k = 0, used_flag = FALSE; LOOP_OVER_LINKED_LIST(mu, macro_usage, P->defines_macro->macro_usages) if (P != mu->used_in_paragraph) { if (used_flag) { - if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_2817); - else TextWeaver__commentary_text(tree, ap, TL_IS_2818); + if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_2825); + else TextWeaver__commentary_text(tree, ap, TL_IS_2826); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2819); + TextWeaver__commentary_text(tree, ap, TL_IS_2827); } Trees__make_child(WeaveTree__locale(tree, mu->used_in_paragraph, NULL), ap); used_flag = TRUE; k++; switch (mu->multiplicity) { case 1: break; - case 2: TextWeaver__commentary_text(tree, ap, TL_IS_2820); break; - case 3: TextWeaver__commentary_text(tree, ap, TL_IS_2821); break; - case 4: TextWeaver__commentary_text(tree, ap, TL_IS_2822); break; - case 5: TextWeaver__commentary_text(tree, ap, TL_IS_2823); break; + case 2: TextWeaver__commentary_text(tree, ap, TL_IS_2828); break; + case 3: TextWeaver__commentary_text(tree, ap, TL_IS_2829); break; + case 4: TextWeaver__commentary_text(tree, ap, TL_IS_2830); break; + case 5: TextWeaver__commentary_text(tree, ap, TL_IS_2831); break; default: { TEMPORARY_TEXT(mt) WRITE_TO(mt, " (%d times)", mu->multiplicity); @@ -40421,7 +40608,7 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, } } } - TextWeaver__commentary_text(tree, ap, TL_IS_2824); + TextWeaver__commentary_text(tree, ap, TL_IS_2832); } #line 587 "inweb/Chapter 3/The Weaver.w" @@ -40444,7 +40631,7 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, #line 654 "inweb/Chapter 3/The Weaver.w" tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, body); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2825); + TextWeaver__commentary_text(tree, ap, TL_IS_2833); TextWeaver__commentary_text(tree, ap, st->structure_name); section *S; @@ -40468,18 +40655,18 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, usage_count++; if (S != P->under_section) external++; } - if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_2826); + if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_2834); else { - TextWeaver__commentary_text(tree, ap, TL_IS_2827); + TextWeaver__commentary_text(tree, ap, TL_IS_2835); int c = 0; LOOP_OVER(S, section) if ((S->scratch_flag) && (S != P->under_section)) { - if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2828); + if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2836); TextWeaver__commentary_text(tree, ap, S->md->sect_range); } - if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_2829); + if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_2837); } - TextWeaver__commentary_text(tree, ap, TL_IS_2830); + TextWeaver__commentary_text(tree, ap, TL_IS_2838); } #line 593 "inweb/Chapter 3/The Weaver.w" @@ -40497,7 +40684,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, if (as_list == FALSE) { tree_node *E = WeaveTree__endnote(tree); Trees__make_child(E, body); ap = E; - TextWeaver__commentary_text(tree, ap, TL_IS_2831); + TextWeaver__commentary_text(tree, ap, TL_IS_2839); TextWeaver__commentary_text(tree, ap, fn->function_name); } int used_flag = FALSE; @@ -40511,7 +40698,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, { #line 733 "inweb/Chapter 3/The Weaver.w" if (as_list == FALSE) { - if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2836); + if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2844); } used_flag = TRUE; section *S = hteu->usage_recorded_at->under_section; @@ -40519,17 +40706,17 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, count_under = 0; if (last_cited_in) { if (as_list == FALSE) { - if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_2837); - else TextWeaver__commentary_text(tree, ap, TL_IS_2838); + if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_2845); + else TextWeaver__commentary_text(tree, ap, TL_IS_2846); } else { Trees__make_child(WeaveTree__linebreak(tree), ap); } } TextWeaver__commentary_text(tree, ap, hteu->usage_recorded_at->under_section->md->sect_title); - if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2839); - else TextWeaver__commentary_text(tree, ap, TL_IS_2840); + if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2847); + else TextWeaver__commentary_text(tree, ap, TL_IS_2848); } - if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2841); + if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2849); Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap); last_cited_in = hteu->usage_recorded_at->under_section; @@ -40542,7 +40729,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, { #line 733 "inweb/Chapter 3/The Weaver.w" if (as_list == FALSE) { - if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2836); + if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2844); } used_flag = TRUE; section *S = hteu->usage_recorded_at->under_section; @@ -40550,17 +40737,17 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, count_under = 0; if (last_cited_in) { if (as_list == FALSE) { - if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_2837); - else TextWeaver__commentary_text(tree, ap, TL_IS_2838); + if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_2845); + else TextWeaver__commentary_text(tree, ap, TL_IS_2846); } else { Trees__make_child(WeaveTree__linebreak(tree), ap); } } TextWeaver__commentary_text(tree, ap, hteu->usage_recorded_at->under_section->md->sect_title); - if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2839); - else TextWeaver__commentary_text(tree, ap, TL_IS_2840); + if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_2847); + else TextWeaver__commentary_text(tree, ap, TL_IS_2848); } - if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2841); + if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_2849); Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap); last_cited_in = hteu->usage_recorded_at->under_section; @@ -40569,15 +40756,15 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, ; if (used_flag == FALSE) { if (as_list == FALSE) { - TextWeaver__commentary_text(tree, ap, TL_IS_2832); + TextWeaver__commentary_text(tree, ap, TL_IS_2840); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_2833); + TextWeaver__commentary_text(tree, ap, TL_IS_2841); } } if (as_list == FALSE) { if ((last_cited_in != P->under_section) && (last_cited_in)) - TextWeaver__commentary_text(tree, ap, TL_IS_2834); - TextWeaver__commentary_text(tree, ap, TL_IS_2835); + TextWeaver__commentary_text(tree, ap, TL_IS_2842); + TextWeaver__commentary_text(tree, ap, TL_IS_2843); } } @@ -40659,8 +40846,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre weave_order *wv = C->wv; text_stream *code_in_comments_notation = Bibliographic__get_datum(wv->weave_web->md, - (in_code)?(TL_IS_2842):(TL_IS_2843)); - if (Str__ne(code_in_comments_notation, TL_IS_2844)) + (in_code)?(TL_IS_2850):(TL_IS_2851)); + if (Str__ne(code_in_comments_notation, TL_IS_2852)) { #line 51 "inweb/Chapter 3/The Weaver of Text.w" for (int i=0; i < Str__len(matter); i++) { @@ -40685,8 +40872,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre int display_flag = TRUE; text_stream *tex_notation = Bibliographic__get_datum(wv->weave_web->md, - TL_IS_2845); - if (Str__ne(tex_notation, TL_IS_2846)) + TL_IS_2853); + if (Str__ne(tex_notation, TL_IS_2854)) { #line 99 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(tex_notation); @@ -40721,8 +40908,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre ; display_flag = FALSE; tex_notation = Bibliographic__get_datum(wv->weave_web->md, - TL_IS_2847); - if (Str__ne(tex_notation, TL_IS_2848)) + TL_IS_2855); + if (Str__ne(tex_notation, TL_IS_2856)) { #line 99 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(tex_notation); @@ -40757,8 +40944,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre ; text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md, - TL_IS_2849); - if (Str__ne(xref_notation, TL_IS_2850)) + TL_IS_2857); + if (Str__ne(xref_notation, TL_IS_2858)) { #line 150 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(xref_notation); @@ -40818,16 +41005,16 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre { #line 68 "inweb/Chapter 3/The Weaver of Text.w" for (int i=0; i < Str__len(matter); i++) { - if ((Str__includes_at(matter, i, TL_IS_2851)) || - (Str__includes_at(matter, i, TL_IS_2852))) { + if ((Str__includes_at(matter, i, TL_IS_2859)) || + (Str__includes_at(matter, i, TL_IS_2860))) { TEMPORARY_TEXT(before) Str__copy(before, matter); Str__truncate(before, i); TEMPORARY_TEXT(after) Str__substr(after, Str__at(matter, i), Str__end(matter)); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, after, L"(https*://%C+)(%c*)")) { + if (Regexp__match(&mr, after, U"(https*://%C+)(%c*)")) { while (TextWeaver__boundary_character(FALSE, Str__get_last_char(mr.exp[0]))) { - wchar_t c = Str__get_last_char(mr.exp[0]); + inchar32_t c = Str__get_last_char(mr.exp[0]); Str__delete_last_character(mr.exp[0]); TEMPORARY_TEXT(longer) WRITE_TO(longer, "%c%S", c, mr.exp[1]); @@ -40867,7 +41054,7 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre Trees__make_child(WeaveTree__footnote_cue(tree, F->cue_text), ap); TextWeaver__commentary_r(tree, ap, after, within, in_code); } else { - Main__error_in_web(TL_IS_2853, wv->current_weave_line); + Main__error_in_web(TL_IS_2861, wv->current_weave_line); } } DISCARD_TEXT(before) @@ -40883,7 +41070,7 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre } #line 200 "inweb/Chapter 3/The Weaver of Text.w" -int TextWeaver__boundary_character(int before, wchar_t c) { +int TextWeaver__boundary_character(int before, inchar32_t c) { if (c == 0) return TRUE; if (Characters__is_whitespace(c)) return TRUE; if ((c == '.') || (c == ',') || (c == '!') || (c == '?') || (c == ';') || @@ -40921,12 +41108,12 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap, { #line 261 "inweb/Chapter 3/The Weaver of Text.w" - if ((Str__includes_at(matter, i, TL_IS_2856)) || - (Str__includes_at(matter, i, TL_IS_2857))) { + if ((Str__includes_at(matter, i, TL_IS_2864)) || + (Str__includes_at(matter, i, TL_IS_2865))) { TEMPORARY_TEXT(after) Str__substr(after, Str__at(matter, i), Str__end(matter)); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, after, L"(https*://%C+)(%c*)")) { + if (Regexp__match(&mr, after, U"(https*://%C+)(%c*)")) { tree_node *U = WeaveTree__url(tree, mr.exp[0], mr.exp[0], TRUE); TextWeaver__source_code_piece(tree, ap, matter, colouring, from, i); Trees__make_child(U, ap); @@ -40940,8 +41127,8 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap, #line 237 "inweb/Chapter 3/The Weaver of Text.w" ; text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md, - TL_IS_2854); - if (Str__ne(xref_notation, TL_IS_2855)) + TL_IS_2862); + if (Str__ne(xref_notation, TL_IS_2863)) { #line 277 "inweb/Chapter 3/The Weaver of Text.w" @@ -41078,7 +41265,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) { { #line 88 "inweb/Chapter 3/The Tangler.w" - if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_2858, L); + if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_2866, L); else Tags__open_ifdefs(OUT, L->owning_paragraph); LanguageMethods__start_definition(OUT, lang, L->text_operand, @@ -41100,7 +41287,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) { { #line 88 "inweb/Chapter 3/The Tangler.w" - if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_2858, L); + if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_2866, L); else Tags__open_ifdefs(OUT, L->owning_paragraph); LanguageMethods__start_definition(OUT, lang, L->text_operand, @@ -41251,7 +41438,7 @@ void Tangler__tangle_line(OUTPUT_STREAM, text_stream *original, section *S, sour LanguageMethods__after_macro_expansion(OUT, lang, pmac); LanguageMethods__insert_line_marker(OUT, lang, L); } else { - Main__error_in_web(TL_IS_2859, L); + Main__error_in_web(TL_IS_2867, L); WRITE_TO(STDERR, "Macro is '%S'\n", temp); LanguageMethods__comment(OUT, lang, temp); /* recover by putting macro name in comment */ } @@ -41326,7 +41513,7 @@ language_type *Functions__new_struct(web *W, text_stream *name, source_line *L) { #line 40 "inweb/Chapter 4/Types and Functions.w" - Tags__add_by_name(L->owning_paragraph, TL_IS_2860); + Tags__add_by_name(L->owning_paragraph, TL_IS_2868); ADD_TO_LINKED_LIST(str, language_type, W->language_types); ADD_TO_LINKED_LIST(str, language_type, L->owning_paragraph->structures); @@ -41421,7 +41608,7 @@ language_function *Functions__new_function(text_stream *fname, source_line *L) { fn->call_freely = FALSE; fn->function_header_at = L; fn->usage_described = FALSE; - if ((Str__eq_wide_string(fname, L"main")) && + if ((Str__eq_wide_string(fname, U"main")) && (L->owning_section->sect_language->C_like)) fn->usage_described = TRUE; fn->no_conditionals = 0; @@ -41446,12 +41633,12 @@ language_function *Functions__new_function(text_stream *fname, source_line *L) { text_stream *declared_namespace = NULL; text_stream *ambient_namespace = L->owning_section->sect_namespace; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, fname, L"(%c+::)%c*")) { + if (Regexp__match(&mr, fname, U"(%c+::)%c*")) { declared_namespace = mr.exp[0]; fn->within_namespace = TRUE; - } else if ((Str__eq_wide_string(fname, L"main")) && - (Str__eq_wide_string(ambient_namespace, L"Main::"))) - declared_namespace = TL_IS_2861; + } else if ((Str__eq_wide_string(fname, U"main")) && + (Str__eq_wide_string(ambient_namespace, U"Main::"))) + declared_namespace = TL_IS_2869; if ((Str__ne(declared_namespace, ambient_namespace)) && (L->owning_paragraph->placed_very_early == FALSE)) { TEMPORARY_TEXT(err_mess) @@ -41564,7 +41751,7 @@ void LanguageMethods__disclaimer(text_stream *OUT, programming_language *pl, web int rv = FALSE; INT_METHOD_CALL_WITHOUT_ARGUMENTS(rv, pl, SUPPRESS_DISCLAIMER_TAN_MTID); if (rv == FALSE) - LanguageMethods__comment(OUT, pl, TL_IS_2862); + LanguageMethods__comment(OUT, pl, TL_IS_2870); } #line 127 "inweb/Chapter 4/Language Methods.w" @@ -41587,7 +41774,7 @@ void LanguageMethods__start_definition(OUTPUT_STREAM, programming_language *pl, int rv = FALSE; INT_METHOD_CALL(rv, pl, START_DEFN_TAN_MTID, OUT, term, start, S, L); if (rv == FALSE) - Main__error_in_web(TL_IS_2863, L); + Main__error_in_web(TL_IS_2871, L); } void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl, @@ -41595,7 +41782,7 @@ void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl int rv = FALSE; INT_METHOD_CALL(rv, pl, PROLONG_DEFN_TAN_MTID, OUT, more, S, L); if (rv == FALSE) - Main__error_in_web(TL_IS_2864, L); + Main__error_in_web(TL_IS_2872, L); } void LanguageMethods__end_definition(OUTPUT_STREAM, programming_language *pl, @@ -41750,9 +41937,9 @@ int LanguageMethods__syntax_colour(programming_language *pl, int rv = FALSE; programming_language *colour_as = pl; if (L->category == TEXT_EXTRACT_LCAT) colour_as = L->colour_as; - theme_tag *T = Tags__find_by_name(TL_IS_2865, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_2873, FALSE); if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) { - programming_language *prepl = Analyser__find_by_name(TL_IS_2866, wv->weave_web, FALSE); + programming_language *prepl = Analyser__find_by_name(TL_IS_2874, wv->weave_web, FALSE); if ((L->category == PREFORM_LCAT) || (L->category == PREFORM_GRAMMAR_LCAT)) if (prepl) colour_as = prepl; } @@ -41861,7 +42048,7 @@ void ACMESupport__expand(OUTPUT_STREAM, text_stream *prototype, text_stream *S, int N, filename *F) { if (Str__len(prototype) > 0) { for (int i=0; imd, TL_IS_2867), L"On")) + if (Str__eq_wide_string(Bibliographic__get_datum(W->md, TL_IS_2875), U"On")) check_namespaces = TRUE; language_function *fn; LOOP_OVER(fn, language_function) { @@ -42012,11 +42199,11 @@ void ACMESupport__post_analysis(programming_language *self, web *W) { && (fn->call_freely == FALSE)) { if (fn->within_namespace) Main__error_in_web( - TL_IS_2868, + TL_IS_2876, fn->function_header_at); else Main__error_in_web( - TL_IS_2869, + TL_IS_2877, fn->function_header_at); } } @@ -42085,9 +42272,9 @@ void CLike__parse_types(programming_language *self, web *W) { if (Str__len(L->extract_to) == 0) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"typedef struct (%i+) %c*{%c*")) { + if (Regexp__match(&mr, L->text, U"typedef struct (%i+) %c*{%c*")) { current_str = Functions__new_struct(W, mr.exp[0], L); - Tags__add_by_name(L->owning_paragraph, TL_IS_2870); + Tags__add_by_name(L->owning_paragraph, TL_IS_2878); } else if ((Str__get_first_char(L->text) == '}') && (current_str)) { current_str->typedef_ends = L; current_str = NULL; @@ -42101,9 +42288,9 @@ void CLike__parse_types(programming_language *self, web *W) { { #line 104 "inweb/Chapter 4/C-Like Languages.w" - wchar_t *modifier_patterns[] = { - L"(struct )(%C%c*)", L"(signed )(%C%c*)", L"(unsigned )(%C%c*)", - L"(short )(%C%c*)", L"(long )(%C%c*)", L"(static )(%C%c*)", NULL }; + inchar32_t *modifier_patterns[] = { + U"(struct )(%C%c*)", U"(signed )(%C%c*)", U"(unsigned )(%C%c*)", + U"(short )(%C%c*)", U"(long )(%C%c*)", U"(static )(%C%c*)", NULL }; int seek_modifiers = TRUE; while (seek_modifiers) { seek_modifiers = FALSE; @@ -42145,7 +42332,7 @@ void CLike__parse_types(programming_language *self, web *W) { { #line 135 "inweb/Chapter 4/C-Like Languages.w" Str__substr(elname, pos, Str__end(p)); - if (Regexp__match(&mr, elname, L"(%i+)%c*")) Str__copy(elname, mr.exp[0]); + if (Regexp__match(&mr, elname, U"(%i+)%c*")) Str__copy(elname, mr.exp[0]); } #line 93 "inweb/Chapter 4/C-Like Languages.w" @@ -42160,8 +42347,8 @@ void CLike__parse_types(programming_language *self, web *W) { } #line 64 "inweb/Chapter 4/C-Like Languages.w" ; - } else if ((Regexp__match(&mr, L->text, L"typedef %c+")) && - (Regexp__match(&mr, L->text, L"%c+##%c+") == FALSE)) { + } else if ((Regexp__match(&mr, L->text, U"typedef %c+")) && + (Regexp__match(&mr, L->text, U"%c+##%c+") == FALSE)) { if (L->owning_paragraph->placed_very_early == FALSE) L->category = TYPEDEF_LCAT; } @@ -42181,7 +42368,7 @@ void CLike__parse_types(programming_language *self, web *W) { ((L) && (L != current_str->typedef_ends)); L = L->next_line) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L" struct (%i+) %i%c*")) + if (Regexp__match(&mr, L->text, U" struct (%i+) %i%c*")) { #line 165 "inweb/Chapter 4/C-Like Languages.w" @@ -42220,17 +42407,17 @@ void CLike__parse_functions(programming_language *self, web *W) { { #line 203 "inweb/Chapter 4/C-Like Languages.w" match_results mr = Regexp__create_mr(); - if ((Regexp__match(&mr, L->text, L" *#ifn*def %c+")) || - (Regexp__match(&mr, L->text, L" *#IFN*DEF %c+"))) { + if ((Regexp__match(&mr, L->text, U" *#ifn*def %c+")) || + (Regexp__match(&mr, L->text, U" *#IFN*DEF %c+"))) { if (cc_sp >= MAX_CONDITIONAL_COMPILATION_STACK) - Main__error_in_web(TL_IS_2872, L); + Main__error_in_web(TL_IS_2880, L); else cc_stack[cc_sp++] = L; } - if ((Regexp__match(&mr, L->text, L" *#endif *")) || - (Regexp__match(&mr, L->text, L" *#ENDIF *"))) { + if ((Regexp__match(&mr, L->text, U" *#endif *")) || + (Regexp__match(&mr, L->text, U" *#ENDIF *"))) { if (cc_sp <= 0) - Main__error_in_web(TL_IS_2873, L); + Main__error_in_web(TL_IS_2881, L); else cc_sp--; } @@ -42248,9 +42435,9 @@ void CLike__parse_functions(programming_language *self, web *W) { { #line 256 "inweb/Chapter 4/C-Like Languages.w" - wchar_t *modifier_patterns[] = { - L"(signed )(%C%c*)", L"(unsigned )(%C%c*)", - L"(short )(%C%c*)", L"(long )(%C%c*)", L"(static )(%C%c*)", NULL }; + inchar32_t *modifier_patterns[] = { + U"(signed )(%C%c*)", U"(unsigned )(%C%c*)", + U"(short )(%C%c*)", U"(long )(%C%c*)", U"(static )(%C%c*)", NULL }; int seek_modifiers = TRUE; while (seek_modifiers) { seek_modifiers = FALSE; @@ -42268,7 +42455,7 @@ void CLike__parse_functions(programming_language *self, web *W) { #line 233 "inweb/Chapter 4/C-Like Languages.w" ; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, modified, L"(%i+) (%**)(%i+)%((%c*)")) { + if (Regexp__match(&mr, modified, U"(%i+) (%**)(%i+)%((%c*)")) { TEMPORARY_TEXT(ftype) Str__copy(ftype, mr.exp[0]); TEMPORARY_TEXT(asts) Str__copy(asts, mr.exp[1]); TEMPORARY_TEXT(fname) Str__copy(fname, mr.exp[2]); @@ -42302,7 +42489,7 @@ void CLike__parse_functions(programming_language *self, web *W) { language_function *fn = Functions__new_function(fname, L); fn->function_arguments = Str__duplicate(arguments); WRITE_TO(fn->function_type, "%S%S %S", qualifiers, ftype, asts); - if (Str__eq_wide_string(fn->function_name, L"isdigit")) fn->call_freely = TRUE; + if (Str__eq_wide_string(fn->function_name, U"isdigit")) fn->call_freely = TRUE; fn->no_conditionals = cc_sp; for (int i=0; iwithin_conditionals[i] = cc_stack[i]; @@ -42324,18 +42511,18 @@ void CLike__parse_functions(programming_language *self, web *W) { ; } if (cc_sp > 0) - Main__error_in_web(TL_IS_2871, NULL); + Main__error_in_web(TL_IS_2879, NULL); } #line 316 "inweb/Chapter 4/C-Like Languages.w" void CLike__subcategorise_code(programming_language *self, source_line *L) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"#include <(%C+)>%c*")) { + if (Regexp__match(&mr, L->text, U"#include <(%C+)>%c*")) { text_stream *library_file = mr.exp[0]; - wchar_t *ansi_libs[] = { - L"assert.h", L"ctype.h", L"errno.h", L"float.h", L"limits.h", - L"locale.h", L"math.h", L"setjmp.h", L"signal.h", L"stdarg.h", - L"stddef.h", L"stdio.h", L"stdlib.h", L"string.h", L"time.h", + inchar32_t *ansi_libs[] = { + U"assert.h", U"ctype.h", U"errno.h", U"float.h", U"limits.h", + U"locale.h", U"math.h", U"setjmp.h", U"signal.h", U"stdarg.h", + U"stddef.h", U"stdio.h", U"stdlib.h", U"string.h", U"time.h", NULL }; for (int j = 0; ansi_libs[j]; j++) @@ -42409,7 +42596,7 @@ void CLike__additional_predeclarations(programming_language *self, text_stream * for (int i=0; ino_conditionals; i++) { match_results mr = Regexp__create_mr(); if (!(Regexp__match(&mr, fn->within_conditionals[i]->text, - L"%c*inweb: always predeclare%c*"))) { + U"%c*inweb: always predeclare%c*"))) { WRITE("%S\n", fn->within_conditionals[i]->text); to_close++; } @@ -42491,20 +42678,20 @@ void InCSupport__further_parsing(programming_language *self, web *W) { { #line 80 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"(<%p+>) ::=%c*")) { + if (Regexp__match(&mr, L->text, U"(<%p+>) ::=%c*")) { form = A_GRAMMAR_NONTERMINAL; Str__copy(pntname, mr.exp[0]); Str__copy(header, mr.exp[0]); { #line 218 "inweb/Chapter 4/InC Support.w" - Tags__add_by_name(L->owning_paragraph, TL_IS_2874); + Tags__add_by_name(L->owning_paragraph, TL_IS_2882); source_line *AL; for (AL = L; (AL) && (AL->category == CODE_BODY_LCAT); AL = AL->next_line) { if (Regexp__string_is_white_space(AL->text)) break; AL->category = PREFORM_GRAMMAR_LCAT; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, AL->text, L"(%c+?) ==> (%c*)")) { + if (Regexp__match(&mr, AL->text, U"(%c+?) ==> (%c*)")) { AL->text_operand = Str__duplicate(mr.exp[0]); AL->text_operand2 = Str__duplicate(mr.exp[1]); } else { @@ -42515,7 +42702,7 @@ void InCSupport__further_parsing(programming_language *self, web *W) { { #line 244 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, AL->text_operand, L"(%c*)%/%*%c*%*%/ *")) + if (Regexp__match(&mr, AL->text_operand, U"(%c*)%/%*%c*%*%/ *")) AL->text_operand = Str__duplicate(mr.exp[0]); Regexp__dispose_of(&mr); @@ -42527,11 +42714,11 @@ void InCSupport__further_parsing(programming_language *self, web *W) { #line 254 "inweb/Chapter 4/InC Support.w" TEMPORARY_TEXT(to_scan) Str__copy(to_scan, AL->text_operand2); match_results mr = Regexp__create_mr(); - while (Regexp__match(&mr, to_scan, L"%c*?<<(%P+?)>> =(%c*)")) { + while (Regexp__match(&mr, to_scan, U"%c*?<<(%P+?)>> =(%c*)")) { TEMPORARY_TEXT(var_given) Str__copy(var_given, mr.exp[0]); TEMPORARY_TEXT(type_given) WRITE_TO(type_given, "int"); Str__copy(to_scan, mr.exp[1]); - if (Regexp__match(&mr, var_given, L"(%p+):%p+")) { + if (Regexp__match(&mr, var_given, U"(%p+):%p+")) { Str__clear(type_given); WRITE_TO(type_given, "%S *", mr.exp[0]); } @@ -42570,15 +42757,15 @@ void InCSupport__further_parsing(programming_language *self, web *W) { } #line 85 "inweb/Chapter 4/InC Support.w" ; - } else if (Regexp__match(&mr, L->text, L"((<%p+>) internal %?) {%c*")) { + } else if (Regexp__match(&mr, L->text, U"((<%p+>) internal %?) {%c*")) { form = A_VORACIOUS_NONTERMINAL; Str__copy(pntname, mr.exp[1]); Str__copy(header, mr.exp[0]); - } else if (Regexp__match(&mr, L->text, L"((<%p+>) internal) {%c*")) { + } else if (Regexp__match(&mr, L->text, U"((<%p+>) internal) {%c*")) { form = A_FLEXIBLE_NONTERMINAL; Str__copy(pntname, mr.exp[1]); Str__copy(header, mr.exp[0]); - } else if (Regexp__match(&mr, L->text, L"((<%p+>) internal (%d+)) {%c*")) { + } else if (Regexp__match(&mr, L->text, U"((<%p+>) internal (%d+)) {%c*")) { form = Str__atoi(mr.exp[2], 0); Str__copy(pntname, mr.exp[1]); Str__copy(header, mr.exp[0]); @@ -42601,7 +42788,7 @@ void InCSupport__further_parsing(programming_language *self, web *W) { { #line 136 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, pntname, L"%<(%c*)%>")) pnt->unangled_name = Str__duplicate(mr.exp[0]); + if (Regexp__match(&mr, pntname, U"%<(%c*)%>")) pnt->unangled_name = Str__duplicate(mr.exp[0]); Regexp__dispose_of(&mr); } @@ -42628,8 +42815,8 @@ void InCSupport__further_parsing(programming_language *self, web *W) { pnt->takes_pointer_result = FALSE; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, pnt->nt_name, L"takes_pointer_result = TRUE; - if (Regexp__match(&mr, pnt->nt_name, L"takes_pointer_result = TRUE; + if (Regexp__match(&mr, pnt->nt_name, U"takes_pointer_result = TRUE; + if (Regexp__match(&mr, pnt->nt_name, U"takes_pointer_result = TRUE; Regexp__dispose_of(&mr); int min = 1, max = form; @@ -42763,11 +42950,11 @@ int InCSupport__suppress_expansion(programming_language *self, text_stream *mate #line 392 "inweb/Chapter 4/InC Support.w" int InCSupport__special_tangle_command(programming_language *me, OUTPUT_STREAM, text_stream *data) { - if (Str__eq_wide_string(data, L"nonterminals")) { + if (Str__eq_wide_string(data, U"nonterminals")) { WRITE("register_tangled_nonterminals();\n"); return TRUE; } - if (Str__eq_wide_string(data, L"textliterals")) { + if (Str__eq_wide_string(data, U"textliterals")) { WRITE("register_tangled_text_literals();\n"); return TRUE; } @@ -42789,7 +42976,7 @@ void InCSupport__additional_predeclarations(programming_language *self, text_str LOOP_OVER(ntv, nonterminal_variable) WRITE("%S %S = %s;\n", ntv->ntv_type, ntv->ntv_identifier, - (Str__eq_wide_string(ntv->ntv_type, L"int"))?"0":"NULL"); + (Str__eq_wide_string(ntv->ntv_type, U"int"))?"0":"NULL"); WRITE("void register_tangled_nonterminals(void);\n"); @@ -42810,13 +42997,13 @@ void InCSupport__gnabehs(programming_language *self, text_stream *OUT, web *W) { preform_nonterminal *pnt = L->preform_nonterminal_defined; LanguageMethods__insert_line_marker(OUT, W->main_language, L); if (pnt->as_function) { - WRITE("\tINTERNAL_NONTERMINAL(L\"%S\", %S, %d, %d);\n", + WRITE("\tINTERNAL_NONTERMINAL(U\"%S\", %S, %d, %d);\n", pnt->nt_name, pnt->as_C_identifier, pnt->min_word_count, pnt->max_word_count); WRITE("\t%S->voracious = %d;\n", pnt->as_C_identifier, pnt->voracious); } else { - WRITE("\tREGISTER_NONTERMINAL(L\"%S\", %S);\n", + WRITE("\tREGISTER_NONTERMINAL(U\"%S\", %S);\n", pnt->nt_name, pnt->as_C_identifier); } } @@ -42824,7 +43011,7 @@ void InCSupport__gnabehs(programming_language *self, text_stream *OUT, web *W) { WRITE("void register_tangled_text_literals(void) {\n"); INDENT; text_literal *tl; LOOP_OVER(tl, text_literal) - WRITE("%S = Str__literal(L\"%S\");\n", tl->tl_identifier, tl->tl_content); + WRITE("%S = Str__literal(U\"%S\");\n", tl->tl_identifier, tl->tl_content); OUTDENT; WRITE("}\n"); } @@ -42868,7 +43055,7 @@ void InCSupport__insert_in_tangle(programming_language *self, text_stream *OUT, { #line 613 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, formula, L"{ *(%c*?) *} *(%c*)")) { + if (Regexp__match(&mr, formula, U"{ *(%c*?) *} *(%c*)")) { TEMPORARY_TEXT(rewritten) WRITE_TO(rewritten, "=="); WRITE_TO(rewritten, "> { %S }", mr.exp[0]); @@ -42876,7 +43063,7 @@ void InCSupport__insert_in_tangle(programming_language *self, text_stream *OUT, InCSupport__expand_formula(OUT, AL, pnt, mr.exp[1], TRUE); DISCARD_TEXT(rewritten) } else { - if (!Regexp__match(&mr, formula, L"@<%c*")) { + if (!Regexp__match(&mr, formula, U"@<%c*")) { if (pnt->takes_pointer_result) WRITE("*XP = "); else WRITE("*X = "); } @@ -42924,9 +43111,9 @@ void InCSupport__expand_formula(text_stream *OUT, source_line *AL, preform_nonte for (int i=0; i < Str__len(formula); i++) { if ((Str__get_at(formula, i) == 'W') && (Str__get_at(formula, i+1) == 'R') && (Str__get_at(formula, i+2) == '[') && - (isdigit(Str__get_at(formula, i+3))) && (Str__get_at(formula, i+4) == ']')) { + (Characters__isdigit(Str__get_at(formula, i+3))) && (Str__get_at(formula, i+4) == ']')) { if (pnt == NULL) { - Main__error_in_web(TL_IS_2875, AL); + Main__error_in_web(TL_IS_2883, AL); if (AL == NULL) WRITE_TO(STDERR, "%S\n", formula); } else { WRITE_TO(expanded, @@ -42955,7 +43142,8 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no { #line 703 "inweb/Chapter 4/InC Support.w" if ((i > 0) && (Str__get_at(original, i) == ':') && (Str__get_at(original, i+1) == ':') && - (isalpha(Str__get_at(original, i+2))) && (isalnum(Str__get_at(original, i-1)))) { + (Characters__isalpha(Str__get_at(original, i+2))) && + (Characters__isalnum(Str__get_at(original, i-1)))) { WRITE("__"); i++; continue; } @@ -42965,7 +43153,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no ; { -#line 715 "inweb/Chapter 4/InC Support.w" +#line 716 "inweb/Chapter 4/InC Support.w" if ((Str__get_at(original, i) == '=') && (Str__get_at(original, i+1) == '=') && (Str__get_at(original, i+2) == '>') && @@ -42975,12 +43163,12 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no text_stream *clause[MAX_PREFORM_RESULT_CLAUSES]; { -#line 738 "inweb/Chapter 4/InC Support.w" +#line 739 "inweb/Chapter 4/InC Support.w" clauses = 1; clause[0] = Str__new(); int bl = 0; for (int j = i+5; j < Str__len(original); j++) { - wchar_t c = Str__get_at(original, j); + inchar32_t c = Str__get_at(original, j); if ((c == ',') && (bl == 0)) { if (clauses >= MAX_PREFORM_RESULT_CLAUSES) err = TRUE; else { clause[clauses] = Str__new(); clauses++; } @@ -42999,31 +43187,31 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no for (int c=0; c> = *(%c*)")) { + if (Regexp__match(&mr, clause[c], U"<<(%P+)>> = *(%c*)")) { text_stream *putative = mr.exp[0]; text_stream *pv_identifier = InCSupport__nonterminal_variable_identifier(putative); @@ -43079,15 +43267,15 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no } } } - if (Str__ne(extra, TL_IS_2884)) { + if (Str__ne(extra, TL_IS_2892)) { InCSupport__expand_formula(OUT, AL, pnt, extra, FALSE); } } -#line 726 "inweb/Chapter 4/InC Support.w" +#line 727 "inweb/Chapter 4/InC Support.w" ; if (err) { - Main__error_in_web(TL_IS_2876, AL); + Main__error_in_web(TL_IS_2884, AL); if (AL == NULL) WRITE_TO(STDERR, "%S\n", original); } continue; @@ -43100,11 +43288,11 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no if (Str__get_at(original, i+1) == '<') { { -#line 850 "inweb/Chapter 4/InC Support.w" +#line 851 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); TEMPORARY_TEXT(check_this) Str__substr(check_this, Str__at(original, i), Str__end(original)); - if (Regexp__match(&mr, check_this, L"<<(%P+)>>%c*")) { + if (Regexp__match(&mr, check_this, U"<<(%P+)>>%c*")) { text_stream *putative = mr.exp[0]; text_stream *pv_identifier = InCSupport__nonterminal_variable_identifier(putative); if (pv_identifier) { @@ -43123,11 +43311,11 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no } else { { -#line 882 "inweb/Chapter 4/InC Support.w" +#line 883 "inweb/Chapter 4/InC Support.w" match_results mr = Regexp__create_mr(); TEMPORARY_TEXT(check_this) Str__substr(check_this, Str__at(original, i), Str__end(original)); - if (Regexp__match(&mr, check_this, L"(<%p+>)%c*")) { + if (Regexp__match(&mr, check_this, U"(<%p+>)%c*")) { text_stream *putative = mr.exp[0]; preform_nonterminal *pnt = InCSupport__nonterminal_by_name(putative); if (pnt) { @@ -43165,7 +43353,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no } } -#line 916 "inweb/Chapter 4/InC Support.w" +#line 917 "inweb/Chapter 4/InC Support.w" preform_nonterminal *InCSupport__nonterminal_by_name(text_stream *name) { preform_nonterminal *pnt; LOOP_OVER(pnt, preform_nonterminal) @@ -43174,10 +43362,10 @@ preform_nonterminal *InCSupport__nonterminal_by_name(text_stream *name) { return NULL; } -#line 930 "inweb/Chapter 4/InC Support.w" +#line 931 "inweb/Chapter 4/InC Support.w" text_stream *InCSupport__nonterminal_variable_identifier(text_stream *name) { - if (Str__eq_wide_string(name, L"r")) return TL_IS_2885; - if (Str__eq_wide_string(name, L"rp")) return TL_IS_2886; + if (Str__eq_wide_string(name, U"r")) return TL_IS_2893; + if (Str__eq_wide_string(name, U"rp")) return TL_IS_2894; nonterminal_variable *ntv; LOOP_OVER(ntv, nonterminal_variable) if (Str__eq(ntv->ntv_name, name)) @@ -43185,11 +43373,11 @@ text_stream *InCSupport__nonterminal_variable_identifier(text_stream *name) { return NULL; } -#line 951 "inweb/Chapter 4/InC Support.w" +#line 952 "inweb/Chapter 4/InC Support.w" void InCSupport__additional_tangling(programming_language *self, web *W, tangle_target *target) { if (NUMBER_CREATED(preform_nonterminal) > 0) { pathname *P = Reader__tangled_folder(W); - filename *Syntax = Filenames__in(P, TL_IS_2887); + filename *Syntax = Filenames__in(P, TL_IS_2895); text_stream TO_struct; text_stream *OUT = &TO_struct; @@ -43200,12 +43388,12 @@ void InCSupport__additional_tangling(programming_language *self, web *W, tangle_ WRITE("[Preform syntax generated by inweb: do not edit.]\n\n"); - if (Bibliographic__data_exists(W->md, TL_IS_2888)) - WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_2889)); + if (Bibliographic__data_exists(W->md, TL_IS_2896)) + WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_2897)); { -#line 986 "inweb/Chapter 4/InC Support.w" +#line 987 "inweb/Chapter 4/InC Support.w" chapter *C; section *S; LOOP_WITHIN_TANGLE(C, S, target) @@ -43220,7 +43408,7 @@ void InCSupport__additional_tangling(programming_language *self, web *W, tangle_ AL = AL->next_line) { WRITE("%S", AL->text_operand); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, AL->text_operand2, L"%c+Issue (%c+) problem%c+")) + if (Regexp__match(&mr, AL->text_operand2, U"%c+Issue (%c+) problem%c+")) WRITE("[issues %S]", mr.exp[0]); WRITE("\n"); Regexp__dispose_of(&mr); @@ -43228,13 +43416,13 @@ void InCSupport__additional_tangling(programming_language *self, web *W, tangle_ } } -#line 968 "inweb/Chapter 4/InC Support.w" +#line 969 "inweb/Chapter 4/InC Support.w" ; STREAM_CLOSE(OUT); } } -#line 1014 "inweb/Chapter 4/InC Support.w" +#line 1015 "inweb/Chapter 4/InC Support.w" void InCSupport__weave_grammar_index(OUTPUT_STREAM) { WRITE("\\raggedright\\tolerance=10000"); preform_nonterminal *pnt; @@ -43248,7 +43436,7 @@ void InCSupport__weave_grammar_index(OUTPUT_STREAM) { int said_something = FALSE; { -#line 1061 "inweb/Chapter 4/InC Support.w" +#line 1062 "inweb/Chapter 4/InC Support.w" section *S; LOOP_OVER(S, section) S->scratch_flag = FALSE; hash_table_entry *hte = Analyser__find_hash_entry_for_section( @@ -43274,11 +43462,11 @@ void InCSupport__weave_grammar_index(OUTPUT_STREAM) { } } -#line 1025 "inweb/Chapter 4/InC Support.w" +#line 1026 "inweb/Chapter 4/InC Support.w" ; { -#line 1036 "inweb/Chapter 4/InC Support.w" +#line 1037 "inweb/Chapter 4/InC Support.w" section *S; LOOP_OVER(S, section) S->scratch_flag = FALSE; hash_table_entry *hte = Analyser__find_hash_entry_for_section( @@ -43304,7 +43492,7 @@ void InCSupport__weave_grammar_index(OUTPUT_STREAM) { } } -#line 1026 "inweb/Chapter 4/InC Support.w" +#line 1027 "inweb/Chapter 4/InC Support.w" ; if (said_something == FALSE) WRITE("\\par\\hangindent=3em{\\it unused}\n\n"); @@ -43314,22 +43502,22 @@ void InCSupport__weave_grammar_index(OUTPUT_STREAM) { WRITE("\\hrule\\smallbreak\n"); } -#line 1090 "inweb/Chapter 4/InC Support.w" +#line 1091 "inweb/Chapter 4/InC Support.w" int skipping_internal = FALSE, preform_production_count = 0; int InCSupport__skip_in_weaving(programming_language *self, weave_order *wv, source_line *L) { if ((Preform_theme) && (wv->theme_match == Preform_theme)) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, L->text, L"}%c*")) { + if (Regexp__match(&mr, L->text, U"}%c*")) { skipping_internal = FALSE; Regexp__dispose_of(&mr); return TRUE; } if (skipping_internal) { Regexp__dispose_of(&mr); return TRUE; } - if (Regexp__match(&mr, L->text, L"<%c*?> internal%c*")) skipping_internal = TRUE; + if (Regexp__match(&mr, L->text, U"<%c*?> internal%c*")) skipping_internal = TRUE; Regexp__dispose_of(&mr); } return FALSE; } -#line 1107 "inweb/Chapter 4/InC Support.w" +#line 1108 "inweb/Chapter 4/InC Support.w" int InCSupport__weave_code_line(programming_language *self, text_stream *OUT, weave_order *wv, web *W, chapter *C, section *S, source_line *L, text_stream *matter, text_stream *concluding_comment) { @@ -43339,12 +43527,12 @@ int InCSupport__weave_code_line(programming_language *self, text_stream *OUT, return FALSE; } -#line 1121 "inweb/Chapter 4/InC Support.w" +#line 1122 "inweb/Chapter 4/InC Support.w" void InCSupport__new_tag_declared(programming_language *self, theme_tag *tag) { - if (Str__eq_wide_string(tag->tag_name, L"Preform")) Preform_theme = tag; + if (Str__eq_wide_string(tag->tag_name, U"Preform")) Preform_theme = tag; } -#line 1128 "inweb/Chapter 4/InC Support.w" +#line 1129 "inweb/Chapter 4/InC Support.w" void InCSupport__analyse_code(programming_language *self, web *W) { preform_nonterminal *pnt; LOOP_OVER(pnt, preform_nonterminal) @@ -43353,12 +43541,12 @@ void InCSupport__analyse_code(programming_language *self, web *W) { } int InCSupport__share_element(programming_language *self, text_stream *elname) { - if (Str__eq_wide_string(elname, L"word_ref1")) return TRUE; - if (Str__eq_wide_string(elname, L"word_ref2")) return TRUE; - if (Str__eq_wide_string(elname, L"next")) return TRUE; - if (Str__eq_wide_string(elname, L"down")) return TRUE; - if (Str__eq_wide_string(elname, L"allocation_id")) return TRUE; - if (Str__eq_wide_string(elname, L"method_set")) return TRUE; + if (Str__eq_wide_string(elname, U"word_ref1")) return TRUE; + if (Str__eq_wide_string(elname, U"word_ref2")) return TRUE; + if (Str__eq_wide_string(elname, U"next")) return TRUE; + if (Str__eq_wide_string(elname, U"down")) return TRUE; + if (Str__eq_wide_string(elname, U"allocation_id")) return TRUE; + if (Str__eq_wide_string(elname, U"method_set")) return TRUE; return FALSE; } @@ -43505,101 +43693,101 @@ tree_node_type *weave_maths_node_type = NULL; heterogeneous_tree *WeaveTree__new_tree(weave_order *wv) { if (weave_tree_type == NULL) { - weave_tree_type = Trees__new_type(TL_IS_2890, NULL); + weave_tree_type = Trees__new_type(TL_IS_2898, NULL); weave_document_node_type = - Trees__new_node_type(TL_IS_2891, weave_document_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2899, weave_document_node_CLASS, NULL); weave_head_node_type = - Trees__new_node_type(TL_IS_2892, weave_head_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2900, weave_head_node_CLASS, NULL); weave_body_node_type = - Trees__new_node_type(TL_IS_2893, weave_body_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2901, weave_body_node_CLASS, NULL); weave_tail_node_type = - Trees__new_node_type(TL_IS_2894, weave_tail_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2902, weave_tail_node_CLASS, NULL); weave_chapter_footer_node_type = - Trees__new_node_type(TL_IS_2895, weave_chapter_footer_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2903, weave_chapter_footer_node_CLASS, NULL); weave_chapter_header_node_type = - Trees__new_node_type(TL_IS_2896, weave_chapter_header_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2904, weave_chapter_header_node_CLASS, NULL); weave_section_footer_node_type = - Trees__new_node_type(TL_IS_2897, weave_section_footer_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2905, weave_section_footer_node_CLASS, NULL); weave_section_header_node_type = - Trees__new_node_type(TL_IS_2898, weave_section_header_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2906, weave_section_header_node_CLASS, NULL); weave_section_purpose_node_type = - Trees__new_node_type(TL_IS_2899, weave_section_purpose_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2907, weave_section_purpose_node_CLASS, NULL); weave_subheading_node_type = - Trees__new_node_type(TL_IS_2900, weave_subheading_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2908, weave_subheading_node_CLASS, NULL); weave_bar_node_type = - Trees__new_node_type(TL_IS_2901, weave_bar_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2909, weave_bar_node_CLASS, NULL); weave_pagebreak_node_type = - Trees__new_node_type(TL_IS_2902, weave_pagebreak_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2910, weave_pagebreak_node_CLASS, NULL); weave_linebreak_node_type = - Trees__new_node_type(TL_IS_2903, weave_linebreak_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2911, weave_linebreak_node_CLASS, NULL); weave_paragraph_heading_node_type = - Trees__new_node_type(TL_IS_2904, weave_paragraph_heading_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2912, weave_paragraph_heading_node_CLASS, NULL); weave_endnote_node_type = - Trees__new_node_type(TL_IS_2905, weave_endnote_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2913, weave_endnote_node_CLASS, NULL); weave_figure_node_type = - Trees__new_node_type(TL_IS_2906, weave_figure_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2914, weave_figure_node_CLASS, NULL); weave_extract_node_type = - Trees__new_node_type(TL_IS_2907, weave_extract_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2915, weave_extract_node_CLASS, NULL); weave_audio_node_type = - Trees__new_node_type(TL_IS_2908, weave_audio_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2916, weave_audio_node_CLASS, NULL); weave_video_node_type = - Trees__new_node_type(TL_IS_2909, weave_video_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2917, weave_video_node_CLASS, NULL); weave_download_node_type = - Trees__new_node_type(TL_IS_2910, weave_download_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2918, weave_download_node_CLASS, NULL); weave_material_node_type = - Trees__new_node_type(TL_IS_2911, weave_material_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2919, weave_material_node_CLASS, NULL); weave_embed_node_type = - Trees__new_node_type(TL_IS_2912, weave_embed_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2920, weave_embed_node_CLASS, NULL); weave_pmac_node_type = - Trees__new_node_type(TL_IS_2913, weave_pmac_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2921, weave_pmac_node_CLASS, NULL); weave_vskip_node_type = - Trees__new_node_type(TL_IS_2914, weave_vskip_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2922, weave_vskip_node_CLASS, NULL); weave_chapter_node_type = - Trees__new_node_type(TL_IS_2915, weave_chapter_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2923, weave_chapter_node_CLASS, NULL); weave_section_node_type = - Trees__new_node_type(TL_IS_2916, weave_section_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2924, weave_section_node_CLASS, NULL); weave_code_line_node_type = - Trees__new_node_type(TL_IS_2917, weave_code_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2925, weave_code_line_node_CLASS, NULL); weave_function_usage_node_type = - Trees__new_node_type(TL_IS_2918, weave_function_usage_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2926, weave_function_usage_node_CLASS, NULL); weave_commentary_node_type = - Trees__new_node_type(TL_IS_2919, weave_commentary_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2927, weave_commentary_node_CLASS, NULL); weave_carousel_slide_node_type = - Trees__new_node_type(TL_IS_2920, weave_carousel_slide_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2928, weave_carousel_slide_node_CLASS, NULL); weave_toc_node_type = - Trees__new_node_type(TL_IS_2921, weave_toc_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2929, weave_toc_node_CLASS, NULL); weave_toc_line_node_type = - Trees__new_node_type(TL_IS_2922, weave_toc_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2930, weave_toc_line_node_CLASS, NULL); weave_chapter_title_page_node_type = - Trees__new_node_type(TL_IS_2923, weave_chapter_title_page_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2931, weave_chapter_title_page_node_CLASS, NULL); weave_defn_node_type = - Trees__new_node_type(TL_IS_2924, weave_defn_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2932, weave_defn_node_CLASS, NULL); weave_source_code_node_type = - Trees__new_node_type(TL_IS_2925, weave_source_code_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2933, weave_source_code_node_CLASS, NULL); weave_url_node_type = - Trees__new_node_type(TL_IS_2926, weave_url_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2934, weave_url_node_CLASS, NULL); weave_footnote_cue_node_type = - Trees__new_node_type(TL_IS_2927, weave_footnote_cue_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2935, weave_footnote_cue_node_CLASS, NULL); weave_begin_footnote_text_node_type = - Trees__new_node_type(TL_IS_2928, weave_begin_footnote_text_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2936, weave_begin_footnote_text_node_CLASS, NULL); weave_display_line_node_type = - Trees__new_node_type(TL_IS_2929, weave_display_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2937, weave_display_line_node_CLASS, NULL); weave_function_defn_node_type = - Trees__new_node_type(TL_IS_2930, weave_function_defn_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2938, weave_function_defn_node_CLASS, NULL); weave_item_node_type = - Trees__new_node_type(TL_IS_2931, weave_item_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2939, weave_item_node_CLASS, NULL); weave_grammar_index_node_type = - Trees__new_node_type(TL_IS_2932, weave_grammar_index_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2940, weave_grammar_index_node_CLASS, NULL); weave_inline_node_type = - Trees__new_node_type(TL_IS_2933, weave_inline_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2941, weave_inline_node_CLASS, NULL); weave_locale_node_type = - Trees__new_node_type(TL_IS_2934, weave_locale_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2942, weave_locale_node_CLASS, NULL); weave_maths_node_type = - Trees__new_node_type(TL_IS_2935, weave_maths_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2943, weave_maths_node_CLASS, NULL); weave_verbatim_node_type = - Trees__new_node_type(TL_IS_2936, weave_verbatim_node_CLASS, NULL); + Trees__new_node_type(TL_IS_2944, weave_verbatim_node_CLASS, NULL); } heterogeneous_tree *tree = Trees__new(weave_tree_type); Trees__make_root(tree, WeaveTree__document(tree, wv)); @@ -43865,7 +44053,7 @@ tree_node *WeaveTree__source_code(heterogeneous_tree *tree, if (Str__len(colouring) != Str__len(matter)) internal_error("bad source segment"); for (int i=0; iwv->pattern, template); TEMPORARY_TEXT(interior) VOID_METHOD_CALL(wf, RENDER_FOR_MTID, interior, tree); - Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_2937, interior); + Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_2945, interior); if (F) Collater__for_order(OUT, C->wv, F, into); else WRITE("%S", interior); DISCARD_TEXT(interior) @@ -44093,7 +44281,7 @@ int Formats__substitute_post_processing_data(OUTPUT_STREAM, weave_order *wv, #line 9 "inweb/Chapter 5/Plain Text Format.w" void PlainText__create(void) { - weave_format *wf = Formats__create_weave_format(TL_IS_2938, TL_IS_2939); + weave_format *wf = Formats__create_weave_format(TL_IS_2946, TL_IS_2947); METHOD_ADD(wf, RENDER_FOR_MTID, PlainText__render); } @@ -44417,7 +44605,7 @@ int PlainText__render_visit(tree_node *N, void *state, int L) { #line 9 "inweb/Chapter 5/TeX Format.w" void TeX__create(void) { - weave_format *wf = Formats__create_weave_format(TL_IS_2940, TL_IS_2941); + weave_format *wf = Formats__create_weave_format(TL_IS_2948, TL_IS_2949); METHOD_ADD(wf, RENDER_FOR_MTID, TeX__render_TeX); METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX__preform_document); } @@ -44495,7 +44683,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) { { #line 115 "inweb/Chapter 5/TeX Format.w" weave_chapter_header_node *C = RETRIEVE_POINTER_weave_chapter_header_node(N->content); - if (Str__ne(C->chap->md->ch_range, TL_IS_2942)) { + if (Str__ne(C->chap->md->ch_range, TL_IS_2950)) { TeX__general_heading(OUT, trs->wv, FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title, 3, FALSE); @@ -44569,7 +44757,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) { weave_paragraph_heading_node *C = RETRIEVE_POINTER_weave_paragraph_heading_node(N->content); TeX__general_heading(OUT, trs->wv, C->para->under_section, - C->para, TL_IS_2943, 0, FALSE); + C->para, TL_IS_2951, 0, FALSE); } #line 76 "inweb/Chapter 5/TeX Format.w" @@ -44599,7 +44787,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) { #line 172 "inweb/Chapter 5/TeX Format.w" weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content); filename *F = Filenames__in( - Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_2944), + Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_2952), C->figname); WRITE("\\pdfximage"); if (C->w >= 0) WRITE(" width %d cm{%f}\n", C->w/POINTS_PER_CM, F); @@ -45006,23 +45194,23 @@ void TeX__general_heading(text_stream *OUT, weave_order *wv, { #line 443 "inweb/Chapter 5/TeX Format.w" switch (weight) { - case 0: TeX_macro = TL_IS_2945; break; - case 1: TeX_macro = TL_IS_2946; break; - case 2: TeX_macro = TL_IS_2947; break; - default: TeX_macro = TL_IS_2948; break; + case 0: TeX_macro = TL_IS_2953; break; + case 1: TeX_macro = TL_IS_2954; break; + case 2: TeX_macro = TL_IS_2955; break; + default: TeX_macro = TL_IS_2956; break; } if (wv->theme_match) { switch (weight) { - case 0: TeX_macro = TL_IS_2949; break; - case 1: TeX_macro = TL_IS_2950; break; - case 2: TeX_macro = TL_IS_2951; break; - default: TeX_macro = TL_IS_2952; break; + case 0: TeX_macro = TL_IS_2957; break; + case 1: TeX_macro = TL_IS_2958; break; + case 2: TeX_macro = TL_IS_2959; break; + default: TeX_macro = TL_IS_2960; break; } } if (no_skip) { switch (weight) { - case 0: TeX_macro = TL_IS_2953; break; - case 1: TeX_macro = TL_IS_2954; break; + case 0: TeX_macro = TL_IS_2961; break; + case 1: TeX_macro = TL_IS_2962; break; } } @@ -45030,7 +45218,7 @@ void TeX__general_heading(text_stream *OUT, weave_order *wv, #line 402 "inweb/Chapter 5/TeX Format.w" ; - if (P_literal == NULL) P_literal = Str__new_from_wide_string(L"P"); + if (P_literal == NULL) P_literal = Str__new_from_wide_string(U"P"); text_stream *orn = (P)?(P->ornament):P_literal; text_stream *N = (P)?(P->paragraph_number):NULL; TEMPORARY_TEXT(mark) @@ -45059,7 +45247,7 @@ void TeX__general_heading(text_stream *OUT, weave_order *wv, TEMPORARY_TEXT(modified) Str__copy(modified, heading_text); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, modified, L"(%c*?): (%c*)")) { + if (Regexp__match(&mr, modified, U"(%c*?): (%c*)")) { Str__clear(modified); WRITE_TO(modified, "{\\sinchhigh %S}\\quad %S", mr.exp[0], mr.exp[1]); } @@ -45079,7 +45267,7 @@ void TeX__source_code(text_stream *OUT, weave_order *wv, text_stream *matter, text_stream *colouring, int starts) { int current_colour = PLAIN_COLOUR, colour_wanted = PLAIN_COLOUR; for (int i=0; i < Str__len(matter); i++) { - colour_wanted = Str__get_at(colouring, i); + colour_wanted = (int) Str__get_at(colouring, i); { #line 509 "inweb/Chapter 5/TeX Format.w" @@ -45200,23 +45388,23 @@ int TeX__preform_document(weave_format *self, text_stream *OUT, web *W, #line 616 "inweb/Chapter 5/TeX Format.w" TEMPORARY_TEXT(problem) match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, matter, L"Issue (%c*?) problem")) + if (Regexp__match(&mr, matter, U"Issue (%c*?) problem")) Str__copy(problem, mr.exp[0]); - else if (Regexp__match(&mr, matter, L"FAIL_NONTERMINAL %+")) + else if (Regexp__match(&mr, matter, U"FAIL_NONTERMINAL %+")) WRITE_TO(problem, "fail and skip"); - else if (Regexp__match(&mr, matter, L"FAIL_NONTERMINAL")) + else if (Regexp__match(&mr, matter, U"FAIL_NONTERMINAL")) WRITE_TO(problem, "fail"); preform_production_count++; WRITE_TO(matter, "|%S|", L->text_operand); - while (Regexp__match(&mr, matter, L"(%c+?)|(%c+)")) { + while (Regexp__match(&mr, matter, U"(%c+?)|(%c+)")) { Str__clear(matter); WRITE_TO(matter, "%S___stroke___%S", mr.exp[0], mr.exp[1]); } - while (Regexp__match(&mr, matter, L"(%c*?)___stroke___(%c*)")) { + while (Regexp__match(&mr, matter, U"(%c*?)___stroke___(%c*)")) { Str__clear(matter); WRITE_TO(matter, "%S|\\||%S", mr.exp[0], mr.exp[1]); } - while (Regexp__match(&mr, matter, L"(%c*)<(%c*?)>(%c*)")) { + while (Regexp__match(&mr, matter, U"(%c*)<(%c*?)>(%c*)")) { Str__clear(matter); WRITE_TO(matter, "%S|\\nonterminal{%S}|%S", mr.exp[0], mr.exp[1], mr.exp[2]); @@ -45259,7 +45447,7 @@ void HTMLFormat__create(void) { { #line 15 "inweb/Chapter 5/HTML Formats.w" - weave_format *wf = Formats__create_weave_format(TL_IS_2955, TL_IS_2956); + weave_format *wf = Formats__create_weave_format(TL_IS_2963, TL_IS_2964); METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render); } @@ -45268,7 +45456,7 @@ void HTMLFormat__create(void) { { #line 19 "inweb/Chapter 5/HTML Formats.w" - weave_format *wf = Formats__create_weave_format(TL_IS_2957, TL_IS_2958); + weave_format *wf = Formats__create_weave_format(TL_IS_2965, TL_IS_2966); METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render_EPUB); METHOD_ADD(wf, BEGIN_WEAVING_FOR_MTID, HTMLFormat__begin_weaving_EPUB); METHOD_ADD(wf, END_WEAVING_FOR_MTID, HTMLFormat__end_weaving_EPUB); @@ -45292,10 +45480,10 @@ HTML_render_state HTMLFormat__initial_state(text_stream *OUT, weave_order *wv, hrs.carousel_number = 1; hrs.slide_number = -1; hrs.slide_of = -1; - hrs.copy_rule = Assets__new_rule(NULL, TL_IS_2959, TL_IS_2960, NULL); + hrs.copy_rule = Assets__new_rule(NULL, TL_IS_2967, TL_IS_2968, NULL); - Swarm__ensure_plugin(wv, TL_IS_2961); - hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_2962, TL_IS_2963); + Swarm__ensure_plugin(wv, TL_IS_2969); + hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_2970, TL_IS_2971); return hrs; } @@ -45312,7 +45500,7 @@ void HTMLFormat__render_EPUB(weave_format *self, text_stream *OUT, heterogeneous HTML__declare_as_HTML(OUT, TRUE); HTML_render_state hrs = HTMLFormat__initial_state(OUT, C->wv, TRUE, C->wv->weave_to); Trees__traverse_from(tree->root, &HTMLFormat__render_visit, (void *) &hrs, 0); - Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_2964); + Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_2972); HTML__completed(OUT); } @@ -45369,16 +45557,16 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { if (hrs->EPUB_flag == FALSE) { weave_section_header_node *C = RETRIEVE_POINTER_weave_section_header_node(N->content); - Swarm__ensure_plugin(hrs->wv, TL_IS_2965); + Swarm__ensure_plugin(hrs->wv, TL_IS_2973); HTML_OPEN_WITH("div", "class=\"breadcrumbs\""); HTML_OPEN_WITH("ul", "class=\"crumbs\""); Colonies__drop_initial_breadcrumbs(OUT, hrs->wv->weave_to, hrs->wv->breadcrumbs); - text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2966); - if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2967)) > 0) - bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2968); + text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2974); + if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2975)) > 0) + bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_2976); if (hrs->wv->self_contained == FALSE) { - Colonies__write_breadcrumb(OUT, bct, TL_IS_2969); + Colonies__write_breadcrumb(OUT, bct, TL_IS_2977); if (hrs->wv->weave_web->md->chaptered) { TEMPORARY_TEXT(chapter_link) WRITE_TO(chapter_link, "index.html#%s%S", @@ -45441,7 +45629,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { chapter *Ch; LOOP_OVER_LINKED_LIST(Ch, chapter, hrs->wv->weave_web->chapters) { if (Ch->md->imported == FALSE) { - if (Str__ne(Ch->md->ch_range, TL_IS_2970)) { + if (Str__ne(Ch->md->ch_range, TL_IS_2978)) { if (Ch == C->sect->owning_chapter) { HTML_OPEN_WITH("li", "class=\"progresscurrentchapter\""); } else { @@ -45472,7 +45660,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { else if (on) PUT_TO(label, Str__get(pos)); } if (Str__eq(Bibliographic__get_datum(hrs->wv->weave_web->md, - TL_IS_2971), TL_IS_2972)) + TL_IS_2979), TL_IS_2980)) Str__delete_first_character(label); if (S == C->sect) { HTML_OPEN_WITH("li", "class=\"progresscurrent\""); @@ -45599,7 +45787,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #line 318 "inweb/Chapter 5/HTML Formats.w" weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content); filename *F = Filenames__in( - Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2973), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2981), C->figname); filename *RF = Filenames__from_text(C->figname); HTML_OPEN_WITH("p", "class=\"center-p\""); @@ -45617,18 +45805,18 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #line 331 "inweb/Chapter 5/HTML Formats.w" weave_extract_node *C = RETRIEVE_POINTER_weave_extract_node(N->content); filename *F = Filenames__in( - Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2974), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2982), C->extract); HTML_OPEN_WITH("div", "class=\"inweb-extract\""); FILE *B = BinaryFiles__try_to_open_for_reading(F); if (B == NULL) { - Main__error_in_web(TL_IS_2975, + Main__error_in_web(TL_IS_2983, hrs->wv->current_weave_line); } else { while (TRUE) { int c = getc(B); - if (c == EOF) break; - PUT((wchar_t) c); + if (c == EOF) break; + PUT((inchar32_t) c); } BinaryFiles__close(B); } @@ -45643,7 +45831,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #line 352 "inweb/Chapter 5/HTML Formats.w" weave_audio_node *C = RETRIEVE_POINTER_weave_audio_node(N->content); filename *F = Filenames__in( - Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2976), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2984), C->audio_name); Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -45663,7 +45851,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #line 367 "inweb/Chapter 5/HTML Formats.w" weave_video_node *C = RETRIEVE_POINTER_weave_video_node(N->content); filename *F = Filenames__in( - Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2977), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2985), C->video_name); Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -45689,14 +45877,14 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 389 "inweb/Chapter 5/HTML Formats.w" weave_download_node *C = RETRIEVE_POINTER_weave_download_node(N->content); - pathname *P = Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2978); + pathname *P = Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_2986); filename *F = Filenames__in(P, C->download_name); - filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_2979, - TL_IS_2980); + filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_2987, + TL_IS_2988); if (TF == NULL) { - Main__error_in_web(TL_IS_2981, hrs->wv->current_weave_line); + Main__error_in_web(TL_IS_2989, hrs->wv->current_weave_line); } else { - Swarm__ensure_plugin(hrs->wv, TL_IS_2982); + Swarm__ensure_plugin(hrs->wv, TL_IS_2990); pathname *TOP = Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -45712,11 +45900,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { WRITE_TO(size, " ("); if (Str__len(C->filetype) > 0) WRITE_TO(size, "%S, ", C->filetype); int x = 0, y = 0; - text_stream *unit = TL_IS_2987; x = N; y = 0; - if (N > 1) { unit = TL_IS_2988; } - if (N >= 1024) { unit = TL_IS_2989; x = 10*N/1024; y = x%10; x = x/10; } - if (N >= 1024*1024) { unit = TL_IS_2990; x = 10*N/1024/1024; y = x%10; x = x/10; } - if (N >= 1024*1024*1024) { unit = TL_IS_2991; x = 10*N/1024/1024/1024; y = x%10; x = x/10; } + text_stream *unit = TL_IS_2995; x = N; y = 0; + if (N > 1) { unit = TL_IS_2996; } + if (N >= 1024) { unit = TL_IS_2997; x = 10*N/1024; y = x%10; x = x/10; } + if (N >= 1024*1024) { unit = TL_IS_2998; x = 10*N/1024/1024; y = x%10; x = x/10; } + if (N >= 1024*1024*1024) { unit = TL_IS_2999; x = 10*N/1024/1024/1024; y = x%10; x = x/10; } WRITE_TO(size, "%d", x); if (y > 0) WRITE_TO(size, ".%d", y); WRITE_TO(size, "%S", unit); @@ -45725,13 +45913,13 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { } #line 407 "inweb/Chapter 5/HTML Formats.w" - else Main__error_in_web(TL_IS_2983, + else Main__error_in_web(TL_IS_2991, hrs->wv->current_weave_line); filename *D = Filenames__from_text(C->download_name); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2984, + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2992, Filenames__get_leafname(D)); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2985, url); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2986, size); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2993, url); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2994, size); Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern, TF, hrs->into_file); WRITE("\n"); @@ -46008,20 +46196,20 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 566 "inweb/Chapter 5/HTML Formats.w" weave_embed_node *C = RETRIEVE_POINTER_weave_embed_node(N->content); - text_stream *CH = TL_IS_2992; - text_stream *CW = TL_IS_2993; + text_stream *CH = TL_IS_3000; + text_stream *CW = TL_IS_3001; if (C->w > 0) { Str__clear(CW); WRITE_TO(CW, "%d", C->w); } if (C->h > 0) { Str__clear(CH); WRITE_TO(CH, "%d", C->h); } TEMPORARY_TEXT(embed_leaf) WRITE_TO(embed_leaf, "%S.html", C->service); - filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_2994, embed_leaf); + filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_3002, embed_leaf); DISCARD_TEXT(embed_leaf) if (F == NULL) { - Main__error_in_web(TL_IS_2995, hrs->wv->current_weave_line); + Main__error_in_web(TL_IS_3003, hrs->wv->current_weave_line); } else { - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2996, C->ID); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2997, CW); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_2998, CH); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_3004, C->ID); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_3005, CW); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_3006, CH); HTML_OPEN_WITH("p", "class=\"center-p\""); Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern, F, hrs->into_file); @@ -46041,7 +46229,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { if (C->defn == FALSE) { TEMPORARY_TEXT(url) Colonies__paragraph_URL(url, P, hrs->wv->weave_to); - HTML__begin_link_with_class(OUT, TL_IS_2999, url); + HTML__begin_link_with_class(OUT, TL_IS_3007, url); DISCARD_TEXT(url) } HTML_OPEN_WITH("span", "class=\"%s\"", @@ -46101,7 +46289,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 626 "inweb/Chapter 5/HTML Formats.w" weave_function_usage_node *C = RETRIEVE_POINTER_weave_function_usage_node(N->content); - HTML__begin_link_with_class(OUT, TL_IS_3000, C->url); + HTML__begin_link_with_class(OUT, TL_IS_3008, C->url); HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours); WRITE("%S", C->fn->function_name); HTMLFormat__change_colour(OUT, -1, hrs->colours); @@ -46139,17 +46327,17 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 654 "inweb/Chapter 5/HTML Formats.w" weave_carousel_slide_node *C = RETRIEVE_POINTER_weave_carousel_slide_node(N->content); - Swarm__ensure_plugin(hrs->wv, TL_IS_3001); + Swarm__ensure_plugin(hrs->wv, TL_IS_3009); TEMPORARY_TEXT(carousel_id) TEMPORARY_TEXT(carousel_dots_id) text_stream *caption_class = NULL; - text_stream *slide_count_class = TL_IS_3002; + text_stream *slide_count_class = TL_IS_3010; switch (C->caption_command) { - case CAROUSEL_CMD: caption_class = TL_IS_3003; break; - case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_3004; - slide_count_class = TL_IS_3005; break; - case CAROUSEL_BELOW_CMD: caption_class = TL_IS_3006; - slide_count_class = TL_IS_3007; break; + case CAROUSEL_CMD: caption_class = TL_IS_3011; break; + case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_3012; + slide_count_class = TL_IS_3013; break; + case CAROUSEL_BELOW_CMD: caption_class = TL_IS_3014; + slide_count_class = TL_IS_3015; break; } WRITE_TO(carousel_id, "carousel-no-%d", hrs->carousel_number); WRITE_TO(carousel_dots_id, "carousel-dots-no-%d", hrs->carousel_number); @@ -46290,7 +46478,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { if (N == N->parent->child) starts = TRUE; int current_colour = -1, colour_wanted = PLAIN_COLOUR; for (int i=0; i < Str__len(C->matter); i++) { - colour_wanted = Str__get_at(C->colouring, i); + colour_wanted = (int) Str__get_at(C->colouring, i); if (colour_wanted != current_colour) { if (current_colour >= 0) HTML_CLOSE("span"); HTMLFormat__change_colour(OUT, colour_wanted, hrs->colours); @@ -46310,7 +46498,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 780 "inweb/Chapter 5/HTML Formats.w" weave_url_node *C = RETRIEVE_POINTER_weave_url_node(N->content); - HTML__begin_link_with_class(OUT, (C->external)?TL_IS_3008:TL_IS_3009, C->url); + HTML__begin_link_with_class(OUT, (C->external)?TL_IS_3016:TL_IS_3017, C->url); WRITE("%S", C->content); HTML__end_link(OUT); @@ -46390,7 +46578,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { weave_function_defn_node *C = RETRIEVE_POINTER_weave_function_defn_node(N->content); if ((Functions__used_elsewhere(C->fn)) && (hrs->EPUB_flag == FALSE)) { - Swarm__ensure_plugin(hrs->wv, TL_IS_3010); + Swarm__ensure_plugin(hrs->wv, TL_IS_3018); HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours); WRITE("%S", C->fn->function_name); WRITE(""); @@ -46432,7 +46620,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 861 "inweb/Chapter 5/HTML Formats.w" weave_item_node *C = RETRIEVE_POINTER_weave_item_node(N->content); - if (Str__eq(C->label, TL_IS_3011)) WRITE("● "); + if (Str__eq(C->label, TL_IS_3019)) WRITE("● "); else if (Str__len(C->label) > 0) WRITE("(%S) ", C->label); else WRITE(" "); @@ -46541,7 +46729,7 @@ void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_dept void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) { TEMPORARY_TEXT(TEMP) Colonies__paragraph_anchor(TEMP, P); - HTML__anchor_with_class(OUT, TEMP, TL_IS_3012); + HTML__anchor_with_class(OUT, TEMP, TL_IS_3020); DISCARD_TEXT(TEMP) if (P->invisible == FALSE) { HTML_OPEN("b"); @@ -46589,11 +46777,11 @@ void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) { #line 1000 "inweb/Chapter 5/HTML Formats.w" int HTMLFormat__begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *pattern) { TEMPORARY_TEXT(T) - WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_3013)); + WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_3021)); W->as_ebook = Epub__new(T, "P"); - filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_3014, TL_IS_3015); + filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_3022, TL_IS_3023); Epub__use_CSS_throughout(W->as_ebook, CSS); - Epub__attach_metadata(W->as_ebook, L"identifier", T); + Epub__attach_metadata(W->as_ebook, U"identifier", T); DISCARD_TEXT(T) pathname *P = Reader__woven_folder(W); @@ -46608,7 +46796,7 @@ void HTMLFormat__end_weaving_EPUB(weave_format *wf, web *W, weave_pattern *patte #line 9 "inweb/Chapter 5/Debugging Format.w" void Debugging__create(void) { - weave_format *wf = Formats__create_weave_format(TL_IS_3016, TL_IS_3017); + weave_format *wf = Formats__create_weave_format(TL_IS_3024, TL_IS_3025); METHOD_ADD(wf, RENDER_FOR_MTID, Debugging__render); } @@ -47082,7 +47270,7 @@ tex_results *TeXUtilities__new_results(weave_order *wv, filename *CF) { res->tex_error_count = 0; res->page_count = 0; res->pdf_size = 0; - res->PDF_filename = Filenames__set_extension(CF, TL_IS_3018); + res->PDF_filename = Filenames__set_extension(CF, TL_IS_3026); return res; } @@ -47100,11 +47288,11 @@ void TeXUtilities__scan_console_line(text_stream *line, text_file_position *tfp, tex_results *res = (tex_results *) res_V; match_results mr = Regexp__create_mr(); if (Regexp__match(&mr, line, - L"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) { + U"Output written %c*? %((%d+) page%c*?(%d+) bytes%).")) { res->page_count = Str__atoi(mr.exp[0], 0); res->pdf_size = Str__atoi(mr.exp[1], 0); } - if (Regexp__match(&mr, line, L"%c+verfull \\hbox%c+")) + if (Regexp__match(&mr, line, U"%c+verfull \\hbox%c+")) res->overfull_hbox_count++; else if (Str__get_first_char(line) == '!') { res->tex_error_count++; @@ -47130,13 +47318,13 @@ int TeXUtilities__substitute_post_processing_data(text_stream *to, weave_order * if (wv) { tex_results *res = wv->post_processing_results; if (res) { - if (Str__eq_wide_string(detail, L"PDF Size")) { + if (Str__eq_wide_string(detail, U"PDF Size")) { WRITE_TO(to, "%dKB", res->pdf_size/1024); - } else if (Str__eq_wide_string(detail, L"Extent")) { + } else if (Str__eq_wide_string(detail, U"Extent")) { WRITE_TO(to, "%dpp", res->page_count); - } else if (Str__eq_wide_string(detail, L"Leafname")) { + } else if (Str__eq_wide_string(detail, U"Leafname")) { Str__copy(to, Filenames__get_leafname(res->PDF_filename)); - } else if (Str__eq_wide_string(detail, L"Errors")) { + } else if (Str__eq_wide_string(detail, U"Errors")) { Str__clear(to); if ((res->overfull_hbox_count > 0) || (res->tex_error_count > 0)) WRITE_TO(to, ": "); @@ -47177,7 +47365,7 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int int bl = 1; int j = i-1; for (; j >= from; j--) { - wchar_t c = Str__get_at(text, j); + inchar32_t c = Str__get_at(text, j); if (c == '{') { bl--; if (bl == 0) break; @@ -47190,7 +47378,7 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int WRITE(") / ("); j=i+6; bl = 1; for (; j <= to; j++) { - wchar_t c = Str__get_at(text, j); + inchar32_t c = Str__get_at(text, j); if (c == '}') { bl--; if (bl == 0) break; @@ -47247,7 +47435,7 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int } int j=i+6, bl = 1; for (; j <= to; j++) { - wchar_t c = Str__get_at(text, j); + inchar32_t c = Str__get_at(text, j); if (c == '}') { bl--; if (bl == 0) break; @@ -47278,7 +47466,7 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int i++; while ((i < Str__len(text)) && (Characters__isalpha(Str__get_at(text, i)))) PUT_TO(macro, Str__get_at(text, i++)); - if (Str__eq(macro, TL_IS_3019)) + if (Str__eq(macro, TL_IS_3027)) { #line 364 "inweb/Chapter 5/TeX Utilities.w" if (Str__get_at(text, i) == '\\') { @@ -47286,8 +47474,8 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int i++; while ((i < Str__len(text)) && (Characters__isalpha(Str__get_at(text, i)))) PUT_TO(macro, Str__get_at(text, i++)); - if (Str__eq(macro, TL_IS_3115)) PUT((wchar_t) 0x2204); - else if (Str__eq(macro, TL_IS_3116)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); } + if (Str__eq(macro, TL_IS_3123)) PUT((inchar32_t) 0x2204); + else if (Str__eq(macro, TL_IS_3124)) { PUT((inchar32_t) 0x00AC); PUT((inchar32_t) 0x2200); } else { PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro); } @@ -47301,110 +47489,110 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int else { #line 251 "inweb/Chapter 5/TeX Utilities.w" - if (Str__eq(macro, TL_IS_3020)) WRITE("<="); - else if (Str__eq(macro, TL_IS_3021)) WRITE(">="); - else if (Str__eq(macro, TL_IS_3022)) WRITE("~"); - else if (Str__eq(macro, TL_IS_3023)) WRITE(""); - else if (Str__eq(macro, TL_IS_3024)) WRITE(""); - else if (Str__eq(macro, TL_IS_3025)) WRITE(""); - else if (Str__eq(macro, TL_IS_3026)) WRITE("=>"); - else if (Str__eq(macro, TL_IS_3027)) WRITE("<=>"); - else if (Str__eq(macro, TL_IS_3028)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_3029)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_3030)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_3031)) WRITE("<--"); - else if (Str__eq(macro, TL_IS_3032)) WRITE("<--"); - else if (Str__eq(macro, TL_IS_3033)) WRITE("{"); - else if (Str__eq(macro, TL_IS_3034)) WRITE("|"); - else if (Str__eq(macro, TL_IS_3035)) WRITE("}"); - else if (Str__eq(macro, TL_IS_3036)) WRITE("."); - else if (Str__eq(macro, TL_IS_3037)) WRITE("..."); - else if (Str__eq(macro, TL_IS_3038)) WRITE("..."); - else if (Str__eq(macro, TL_IS_3039)) WRITE("*"); - else if (Str__eq(macro, TL_IS_3040)) WRITE(" "); - else if (Str__eq(macro, TL_IS_3041)) WRITE(" "); - else if (Str__eq(macro, TL_IS_3042)) WRITE("TeX"); - else if (Str__eq(macro, TL_IS_3043)) WRITE("!="); - else if (Str__eq(macro, TL_IS_3044)) WRITE("!="); - else if (Str__eq(macro, TL_IS_3045)) WRITE("l"); - else if (Str__eq(macro, TL_IS_3046)) WRITE("log"); - else if (Str__eq(macro, TL_IS_3047)) WRITE("exp"); - else if (Str__eq(macro, TL_IS_3048)) WRITE("sin"); - else if (Str__eq(macro, TL_IS_3049)) WRITE("cos"); - else if (Str__eq(macro, TL_IS_3050)) WRITE("tan"); - else if (Str__eq(macro, TL_IS_3051)) WRITE("T"); - else if (Str__eq(macro, TL_IS_3052)) PUT((wchar_t) 0x0391); - else if (Str__eq(macro, TL_IS_3053)) PUT((wchar_t) 0x0392); - else if (Str__eq(macro, TL_IS_3054)) PUT((wchar_t) 0x0393); - else if (Str__eq(macro, TL_IS_3055)) PUT((wchar_t) 0x0394); - else if (Str__eq(macro, TL_IS_3056)) PUT((wchar_t) 0x0395); - else if (Str__eq(macro, TL_IS_3057)) PUT((wchar_t) 0x0396); - else if (Str__eq(macro, TL_IS_3058)) PUT((wchar_t) 0x0397); - else if (Str__eq(macro, TL_IS_3059)) PUT((wchar_t) 0x0398); - else if (Str__eq(macro, TL_IS_3060)) PUT((wchar_t) 0x0399); - else if (Str__eq(macro, TL_IS_3061)) PUT((wchar_t) 0x039A); - else if (Str__eq(macro, TL_IS_3062)) PUT((wchar_t) 0x039B); - else if (Str__eq(macro, TL_IS_3063)) PUT((wchar_t) 0x039C); - else if (Str__eq(macro, TL_IS_3064)) PUT((wchar_t) 0x039D); - else if (Str__eq(macro, TL_IS_3065)) PUT((wchar_t) 0x039E); - else if (Str__eq(macro, TL_IS_3066)) PUT((wchar_t) 0x039F); - else if (Str__eq(macro, TL_IS_3067)) PUT((wchar_t) 0x03A0); - else if (Str__eq(macro, TL_IS_3068)) PUT((wchar_t) 0x03A1); - else if (Str__eq(macro, TL_IS_3069)) PUT((wchar_t) 0x03A2); - else if (Str__eq(macro, TL_IS_3070)) PUT((wchar_t) 0x03A3); - else if (Str__eq(macro, TL_IS_3071)) PUT((wchar_t) 0x03A4); - else if (Str__eq(macro, TL_IS_3072)) PUT((wchar_t) 0x03A5); - else if (Str__eq(macro, TL_IS_3073)) PUT((wchar_t) 0x03A6); - else if (Str__eq(macro, TL_IS_3074)) PUT((wchar_t) 0x03A7); - else if (Str__eq(macro, TL_IS_3075)) PUT((wchar_t) 0x03A8); - else if (Str__eq(macro, TL_IS_3076)) PUT((wchar_t) 0x03A9); - else if (Str__eq(macro, TL_IS_3077)) PUT((wchar_t) 0x03B1); - else if (Str__eq(macro, TL_IS_3078)) PUT((wchar_t) 0x03B2); - else if (Str__eq(macro, TL_IS_3079)) PUT((wchar_t) 0x03B3); - else if (Str__eq(macro, TL_IS_3080)) PUT((wchar_t) 0x03B4); - else if (Str__eq(macro, TL_IS_3081)) PUT((wchar_t) 0x03B5); - else if (Str__eq(macro, TL_IS_3082)) PUT((wchar_t) 0x03B6); - else if (Str__eq(macro, TL_IS_3083)) PUT((wchar_t) 0x03B7); - else if (Str__eq(macro, TL_IS_3084)) PUT((wchar_t) 0x03B8); - else if (Str__eq(macro, TL_IS_3085)) PUT((wchar_t) 0x03B9); - else if (Str__eq(macro, TL_IS_3086)) PUT((wchar_t) 0x03BA); - else if (Str__eq(macro, TL_IS_3087)) PUT((wchar_t) 0x03BB); - else if (Str__eq(macro, TL_IS_3088)) PUT((wchar_t) 0x03BC); - else if (Str__eq(macro, TL_IS_3089)) PUT((wchar_t) 0x03BD); - else if (Str__eq(macro, TL_IS_3090)) PUT((wchar_t) 0x03BE); - else if (Str__eq(macro, TL_IS_3091)) PUT((wchar_t) 0x03BF); - else if (Str__eq(macro, TL_IS_3092)) PUT((wchar_t) 0x03C0); - else if (Str__eq(macro, TL_IS_3093)) PUT((wchar_t) 0x03C1); - else if (Str__eq(macro, TL_IS_3094)) PUT((wchar_t) 0x03C2); - else if (Str__eq(macro, TL_IS_3095)) PUT((wchar_t) 0x03C3); - else if (Str__eq(macro, TL_IS_3096)) PUT((wchar_t) 0x03C4); - else if (Str__eq(macro, TL_IS_3097)) PUT((wchar_t) 0x03C5); - else if (Str__eq(macro, TL_IS_3098)) PUT((wchar_t) 0x03C6); - else if (Str__eq(macro, TL_IS_3099)) PUT((wchar_t) 0x03C7); - else if (Str__eq(macro, TL_IS_3100)) PUT((wchar_t) 0x03C8); - else if (Str__eq(macro, TL_IS_3101)) PUT((wchar_t) 0x03C9); - else if (Str__eq(macro, TL_IS_3102)) PUT((wchar_t) 0x2203); - else if (Str__eq(macro, TL_IS_3103)) PUT((wchar_t) 0x2208); - else if (Str__eq(macro, TL_IS_3104)) PUT((wchar_t) 0x2200); - else if (Str__eq(macro, TL_IS_3105)) PUT((wchar_t) 0x2229); - else if (Str__eq(macro, TL_IS_3106)) PUT((wchar_t) 0x2205); - else if (Str__eq(macro, TL_IS_3107)) PUT((wchar_t) 0x2286); - else if (Str__eq(macro, TL_IS_3108)) PUT((wchar_t) 0x2227); - else if (Str__eq(macro, TL_IS_3109)) PUT((wchar_t) 0x2228); - else if (Str__eq(macro, TL_IS_3110)) PUT((wchar_t) 0x00AC); - else if (Str__eq(macro, TL_IS_3111)) PUT((wchar_t) 0x03A3); - else if (Str__eq(macro, TL_IS_3112)) PUT((wchar_t) 0x03A0); + if (Str__eq(macro, TL_IS_3028)) WRITE("<="); + else if (Str__eq(macro, TL_IS_3029)) WRITE(">="); + else if (Str__eq(macro, TL_IS_3030)) WRITE("~"); + else if (Str__eq(macro, TL_IS_3031)) WRITE(""); + else if (Str__eq(macro, TL_IS_3032)) WRITE(""); + else if (Str__eq(macro, TL_IS_3033)) WRITE(""); + else if (Str__eq(macro, TL_IS_3034)) WRITE("=>"); + else if (Str__eq(macro, TL_IS_3035)) WRITE("<=>"); + else if (Str__eq(macro, TL_IS_3036)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_3037)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_3038)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_3039)) WRITE("<--"); + else if (Str__eq(macro, TL_IS_3040)) WRITE("<--"); + else if (Str__eq(macro, TL_IS_3041)) WRITE("{"); + else if (Str__eq(macro, TL_IS_3042)) WRITE("|"); + else if (Str__eq(macro, TL_IS_3043)) WRITE("}"); + else if (Str__eq(macro, TL_IS_3044)) WRITE("."); + else if (Str__eq(macro, TL_IS_3045)) WRITE("..."); + else if (Str__eq(macro, TL_IS_3046)) WRITE("..."); + else if (Str__eq(macro, TL_IS_3047)) WRITE("*"); + else if (Str__eq(macro, TL_IS_3048)) WRITE(" "); + else if (Str__eq(macro, TL_IS_3049)) WRITE(" "); + else if (Str__eq(macro, TL_IS_3050)) WRITE("TeX"); + else if (Str__eq(macro, TL_IS_3051)) WRITE("!="); + else if (Str__eq(macro, TL_IS_3052)) WRITE("!="); + else if (Str__eq(macro, TL_IS_3053)) WRITE("l"); + else if (Str__eq(macro, TL_IS_3054)) WRITE("log"); + else if (Str__eq(macro, TL_IS_3055)) WRITE("exp"); + else if (Str__eq(macro, TL_IS_3056)) WRITE("sin"); + else if (Str__eq(macro, TL_IS_3057)) WRITE("cos"); + else if (Str__eq(macro, TL_IS_3058)) WRITE("tan"); + else if (Str__eq(macro, TL_IS_3059)) WRITE("T"); + else if (Str__eq(macro, TL_IS_3060)) PUT((inchar32_t) 0x0391); + else if (Str__eq(macro, TL_IS_3061)) PUT((inchar32_t) 0x0392); + else if (Str__eq(macro, TL_IS_3062)) PUT((inchar32_t) 0x0393); + else if (Str__eq(macro, TL_IS_3063)) PUT((inchar32_t) 0x0394); + else if (Str__eq(macro, TL_IS_3064)) PUT((inchar32_t) 0x0395); + else if (Str__eq(macro, TL_IS_3065)) PUT((inchar32_t) 0x0396); + else if (Str__eq(macro, TL_IS_3066)) PUT((inchar32_t) 0x0397); + else if (Str__eq(macro, TL_IS_3067)) PUT((inchar32_t) 0x0398); + else if (Str__eq(macro, TL_IS_3068)) PUT((inchar32_t) 0x0399); + else if (Str__eq(macro, TL_IS_3069)) PUT((inchar32_t) 0x039A); + else if (Str__eq(macro, TL_IS_3070)) PUT((inchar32_t) 0x039B); + else if (Str__eq(macro, TL_IS_3071)) PUT((inchar32_t) 0x039C); + else if (Str__eq(macro, TL_IS_3072)) PUT((inchar32_t) 0x039D); + else if (Str__eq(macro, TL_IS_3073)) PUT((inchar32_t) 0x039E); + else if (Str__eq(macro, TL_IS_3074)) PUT((inchar32_t) 0x039F); + else if (Str__eq(macro, TL_IS_3075)) PUT((inchar32_t) 0x03A0); + else if (Str__eq(macro, TL_IS_3076)) PUT((inchar32_t) 0x03A1); + else if (Str__eq(macro, TL_IS_3077)) PUT((inchar32_t) 0x03A2); + else if (Str__eq(macro, TL_IS_3078)) PUT((inchar32_t) 0x03A3); + else if (Str__eq(macro, TL_IS_3079)) PUT((inchar32_t) 0x03A4); + else if (Str__eq(macro, TL_IS_3080)) PUT((inchar32_t) 0x03A5); + else if (Str__eq(macro, TL_IS_3081)) PUT((inchar32_t) 0x03A6); + else if (Str__eq(macro, TL_IS_3082)) PUT((inchar32_t) 0x03A7); + else if (Str__eq(macro, TL_IS_3083)) PUT((inchar32_t) 0x03A8); + else if (Str__eq(macro, TL_IS_3084)) PUT((inchar32_t) 0x03A9); + else if (Str__eq(macro, TL_IS_3085)) PUT((inchar32_t) 0x03B1); + else if (Str__eq(macro, TL_IS_3086)) PUT((inchar32_t) 0x03B2); + else if (Str__eq(macro, TL_IS_3087)) PUT((inchar32_t) 0x03B3); + else if (Str__eq(macro, TL_IS_3088)) PUT((inchar32_t) 0x03B4); + else if (Str__eq(macro, TL_IS_3089)) PUT((inchar32_t) 0x03B5); + else if (Str__eq(macro, TL_IS_3090)) PUT((inchar32_t) 0x03B6); + else if (Str__eq(macro, TL_IS_3091)) PUT((inchar32_t) 0x03B7); + else if (Str__eq(macro, TL_IS_3092)) PUT((inchar32_t) 0x03B8); + else if (Str__eq(macro, TL_IS_3093)) PUT((inchar32_t) 0x03B9); + else if (Str__eq(macro, TL_IS_3094)) PUT((inchar32_t) 0x03BA); + else if (Str__eq(macro, TL_IS_3095)) PUT((inchar32_t) 0x03BB); + else if (Str__eq(macro, TL_IS_3096)) PUT((inchar32_t) 0x03BC); + else if (Str__eq(macro, TL_IS_3097)) PUT((inchar32_t) 0x03BD); + else if (Str__eq(macro, TL_IS_3098)) PUT((inchar32_t) 0x03BE); + else if (Str__eq(macro, TL_IS_3099)) PUT((inchar32_t) 0x03BF); + else if (Str__eq(macro, TL_IS_3100)) PUT((inchar32_t) 0x03C0); + else if (Str__eq(macro, TL_IS_3101)) PUT((inchar32_t) 0x03C1); + else if (Str__eq(macro, TL_IS_3102)) PUT((inchar32_t) 0x03C2); + else if (Str__eq(macro, TL_IS_3103)) PUT((inchar32_t) 0x03C3); + else if (Str__eq(macro, TL_IS_3104)) PUT((inchar32_t) 0x03C4); + else if (Str__eq(macro, TL_IS_3105)) PUT((inchar32_t) 0x03C5); + else if (Str__eq(macro, TL_IS_3106)) PUT((inchar32_t) 0x03C6); + else if (Str__eq(macro, TL_IS_3107)) PUT((inchar32_t) 0x03C7); + else if (Str__eq(macro, TL_IS_3108)) PUT((inchar32_t) 0x03C8); + else if (Str__eq(macro, TL_IS_3109)) PUT((inchar32_t) 0x03C9); + else if (Str__eq(macro, TL_IS_3110)) PUT((inchar32_t) 0x2203); + else if (Str__eq(macro, TL_IS_3111)) PUT((inchar32_t) 0x2208); + else if (Str__eq(macro, TL_IS_3112)) PUT((inchar32_t) 0x2200); + else if (Str__eq(macro, TL_IS_3113)) PUT((inchar32_t) 0x2229); + else if (Str__eq(macro, TL_IS_3114)) PUT((inchar32_t) 0x2205); + else if (Str__eq(macro, TL_IS_3115)) PUT((inchar32_t) 0x2286); + else if (Str__eq(macro, TL_IS_3116)) PUT((inchar32_t) 0x2227); + else if (Str__eq(macro, TL_IS_3117)) PUT((inchar32_t) 0x2228); + else if (Str__eq(macro, TL_IS_3118)) PUT((inchar32_t) 0x00AC); + else if (Str__eq(macro, TL_IS_3119)) PUT((inchar32_t) 0x03A3); + else if (Str__eq(macro, TL_IS_3120)) PUT((inchar32_t) 0x03A0); else { if (Str__len(macro) > 0) { int suspect = TRUE; LOOP_THROUGH_TEXT(pos, macro) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if ((c >= 'A') && (c <= 'Z')) continue; if ((c >= 'a') && (c <= 'z')) continue; suspect = FALSE; } - if (Str__eq(macro, TL_IS_3113)) suspect = FALSE; - if (Str__eq(macro, TL_IS_3114)) suspect = FALSE; + if (Str__eq(macro, TL_IS_3121)) suspect = FALSE; + if (Str__eq(macro, TL_IS_3122)) suspect = FALSE; if (suspect) PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text); } @@ -47430,23 +47618,23 @@ void Makefiles__write(web *W, filename *prototype, filename *F, module_search *I text_stream *platform) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); Preprocessor__new_macro(L, - TL_IS_3117, NULL, + TL_IS_3125, NULL, Makefiles__platform_settings_expander, NULL); Preprocessor__new_macro(L, - TL_IS_3118, NULL, + TL_IS_3126, NULL, Makefiles__identity_settings_expander, NULL); preprocessor_macro *mf = Preprocessor__new_macro(L, - TL_IS_3119, TL_IS_3120, + TL_IS_3127, TL_IS_3128, Makefiles__modify_filenames_expander, NULL); Preprocessor__do_not_suppress_whitespace(mf); Preprocessor__new_macro(L, - TL_IS_3121, TL_IS_3122, + TL_IS_3129, TL_IS_3130, Makefiles__component_expander, NULL); Preprocessor__new_macro(L, - TL_IS_3123, TL_IS_3124, + TL_IS_3131, TL_IS_3132, Makefiles__dependent_files_expander, NULL); Preprocessor__new_loop_macro(L, - TL_IS_3125, TL_IS_3126, + TL_IS_3133, TL_IS_3134, Makefiles__components_expander, NULL); makefile_specifics *specifics = CREATE(makefile_specifics); @@ -47481,7 +47669,7 @@ void Makefiles__identity_settings_expander(preprocessor_macro *mm, preprocessor_ makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics); text_stream *OUT = PPS->dest; WRITE("INWEB = "); Makefiles__pathname_slashed(OUT, path_to_inweb); WRITE("/Tangled/inweb\n"); - pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_3127); + pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_3135); WRITE("INTEST = "); Makefiles__pathname_slashed(OUT, path_to_intest); WRITE("/Tangled/intest\n"); if (specifics->for_web) { WRITE("MYNAME = %S\n", Pathnames__directory_name(specifics->for_web->md->path_to_web)); @@ -47497,7 +47685,7 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor_ makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics); text_stream *INWEBPLATFORM = Str__duplicate(specifics->which_platform); if (Str__len(INWEBPLATFORM) == 0) { - filename *ps = Filenames__in(path_to_inweb, TL_IS_3128); + filename *ps = Filenames__in(path_to_inweb, TL_IS_3136); TextFiles__read(ps, FALSE, "can't open platform settings file", TRUE, Makefiles__seek_INWEBPLATFORM, NULL, INWEBPLATFORM); } @@ -47505,8 +47693,8 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor_ Errors__in_text_file( "found platform settings file, but it does not set INWEBPLATFORM", tfp); } else { - pathname *P = Pathnames__down(path_to_inweb, TL_IS_3129); - P = Pathnames__down(P, TL_IS_3130); + pathname *P = Pathnames__down(path_to_inweb, TL_IS_3137); + P = Pathnames__down(P, TL_IS_3138); WRITE_TO(INWEBPLATFORM, ".mkscript"); filename *F = Filenames__in(P, INWEBPLATFORM); TextFiles__read(F, FALSE, "can't open platform definitions file", @@ -47520,7 +47708,7 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor_ void Makefiles__seek_INWEBPLATFORM(text_stream *line, text_file_position *tfp, void *X) { text_stream *OUT = (text_stream *) X; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L" *INWEBPLATFORM = (%C+) *")) WRITE("%S", mr.exp[0]); + if (Regexp__match(&mr, line, U" *INWEBPLATFORM = (%C+) *")) WRITE("%S", mr.exp[0]); Regexp__dispose_of(&mr); } @@ -47533,10 +47721,10 @@ void Makefiles__modify_filenames_expander(preprocessor_macro *mm, preprocessor_s text_stream *suffix = parameter_values[1]; text_stream *prefix = parameter_values[2]; - wchar_t previous = 'X'; int quoted = FALSE, boundary = FALSE; + inchar32_t previous = 'X'; int quoted = FALSE, boundary = FALSE; TEMPORARY_TEXT(captured) LOOP_THROUGH_TEXT(pos, original) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == '\'') { quoted = quoted?FALSE:TRUE; } if (Characters__is_whitespace(c)) { if ((previous != '\\') && (quoted == FALSE)) boundary = TRUE; @@ -47627,7 +47815,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P text_stream *set = parameter_values[3]; text_stream *category = parameter_values[4]; - if (Str__eq(category, TL_IS_3131)) { + if (Str__eq(category, TL_IS_3139)) { int marker = MAKEFILE_TOOL_MOM; dictionary *D = specifics->tools_dictionary; @@ -47655,7 +47843,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P } #line 201 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_3132)) { + } else if (Str__eq(category, TL_IS_3140)) { int marker = MAKEFILE_WEB_MOM; dictionary *D = specifics->webs_dictionary; @@ -47683,7 +47871,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P } #line 206 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_3133)) { + } else if (Str__eq(category, TL_IS_3141)) { int marker = MAKEFILE_MODULE_MOM; dictionary *D = specifics->modules_dictionary; @@ -47720,11 +47908,11 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P #line 236 "inweb/Chapter 6/Makefiles.w" void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { - Preprocessor__set_loop_var_name(loop, TL_IS_3134); + Preprocessor__set_loop_var_name(loop, TL_IS_3142); text_stream *category = parameter_values[0]; text_stream *set = parameter_values[1]; - if (Str__len(set) == 0) set = TL_IS_3135; - if (Str__eq(category, TL_IS_3136)) { + if (Str__len(set) == 0) set = TL_IS_3143; + if (Str__eq(category, TL_IS_3144)) { int marker = MAKEFILE_TOOL_MOM; { @@ -47732,7 +47920,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_3139)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_3147)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -47741,7 +47929,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * } #line 244 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_3137)) { + } else if (Str__eq(category, TL_IS_3145)) { int marker = MAKEFILE_WEB_MOM; { @@ -47749,7 +47937,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_3139)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_3147)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -47758,7 +47946,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * } #line 247 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_3138)) { + } else if (Str__eq(category, TL_IS_3146)) { int marker = MAKEFILE_MODULE_MOM; { @@ -47766,7 +47954,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_3139)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_3147)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -47843,9 +48031,9 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) { TEMPORARY_TEXT(leaf_pattern) WRITE_TO(leaf_pattern, "%S", Pathnames__directory_name(P)); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, leaf_pattern, L"Chapter %d*")) { + if (Regexp__match(&mr, leaf_pattern, U"Chapter %d*")) { Str__clear(leaf_pattern); WRITE_TO(leaf_pattern, "Chapter*"); - } else if (Regexp__match(&mr, leaf_pattern, L"Appendix %C")) { + } else if (Regexp__match(&mr, leaf_pattern, U"Appendix %C")) { Str__clear(leaf_pattern); WRITE_TO(leaf_pattern, "Appendix*"); } Regexp__dispose_of(&mr); @@ -47857,7 +48045,7 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) { WRITE_TO(Dictionaries__create_text(patterns_done, tester), "got this"); WRITE(" "); LOOP_THROUGH_TEXT(pos, tester) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == ' ') PUT('\\'); PUT(c); } @@ -47877,9 +48065,9 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) { TEMPORARY_TEXT(leaf_pattern) WRITE_TO(leaf_pattern, "%S", Pathnames__directory_name(P)); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, leaf_pattern, L"Chapter %d*")) { + if (Regexp__match(&mr, leaf_pattern, U"Chapter %d*")) { Str__clear(leaf_pattern); WRITE_TO(leaf_pattern, "Chapter*"); - } else if (Regexp__match(&mr, leaf_pattern, L"Appendix %C")) { + } else if (Regexp__match(&mr, leaf_pattern, U"Appendix %C")) { Str__clear(leaf_pattern); WRITE_TO(leaf_pattern, "Appendix*"); } Regexp__dispose_of(&mr); @@ -47891,7 +48079,7 @@ void Makefiles__pattern(OUTPUT_STREAM, linked_list *L, filename *F) { WRITE_TO(Dictionaries__create_text(patterns_done, tester), "got this"); WRITE(" "); LOOP_THROUGH_TEXT(pos, tester) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == ' ') PUT('\\'); PUT(c); } @@ -47909,7 +48097,7 @@ void Makefiles__pathname_slashed(OUTPUT_STREAM, pathname *P) { TEMPORARY_TEXT(PT) WRITE_TO(PT, "%p", P); LOOP_THROUGH_TEXT(pos, PT) { - wchar_t c = Str__get(pos); + inchar32_t c = Str__get(pos); if (c == ' ') WRITE("\\ "); else PUT(c); } @@ -47919,7 +48107,7 @@ void Makefiles__pathname_slashed(OUTPUT_STREAM, pathname *P) { #line 8 "inweb/Chapter 6/Git Support.w" void Git__write_gitignore(web *W, filename *prototype, filename *F) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); - Preprocessor__new_macro(L, TL_IS_3140, NULL, Git__basics_expander, NULL); + Preprocessor__new_macro(L, TL_IS_3148, NULL, Git__basics_expander, NULL); text_stream *header = Str__new(); WRITE_TO(header, "# This gitignore was automatically written by inweb -gitignore\n"); WRITE_TO(header, "# and is not intended for human editing\n\n"); @@ -47930,7 +48118,7 @@ void Git__write_gitignore(web *W, filename *prototype, filename *F) { #line 22 "inweb/Chapter 6/Git Support.w" void Git__basics_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { - filename *prototype = Filenames__in(path_to_inweb_materials, TL_IS_3141); + filename *prototype = Filenames__in(path_to_inweb_materials, TL_IS_3149); TextFiles__read(prototype, FALSE, "can't open basic .gitignore file", TRUE, Preprocessor__scan_line, NULL, PPS); WRITE_TO(STDOUT, "(Read basics.giscript from inweb/"); @@ -47946,7 +48134,7 @@ void Ctags__write(web *W, filename *F) { P = Filenames__up(F); } else { P = W->md->path_to_web; - F = Filenames__in(P, TL_IS_3142); + F = Filenames__in(P, TL_IS_3150); } text_stream *OUT = &ctags_file; if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) @@ -47958,7 +48146,7 @@ void Ctags__write(web *W, filename *F) { WRITE("!_TAG_FILE_SORTED\t0\t/0=unsorted, 1=sorted, 2=foldcase/\n"); WRITE("!_TAG_PROGRAM_AUTHOR\tGraham Nelson\t/graham.nelson@mod-langs.ox.ac.uk/\n"); WRITE("!_TAG_PROGRAM_NAME\tinweb\t//\n"); - WRITE("!_TAG_PROGRAM_VERSION\t7.2.1-beta+1B48\t/built 5 September 2023/\n"); + WRITE("!_TAG_PROGRAM_VERSION\t7.2.1-beta+1B50\t/built 9 September 2023/\n"); } #line 47 "inweb/Chapter 6/Ctags Support.w" @@ -48025,7 +48213,7 @@ void Ctags__write_line_ref(OUTPUT_STREAM, source_line *L, pathname *P) { WRITE("%S\t/^", fn); DISCARD_TEXT(fn) for (int i = 0; i < Str__len(L->text); i++) { - wchar_t c = Str__get_at(L->text, i); + inchar32_t c = Str__get_at(L->text, i); switch (c) { case '/': PUT('\\'); PUT(c); break; case '^': if (i == 0) PUT('\\'); PUT(c); break; @@ -48049,7 +48237,7 @@ void Ctags__note_defined_constant(source_line *L, text_stream *name) { void Readme__write(filename *prototype, filename *F) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); preprocessor_macro *mm = Preprocessor__new_macro(L, - TL_IS_3143, TL_IS_3144, + TL_IS_3151, TL_IS_3152, Readme__bibliographic_expander, NULL); Preprocessor__do_not_suppress_whitespace(mm); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); @@ -48064,8 +48252,8 @@ void Readme__bibliographic_expander(preprocessor_macro *mm, preprocessor_state * text_stream *OUT = PPS->dest; writeme_asset *A = Readme__find_asset(asset_name); if (A->if_web) WRITE("%S", Bibliographic__get_datum(A->if_web, datum)); - else if (Str__eq(datum, TL_IS_3145)) WRITE("%S", A->date); - else if (Str__eq(datum, TL_IS_3146)) WRITE("%S", A->version); + else if (Str__eq(datum, TL_IS_3153)) WRITE("%S", A->date); + else if (Str__eq(datum, TL_IS_3154)) WRITE("%S", A->version); } #line 49 "inweb/Chapter 6/Readme Writeme.w" @@ -48073,8 +48261,8 @@ void Readme__bibliographic_expander(preprocessor_macro *mm, preprocessor_state * void Readme__write_var(text_stream *OUT, text_stream *program, text_stream *datum) { writeme_asset *A = Readme__find_asset(program); if (A->if_web) WRITE("%S", Bibliographic__get_datum(A->if_web, datum)); - else if (Str__eq(datum, TL_IS_3147)) WRITE("%S", A->date); - else if (Str__eq(datum, TL_IS_3148)) WRITE("%S", A->version); + else if (Str__eq(datum, TL_IS_3155)) WRITE("%S", A->date); + else if (Str__eq(datum, TL_IS_3156)) WRITE("%S", A->version); } #line 60 "inweb/Chapter 6/Readme Writeme.w" @@ -48090,7 +48278,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { { #line 74 "inweb/Chapter 6/Readme Writeme.w" - if (Str__ends_with_wide_string(program, L".i7x")) { + if (Str__ends_with_wide_string(program, U".i7x")) { { #line 93 "inweb/Chapter 6/Readme Writeme.w" @@ -48105,7 +48293,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { A->if_web = WebMetadata__get_without_modules(Pathnames__from_text(program), NULL); } else { filename *I6_vn = Filenames__in( - Pathnames__down(Pathnames__from_text(program), TL_IS_3149), TL_IS_3150); + Pathnames__down(Pathnames__from_text(program), TL_IS_3157), TL_IS_3158); if (TextFiles__exists(I6_vn)) { #line 97 "inweb/Chapter 6/Readme Writeme.w" @@ -48115,7 +48303,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 82 "inweb/Chapter 6/Readme Writeme.w" ; - filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3151); + filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3159); if (TextFiles__exists(template_vn)) { #line 101 "inweb/Chapter 6/Readme Writeme.w" @@ -48125,7 +48313,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 84 "inweb/Chapter 6/Readme Writeme.w" ; - filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3152); + filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3160); if (TextFiles__exists(rmt_vn)) { #line 105 "inweb/Chapter 6/Readme Writeme.w" @@ -48135,7 +48323,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 86 "inweb/Chapter 6/Readme Writeme.w" ; - rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3153); + rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_3161); if (TextFiles__exists(rmt_vn)) { #line 105 "inweb/Chapter 6/Readme Writeme.w" @@ -48159,7 +48347,7 @@ void Readme__extension_harvester(text_stream *text, text_file_position *tfp, voi writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp__create_mr(); if (Str__len(text) == 0) return; - if (Regexp__match(&mr, text, L" *Version (%c*?) of %c*begins here. *")) + if (Regexp__match(&mr, text, U" *Version (%c*?) of %c*begins here. *")) A->version = Str__duplicate(mr.exp[0]); Regexp__dispose_of(&mr); } @@ -48169,9 +48357,9 @@ void Readme__header_harvester(text_stream *text, text_file_position *tfp, void * writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp__create_mr(); if (Str__len(text) == 0) return; - if (Regexp__match(&mr, text, L"#define RELEASE_NUMBER (%c*?) *")) + if (Regexp__match(&mr, text, U"#define RELEASE_NUMBER (%c*?) *")) A->version = Str__duplicate(mr.exp[0]); - if (Regexp__match(&mr, text, L"#define RELEASE_DATE \"(%c*?)\" *")) + if (Regexp__match(&mr, text, U"#define RELEASE_DATE \"(%c*?)\" *")) A->date = Str__duplicate(mr.exp[0]); Regexp__dispose_of(&mr); } @@ -48181,7 +48369,7 @@ void Readme__template_harvester(text_stream *text, text_file_position *tfp, void writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp__create_mr(); if (Str__len(text) == 0) return; - if (Regexp__match(&mr, text, L"%[INTERPRETERVERSION%]")) { + if (Regexp__match(&mr, text, U"%[INTERPRETERVERSION%]")) { A->next_is_version = TRUE; } else if (A->next_is_version) { A->version = Str__duplicate(text); @@ -48195,8 +48383,8 @@ void Readme__readme_harvester(text_stream *text, text_file_position *tfp, void * writeme_asset *A = (writeme_asset *) state; match_results mr = Regexp__create_mr(); if (Str__len(text) == 0) return; - if ((Regexp__match(&mr, text, L"CheapGlk Library: version (%c*?) *")) || - (Regexp__match(&mr, text, L"- Version (%c*?) *"))) + if ((Regexp__match(&mr, text, U"CheapGlk Library: version (%c*?) *")) || + (Regexp__match(&mr, text, U"- Version (%c*?) *"))) A->version = Str__duplicate(mr.exp[0]); Regexp__dispose_of(&mr); } @@ -48210,7 +48398,7 @@ void Readme__readme_harvester(text_stream *text, text_file_position *tfp, void * void Colonies__load(filename *F) { colony *C = CREATE(colony); C->members = NEW_LINKED_LIST(colony_member); - C->home = TL_IS_3154; + C->home = TL_IS_3162; C->assets_path = NULL; C->patterns_path = NULL; colony_reader_state crs; @@ -48232,10 +48420,10 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs if (Str__get_first_char(line) == '#') return; /* lines opening with |#| are comments */ match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, line, L"(%c*?): \"*(%C+)\" at \"(%c*)\" in \"(%c*)\"")) { + if (Regexp__match(&mr, line, U"(%c*?): \"*(%C+)\" at \"(%c*)\" in \"(%c*)\"")) { colony_member *CM = CREATE(colony_member); - if (Str__eq(mr.exp[0], TL_IS_3155)) CM->web_rather_than_module = TRUE; - else if (Str__eq(mr.exp[0], TL_IS_3156)) CM->web_rather_than_module = FALSE; + if (Str__eq(mr.exp[0], TL_IS_3163)) CM->web_rather_than_module = TRUE; + else if (Str__eq(mr.exp[0], TL_IS_3164)) CM->web_rather_than_module = FALSE; else { CM->web_rather_than_module = FALSE; Errors__in_text_file("text before ':' must be 'web' or 'module'", tfp); @@ -48243,7 +48431,7 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs CM->name = Str__duplicate(mr.exp[1]); CM->path = Str__duplicate(mr.exp[2]); CM->home_leaf = Str__new(); - if (Str__suffix_eq(CM->path, TL_IS_3157, 6)) { + if (Str__suffix_eq(CM->path, TL_IS_3165, 6)) { filename *F = Filenames__from_text(CM->path); Filenames__write_unextended_leafname(CM->home_leaf, F); WRITE_TO(CM->home_leaf, ".html"); @@ -48256,26 +48444,26 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs CM->breadcrumb_tail = crs->crumbs; CM->default_weave_pattern = Str__duplicate(crs->pattern); ADD_TO_LINKED_LIST(CM, colony_member, C->members); - } else if (Regexp__match(&mr, line, L"home: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"home: *(%c*)")) { C->home = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, line, L"assets: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"assets: *(%c*)")) { C->assets_path = Pathnames__from_text(mr.exp[0]); - } else if (Regexp__match(&mr, line, L"patterns: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"patterns: *(%c*)")) { C->patterns_path = Pathnames__from_text(mr.exp[0]); - } else if (Regexp__match(&mr, line, L"pattern: none")) { + } else if (Regexp__match(&mr, line, U"pattern: none")) { crs->pattern = NULL; - } else if (Regexp__match(&mr, line, L"pattern: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"pattern: *(%c*)")) { crs->pattern = Str__duplicate(mr.exp[0]); - } else if (Regexp__match(&mr, line, L"navigation: none")) { + } else if (Regexp__match(&mr, line, U"navigation: none")) { crs->nav = NULL; - } else if (Regexp__match(&mr, line, L"navigation: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"navigation: *(%c*)")) { crs->nav = Filenames__from_text(mr.exp[0]); - } else if (Regexp__match(&mr, line, L"breadcrumbs: none")) { + } else if (Regexp__match(&mr, line, U"breadcrumbs: none")) { crs->crumbs = NEW_LINKED_LIST(breadcrumb_request); - } else if (Regexp__match(&mr, line, L"breadcrumbs: *(%c*)")) { + } else if (Regexp__match(&mr, line, U"breadcrumbs: *(%c*)")) { crs->crumbs = NEW_LINKED_LIST(breadcrumb_request); match_results mr2 = Regexp__create_mr(); - while (Regexp__match(&mr2, mr.exp[0], L"(\"%c*?\") > (%c*)")) { + while (Regexp__match(&mr2, mr.exp[0], U"(\"%c*?\") > (%c*)")) { Colonies__add_crumb(crs->crumbs, mr2.exp[0], tfp); Str__clear(mr.exp[0]); Str__copy(mr.exp[0], mr2.exp[1]); } @@ -48289,7 +48477,7 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs #line 151 "inweb/Chapter 6/Colonies.w" void Colonies__add_crumb(linked_list *L, text_stream *spec, text_file_position *tfp) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, spec, L"\"(%c*?)\"") == FALSE) { + if (Regexp__match(&mr, spec, U"\"(%c*?)\"") == FALSE) { Errors__in_text_file("each crumb must be in double-quotes", tfp); return; } @@ -48304,7 +48492,7 @@ void Colonies__add_crumb(linked_list *L, text_stream *spec, text_file_position * breadcrumb_request *Colonies__request_breadcrumb(text_stream *arg) { breadcrumb_request *BR = CREATE(breadcrumb_request); match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, arg, L"(%c*?): *(%c*)")) { + if (Regexp__match(&mr, arg, U"(%c*?): *(%c*)")) { BR->breadcrumb_text = Str__duplicate(mr.exp[0]); BR->breadcrumb_link = Str__duplicate(mr.exp[1]); } else { @@ -48383,7 +48571,7 @@ module *Colonies__as_module(colony_member *CM, source_line *L, web_md *Wm) { #line 254 "inweb/Chapter 6/Colonies.w" filename *F = NULL; pathname *P = NULL; - if (Str__suffix_eq(CM->path, TL_IS_3158, 6)) + if (Str__suffix_eq(CM->path, TL_IS_3166, 6)) F = Filenames__from_text(CM->path); else P = Pathnames__from_text(CM->path); @@ -48410,7 +48598,7 @@ text_stream *Colonies__home(void) { colony *C; LOOP_OVER(C, colony) return C->home; - return TL_IS_3159; + return TL_IS_3167; } pathname *Colonies__assets_path(void) { @@ -48433,7 +48621,7 @@ int Colonies__resolve_reference_in_weave(text_stream *url, text_stream *title, int r = 0; if (ext) *ext = FALSE; match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, text, L"(%c+?) -> (%c+)")) { + if (Regexp__match(&mr, text, U"(%c+?) -> (%c+)")) { r = Colonies__resolve_reference_in_weave_inner(url, NULL, for_HTML_file, mr.exp[1], Wm, L, ext); WRITE_TO(title, "%S", mr.exp[0]); @@ -48456,7 +48644,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti { #line 378 "inweb/Chapter 6/Colonies.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, text, L"https*://%c*")) { + if (Regexp__match(&mr, text, U"https*://%c*")) { WRITE_TO(url, "%S", text); WRITE_TO(title, "%S", text); Regexp__dispose_of(&mr); @@ -48524,7 +48712,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti { #line 399 "inweb/Chapter 6/Colonies.w" match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, text, L"(%c*?): (%c*)")) { + if (Regexp__match(&mr, text, U"(%c*?): (%c*)")) { search_CM = Colonies__find(mr.exp[0]); if (search_CM) { module *found_M = Colonies__as_module(search_CM, L, Wm); @@ -48602,7 +48790,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti return FALSE; } if (N > 1) { - Main__error_in_web(TL_IS_3160, L); + Main__error_in_web(TL_IS_3168, L); WebModules__named_reference(&found_M, &found_Sm, &bare_module_name, title, search_M, text, TRUE, FALSE); return FALSE; @@ -48651,7 +48839,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti #line 468 "inweb/Chapter 6/Colonies.w" void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) { match_results mr = Regexp__create_mr(); - if (Regexp__match(&mr, link_text, L" *//(%c+)// *")) + if (Regexp__match(&mr, link_text, U" *//(%c+)// *")) Colonies__reference_URL(OUT, mr.exp[0], F); else WRITE("%S", link_text); @@ -48684,7 +48872,7 @@ void Colonies__paragraph_URL(OUTPUT_STREAM, paragraph *P, filename *from) { if (P == NULL) internal_error("no para"); section *to_S = P->under_section; module *to_M = to_S->md->owning_module; - if (Str__ne(to_M->module_name, TL_IS_3161)) { + if (Str__ne(to_M->module_name, TL_IS_3169)) { colony_member *to_C = Colonies__find(to_M->module_name); if (to_C) { pathname *from_path = Filenames__up(from); @@ -48713,3166 +48901,3174 @@ void Colonies__paragraph_anchor(OUTPUT_STREAM, paragraph *P) { void register_tangled_nonterminals(void) { } void register_tangled_text_literals(void) { - TL_IS_0 = Str__literal(L"INVOCATION"); - TL_IS_1 = Str__literal(L"debug-log.txt"); - TL_IS_2 = Str__literal(L"Tangled"); - TL_IS_3 = Str__literal(L"NAME"); - TL_IS_4 = Str__literal(L""); - TL_IS_5 = Str__literal(L"repeat"); - TL_IS_6 = Str__literal(L"with: WITH in: IN"); - TL_IS_7 = Str__literal(L"set"); - TL_IS_8 = Str__literal(L"name: NAME value: VALUE"); - TL_IS_9 = Str__literal(L"mismatched '[' ... ']'"); - TL_IS_10 = Str__literal(L"mismatched '{' ... '}'"); - TL_IS_11 = Str__literal(L"mismatched quotation marks"); - TL_IS_12 = Str__literal(L"true"); - TL_IS_13 = Str__literal(L"false"); - TL_IS_14 = Str__literal(L"null"); - TL_IS_15 = Str__literal(L"unknown JSON value"); - TL_IS_16 = Str__literal(L"whitespace where JSON value expected"); - TL_IS_17 = Str__literal(L"object body ends with comma"); - TL_IS_18 = Str__literal(L"key does not begin with quotation mark"); - TL_IS_19 = Str__literal(L"key does not end with quotation mark"); - TL_IS_20 = Str__literal(L"key is not followed by ':'"); - TL_IS_21 = Str__literal(L"duplicate key"); - TL_IS_22 = Str__literal(L"whitespace where number expected"); - TL_IS_23 = Str__literal(L"number is not a decimal integer"); - TL_IS_24 = Str__literal(L"number is not allowed to be NaN"); - TL_IS_25 = Str__literal(L"unescaped control character"); - TL_IS_26 = Str__literal(L"bad '\\' escape in string"); - TL_IS_27 = Str__literal(L"incomplete '\\u' escape"); - TL_IS_28 = Str__literal(L"garbled '\\u' escape"); - TL_IS_29 = Str__literal(L"array"); - TL_IS_30 = Str__literal(L"object"); - TL_IS_31 = Str__literal(L"erroneous JSON value from parsing bad text"); - TL_IS_32 = Str__literal(L"unexpected array entry"); - TL_IS_33 = Str__literal(L"mismatched '(' ... ')'"); - TL_IS_34 = Str__literal(L"whitespace where requirement expected"); - TL_IS_35 = Str__literal(L"mismatched '[' ... ']'"); - TL_IS_36 = Str__literal(L"mismatched '{' ... '}'"); - TL_IS_37 = Str__literal(L"mismatched '<' ... '>'"); - TL_IS_38 = Str__literal(L"unknown ''"); - TL_IS_39 = Str__literal(L"'<' ... '>' not allowed"); - TL_IS_40 = Str__literal(L"true"); - TL_IS_41 = Str__literal(L"false"); - TL_IS_42 = Str__literal(L"null"); - TL_IS_43 = Str__literal(L"number"); - TL_IS_44 = Str__literal(L"double"); - TL_IS_45 = Str__literal(L"string"); - TL_IS_46 = Str__literal(L"boolean"); - TL_IS_47 = Str__literal(L"key does not begin with quotation mark"); - TL_IS_48 = Str__literal(L"key does not end with quotation mark"); - TL_IS_49 = Str__literal(L"key is not followed by ':'"); - TL_IS_50 = Str__literal(L"duplicate key"); - TL_IS_51 = Str__literal(L"spurious text before first requirement"); - TL_IS_52 = Str__literal(L"CONTENT BEGINS"); - TL_IS_53 = Str__literal(L"CONTENT ENDS"); - TL_IS_54 = Str__literal(L"inform:/doc_images/ornament_flower.png"); - TL_IS_55 = Str__literal(L"Æ"); - TL_IS_56 = Str__literal(L"Æ"); - TL_IS_57 = Str__literal(L"&"); - TL_IS_58 = Str__literal(L"&"); - TL_IS_59 = Str__literal(L"Á"); - TL_IS_60 = Str__literal(L"Á"); - TL_IS_61 = Str__literal(L"Ă"); - TL_IS_62 = Str__literal(L"Â"); - TL_IS_63 = Str__literal(L"Â"); - TL_IS_64 = Str__literal(L"А"); - TL_IS_65 = Str__literal(L"𝔄"); - TL_IS_66 = Str__literal(L"À"); - TL_IS_67 = Str__literal(L"À"); - TL_IS_68 = Str__literal(L"Α"); - TL_IS_69 = Str__literal(L"Ā"); - TL_IS_70 = Str__literal(L"⩓"); - TL_IS_71 = Str__literal(L"Ą"); - TL_IS_72 = Str__literal(L"𝔸"); - TL_IS_73 = Str__literal(L"⁡"); - TL_IS_74 = Str__literal(L"Å"); - TL_IS_75 = Str__literal(L"Å"); - TL_IS_76 = Str__literal(L"𝒜"); - TL_IS_77 = Str__literal(L"≔"); - TL_IS_78 = Str__literal(L"Ã"); - TL_IS_79 = Str__literal(L"Ã"); - TL_IS_80 = Str__literal(L"Ä"); - TL_IS_81 = Str__literal(L"Ä"); - TL_IS_82 = Str__literal(L"∖"); - TL_IS_83 = Str__literal(L"⫧"); - TL_IS_84 = Str__literal(L"⌆"); - TL_IS_85 = Str__literal(L"Б"); - TL_IS_86 = Str__literal(L"∵"); - TL_IS_87 = Str__literal(L"ℬ"); - TL_IS_88 = Str__literal(L"Β"); - TL_IS_89 = Str__literal(L"𝔅"); - TL_IS_90 = Str__literal(L"𝔹"); - TL_IS_91 = Str__literal(L"˘"); - TL_IS_92 = Str__literal(L"ℬ"); - TL_IS_93 = Str__literal(L"≎"); - TL_IS_94 = Str__literal(L"Ч"); - TL_IS_95 = Str__literal(L"©"); - TL_IS_96 = Str__literal(L"©"); - TL_IS_97 = Str__literal(L"Ć"); - TL_IS_98 = Str__literal(L"⋒"); - TL_IS_99 = Str__literal(L"ⅅ"); - TL_IS_100 = Str__literal(L"ℭ"); - TL_IS_101 = Str__literal(L"Č"); - TL_IS_102 = Str__literal(L"Ç"); - TL_IS_103 = Str__literal(L"Ç"); - TL_IS_104 = Str__literal(L"Ĉ"); - TL_IS_105 = Str__literal(L"∰"); - TL_IS_106 = Str__literal(L"Ċ"); - TL_IS_107 = Str__literal(L"¸"); - TL_IS_108 = Str__literal(L"·"); - TL_IS_109 = Str__literal(L"ℭ"); - TL_IS_110 = Str__literal(L"Χ"); - TL_IS_111 = Str__literal(L"⊙"); - TL_IS_112 = Str__literal(L"⊖"); - TL_IS_113 = Str__literal(L"⊕"); - TL_IS_114 = Str__literal(L"⊗"); - TL_IS_115 = Str__literal(L"∲"); - TL_IS_116 = Str__literal(L"”"); - TL_IS_117 = Str__literal(L"’"); - TL_IS_118 = Str__literal(L"∷"); - TL_IS_119 = Str__literal(L"⩴"); - TL_IS_120 = Str__literal(L"≡"); - TL_IS_121 = Str__literal(L"∯"); - TL_IS_122 = Str__literal(L"∮"); - TL_IS_123 = Str__literal(L"ℂ"); - TL_IS_124 = Str__literal(L"∐"); - TL_IS_125 = Str__literal(L"∳"); - TL_IS_126 = Str__literal(L"⨯"); - TL_IS_127 = Str__literal(L"𝒞"); - TL_IS_128 = Str__literal(L"⋓"); - TL_IS_129 = Str__literal(L"≍"); - TL_IS_130 = Str__literal(L"ⅅ"); - TL_IS_131 = Str__literal(L"⤑"); - TL_IS_132 = Str__literal(L"Ђ"); - TL_IS_133 = Str__literal(L"Ѕ"); - TL_IS_134 = Str__literal(L"Џ"); - TL_IS_135 = Str__literal(L"‡"); - TL_IS_136 = Str__literal(L"↡"); - TL_IS_137 = Str__literal(L"⫤"); - TL_IS_138 = Str__literal(L"Ď"); - TL_IS_139 = Str__literal(L"Д"); - TL_IS_140 = Str__literal(L"∇"); - TL_IS_141 = Str__literal(L"Δ"); - TL_IS_142 = Str__literal(L"𝔇"); - TL_IS_143 = Str__literal(L"´"); - TL_IS_144 = Str__literal(L"˙"); - TL_IS_145 = Str__literal(L"˝"); - TL_IS_146 = Str__literal(L"`"); - TL_IS_147 = Str__literal(L"˜"); - TL_IS_148 = Str__literal(L"⋄"); - TL_IS_149 = Str__literal(L"ⅆ"); - TL_IS_150 = Str__literal(L"𝔻"); - TL_IS_151 = Str__literal(L"¨"); - TL_IS_152 = Str__literal(L"⃜"); - TL_IS_153 = Str__literal(L"≐"); - TL_IS_154 = Str__literal(L"∯"); - TL_IS_155 = Str__literal(L"¨"); - TL_IS_156 = Str__literal(L"⇓"); - TL_IS_157 = Str__literal(L"⇐"); - TL_IS_158 = Str__literal(L"⇔"); - TL_IS_159 = Str__literal(L"⫤"); - TL_IS_160 = Str__literal(L"⟸"); - TL_IS_161 = Str__literal(L"⟺"); - TL_IS_162 = Str__literal(L"⟹"); - TL_IS_163 = Str__literal(L"⇒"); - TL_IS_164 = Str__literal(L"⊨"); - TL_IS_165 = Str__literal(L"⇑"); - TL_IS_166 = Str__literal(L"⇕"); - TL_IS_167 = Str__literal(L"∥"); - TL_IS_168 = Str__literal(L"↓"); - TL_IS_169 = Str__literal(L"⤓"); - TL_IS_170 = Str__literal(L"⇵"); - TL_IS_171 = Str__literal(L"̑"); - TL_IS_172 = Str__literal(L"⥐"); - TL_IS_173 = Str__literal(L"⥞"); - TL_IS_174 = Str__literal(L"↽"); - TL_IS_175 = Str__literal(L"⥖"); - TL_IS_176 = Str__literal(L"⥟"); - TL_IS_177 = Str__literal(L"⇁"); - TL_IS_178 = Str__literal(L"⥗"); - TL_IS_179 = Str__literal(L"⊤"); - TL_IS_180 = Str__literal(L"↧"); - TL_IS_181 = Str__literal(L"⇓"); - TL_IS_182 = Str__literal(L"𝒟"); - TL_IS_183 = Str__literal(L"Đ"); - TL_IS_184 = Str__literal(L"Ŋ"); - TL_IS_185 = Str__literal(L"Ð"); - TL_IS_186 = Str__literal(L"Ð"); - TL_IS_187 = Str__literal(L"É"); - TL_IS_188 = Str__literal(L"É"); - TL_IS_189 = Str__literal(L"Ě"); - TL_IS_190 = Str__literal(L"Ê"); - TL_IS_191 = Str__literal(L"Ê"); - TL_IS_192 = Str__literal(L"Э"); - TL_IS_193 = Str__literal(L"Ė"); - TL_IS_194 = Str__literal(L"𝔈"); - TL_IS_195 = Str__literal(L"È"); - TL_IS_196 = Str__literal(L"È"); - TL_IS_197 = Str__literal(L"∈"); - TL_IS_198 = Str__literal(L"Ē"); - TL_IS_199 = Str__literal(L"◻"); - TL_IS_200 = Str__literal(L"▫"); - TL_IS_201 = Str__literal(L"Ę"); - TL_IS_202 = Str__literal(L"𝔼"); - TL_IS_203 = Str__literal(L"Ε"); - TL_IS_204 = Str__literal(L"⩵"); - TL_IS_205 = Str__literal(L"≂"); - TL_IS_206 = Str__literal(L"⇌"); - TL_IS_207 = Str__literal(L"ℰ"); - TL_IS_208 = Str__literal(L"⩳"); - TL_IS_209 = Str__literal(L"Η"); - TL_IS_210 = Str__literal(L"Ë"); - TL_IS_211 = Str__literal(L"Ë"); - TL_IS_212 = Str__literal(L"∃"); - TL_IS_213 = Str__literal(L"ⅇ"); - TL_IS_214 = Str__literal(L"Ф"); - TL_IS_215 = Str__literal(L"𝔉"); - TL_IS_216 = Str__literal(L"◼"); - TL_IS_217 = Str__literal(L"▪"); - TL_IS_218 = Str__literal(L"𝔽"); - TL_IS_219 = Str__literal(L"∀"); - TL_IS_220 = Str__literal(L"ℱ"); - TL_IS_221 = Str__literal(L"ℱ"); - TL_IS_222 = Str__literal(L"Ѓ"); - TL_IS_223 = Str__literal(L">"); - TL_IS_224 = Str__literal(L">"); - TL_IS_225 = Str__literal(L"Γ"); - TL_IS_226 = Str__literal(L"Ϝ"); - TL_IS_227 = Str__literal(L"Ğ"); - TL_IS_228 = Str__literal(L"Ģ"); - TL_IS_229 = Str__literal(L"Ĝ"); - TL_IS_230 = Str__literal(L"Г"); - TL_IS_231 = Str__literal(L"Ġ"); - TL_IS_232 = Str__literal(L"𝔊"); - TL_IS_233 = Str__literal(L"⋙"); - TL_IS_234 = Str__literal(L"𝔾"); - TL_IS_235 = Str__literal(L"≥"); - TL_IS_236 = Str__literal(L"⋛"); - TL_IS_237 = Str__literal(L"≧"); - TL_IS_238 = Str__literal(L"⪢"); - TL_IS_239 = Str__literal(L"≷"); - TL_IS_240 = Str__literal(L"⩾"); - TL_IS_241 = Str__literal(L"≳"); - TL_IS_242 = Str__literal(L"𝒢"); - TL_IS_243 = Str__literal(L"≫"); - TL_IS_244 = Str__literal(L"Ъ"); - TL_IS_245 = Str__literal(L"ˇ"); - TL_IS_246 = Str__literal(L"^"); - TL_IS_247 = Str__literal(L"Ĥ"); - TL_IS_248 = Str__literal(L"ℌ"); - TL_IS_249 = Str__literal(L"ℋ"); - TL_IS_250 = Str__literal(L"ℍ"); - TL_IS_251 = Str__literal(L"─"); - TL_IS_252 = Str__literal(L"ℋ"); - TL_IS_253 = Str__literal(L"Ħ"); - TL_IS_254 = Str__literal(L"≎"); - TL_IS_255 = Str__literal(L"≏"); - TL_IS_256 = Str__literal(L"Е"); - TL_IS_257 = Str__literal(L"IJ"); - TL_IS_258 = Str__literal(L"Ё"); - TL_IS_259 = Str__literal(L"Í"); - TL_IS_260 = Str__literal(L"Í"); - TL_IS_261 = Str__literal(L"Î"); - TL_IS_262 = Str__literal(L"Î"); - TL_IS_263 = Str__literal(L"И"); - TL_IS_264 = Str__literal(L"İ"); - TL_IS_265 = Str__literal(L"ℑ"); - TL_IS_266 = Str__literal(L"Ì"); - TL_IS_267 = Str__literal(L"Ì"); - TL_IS_268 = Str__literal(L"ℑ"); - TL_IS_269 = Str__literal(L"Ī"); - TL_IS_270 = Str__literal(L"ⅈ"); - TL_IS_271 = Str__literal(L"⇒"); - TL_IS_272 = Str__literal(L"∬"); - TL_IS_273 = Str__literal(L"∫"); - TL_IS_274 = Str__literal(L"⋂"); - TL_IS_275 = Str__literal(L"⁣"); - TL_IS_276 = Str__literal(L"⁢"); - TL_IS_277 = Str__literal(L"Į"); - TL_IS_278 = Str__literal(L"𝕀"); - TL_IS_279 = Str__literal(L"Ι"); - TL_IS_280 = Str__literal(L"ℐ"); - TL_IS_281 = Str__literal(L"Ĩ"); - TL_IS_282 = Str__literal(L"І"); - TL_IS_283 = Str__literal(L"Ï"); - TL_IS_284 = Str__literal(L"Ï"); - TL_IS_285 = Str__literal(L"Ĵ"); - TL_IS_286 = Str__literal(L"Й"); - TL_IS_287 = Str__literal(L"𝔍"); - TL_IS_288 = Str__literal(L"𝕁"); - TL_IS_289 = Str__literal(L"𝒥"); - TL_IS_290 = Str__literal(L"Ј"); - TL_IS_291 = Str__literal(L"Є"); - TL_IS_292 = Str__literal(L"Х"); - TL_IS_293 = Str__literal(L"Ќ"); - TL_IS_294 = Str__literal(L"Κ"); - TL_IS_295 = Str__literal(L"Ķ"); - TL_IS_296 = Str__literal(L"К"); - TL_IS_297 = Str__literal(L"𝔎"); - TL_IS_298 = Str__literal(L"𝕂"); - TL_IS_299 = Str__literal(L"𝒦"); - TL_IS_300 = Str__literal(L"Љ"); - TL_IS_301 = Str__literal(L"<"); - TL_IS_302 = Str__literal(L"<"); - TL_IS_303 = Str__literal(L"Ĺ"); - TL_IS_304 = Str__literal(L"Λ"); - TL_IS_305 = Str__literal(L"⟪"); - TL_IS_306 = Str__literal(L"ℒ"); - TL_IS_307 = Str__literal(L"↞"); - TL_IS_308 = Str__literal(L"Ľ"); - TL_IS_309 = Str__literal(L"Ļ"); - TL_IS_310 = Str__literal(L"Л"); - TL_IS_311 = Str__literal(L"⟨"); - TL_IS_312 = Str__literal(L"←"); - TL_IS_313 = Str__literal(L"⇤"); - TL_IS_314 = Str__literal(L"⇆"); - TL_IS_315 = Str__literal(L"⌈"); - TL_IS_316 = Str__literal(L"⟦"); - TL_IS_317 = Str__literal(L"⥡"); - TL_IS_318 = Str__literal(L"⇃"); - TL_IS_319 = Str__literal(L"⥙"); - TL_IS_320 = Str__literal(L"⌊"); - TL_IS_321 = Str__literal(L"↔"); - TL_IS_322 = Str__literal(L"⥎"); - TL_IS_323 = Str__literal(L"⊣"); - TL_IS_324 = Str__literal(L"↤"); - TL_IS_325 = Str__literal(L"⥚"); - TL_IS_326 = Str__literal(L"⊲"); - TL_IS_327 = Str__literal(L"⧏"); - TL_IS_328 = Str__literal(L"⊴"); - TL_IS_329 = Str__literal(L"⥑"); - TL_IS_330 = Str__literal(L"⥠"); - TL_IS_331 = Str__literal(L"↿"); - TL_IS_332 = Str__literal(L"⥘"); - TL_IS_333 = Str__literal(L"↼"); - TL_IS_334 = Str__literal(L"⥒"); - TL_IS_335 = Str__literal(L"⇐"); - TL_IS_336 = Str__literal(L"⇔"); - TL_IS_337 = Str__literal(L"⋚"); - TL_IS_338 = Str__literal(L"≦"); - TL_IS_339 = Str__literal(L"≶"); - TL_IS_340 = Str__literal(L"⪡"); - TL_IS_341 = Str__literal(L"⩽"); - TL_IS_342 = Str__literal(L"≲"); - TL_IS_343 = Str__literal(L"𝔏"); - TL_IS_344 = Str__literal(L"⋘"); - TL_IS_345 = Str__literal(L"⇚"); - TL_IS_346 = Str__literal(L"Ŀ"); - TL_IS_347 = Str__literal(L"⟵"); - TL_IS_348 = Str__literal(L"⟷"); - TL_IS_349 = Str__literal(L"⟶"); - TL_IS_350 = Str__literal(L"⟸"); - TL_IS_351 = Str__literal(L"⟺"); - TL_IS_352 = Str__literal(L"⟹"); - TL_IS_353 = Str__literal(L"𝕃"); - TL_IS_354 = Str__literal(L"↙"); - TL_IS_355 = Str__literal(L"↘"); - TL_IS_356 = Str__literal(L"ℒ"); - TL_IS_357 = Str__literal(L"↰"); - TL_IS_358 = Str__literal(L"Ł"); - TL_IS_359 = Str__literal(L"≪"); - TL_IS_360 = Str__literal(L"⤅"); - TL_IS_361 = Str__literal(L"М"); - TL_IS_362 = Str__literal(L" "); - TL_IS_363 = Str__literal(L"ℳ"); - TL_IS_364 = Str__literal(L"𝔐"); - TL_IS_365 = Str__literal(L"∓"); - TL_IS_366 = Str__literal(L"𝕄"); - TL_IS_367 = Str__literal(L"ℳ"); - TL_IS_368 = Str__literal(L"Μ"); - TL_IS_369 = Str__literal(L"Њ"); - TL_IS_370 = Str__literal(L"Ń"); - TL_IS_371 = Str__literal(L"Ň"); - TL_IS_372 = Str__literal(L"Ņ"); - TL_IS_373 = Str__literal(L"Н"); - TL_IS_374 = Str__literal(L"​"); - TL_IS_375 = Str__literal(L"​"); - TL_IS_376 = Str__literal(L"​"); - TL_IS_377 = Str__literal(L"​"); - TL_IS_378 = Str__literal(L"≫"); - TL_IS_379 = Str__literal(L"≪"); - TL_IS_380 = Str__literal(L" "); - TL_IS_381 = Str__literal(L"𝔑"); - TL_IS_382 = Str__literal(L"⁠"); - TL_IS_383 = Str__literal(L" "); - TL_IS_384 = Str__literal(L"ℕ"); - TL_IS_385 = Str__literal(L"⫬"); - TL_IS_386 = Str__literal(L"≢"); - TL_IS_387 = Str__literal(L"≭"); - TL_IS_388 = Str__literal(L"∦"); - TL_IS_389 = Str__literal(L"∉"); - TL_IS_390 = Str__literal(L"≠"); - TL_IS_391 = Str__literal(L"≂̸"); - TL_IS_392 = Str__literal(L"∄"); - TL_IS_393 = Str__literal(L"≯"); - TL_IS_394 = Str__literal(L"≱"); - TL_IS_395 = Str__literal(L"≧̸"); - TL_IS_396 = Str__literal(L"≫̸"); - TL_IS_397 = Str__literal(L"≹"); - TL_IS_398 = Str__literal(L"⩾̸"); - TL_IS_399 = Str__literal(L"≵"); - TL_IS_400 = Str__literal(L"≎̸"); - TL_IS_401 = Str__literal(L"≏̸"); - TL_IS_402 = Str__literal(L"⋪"); - TL_IS_403 = Str__literal(L"⧏̸"); - TL_IS_404 = Str__literal(L"⋬"); - TL_IS_405 = Str__literal(L"≮"); - TL_IS_406 = Str__literal(L"≰"); - TL_IS_407 = Str__literal(L"≸"); - TL_IS_408 = Str__literal(L"≪̸"); - TL_IS_409 = Str__literal(L"⩽̸"); - TL_IS_410 = Str__literal(L"≴"); - TL_IS_411 = Str__literal(L"⪢̸"); - TL_IS_412 = Str__literal(L"⪡̸"); - TL_IS_413 = Str__literal(L"⊀"); - TL_IS_414 = Str__literal(L"⪯̸"); - TL_IS_415 = Str__literal(L"⋠"); - TL_IS_416 = Str__literal(L"∌"); - TL_IS_417 = Str__literal(L"⋫"); - TL_IS_418 = Str__literal(L"⧐̸"); - TL_IS_419 = Str__literal(L"⋭"); - TL_IS_420 = Str__literal(L"⊏̸"); - TL_IS_421 = Str__literal(L"⋢"); - TL_IS_422 = Str__literal(L"⊐̸"); - TL_IS_423 = Str__literal(L"⋣"); - TL_IS_424 = Str__literal(L"⊂⃒"); - TL_IS_425 = Str__literal(L"⊈"); - TL_IS_426 = Str__literal(L"⊁"); - TL_IS_427 = Str__literal(L"⪰̸"); - TL_IS_428 = Str__literal(L"⋡"); - TL_IS_429 = Str__literal(L"≿̸"); - TL_IS_430 = Str__literal(L"⊃⃒"); - TL_IS_431 = Str__literal(L"⊉"); - TL_IS_432 = Str__literal(L"≁"); - TL_IS_433 = Str__literal(L"≄"); - TL_IS_434 = Str__literal(L"≇"); - TL_IS_435 = Str__literal(L"≉"); - TL_IS_436 = Str__literal(L"∤"); - TL_IS_437 = Str__literal(L"𝒩"); - TL_IS_438 = Str__literal(L"Ñ"); - TL_IS_439 = Str__literal(L"Ñ"); - TL_IS_440 = Str__literal(L"Ν"); - TL_IS_441 = Str__literal(L"Œ"); - TL_IS_442 = Str__literal(L"Ó"); - TL_IS_443 = Str__literal(L"Ó"); - TL_IS_444 = Str__literal(L"Ô"); - TL_IS_445 = Str__literal(L"Ô"); - TL_IS_446 = Str__literal(L"О"); - TL_IS_447 = Str__literal(L"Ő"); - TL_IS_448 = Str__literal(L"𝔒"); - TL_IS_449 = Str__literal(L"Ò"); - TL_IS_450 = Str__literal(L"Ò"); - TL_IS_451 = Str__literal(L"Ō"); - TL_IS_452 = Str__literal(L"Ω"); - TL_IS_453 = Str__literal(L"Ο"); - TL_IS_454 = Str__literal(L"𝕆"); - TL_IS_455 = Str__literal(L"“"); - TL_IS_456 = Str__literal(L"‘"); - TL_IS_457 = Str__literal(L"⩔"); - TL_IS_458 = Str__literal(L"𝒪"); - TL_IS_459 = Str__literal(L"Ø"); - TL_IS_460 = Str__literal(L"Ø"); - TL_IS_461 = Str__literal(L"Õ"); - TL_IS_462 = Str__literal(L"Õ"); - TL_IS_463 = Str__literal(L"⨷"); - TL_IS_464 = Str__literal(L"Ö"); - TL_IS_465 = Str__literal(L"Ö"); - TL_IS_466 = Str__literal(L"‾"); - TL_IS_467 = Str__literal(L"⏞"); - TL_IS_468 = Str__literal(L"⎴"); - TL_IS_469 = Str__literal(L"⏜"); - TL_IS_470 = Str__literal(L"∂"); - TL_IS_471 = Str__literal(L"П"); - TL_IS_472 = Str__literal(L"𝔓"); - TL_IS_473 = Str__literal(L"Φ"); - TL_IS_474 = Str__literal(L"Π"); - TL_IS_475 = Str__literal(L"±"); - TL_IS_476 = Str__literal(L"ℌ"); - TL_IS_477 = Str__literal(L"ℙ"); - TL_IS_478 = Str__literal(L"⪻"); - TL_IS_479 = Str__literal(L"≺"); - TL_IS_480 = Str__literal(L"⪯"); - TL_IS_481 = Str__literal(L"≼"); - TL_IS_482 = Str__literal(L"≾"); - TL_IS_483 = Str__literal(L"″"); - TL_IS_484 = Str__literal(L"∏"); - TL_IS_485 = Str__literal(L"∷"); - TL_IS_486 = Str__literal(L"∝"); - TL_IS_487 = Str__literal(L"𝒫"); - TL_IS_488 = Str__literal(L"Ψ"); - TL_IS_489 = Str__literal(L"""); - TL_IS_490 = Str__literal(L"""); - TL_IS_491 = Str__literal(L"𝔔"); - TL_IS_492 = Str__literal(L"ℚ"); - TL_IS_493 = Str__literal(L"𝒬"); - TL_IS_494 = Str__literal(L"⤐"); - TL_IS_495 = Str__literal(L"®"); - TL_IS_496 = Str__literal(L"®"); - TL_IS_497 = Str__literal(L"Ŕ"); - TL_IS_498 = Str__literal(L"⟫"); - TL_IS_499 = Str__literal(L"↠"); - TL_IS_500 = Str__literal(L"⤖"); - TL_IS_501 = Str__literal(L"Ř"); - TL_IS_502 = Str__literal(L"Ŗ"); - TL_IS_503 = Str__literal(L"Р"); - TL_IS_504 = Str__literal(L"ℜ"); - TL_IS_505 = Str__literal(L"∋"); - TL_IS_506 = Str__literal(L"⇋"); - TL_IS_507 = Str__literal(L"⥯"); - TL_IS_508 = Str__literal(L"ℜ"); - TL_IS_509 = Str__literal(L"Ρ"); - TL_IS_510 = Str__literal(L"⟩"); - TL_IS_511 = Str__literal(L"→"); - TL_IS_512 = Str__literal(L"⇥"); - TL_IS_513 = Str__literal(L"⇄"); - TL_IS_514 = Str__literal(L"⌉"); - TL_IS_515 = Str__literal(L"⟧"); - TL_IS_516 = Str__literal(L"⥝"); - TL_IS_517 = Str__literal(L"⇂"); - TL_IS_518 = Str__literal(L"⥕"); - TL_IS_519 = Str__literal(L"⌋"); - TL_IS_520 = Str__literal(L"⊢"); - TL_IS_521 = Str__literal(L"↦"); - TL_IS_522 = Str__literal(L"⥛"); - TL_IS_523 = Str__literal(L"⊳"); - TL_IS_524 = Str__literal(L"⧐"); - TL_IS_525 = Str__literal(L"⊵"); - TL_IS_526 = Str__literal(L"⥏"); - TL_IS_527 = Str__literal(L"⥜"); - TL_IS_528 = Str__literal(L"↾"); - TL_IS_529 = Str__literal(L"⥔"); - TL_IS_530 = Str__literal(L"⇀"); - TL_IS_531 = Str__literal(L"⥓"); - TL_IS_532 = Str__literal(L"⇒"); - TL_IS_533 = Str__literal(L"ℝ"); - TL_IS_534 = Str__literal(L"⥰"); - TL_IS_535 = Str__literal(L"⇛"); - TL_IS_536 = Str__literal(L"ℛ"); - TL_IS_537 = Str__literal(L"↱"); - TL_IS_538 = Str__literal(L"⧴"); - TL_IS_539 = Str__literal(L"Щ"); - TL_IS_540 = Str__literal(L"Ш"); - TL_IS_541 = Str__literal(L"Ь"); - TL_IS_542 = Str__literal(L"Ś"); - TL_IS_543 = Str__literal(L"⪼"); - TL_IS_544 = Str__literal(L"Š"); - TL_IS_545 = Str__literal(L"Ş"); - TL_IS_546 = Str__literal(L"Ŝ"); - TL_IS_547 = Str__literal(L"С"); - TL_IS_548 = Str__literal(L"𝔖"); - TL_IS_549 = Str__literal(L"↓"); - TL_IS_550 = Str__literal(L"←"); - TL_IS_551 = Str__literal(L"→"); - TL_IS_552 = Str__literal(L"↑"); - TL_IS_553 = Str__literal(L"Σ"); - TL_IS_554 = Str__literal(L"∘"); - TL_IS_555 = Str__literal(L"𝕊"); - TL_IS_556 = Str__literal(L"√"); - TL_IS_557 = Str__literal(L"□"); - TL_IS_558 = Str__literal(L"⊓"); - TL_IS_559 = Str__literal(L"⊏"); - TL_IS_560 = Str__literal(L"⊑"); - TL_IS_561 = Str__literal(L"⊐"); - TL_IS_562 = Str__literal(L"⊒"); - TL_IS_563 = Str__literal(L"⊔"); - TL_IS_564 = Str__literal(L"𝒮"); - TL_IS_565 = Str__literal(L"⋆"); - TL_IS_566 = Str__literal(L"⋐"); - TL_IS_567 = Str__literal(L"⋐"); - TL_IS_568 = Str__literal(L"⊆"); - TL_IS_569 = Str__literal(L"≻"); - TL_IS_570 = Str__literal(L"⪰"); - TL_IS_571 = Str__literal(L"≽"); - TL_IS_572 = Str__literal(L"≿"); - TL_IS_573 = Str__literal(L"∋"); - TL_IS_574 = Str__literal(L"∑"); - TL_IS_575 = Str__literal(L"⋑"); - TL_IS_576 = Str__literal(L"⊃"); - TL_IS_577 = Str__literal(L"⊇"); - TL_IS_578 = Str__literal(L"⋑"); - TL_IS_579 = Str__literal(L"Þ"); - TL_IS_580 = Str__literal(L"Þ"); - TL_IS_581 = Str__literal(L"™"); - TL_IS_582 = Str__literal(L"Ћ"); - TL_IS_583 = Str__literal(L"Ц"); - TL_IS_584 = Str__literal(L" "); - TL_IS_585 = Str__literal(L"Τ"); - TL_IS_586 = Str__literal(L"Ť"); - TL_IS_587 = Str__literal(L"Ţ"); - TL_IS_588 = Str__literal(L"Т"); - TL_IS_589 = Str__literal(L"𝔗"); - TL_IS_590 = Str__literal(L"∴"); - TL_IS_591 = Str__literal(L"Θ"); - TL_IS_592 = Str__literal(L"  "); - TL_IS_593 = Str__literal(L" "); - TL_IS_594 = Str__literal(L"∼"); - TL_IS_595 = Str__literal(L"≃"); - TL_IS_596 = Str__literal(L"≅"); - TL_IS_597 = Str__literal(L"≈"); - TL_IS_598 = Str__literal(L"𝕋"); - TL_IS_599 = Str__literal(L"⃛"); - TL_IS_600 = Str__literal(L"𝒯"); - TL_IS_601 = Str__literal(L"Ŧ"); - TL_IS_602 = Str__literal(L"Ú"); - TL_IS_603 = Str__literal(L"Ú"); - TL_IS_604 = Str__literal(L"↟"); - TL_IS_605 = Str__literal(L"⥉"); - TL_IS_606 = Str__literal(L"Ў"); - TL_IS_607 = Str__literal(L"Ŭ"); - TL_IS_608 = Str__literal(L"Û"); - TL_IS_609 = Str__literal(L"Û"); - TL_IS_610 = Str__literal(L"У"); - TL_IS_611 = Str__literal(L"Ű"); - TL_IS_612 = Str__literal(L"𝔘"); - TL_IS_613 = Str__literal(L"Ù"); - TL_IS_614 = Str__literal(L"Ù"); - TL_IS_615 = Str__literal(L"Ū"); - TL_IS_616 = Str__literal(L"_"); - TL_IS_617 = Str__literal(L"⏟"); - TL_IS_618 = Str__literal(L"⎵"); - TL_IS_619 = Str__literal(L"⏝"); - TL_IS_620 = Str__literal(L"⋃"); - TL_IS_621 = Str__literal(L"⊎"); - TL_IS_622 = Str__literal(L"Ų"); - TL_IS_623 = Str__literal(L"𝕌"); - TL_IS_624 = Str__literal(L"↑"); - TL_IS_625 = Str__literal(L"⤒"); - TL_IS_626 = Str__literal(L"⇅"); - TL_IS_627 = Str__literal(L"↕"); - TL_IS_628 = Str__literal(L"⥮"); - TL_IS_629 = Str__literal(L"⊥"); - TL_IS_630 = Str__literal(L"↥"); - TL_IS_631 = Str__literal(L"⇑"); - TL_IS_632 = Str__literal(L"⇕"); - TL_IS_633 = Str__literal(L"↖"); - TL_IS_634 = Str__literal(L"↗"); - TL_IS_635 = Str__literal(L"ϒ"); - TL_IS_636 = Str__literal(L"Υ"); - TL_IS_637 = Str__literal(L"Ů"); - TL_IS_638 = Str__literal(L"𝒰"); - TL_IS_639 = Str__literal(L"Ũ"); - TL_IS_640 = Str__literal(L"Ü"); - TL_IS_641 = Str__literal(L"Ü"); - TL_IS_642 = Str__literal(L"⊫"); - TL_IS_643 = Str__literal(L"⫫"); - TL_IS_644 = Str__literal(L"В"); - TL_IS_645 = Str__literal(L"⊩"); - TL_IS_646 = Str__literal(L"⫦"); - TL_IS_647 = Str__literal(L"⋁"); - TL_IS_648 = Str__literal(L"‖"); - TL_IS_649 = Str__literal(L"‖"); - TL_IS_650 = Str__literal(L"∣"); - TL_IS_651 = Str__literal(L"|"); - TL_IS_652 = Str__literal(L"❘"); - TL_IS_653 = Str__literal(L"≀"); - TL_IS_654 = Str__literal(L" "); - TL_IS_655 = Str__literal(L"𝔙"); - TL_IS_656 = Str__literal(L"𝕍"); - TL_IS_657 = Str__literal(L"𝒱"); - TL_IS_658 = Str__literal(L"⊪"); - TL_IS_659 = Str__literal(L"Ŵ"); - TL_IS_660 = Str__literal(L"⋀"); - TL_IS_661 = Str__literal(L"𝔚"); - TL_IS_662 = Str__literal(L"𝕎"); - TL_IS_663 = Str__literal(L"𝒲"); - TL_IS_664 = Str__literal(L"𝔛"); - TL_IS_665 = Str__literal(L"Ξ"); - TL_IS_666 = Str__literal(L"𝕏"); - TL_IS_667 = Str__literal(L"𝒳"); - TL_IS_668 = Str__literal(L"Я"); - TL_IS_669 = Str__literal(L"Ї"); - TL_IS_670 = Str__literal(L"Ю"); - TL_IS_671 = Str__literal(L"Ý"); - TL_IS_672 = Str__literal(L"Ý"); - TL_IS_673 = Str__literal(L"Ŷ"); - TL_IS_674 = Str__literal(L"Ы"); - TL_IS_675 = Str__literal(L"𝔜"); - TL_IS_676 = Str__literal(L"𝕐"); - TL_IS_677 = Str__literal(L"𝒴"); - TL_IS_678 = Str__literal(L"Ÿ"); - TL_IS_679 = Str__literal(L"Ж"); - TL_IS_680 = Str__literal(L"Ź"); - TL_IS_681 = Str__literal(L"Ž"); - TL_IS_682 = Str__literal(L"З"); - TL_IS_683 = Str__literal(L"Ż"); - TL_IS_684 = Str__literal(L"​"); - TL_IS_685 = Str__literal(L"Ζ"); - TL_IS_686 = Str__literal(L"ℨ"); - TL_IS_687 = Str__literal(L"ℤ"); - TL_IS_688 = Str__literal(L"𝒵"); - TL_IS_689 = Str__literal(L"á"); - TL_IS_690 = Str__literal(L"á"); - TL_IS_691 = Str__literal(L"ă"); - TL_IS_692 = Str__literal(L"∾"); - TL_IS_693 = Str__literal(L"∾̳"); - TL_IS_694 = Str__literal(L"∿"); - TL_IS_695 = Str__literal(L"â"); - TL_IS_696 = Str__literal(L"â"); - TL_IS_697 = Str__literal(L"´"); - TL_IS_698 = Str__literal(L"´"); - TL_IS_699 = Str__literal(L"а"); - TL_IS_700 = Str__literal(L"æ"); - TL_IS_701 = Str__literal(L"æ"); - TL_IS_702 = Str__literal(L"⁡"); - TL_IS_703 = Str__literal(L"𝔞"); - TL_IS_704 = Str__literal(L"à"); - TL_IS_705 = Str__literal(L"à"); - TL_IS_706 = Str__literal(L"ℵ"); - TL_IS_707 = Str__literal(L"ℵ"); - TL_IS_708 = Str__literal(L"α"); - TL_IS_709 = Str__literal(L"ā"); - TL_IS_710 = Str__literal(L"⨿"); - TL_IS_711 = Str__literal(L"&"); - TL_IS_712 = Str__literal(L"&"); - TL_IS_713 = Str__literal(L"∧"); - TL_IS_714 = Str__literal(L"⩕"); - TL_IS_715 = Str__literal(L"⩜"); - TL_IS_716 = Str__literal(L"⩘"); - TL_IS_717 = Str__literal(L"⩚"); - TL_IS_718 = Str__literal(L"∠"); - TL_IS_719 = Str__literal(L"⦤"); - TL_IS_720 = Str__literal(L"∠"); - TL_IS_721 = Str__literal(L"∡"); - TL_IS_722 = Str__literal(L"⦨"); - TL_IS_723 = Str__literal(L"⦩"); - TL_IS_724 = Str__literal(L"⦪"); - TL_IS_725 = Str__literal(L"⦫"); - TL_IS_726 = Str__literal(L"⦬"); - TL_IS_727 = Str__literal(L"⦭"); - TL_IS_728 = Str__literal(L"⦮"); - TL_IS_729 = Str__literal(L"⦯"); - TL_IS_730 = Str__literal(L"∟"); - TL_IS_731 = Str__literal(L"⊾"); - TL_IS_732 = Str__literal(L"⦝"); - TL_IS_733 = Str__literal(L"∢"); - TL_IS_734 = Str__literal(L"Å"); - TL_IS_735 = Str__literal(L"⍼"); - TL_IS_736 = Str__literal(L"ą"); - TL_IS_737 = Str__literal(L"𝕒"); - TL_IS_738 = Str__literal(L"≈"); - TL_IS_739 = Str__literal(L"⩰"); - TL_IS_740 = Str__literal(L"⩯"); - TL_IS_741 = Str__literal(L"≊"); - TL_IS_742 = Str__literal(L"≋"); - TL_IS_743 = Str__literal(L"'"); - TL_IS_744 = Str__literal(L"≈"); - TL_IS_745 = Str__literal(L"≊"); - TL_IS_746 = Str__literal(L"å"); - TL_IS_747 = Str__literal(L"å"); - TL_IS_748 = Str__literal(L"𝒶"); - TL_IS_749 = Str__literal(L"*"); - TL_IS_750 = Str__literal(L"≈"); - TL_IS_751 = Str__literal(L"≍"); - TL_IS_752 = Str__literal(L"ã"); - TL_IS_753 = Str__literal(L"ã"); - TL_IS_754 = Str__literal(L"ä"); - TL_IS_755 = Str__literal(L"ä"); - TL_IS_756 = Str__literal(L"∳"); - TL_IS_757 = Str__literal(L"⨑"); - TL_IS_758 = Str__literal(L"⫭"); - TL_IS_759 = Str__literal(L"≌"); - TL_IS_760 = Str__literal(L"϶"); - TL_IS_761 = Str__literal(L"‵"); - TL_IS_762 = Str__literal(L"∽"); - TL_IS_763 = Str__literal(L"⋍"); - TL_IS_764 = Str__literal(L"⊽"); - TL_IS_765 = Str__literal(L"⌅"); - TL_IS_766 = Str__literal(L"⌅"); - TL_IS_767 = Str__literal(L"⎵"); - TL_IS_768 = Str__literal(L"⎶"); - TL_IS_769 = Str__literal(L"≌"); - TL_IS_770 = Str__literal(L"б"); - TL_IS_771 = Str__literal(L"„"); - TL_IS_772 = Str__literal(L"∵"); - TL_IS_773 = Str__literal(L"∵"); - TL_IS_774 = Str__literal(L"⦰"); - TL_IS_775 = Str__literal(L"϶"); - TL_IS_776 = Str__literal(L"ℬ"); - TL_IS_777 = Str__literal(L"β"); - TL_IS_778 = Str__literal(L"ℶ"); - TL_IS_779 = Str__literal(L"≬"); - TL_IS_780 = Str__literal(L"𝔟"); - TL_IS_781 = Str__literal(L"⋂"); - TL_IS_782 = Str__literal(L"◯"); - TL_IS_783 = Str__literal(L"⋃"); - TL_IS_784 = Str__literal(L"⨀"); - TL_IS_785 = Str__literal(L"⨁"); - TL_IS_786 = Str__literal(L"⨂"); - TL_IS_787 = Str__literal(L"⨆"); - TL_IS_788 = Str__literal(L"★"); - TL_IS_789 = Str__literal(L"▽"); - TL_IS_790 = Str__literal(L"△"); - TL_IS_791 = Str__literal(L"⨄"); - TL_IS_792 = Str__literal(L"⋁"); - TL_IS_793 = Str__literal(L"⋀"); - TL_IS_794 = Str__literal(L"⤍"); - TL_IS_795 = Str__literal(L"⧫"); - TL_IS_796 = Str__literal(L"▪"); - TL_IS_797 = Str__literal(L"▴"); - TL_IS_798 = Str__literal(L"▾"); - TL_IS_799 = Str__literal(L"◂"); - TL_IS_800 = Str__literal(L"▸"); - TL_IS_801 = Str__literal(L"␣"); - TL_IS_802 = Str__literal(L"▒"); - TL_IS_803 = Str__literal(L"░"); - TL_IS_804 = Str__literal(L"▓"); - TL_IS_805 = Str__literal(L"█"); - TL_IS_806 = Str__literal(L"=⃥"); - TL_IS_807 = Str__literal(L"≡⃥"); - TL_IS_808 = Str__literal(L"⌐"); - TL_IS_809 = Str__literal(L"𝕓"); - TL_IS_810 = Str__literal(L"⊥"); - TL_IS_811 = Str__literal(L"⊥"); - TL_IS_812 = Str__literal(L"⋈"); - TL_IS_813 = Str__literal(L"╗"); - TL_IS_814 = Str__literal(L"╔"); - TL_IS_815 = Str__literal(L"╖"); - TL_IS_816 = Str__literal(L"╓"); - TL_IS_817 = Str__literal(L"═"); - TL_IS_818 = Str__literal(L"╦"); - TL_IS_819 = Str__literal(L"╩"); - TL_IS_820 = Str__literal(L"╤"); - TL_IS_821 = Str__literal(L"╧"); - TL_IS_822 = Str__literal(L"╝"); - TL_IS_823 = Str__literal(L"╚"); - TL_IS_824 = Str__literal(L"╜"); - TL_IS_825 = Str__literal(L"╙"); - TL_IS_826 = Str__literal(L"║"); - TL_IS_827 = Str__literal(L"╬"); - TL_IS_828 = Str__literal(L"╣"); - TL_IS_829 = Str__literal(L"╠"); - TL_IS_830 = Str__literal(L"╫"); - TL_IS_831 = Str__literal(L"╢"); - TL_IS_832 = Str__literal(L"╟"); - TL_IS_833 = Str__literal(L"⧉"); - TL_IS_834 = Str__literal(L"╕"); - TL_IS_835 = Str__literal(L"╒"); - TL_IS_836 = Str__literal(L"┐"); - TL_IS_837 = Str__literal(L"┌"); - TL_IS_838 = Str__literal(L"─"); - TL_IS_839 = Str__literal(L"╥"); - TL_IS_840 = Str__literal(L"╨"); - TL_IS_841 = Str__literal(L"┬"); - TL_IS_842 = Str__literal(L"┴"); - TL_IS_843 = Str__literal(L"⊟"); - TL_IS_844 = Str__literal(L"⊞"); - TL_IS_845 = Str__literal(L"⊠"); - TL_IS_846 = Str__literal(L"╛"); - TL_IS_847 = Str__literal(L"╘"); - TL_IS_848 = Str__literal(L"┘"); - TL_IS_849 = Str__literal(L"└"); - TL_IS_850 = Str__literal(L"│"); - TL_IS_851 = Str__literal(L"╪"); - TL_IS_852 = Str__literal(L"╡"); - TL_IS_853 = Str__literal(L"╞"); - TL_IS_854 = Str__literal(L"┼"); - TL_IS_855 = Str__literal(L"┤"); - TL_IS_856 = Str__literal(L"├"); - TL_IS_857 = Str__literal(L"‵"); - TL_IS_858 = Str__literal(L"˘"); - TL_IS_859 = Str__literal(L"¦"); - TL_IS_860 = Str__literal(L"¦"); - TL_IS_861 = Str__literal(L"𝒷"); - TL_IS_862 = Str__literal(L"⁏"); - TL_IS_863 = Str__literal(L"∽"); - TL_IS_864 = Str__literal(L"⋍"); - TL_IS_865 = Str__literal(L"\"); - TL_IS_866 = Str__literal(L"⧅"); - TL_IS_867 = Str__literal(L"⟈"); - TL_IS_868 = Str__literal(L"•"); - TL_IS_869 = Str__literal(L"•"); - TL_IS_870 = Str__literal(L"≎"); - TL_IS_871 = Str__literal(L"⪮"); - TL_IS_872 = Str__literal(L"≏"); - TL_IS_873 = Str__literal(L"≏"); - TL_IS_874 = Str__literal(L"ć"); - TL_IS_875 = Str__literal(L"∩"); - TL_IS_876 = Str__literal(L"⩄"); - TL_IS_877 = Str__literal(L"⩉"); - TL_IS_878 = Str__literal(L"⩋"); - TL_IS_879 = Str__literal(L"⩇"); - TL_IS_880 = Str__literal(L"⩀"); - TL_IS_881 = Str__literal(L"∩︀"); - TL_IS_882 = Str__literal(L"⁁"); - TL_IS_883 = Str__literal(L"ˇ"); - TL_IS_884 = Str__literal(L"⩍"); - TL_IS_885 = Str__literal(L"č"); - TL_IS_886 = Str__literal(L"ç"); - TL_IS_887 = Str__literal(L"ç"); - TL_IS_888 = Str__literal(L"ĉ"); - TL_IS_889 = Str__literal(L"⩌"); - TL_IS_890 = Str__literal(L"⩐"); - TL_IS_891 = Str__literal(L"ċ"); - TL_IS_892 = Str__literal(L"¸"); - TL_IS_893 = Str__literal(L"¸"); - TL_IS_894 = Str__literal(L"⦲"); - TL_IS_895 = Str__literal(L"¢"); - TL_IS_896 = Str__literal(L"¢"); - TL_IS_897 = Str__literal(L"·"); - TL_IS_898 = Str__literal(L"𝔠"); - TL_IS_899 = Str__literal(L"ч"); - TL_IS_900 = Str__literal(L"✓"); - TL_IS_901 = Str__literal(L"✓"); - TL_IS_902 = Str__literal(L"χ"); - TL_IS_903 = Str__literal(L"○"); - TL_IS_904 = Str__literal(L"⧃"); - TL_IS_905 = Str__literal(L"ˆ"); - TL_IS_906 = Str__literal(L"≗"); - TL_IS_907 = Str__literal(L"↺"); - TL_IS_908 = Str__literal(L"↻"); - TL_IS_909 = Str__literal(L"®"); - TL_IS_910 = Str__literal(L"Ⓢ"); - TL_IS_911 = Str__literal(L"⊛"); - TL_IS_912 = Str__literal(L"⊚"); - TL_IS_913 = Str__literal(L"⊝"); - TL_IS_914 = Str__literal(L"≗"); - TL_IS_915 = Str__literal(L"⨐"); - TL_IS_916 = Str__literal(L"⫯"); - TL_IS_917 = Str__literal(L"⧂"); - TL_IS_918 = Str__literal(L"♣"); - TL_IS_919 = Str__literal(L"♣"); - TL_IS_920 = Str__literal(L":"); - TL_IS_921 = Str__literal(L"≔"); - TL_IS_922 = Str__literal(L"≔"); - TL_IS_923 = Str__literal(L","); - TL_IS_924 = Str__literal(L"@"); - TL_IS_925 = Str__literal(L"∁"); - TL_IS_926 = Str__literal(L"∘"); - TL_IS_927 = Str__literal(L"∁"); - TL_IS_928 = Str__literal(L"ℂ"); - TL_IS_929 = Str__literal(L"≅"); - TL_IS_930 = Str__literal(L"⩭"); - TL_IS_931 = Str__literal(L"∮"); - TL_IS_932 = Str__literal(L"𝕔"); - TL_IS_933 = Str__literal(L"∐"); - TL_IS_934 = Str__literal(L"©"); - TL_IS_935 = Str__literal(L"©"); - TL_IS_936 = Str__literal(L"℗"); - TL_IS_937 = Str__literal(L"↵"); - TL_IS_938 = Str__literal(L"✗"); - TL_IS_939 = Str__literal(L"𝒸"); - TL_IS_940 = Str__literal(L"⫏"); - TL_IS_941 = Str__literal(L"⫑"); - TL_IS_942 = Str__literal(L"⫐"); - TL_IS_943 = Str__literal(L"⫒"); - TL_IS_944 = Str__literal(L"⋯"); - TL_IS_945 = Str__literal(L"⤸"); - TL_IS_946 = Str__literal(L"⤵"); - TL_IS_947 = Str__literal(L"⋞"); - TL_IS_948 = Str__literal(L"⋟"); - TL_IS_949 = Str__literal(L"↶"); - TL_IS_950 = Str__literal(L"⤽"); - TL_IS_951 = Str__literal(L"∪"); - TL_IS_952 = Str__literal(L"⩈"); - TL_IS_953 = Str__literal(L"⩆"); - TL_IS_954 = Str__literal(L"⩊"); - TL_IS_955 = Str__literal(L"⊍"); - TL_IS_956 = Str__literal(L"⩅"); - TL_IS_957 = Str__literal(L"∪︀"); - TL_IS_958 = Str__literal(L"↷"); - TL_IS_959 = Str__literal(L"⤼"); - TL_IS_960 = Str__literal(L"⋞"); - TL_IS_961 = Str__literal(L"⋟"); - TL_IS_962 = Str__literal(L"⋎"); - TL_IS_963 = Str__literal(L"⋏"); - TL_IS_964 = Str__literal(L"¤"); - TL_IS_965 = Str__literal(L"¤"); - TL_IS_966 = Str__literal(L"↶"); - TL_IS_967 = Str__literal(L"↷"); - TL_IS_968 = Str__literal(L"⋎"); - TL_IS_969 = Str__literal(L"⋏"); - TL_IS_970 = Str__literal(L"∲"); - TL_IS_971 = Str__literal(L"∱"); - TL_IS_972 = Str__literal(L"⌭"); - TL_IS_973 = Str__literal(L"⇓"); - TL_IS_974 = Str__literal(L"⥥"); - TL_IS_975 = Str__literal(L"†"); - TL_IS_976 = Str__literal(L"ℸ"); - TL_IS_977 = Str__literal(L"↓"); - TL_IS_978 = Str__literal(L"‐"); - TL_IS_979 = Str__literal(L"⊣"); - TL_IS_980 = Str__literal(L"⤏"); - TL_IS_981 = Str__literal(L"˝"); - TL_IS_982 = Str__literal(L"ď"); - TL_IS_983 = Str__literal(L"д"); - TL_IS_984 = Str__literal(L"ⅆ"); - TL_IS_985 = Str__literal(L"‡"); - TL_IS_986 = Str__literal(L"⇊"); - TL_IS_987 = Str__literal(L"⩷"); - TL_IS_988 = Str__literal(L"°"); - TL_IS_989 = Str__literal(L"°"); - TL_IS_990 = Str__literal(L"δ"); - TL_IS_991 = Str__literal(L"⦱"); - TL_IS_992 = Str__literal(L"⥿"); - TL_IS_993 = Str__literal(L"𝔡"); - TL_IS_994 = Str__literal(L"⇃"); - TL_IS_995 = Str__literal(L"⇂"); - TL_IS_996 = Str__literal(L"⋄"); - TL_IS_997 = Str__literal(L"⋄"); - TL_IS_998 = Str__literal(L"♦"); - TL_IS_999 = Str__literal(L"♦"); - TL_IS_1000 = Str__literal(L"¨"); - TL_IS_1001 = Str__literal(L"ϝ"); - TL_IS_1002 = Str__literal(L"⋲"); - TL_IS_1003 = Str__literal(L"÷"); - TL_IS_1004 = Str__literal(L"÷"); - TL_IS_1005 = Str__literal(L"÷"); - TL_IS_1006 = Str__literal(L"⋇"); - TL_IS_1007 = Str__literal(L"⋇"); - TL_IS_1008 = Str__literal(L"ђ"); - TL_IS_1009 = Str__literal(L"⌞"); - TL_IS_1010 = Str__literal(L"⌍"); - TL_IS_1011 = Str__literal(L"$"); - TL_IS_1012 = Str__literal(L"𝕕"); - TL_IS_1013 = Str__literal(L"˙"); - TL_IS_1014 = Str__literal(L"≐"); - TL_IS_1015 = Str__literal(L"≑"); - TL_IS_1016 = Str__literal(L"∸"); - TL_IS_1017 = Str__literal(L"∔"); - TL_IS_1018 = Str__literal(L"⊡"); - TL_IS_1019 = Str__literal(L"⌆"); - TL_IS_1020 = Str__literal(L"↓"); - TL_IS_1021 = Str__literal(L"⇊"); - TL_IS_1022 = Str__literal(L"⇃"); - TL_IS_1023 = Str__literal(L"⇂"); - TL_IS_1024 = Str__literal(L"⤐"); - TL_IS_1025 = Str__literal(L"⌟"); - TL_IS_1026 = Str__literal(L"⌌"); - TL_IS_1027 = Str__literal(L"𝒹"); - TL_IS_1028 = Str__literal(L"ѕ"); - TL_IS_1029 = Str__literal(L"⧶"); - TL_IS_1030 = Str__literal(L"đ"); - TL_IS_1031 = Str__literal(L"⋱"); - TL_IS_1032 = Str__literal(L"▿"); - TL_IS_1033 = Str__literal(L"▾"); - TL_IS_1034 = Str__literal(L"⇵"); - TL_IS_1035 = Str__literal(L"⥯"); - TL_IS_1036 = Str__literal(L"⦦"); - TL_IS_1037 = Str__literal(L"џ"); - TL_IS_1038 = Str__literal(L"⟿"); - TL_IS_1039 = Str__literal(L"⩷"); - TL_IS_1040 = Str__literal(L"≑"); - TL_IS_1041 = Str__literal(L"é"); - TL_IS_1042 = Str__literal(L"é"); - TL_IS_1043 = Str__literal(L"⩮"); - TL_IS_1044 = Str__literal(L"ě"); - TL_IS_1045 = Str__literal(L"≖"); - TL_IS_1046 = Str__literal(L"ê"); - TL_IS_1047 = Str__literal(L"ê"); - TL_IS_1048 = Str__literal(L"≕"); - TL_IS_1049 = Str__literal(L"э"); - TL_IS_1050 = Str__literal(L"ė"); - TL_IS_1051 = Str__literal(L"ⅇ"); - TL_IS_1052 = Str__literal(L"≒"); - TL_IS_1053 = Str__literal(L"𝔢"); - TL_IS_1054 = Str__literal(L"⪚"); - TL_IS_1055 = Str__literal(L"è"); - TL_IS_1056 = Str__literal(L"è"); - TL_IS_1057 = Str__literal(L"⪖"); - TL_IS_1058 = Str__literal(L"⪘"); - TL_IS_1059 = Str__literal(L"⪙"); - TL_IS_1060 = Str__literal(L"⏧"); - TL_IS_1061 = Str__literal(L"ℓ"); - TL_IS_1062 = Str__literal(L"⪕"); - TL_IS_1063 = Str__literal(L"⪗"); - TL_IS_1064 = Str__literal(L"ē"); - TL_IS_1065 = Str__literal(L"∅"); - TL_IS_1066 = Str__literal(L"∅"); - TL_IS_1067 = Str__literal(L"∅"); - TL_IS_1068 = Str__literal(L" "); - TL_IS_1069 = Str__literal(L" "); - TL_IS_1070 = Str__literal(L" "); - TL_IS_1071 = Str__literal(L"ŋ"); - TL_IS_1072 = Str__literal(L" "); - TL_IS_1073 = Str__literal(L"ę"); - TL_IS_1074 = Str__literal(L"𝕖"); - TL_IS_1075 = Str__literal(L"⋕"); - TL_IS_1076 = Str__literal(L"⧣"); - TL_IS_1077 = Str__literal(L"⩱"); - TL_IS_1078 = Str__literal(L"ε"); - TL_IS_1079 = Str__literal(L"ε"); - TL_IS_1080 = Str__literal(L"ϵ"); - TL_IS_1081 = Str__literal(L"≖"); - TL_IS_1082 = Str__literal(L"≕"); - TL_IS_1083 = Str__literal(L"≂"); - TL_IS_1084 = Str__literal(L"⪖"); - TL_IS_1085 = Str__literal(L"⪕"); - TL_IS_1086 = Str__literal(L"="); - TL_IS_1087 = Str__literal(L"≟"); - TL_IS_1088 = Str__literal(L"≡"); - TL_IS_1089 = Str__literal(L"⩸"); - TL_IS_1090 = Str__literal(L"⧥"); - TL_IS_1091 = Str__literal(L"≓"); - TL_IS_1092 = Str__literal(L"⥱"); - TL_IS_1093 = Str__literal(L"ℯ"); - TL_IS_1094 = Str__literal(L"≐"); - TL_IS_1095 = Str__literal(L"≂"); - TL_IS_1096 = Str__literal(L"η"); - TL_IS_1097 = Str__literal(L"ð"); - TL_IS_1098 = Str__literal(L"ð"); - TL_IS_1099 = Str__literal(L"ë"); - TL_IS_1100 = Str__literal(L"ë"); - TL_IS_1101 = Str__literal(L"€"); - TL_IS_1102 = Str__literal(L"!"); - TL_IS_1103 = Str__literal(L"∃"); - TL_IS_1104 = Str__literal(L"ℰ"); - TL_IS_1105 = Str__literal(L"ⅇ"); - TL_IS_1106 = Str__literal(L"≒"); - TL_IS_1107 = Str__literal(L"ф"); - TL_IS_1108 = Str__literal(L"♀"); - TL_IS_1109 = Str__literal(L"ffi"); - TL_IS_1110 = Str__literal(L"ff"); - TL_IS_1111 = Str__literal(L"ffl"); - TL_IS_1112 = Str__literal(L"𝔣"); - TL_IS_1113 = Str__literal(L"fi"); - TL_IS_1114 = Str__literal(L"fj"); - TL_IS_1115 = Str__literal(L"♭"); - TL_IS_1116 = Str__literal(L"fl"); - TL_IS_1117 = Str__literal(L"▱"); - TL_IS_1118 = Str__literal(L"ƒ"); - TL_IS_1119 = Str__literal(L"𝕗"); - TL_IS_1120 = Str__literal(L"∀"); - TL_IS_1121 = Str__literal(L"⋔"); - TL_IS_1122 = Str__literal(L"⫙"); - TL_IS_1123 = Str__literal(L"⨍"); - TL_IS_1124 = Str__literal(L"½"); - TL_IS_1125 = Str__literal(L"½"); - TL_IS_1126 = Str__literal(L"⅓"); - TL_IS_1127 = Str__literal(L"¼"); - TL_IS_1128 = Str__literal(L"¼"); - TL_IS_1129 = Str__literal(L"⅕"); - TL_IS_1130 = Str__literal(L"⅙"); - TL_IS_1131 = Str__literal(L"⅛"); - TL_IS_1132 = Str__literal(L"⅔"); - TL_IS_1133 = Str__literal(L"⅖"); - TL_IS_1134 = Str__literal(L"¾"); - TL_IS_1135 = Str__literal(L"¾"); - TL_IS_1136 = Str__literal(L"⅗"); - TL_IS_1137 = Str__literal(L"⅜"); - TL_IS_1138 = Str__literal(L"⅘"); - TL_IS_1139 = Str__literal(L"⅚"); - TL_IS_1140 = Str__literal(L"⅝"); - TL_IS_1141 = Str__literal(L"⅞"); - TL_IS_1142 = Str__literal(L"⁄"); - TL_IS_1143 = Str__literal(L"⌢"); - TL_IS_1144 = Str__literal(L"𝒻"); - TL_IS_1145 = Str__literal(L"≧"); - TL_IS_1146 = Str__literal(L"⪌"); - TL_IS_1147 = Str__literal(L"ǵ"); - TL_IS_1148 = Str__literal(L"γ"); - TL_IS_1149 = Str__literal(L"ϝ"); - TL_IS_1150 = Str__literal(L"⪆"); - TL_IS_1151 = Str__literal(L"ğ"); - TL_IS_1152 = Str__literal(L"ĝ"); - TL_IS_1153 = Str__literal(L"г"); - TL_IS_1154 = Str__literal(L"ġ"); - TL_IS_1155 = Str__literal(L"≥"); - TL_IS_1156 = Str__literal(L"⋛"); - TL_IS_1157 = Str__literal(L"≥"); - TL_IS_1158 = Str__literal(L"≧"); - TL_IS_1159 = Str__literal(L"⩾"); - TL_IS_1160 = Str__literal(L"⩾"); - TL_IS_1161 = Str__literal(L"⪩"); - TL_IS_1162 = Str__literal(L"⪀"); - TL_IS_1163 = Str__literal(L"⪂"); - TL_IS_1164 = Str__literal(L"⪄"); - TL_IS_1165 = Str__literal(L"⋛︀"); - TL_IS_1166 = Str__literal(L"⪔"); - TL_IS_1167 = Str__literal(L"𝔤"); - TL_IS_1168 = Str__literal(L"≫"); - TL_IS_1169 = Str__literal(L"⋙"); - TL_IS_1170 = Str__literal(L"ℷ"); - TL_IS_1171 = Str__literal(L"ѓ"); - TL_IS_1172 = Str__literal(L"≷"); - TL_IS_1173 = Str__literal(L"⪒"); - TL_IS_1174 = Str__literal(L"⪥"); - TL_IS_1175 = Str__literal(L"⪤"); - TL_IS_1176 = Str__literal(L"≩"); - TL_IS_1177 = Str__literal(L"⪊"); - TL_IS_1178 = Str__literal(L"⪊"); - TL_IS_1179 = Str__literal(L"⪈"); - TL_IS_1180 = Str__literal(L"⪈"); - TL_IS_1181 = Str__literal(L"≩"); - TL_IS_1182 = Str__literal(L"⋧"); - TL_IS_1183 = Str__literal(L"𝕘"); - TL_IS_1184 = Str__literal(L"`"); - TL_IS_1185 = Str__literal(L"ℊ"); - TL_IS_1186 = Str__literal(L"≳"); - TL_IS_1187 = Str__literal(L"⪎"); - TL_IS_1188 = Str__literal(L"⪐"); - TL_IS_1189 = Str__literal(L">"); - TL_IS_1190 = Str__literal(L">"); - TL_IS_1191 = Str__literal(L"⪧"); - TL_IS_1192 = Str__literal(L"⩺"); - TL_IS_1193 = Str__literal(L"⋗"); - TL_IS_1194 = Str__literal(L"⦕"); - TL_IS_1195 = Str__literal(L"⩼"); - TL_IS_1196 = Str__literal(L"⪆"); - TL_IS_1197 = Str__literal(L"⥸"); - TL_IS_1198 = Str__literal(L"⋗"); - TL_IS_1199 = Str__literal(L"⋛"); - TL_IS_1200 = Str__literal(L"⪌"); - TL_IS_1201 = Str__literal(L"≷"); - TL_IS_1202 = Str__literal(L"≳"); - TL_IS_1203 = Str__literal(L"≩︀"); - TL_IS_1204 = Str__literal(L"≩︀"); - TL_IS_1205 = Str__literal(L"⇔"); - TL_IS_1206 = Str__literal(L" "); - TL_IS_1207 = Str__literal(L"½"); - TL_IS_1208 = Str__literal(L"ℋ"); - TL_IS_1209 = Str__literal(L"ъ"); - TL_IS_1210 = Str__literal(L"↔"); - TL_IS_1211 = Str__literal(L"⥈"); - TL_IS_1212 = Str__literal(L"↭"); - TL_IS_1213 = Str__literal(L"ℏ"); - TL_IS_1214 = Str__literal(L"ĥ"); - TL_IS_1215 = Str__literal(L"♥"); - TL_IS_1216 = Str__literal(L"♥"); - TL_IS_1217 = Str__literal(L"…"); - TL_IS_1218 = Str__literal(L"⊹"); - TL_IS_1219 = Str__literal(L"𝔥"); - TL_IS_1220 = Str__literal(L"⤥"); - TL_IS_1221 = Str__literal(L"⤦"); - TL_IS_1222 = Str__literal(L"⇿"); - TL_IS_1223 = Str__literal(L"∻"); - TL_IS_1224 = Str__literal(L"↩"); - TL_IS_1225 = Str__literal(L"↪"); - TL_IS_1226 = Str__literal(L"𝕙"); - TL_IS_1227 = Str__literal(L"―"); - TL_IS_1228 = Str__literal(L"𝒽"); - TL_IS_1229 = Str__literal(L"ℏ"); - TL_IS_1230 = Str__literal(L"ħ"); - TL_IS_1231 = Str__literal(L"⁃"); - TL_IS_1232 = Str__literal(L"‐"); - TL_IS_1233 = Str__literal(L"í"); - TL_IS_1234 = Str__literal(L"í"); - TL_IS_1235 = Str__literal(L"⁣"); - TL_IS_1236 = Str__literal(L"î"); - TL_IS_1237 = Str__literal(L"î"); - TL_IS_1238 = Str__literal(L"и"); - TL_IS_1239 = Str__literal(L"е"); - TL_IS_1240 = Str__literal(L"¡"); - TL_IS_1241 = Str__literal(L"¡"); - TL_IS_1242 = Str__literal(L"⇔"); - TL_IS_1243 = Str__literal(L"𝔦"); - TL_IS_1244 = Str__literal(L"ì"); - TL_IS_1245 = Str__literal(L"ì"); - TL_IS_1246 = Str__literal(L"ⅈ"); - TL_IS_1247 = Str__literal(L"⨌"); - TL_IS_1248 = Str__literal(L"∭"); - TL_IS_1249 = Str__literal(L"⧜"); - TL_IS_1250 = Str__literal(L"℩"); - TL_IS_1251 = Str__literal(L"ij"); - TL_IS_1252 = Str__literal(L"ī"); - TL_IS_1253 = Str__literal(L"ℑ"); - TL_IS_1254 = Str__literal(L"ℐ"); - TL_IS_1255 = Str__literal(L"ℑ"); - TL_IS_1256 = Str__literal(L"ı"); - TL_IS_1257 = Str__literal(L"⊷"); - TL_IS_1258 = Str__literal(L"Ƶ"); - TL_IS_1259 = Str__literal(L"∈"); - TL_IS_1260 = Str__literal(L"℅"); - TL_IS_1261 = Str__literal(L"∞"); - TL_IS_1262 = Str__literal(L"⧝"); - TL_IS_1263 = Str__literal(L"ı"); - TL_IS_1264 = Str__literal(L"∫"); - TL_IS_1265 = Str__literal(L"⊺"); - TL_IS_1266 = Str__literal(L"ℤ"); - TL_IS_1267 = Str__literal(L"⊺"); - TL_IS_1268 = Str__literal(L"⨗"); - TL_IS_1269 = Str__literal(L"⨼"); - TL_IS_1270 = Str__literal(L"ё"); - TL_IS_1271 = Str__literal(L"į"); - TL_IS_1272 = Str__literal(L"𝕚"); - TL_IS_1273 = Str__literal(L"ι"); - TL_IS_1274 = Str__literal(L"⨼"); - TL_IS_1275 = Str__literal(L"¿"); - TL_IS_1276 = Str__literal(L"¿"); - TL_IS_1277 = Str__literal(L"𝒾"); - TL_IS_1278 = Str__literal(L"∈"); - TL_IS_1279 = Str__literal(L"⋹"); - TL_IS_1280 = Str__literal(L"⋵"); - TL_IS_1281 = Str__literal(L"⋴"); - TL_IS_1282 = Str__literal(L"⋳"); - TL_IS_1283 = Str__literal(L"∈"); - TL_IS_1284 = Str__literal(L"⁢"); - TL_IS_1285 = Str__literal(L"ĩ"); - TL_IS_1286 = Str__literal(L"і"); - TL_IS_1287 = Str__literal(L"ï"); - TL_IS_1288 = Str__literal(L"ï"); - TL_IS_1289 = Str__literal(L"ĵ"); - TL_IS_1290 = Str__literal(L"й"); - TL_IS_1291 = Str__literal(L"𝔧"); - TL_IS_1292 = Str__literal(L"ȷ"); - TL_IS_1293 = Str__literal(L"𝕛"); - TL_IS_1294 = Str__literal(L"𝒿"); - TL_IS_1295 = Str__literal(L"ј"); - TL_IS_1296 = Str__literal(L"є"); - TL_IS_1297 = Str__literal(L"κ"); - TL_IS_1298 = Str__literal(L"ϰ"); - TL_IS_1299 = Str__literal(L"ķ"); - TL_IS_1300 = Str__literal(L"к"); - TL_IS_1301 = Str__literal(L"𝔨"); - TL_IS_1302 = Str__literal(L"ĸ"); - TL_IS_1303 = Str__literal(L"х"); - TL_IS_1304 = Str__literal(L"ќ"); - TL_IS_1305 = Str__literal(L"𝕜"); - TL_IS_1306 = Str__literal(L"𝓀"); - TL_IS_1307 = Str__literal(L"⇚"); - TL_IS_1308 = Str__literal(L"⇐"); - TL_IS_1309 = Str__literal(L"⤛"); - TL_IS_1310 = Str__literal(L"⤎"); - TL_IS_1311 = Str__literal(L"≦"); - TL_IS_1312 = Str__literal(L"⪋"); - TL_IS_1313 = Str__literal(L"⥢"); - TL_IS_1314 = Str__literal(L"ĺ"); - TL_IS_1315 = Str__literal(L"⦴"); - TL_IS_1316 = Str__literal(L"ℒ"); - TL_IS_1317 = Str__literal(L"λ"); - TL_IS_1318 = Str__literal(L"⟨"); - TL_IS_1319 = Str__literal(L"⦑"); - TL_IS_1320 = Str__literal(L"⟨"); - TL_IS_1321 = Str__literal(L"⪅"); - TL_IS_1322 = Str__literal(L"«"); - TL_IS_1323 = Str__literal(L"«"); - TL_IS_1324 = Str__literal(L"←"); - TL_IS_1325 = Str__literal(L"⇤"); - TL_IS_1326 = Str__literal(L"⤟"); - TL_IS_1327 = Str__literal(L"⤝"); - TL_IS_1328 = Str__literal(L"↩"); - TL_IS_1329 = Str__literal(L"↫"); - TL_IS_1330 = Str__literal(L"⤹"); - TL_IS_1331 = Str__literal(L"⥳"); - TL_IS_1332 = Str__literal(L"↢"); - TL_IS_1333 = Str__literal(L"⪫"); - TL_IS_1334 = Str__literal(L"⤙"); - TL_IS_1335 = Str__literal(L"⪭"); - TL_IS_1336 = Str__literal(L"⪭︀"); - TL_IS_1337 = Str__literal(L"⤌"); - TL_IS_1338 = Str__literal(L"❲"); - TL_IS_1339 = Str__literal(L"{"); - TL_IS_1340 = Str__literal(L"["); - TL_IS_1341 = Str__literal(L"⦋"); - TL_IS_1342 = Str__literal(L"⦏"); - TL_IS_1343 = Str__literal(L"⦍"); - TL_IS_1344 = Str__literal(L"ľ"); - TL_IS_1345 = Str__literal(L"ļ"); - TL_IS_1346 = Str__literal(L"⌈"); - TL_IS_1347 = Str__literal(L"{"); - TL_IS_1348 = Str__literal(L"л"); - TL_IS_1349 = Str__literal(L"⤶"); - TL_IS_1350 = Str__literal(L"“"); - TL_IS_1351 = Str__literal(L"„"); - TL_IS_1352 = Str__literal(L"⥧"); - TL_IS_1353 = Str__literal(L"⥋"); - TL_IS_1354 = Str__literal(L"↲"); - TL_IS_1355 = Str__literal(L"≤"); - TL_IS_1356 = Str__literal(L"←"); - TL_IS_1357 = Str__literal(L"↢"); - TL_IS_1358 = Str__literal(L"↽"); - TL_IS_1359 = Str__literal(L"↼"); - TL_IS_1360 = Str__literal(L"⇇"); - TL_IS_1361 = Str__literal(L"↔"); - TL_IS_1362 = Str__literal(L"⇆"); - TL_IS_1363 = Str__literal(L"⇋"); - TL_IS_1364 = Str__literal(L"↭"); - TL_IS_1365 = Str__literal(L"⋋"); - TL_IS_1366 = Str__literal(L"⋚"); - TL_IS_1367 = Str__literal(L"≤"); - TL_IS_1368 = Str__literal(L"≦"); - TL_IS_1369 = Str__literal(L"⩽"); - TL_IS_1370 = Str__literal(L"⩽"); - TL_IS_1371 = Str__literal(L"⪨"); - TL_IS_1372 = Str__literal(L"⩿"); - TL_IS_1373 = Str__literal(L"⪁"); - TL_IS_1374 = Str__literal(L"⪃"); - TL_IS_1375 = Str__literal(L"⋚︀"); - TL_IS_1376 = Str__literal(L"⪓"); - TL_IS_1377 = Str__literal(L"⪅"); - TL_IS_1378 = Str__literal(L"⋖"); - TL_IS_1379 = Str__literal(L"⋚"); - TL_IS_1380 = Str__literal(L"⪋"); - TL_IS_1381 = Str__literal(L"≶"); - TL_IS_1382 = Str__literal(L"≲"); - TL_IS_1383 = Str__literal(L"⥼"); - TL_IS_1384 = Str__literal(L"⌊"); - TL_IS_1385 = Str__literal(L"𝔩"); - TL_IS_1386 = Str__literal(L"≶"); - TL_IS_1387 = Str__literal(L"⪑"); - TL_IS_1388 = Str__literal(L"↽"); - TL_IS_1389 = Str__literal(L"↼"); - TL_IS_1390 = Str__literal(L"⥪"); - TL_IS_1391 = Str__literal(L"▄"); - TL_IS_1392 = Str__literal(L"љ"); - TL_IS_1393 = Str__literal(L"≪"); - TL_IS_1394 = Str__literal(L"⇇"); - TL_IS_1395 = Str__literal(L"⌞"); - TL_IS_1396 = Str__literal(L"⥫"); - TL_IS_1397 = Str__literal(L"◺"); - TL_IS_1398 = Str__literal(L"ŀ"); - TL_IS_1399 = Str__literal(L"⎰"); - TL_IS_1400 = Str__literal(L"⎰"); - TL_IS_1401 = Str__literal(L"≨"); - TL_IS_1402 = Str__literal(L"⪉"); - TL_IS_1403 = Str__literal(L"⪉"); - TL_IS_1404 = Str__literal(L"⪇"); - TL_IS_1405 = Str__literal(L"⪇"); - TL_IS_1406 = Str__literal(L"≨"); - TL_IS_1407 = Str__literal(L"⋦"); - TL_IS_1408 = Str__literal(L"⟬"); - TL_IS_1409 = Str__literal(L"⇽"); - TL_IS_1410 = Str__literal(L"⟦"); - TL_IS_1411 = Str__literal(L"⟵"); - TL_IS_1412 = Str__literal(L"⟷"); - TL_IS_1413 = Str__literal(L"⟼"); - TL_IS_1414 = Str__literal(L"⟶"); - TL_IS_1415 = Str__literal(L"↫"); - TL_IS_1416 = Str__literal(L"↬"); - TL_IS_1417 = Str__literal(L"⦅"); - TL_IS_1418 = Str__literal(L"𝕝"); - TL_IS_1419 = Str__literal(L"⨭"); - TL_IS_1420 = Str__literal(L"⨴"); - TL_IS_1421 = Str__literal(L"∗"); - TL_IS_1422 = Str__literal(L"_"); - TL_IS_1423 = Str__literal(L"◊"); - TL_IS_1424 = Str__literal(L"◊"); - TL_IS_1425 = Str__literal(L"⧫"); - TL_IS_1426 = Str__literal(L"("); - TL_IS_1427 = Str__literal(L"⦓"); - TL_IS_1428 = Str__literal(L"⇆"); - TL_IS_1429 = Str__literal(L"⌟"); - TL_IS_1430 = Str__literal(L"⇋"); - TL_IS_1431 = Str__literal(L"⥭"); - TL_IS_1432 = Str__literal(L"‎"); - TL_IS_1433 = Str__literal(L"⊿"); - TL_IS_1434 = Str__literal(L"‹"); - TL_IS_1435 = Str__literal(L"𝓁"); - TL_IS_1436 = Str__literal(L"↰"); - TL_IS_1437 = Str__literal(L"≲"); - TL_IS_1438 = Str__literal(L"⪍"); - TL_IS_1439 = Str__literal(L"⪏"); - TL_IS_1440 = Str__literal(L"["); - TL_IS_1441 = Str__literal(L"‘"); - TL_IS_1442 = Str__literal(L"‚"); - TL_IS_1443 = Str__literal(L"ł"); - TL_IS_1444 = Str__literal(L"<"); - TL_IS_1445 = Str__literal(L"<"); - TL_IS_1446 = Str__literal(L"⪦"); - TL_IS_1447 = Str__literal(L"⩹"); - TL_IS_1448 = Str__literal(L"⋖"); - TL_IS_1449 = Str__literal(L"⋋"); - TL_IS_1450 = Str__literal(L"⋉"); - TL_IS_1451 = Str__literal(L"⥶"); - TL_IS_1452 = Str__literal(L"⩻"); - TL_IS_1453 = Str__literal(L"⦖"); - TL_IS_1454 = Str__literal(L"◃"); - TL_IS_1455 = Str__literal(L"⊴"); - TL_IS_1456 = Str__literal(L"◂"); - TL_IS_1457 = Str__literal(L"⥊"); - TL_IS_1458 = Str__literal(L"⥦"); - TL_IS_1459 = Str__literal(L"≨︀"); - TL_IS_1460 = Str__literal(L"≨︀"); - TL_IS_1461 = Str__literal(L"∺"); - TL_IS_1462 = Str__literal(L"¯"); - TL_IS_1463 = Str__literal(L"¯"); - TL_IS_1464 = Str__literal(L"♂"); - TL_IS_1465 = Str__literal(L"✠"); - TL_IS_1466 = Str__literal(L"✠"); - TL_IS_1467 = Str__literal(L"↦"); - TL_IS_1468 = Str__literal(L"↦"); - TL_IS_1469 = Str__literal(L"↧"); - TL_IS_1470 = Str__literal(L"↤"); - TL_IS_1471 = Str__literal(L"↥"); - TL_IS_1472 = Str__literal(L"▮"); - TL_IS_1473 = Str__literal(L"⨩"); - TL_IS_1474 = Str__literal(L"м"); - TL_IS_1475 = Str__literal(L"—"); - TL_IS_1476 = Str__literal(L"∡"); - TL_IS_1477 = Str__literal(L"𝔪"); - TL_IS_1478 = Str__literal(L"℧"); - TL_IS_1479 = Str__literal(L"µ"); - TL_IS_1480 = Str__literal(L"µ"); - TL_IS_1481 = Str__literal(L"∣"); - TL_IS_1482 = Str__literal(L"*"); - TL_IS_1483 = Str__literal(L"⫰"); - TL_IS_1484 = Str__literal(L"·"); - TL_IS_1485 = Str__literal(L"·"); - TL_IS_1486 = Str__literal(L"−"); - TL_IS_1487 = Str__literal(L"⊟"); - TL_IS_1488 = Str__literal(L"∸"); - TL_IS_1489 = Str__literal(L"⨪"); - TL_IS_1490 = Str__literal(L"⫛"); - TL_IS_1491 = Str__literal(L"…"); - TL_IS_1492 = Str__literal(L"∓"); - TL_IS_1493 = Str__literal(L"⊧"); - TL_IS_1494 = Str__literal(L"𝕞"); - TL_IS_1495 = Str__literal(L"∓"); - TL_IS_1496 = Str__literal(L"𝓂"); - TL_IS_1497 = Str__literal(L"∾"); - TL_IS_1498 = Str__literal(L"μ"); - TL_IS_1499 = Str__literal(L"⊸"); - TL_IS_1500 = Str__literal(L"⊸"); - TL_IS_1501 = Str__literal(L"⋙̸"); - TL_IS_1502 = Str__literal(L"≫⃒"); - TL_IS_1503 = Str__literal(L"≫̸"); - TL_IS_1504 = Str__literal(L"⇍"); - TL_IS_1505 = Str__literal(L"⇎"); - TL_IS_1506 = Str__literal(L"⋘̸"); - TL_IS_1507 = Str__literal(L"≪⃒"); - TL_IS_1508 = Str__literal(L"≪̸"); - TL_IS_1509 = Str__literal(L"⇏"); - TL_IS_1510 = Str__literal(L"⊯"); - TL_IS_1511 = Str__literal(L"⊮"); - TL_IS_1512 = Str__literal(L"∇"); - TL_IS_1513 = Str__literal(L"ń"); - TL_IS_1514 = Str__literal(L"∠⃒"); - TL_IS_1515 = Str__literal(L"≉"); - TL_IS_1516 = Str__literal(L"⩰̸"); - TL_IS_1517 = Str__literal(L"≋̸"); - TL_IS_1518 = Str__literal(L"ʼn"); - TL_IS_1519 = Str__literal(L"≉"); - TL_IS_1520 = Str__literal(L"♮"); - TL_IS_1521 = Str__literal(L"♮"); - TL_IS_1522 = Str__literal(L"ℕ"); - TL_IS_1523 = Str__literal(L" "); - TL_IS_1524 = Str__literal(L" "); - TL_IS_1525 = Str__literal(L"≎̸"); - TL_IS_1526 = Str__literal(L"≏̸"); - TL_IS_1527 = Str__literal(L"⩃"); - TL_IS_1528 = Str__literal(L"ň"); - TL_IS_1529 = Str__literal(L"ņ"); - TL_IS_1530 = Str__literal(L"≇"); - TL_IS_1531 = Str__literal(L"⩭̸"); - TL_IS_1532 = Str__literal(L"⩂"); - TL_IS_1533 = Str__literal(L"н"); - TL_IS_1534 = Str__literal(L"–"); - TL_IS_1535 = Str__literal(L"≠"); - TL_IS_1536 = Str__literal(L"⇗"); - TL_IS_1537 = Str__literal(L"⤤"); - TL_IS_1538 = Str__literal(L"↗"); - TL_IS_1539 = Str__literal(L"↗"); - TL_IS_1540 = Str__literal(L"≐̸"); - TL_IS_1541 = Str__literal(L"≢"); - TL_IS_1542 = Str__literal(L"⤨"); - TL_IS_1543 = Str__literal(L"≂̸"); - TL_IS_1544 = Str__literal(L"∄"); - TL_IS_1545 = Str__literal(L"∄"); - TL_IS_1546 = Str__literal(L"𝔫"); - TL_IS_1547 = Str__literal(L"≧̸"); - TL_IS_1548 = Str__literal(L"≱"); - TL_IS_1549 = Str__literal(L"≱"); - TL_IS_1550 = Str__literal(L"≧̸"); - TL_IS_1551 = Str__literal(L"⩾̸"); - TL_IS_1552 = Str__literal(L"⩾̸"); - TL_IS_1553 = Str__literal(L"≵"); - TL_IS_1554 = Str__literal(L"≯"); - TL_IS_1555 = Str__literal(L"≯"); - TL_IS_1556 = Str__literal(L"⇎"); - TL_IS_1557 = Str__literal(L"↮"); - TL_IS_1558 = Str__literal(L"⫲"); - TL_IS_1559 = Str__literal(L"∋"); - TL_IS_1560 = Str__literal(L"⋼"); - TL_IS_1561 = Str__literal(L"⋺"); - TL_IS_1562 = Str__literal(L"∋"); - TL_IS_1563 = Str__literal(L"њ"); - TL_IS_1564 = Str__literal(L"⇍"); - TL_IS_1565 = Str__literal(L"≦̸"); - TL_IS_1566 = Str__literal(L"↚"); - TL_IS_1567 = Str__literal(L"‥"); - TL_IS_1568 = Str__literal(L"≰"); - TL_IS_1569 = Str__literal(L"↚"); - TL_IS_1570 = Str__literal(L"↮"); - TL_IS_1571 = Str__literal(L"≰"); - TL_IS_1572 = Str__literal(L"≦̸"); - TL_IS_1573 = Str__literal(L"⩽̸"); - TL_IS_1574 = Str__literal(L"⩽̸"); - TL_IS_1575 = Str__literal(L"≮"); - TL_IS_1576 = Str__literal(L"≴"); - TL_IS_1577 = Str__literal(L"≮"); - TL_IS_1578 = Str__literal(L"⋪"); - TL_IS_1579 = Str__literal(L"⋬"); - TL_IS_1580 = Str__literal(L"∤"); - TL_IS_1581 = Str__literal(L"𝕟"); - TL_IS_1582 = Str__literal(L"¬"); - TL_IS_1583 = Str__literal(L"¬"); - TL_IS_1584 = Str__literal(L"∉"); - TL_IS_1585 = Str__literal(L"⋹̸"); - TL_IS_1586 = Str__literal(L"⋵̸"); - TL_IS_1587 = Str__literal(L"∉"); - TL_IS_1588 = Str__literal(L"⋷"); - TL_IS_1589 = Str__literal(L"⋶"); - TL_IS_1590 = Str__literal(L"∌"); - TL_IS_1591 = Str__literal(L"∌"); - TL_IS_1592 = Str__literal(L"⋾"); - TL_IS_1593 = Str__literal(L"⋽"); - TL_IS_1594 = Str__literal(L"∦"); - TL_IS_1595 = Str__literal(L"∦"); - TL_IS_1596 = Str__literal(L"⫽⃥"); - TL_IS_1597 = Str__literal(L"∂̸"); - TL_IS_1598 = Str__literal(L"⨔"); - TL_IS_1599 = Str__literal(L"⊀"); - TL_IS_1600 = Str__literal(L"⋠"); - TL_IS_1601 = Str__literal(L"⪯̸"); - TL_IS_1602 = Str__literal(L"⊀"); - TL_IS_1603 = Str__literal(L"⪯̸"); - TL_IS_1604 = Str__literal(L"⇏"); - TL_IS_1605 = Str__literal(L"↛"); - TL_IS_1606 = Str__literal(L"⤳̸"); - TL_IS_1607 = Str__literal(L"↝̸"); - TL_IS_1608 = Str__literal(L"↛"); - TL_IS_1609 = Str__literal(L"⋫"); - TL_IS_1610 = Str__literal(L"⋭"); - TL_IS_1611 = Str__literal(L"⊁"); - TL_IS_1612 = Str__literal(L"⋡"); - TL_IS_1613 = Str__literal(L"⪰̸"); - TL_IS_1614 = Str__literal(L"𝓃"); - TL_IS_1615 = Str__literal(L"∤"); - TL_IS_1616 = Str__literal(L"∦"); - TL_IS_1617 = Str__literal(L"≁"); - TL_IS_1618 = Str__literal(L"≄"); - TL_IS_1619 = Str__literal(L"≄"); - TL_IS_1620 = Str__literal(L"∤"); - TL_IS_1621 = Str__literal(L"∦"); - TL_IS_1622 = Str__literal(L"⋢"); - TL_IS_1623 = Str__literal(L"⋣"); - TL_IS_1624 = Str__literal(L"⊄"); - TL_IS_1625 = Str__literal(L"⫅̸"); - TL_IS_1626 = Str__literal(L"⊈"); - TL_IS_1627 = Str__literal(L"⊂⃒"); - TL_IS_1628 = Str__literal(L"⊈"); - TL_IS_1629 = Str__literal(L"⫅̸"); - TL_IS_1630 = Str__literal(L"⊁"); - TL_IS_1631 = Str__literal(L"⪰̸"); - TL_IS_1632 = Str__literal(L"⊅"); - TL_IS_1633 = Str__literal(L"⫆̸"); - TL_IS_1634 = Str__literal(L"⊉"); - TL_IS_1635 = Str__literal(L"⊃⃒"); - TL_IS_1636 = Str__literal(L"⊉"); - TL_IS_1637 = Str__literal(L"⫆̸"); - TL_IS_1638 = Str__literal(L"≹"); - TL_IS_1639 = Str__literal(L"ñ"); - TL_IS_1640 = Str__literal(L"ñ"); - TL_IS_1641 = Str__literal(L"≸"); - TL_IS_1642 = Str__literal(L"⋪"); - TL_IS_1643 = Str__literal(L"⋬"); - TL_IS_1644 = Str__literal(L"⋫"); - TL_IS_1645 = Str__literal(L"⋭"); - TL_IS_1646 = Str__literal(L"ν"); - TL_IS_1647 = Str__literal(L"#"); - TL_IS_1648 = Str__literal(L"№"); - TL_IS_1649 = Str__literal(L" "); - TL_IS_1650 = Str__literal(L"⊭"); - TL_IS_1651 = Str__literal(L"⤄"); - TL_IS_1652 = Str__literal(L"≍⃒"); - TL_IS_1653 = Str__literal(L"⊬"); - TL_IS_1654 = Str__literal(L"≥⃒"); - TL_IS_1655 = Str__literal(L">⃒"); - TL_IS_1656 = Str__literal(L"⧞"); - TL_IS_1657 = Str__literal(L"⤂"); - TL_IS_1658 = Str__literal(L"≤⃒"); - TL_IS_1659 = Str__literal(L"<⃒"); - TL_IS_1660 = Str__literal(L"⊴⃒"); - TL_IS_1661 = Str__literal(L"⤃"); - TL_IS_1662 = Str__literal(L"⊵⃒"); - TL_IS_1663 = Str__literal(L"∼⃒"); - TL_IS_1664 = Str__literal(L"⇖"); - TL_IS_1665 = Str__literal(L"⤣"); - TL_IS_1666 = Str__literal(L"↖"); - TL_IS_1667 = Str__literal(L"↖"); - TL_IS_1668 = Str__literal(L"⤧"); - TL_IS_1669 = Str__literal(L"Ⓢ"); - TL_IS_1670 = Str__literal(L"ó"); - TL_IS_1671 = Str__literal(L"ó"); - TL_IS_1672 = Str__literal(L"⊛"); - TL_IS_1673 = Str__literal(L"⊚"); - TL_IS_1674 = Str__literal(L"ô"); - TL_IS_1675 = Str__literal(L"ô"); - TL_IS_1676 = Str__literal(L"о"); - TL_IS_1677 = Str__literal(L"⊝"); - TL_IS_1678 = Str__literal(L"ő"); - TL_IS_1679 = Str__literal(L"⨸"); - TL_IS_1680 = Str__literal(L"⊙"); - TL_IS_1681 = Str__literal(L"⦼"); - TL_IS_1682 = Str__literal(L"œ"); - TL_IS_1683 = Str__literal(L"⦿"); - TL_IS_1684 = Str__literal(L"𝔬"); - TL_IS_1685 = Str__literal(L"˛"); - TL_IS_1686 = Str__literal(L"ò"); - TL_IS_1687 = Str__literal(L"ò"); - TL_IS_1688 = Str__literal(L"⧁"); - TL_IS_1689 = Str__literal(L"⦵"); - TL_IS_1690 = Str__literal(L"Ω"); - TL_IS_1691 = Str__literal(L"∮"); - TL_IS_1692 = Str__literal(L"↺"); - TL_IS_1693 = Str__literal(L"⦾"); - TL_IS_1694 = Str__literal(L"⦻"); - TL_IS_1695 = Str__literal(L"‾"); - TL_IS_1696 = Str__literal(L"⧀"); - TL_IS_1697 = Str__literal(L"ō"); - TL_IS_1698 = Str__literal(L"ω"); - TL_IS_1699 = Str__literal(L"ο"); - TL_IS_1700 = Str__literal(L"⦶"); - TL_IS_1701 = Str__literal(L"⊖"); - TL_IS_1702 = Str__literal(L"𝕠"); - TL_IS_1703 = Str__literal(L"⦷"); - TL_IS_1704 = Str__literal(L"⦹"); - TL_IS_1705 = Str__literal(L"⊕"); - TL_IS_1706 = Str__literal(L"∨"); - TL_IS_1707 = Str__literal(L"↻"); - TL_IS_1708 = Str__literal(L"⩝"); - TL_IS_1709 = Str__literal(L"ℴ"); - TL_IS_1710 = Str__literal(L"ℴ"); - TL_IS_1711 = Str__literal(L"ª"); - TL_IS_1712 = Str__literal(L"ª"); - TL_IS_1713 = Str__literal(L"º"); - TL_IS_1714 = Str__literal(L"º"); - TL_IS_1715 = Str__literal(L"⊶"); - TL_IS_1716 = Str__literal(L"⩖"); - TL_IS_1717 = Str__literal(L"⩗"); - TL_IS_1718 = Str__literal(L"⩛"); - TL_IS_1719 = Str__literal(L"ℴ"); - TL_IS_1720 = Str__literal(L"ø"); - TL_IS_1721 = Str__literal(L"ø"); - TL_IS_1722 = Str__literal(L"⊘"); - TL_IS_1723 = Str__literal(L"õ"); - TL_IS_1724 = Str__literal(L"õ"); - TL_IS_1725 = Str__literal(L"⊗"); - TL_IS_1726 = Str__literal(L"⨶"); - TL_IS_1727 = Str__literal(L"ö"); - TL_IS_1728 = Str__literal(L"ö"); - TL_IS_1729 = Str__literal(L"⌽"); - TL_IS_1730 = Str__literal(L"∥"); - TL_IS_1731 = Str__literal(L"¶"); - TL_IS_1732 = Str__literal(L"¶"); - TL_IS_1733 = Str__literal(L"∥"); - TL_IS_1734 = Str__literal(L"⫳"); - TL_IS_1735 = Str__literal(L"⫽"); - TL_IS_1736 = Str__literal(L"∂"); - TL_IS_1737 = Str__literal(L"п"); - TL_IS_1738 = Str__literal(L"%"); - TL_IS_1739 = Str__literal(L"."); - TL_IS_1740 = Str__literal(L"‰"); - TL_IS_1741 = Str__literal(L"⊥"); - TL_IS_1742 = Str__literal(L"‱"); - TL_IS_1743 = Str__literal(L"𝔭"); - TL_IS_1744 = Str__literal(L"φ"); - TL_IS_1745 = Str__literal(L"ϕ"); - TL_IS_1746 = Str__literal(L"ℳ"); - TL_IS_1747 = Str__literal(L"☎"); - TL_IS_1748 = Str__literal(L"π"); - TL_IS_1749 = Str__literal(L"⋔"); - TL_IS_1750 = Str__literal(L"ϖ"); - TL_IS_1751 = Str__literal(L"ℏ"); - TL_IS_1752 = Str__literal(L"ℎ"); - TL_IS_1753 = Str__literal(L"ℏ"); - TL_IS_1754 = Str__literal(L"+"); - TL_IS_1755 = Str__literal(L"⨣"); - TL_IS_1756 = Str__literal(L"⊞"); - TL_IS_1757 = Str__literal(L"⨢"); - TL_IS_1758 = Str__literal(L"∔"); - TL_IS_1759 = Str__literal(L"⨥"); - TL_IS_1760 = Str__literal(L"⩲"); - TL_IS_1761 = Str__literal(L"±"); - TL_IS_1762 = Str__literal(L"±"); - TL_IS_1763 = Str__literal(L"⨦"); - TL_IS_1764 = Str__literal(L"⨧"); - TL_IS_1765 = Str__literal(L"±"); - TL_IS_1766 = Str__literal(L"⨕"); - TL_IS_1767 = Str__literal(L"𝕡"); - TL_IS_1768 = Str__literal(L"£"); - TL_IS_1769 = Str__literal(L"£"); - TL_IS_1770 = Str__literal(L"≺"); - TL_IS_1771 = Str__literal(L"⪳"); - TL_IS_1772 = Str__literal(L"⪷"); - TL_IS_1773 = Str__literal(L"≼"); - TL_IS_1774 = Str__literal(L"⪯"); - TL_IS_1775 = Str__literal(L"≺"); - TL_IS_1776 = Str__literal(L"⪷"); - TL_IS_1777 = Str__literal(L"≼"); - TL_IS_1778 = Str__literal(L"⪯"); - TL_IS_1779 = Str__literal(L"⪹"); - TL_IS_1780 = Str__literal(L"⪵"); - TL_IS_1781 = Str__literal(L"⋨"); - TL_IS_1782 = Str__literal(L"≾"); - TL_IS_1783 = Str__literal(L"′"); - TL_IS_1784 = Str__literal(L"ℙ"); - TL_IS_1785 = Str__literal(L"⪵"); - TL_IS_1786 = Str__literal(L"⪹"); - TL_IS_1787 = Str__literal(L"⋨"); - TL_IS_1788 = Str__literal(L"∏"); - TL_IS_1789 = Str__literal(L"⌮"); - TL_IS_1790 = Str__literal(L"⌒"); - TL_IS_1791 = Str__literal(L"⌓"); - TL_IS_1792 = Str__literal(L"∝"); - TL_IS_1793 = Str__literal(L"∝"); - TL_IS_1794 = Str__literal(L"≾"); - TL_IS_1795 = Str__literal(L"⊰"); - TL_IS_1796 = Str__literal(L"𝓅"); - TL_IS_1797 = Str__literal(L"ψ"); - TL_IS_1798 = Str__literal(L" "); - TL_IS_1799 = Str__literal(L"𝔮"); - TL_IS_1800 = Str__literal(L"⨌"); - TL_IS_1801 = Str__literal(L"𝕢"); - TL_IS_1802 = Str__literal(L"⁗"); - TL_IS_1803 = Str__literal(L"𝓆"); - TL_IS_1804 = Str__literal(L"ℍ"); - TL_IS_1805 = Str__literal(L"⨖"); - TL_IS_1806 = Str__literal(L"?"); - TL_IS_1807 = Str__literal(L"≟"); - TL_IS_1808 = Str__literal(L"""); - TL_IS_1809 = Str__literal(L"""); - TL_IS_1810 = Str__literal(L"⇛"); - TL_IS_1811 = Str__literal(L"⇒"); - TL_IS_1812 = Str__literal(L"⤜"); - TL_IS_1813 = Str__literal(L"⤏"); - TL_IS_1814 = Str__literal(L"⥤"); - TL_IS_1815 = Str__literal(L"∽̱"); - TL_IS_1816 = Str__literal(L"ŕ"); - TL_IS_1817 = Str__literal(L"√"); - TL_IS_1818 = Str__literal(L"⦳"); - TL_IS_1819 = Str__literal(L"⟩"); - TL_IS_1820 = Str__literal(L"⦒"); - TL_IS_1821 = Str__literal(L"⦥"); - TL_IS_1822 = Str__literal(L"⟩"); - TL_IS_1823 = Str__literal(L"»"); - TL_IS_1824 = Str__literal(L"»"); - TL_IS_1825 = Str__literal(L"→"); - TL_IS_1826 = Str__literal(L"⥵"); - TL_IS_1827 = Str__literal(L"⇥"); - TL_IS_1828 = Str__literal(L"⤠"); - TL_IS_1829 = Str__literal(L"⤳"); - TL_IS_1830 = Str__literal(L"⤞"); - TL_IS_1831 = Str__literal(L"↪"); - TL_IS_1832 = Str__literal(L"↬"); - TL_IS_1833 = Str__literal(L"⥅"); - TL_IS_1834 = Str__literal(L"⥴"); - TL_IS_1835 = Str__literal(L"↣"); - TL_IS_1836 = Str__literal(L"↝"); - TL_IS_1837 = Str__literal(L"⤚"); - TL_IS_1838 = Str__literal(L"∶"); - TL_IS_1839 = Str__literal(L"ℚ"); - TL_IS_1840 = Str__literal(L"⤍"); - TL_IS_1841 = Str__literal(L"❳"); - TL_IS_1842 = Str__literal(L"}"); - TL_IS_1843 = Str__literal(L"]"); - TL_IS_1844 = Str__literal(L"⦌"); - TL_IS_1845 = Str__literal(L"⦎"); - TL_IS_1846 = Str__literal(L"⦐"); - TL_IS_1847 = Str__literal(L"ř"); - TL_IS_1848 = Str__literal(L"ŗ"); - TL_IS_1849 = Str__literal(L"⌉"); - TL_IS_1850 = Str__literal(L"}"); - TL_IS_1851 = Str__literal(L"р"); - TL_IS_1852 = Str__literal(L"⤷"); - TL_IS_1853 = Str__literal(L"⥩"); - TL_IS_1854 = Str__literal(L"”"); - TL_IS_1855 = Str__literal(L"”"); - TL_IS_1856 = Str__literal(L"↳"); - TL_IS_1857 = Str__literal(L"ℜ"); - TL_IS_1858 = Str__literal(L"ℛ"); - TL_IS_1859 = Str__literal(L"ℜ"); - TL_IS_1860 = Str__literal(L"ℝ"); - TL_IS_1861 = Str__literal(L"▭"); - TL_IS_1862 = Str__literal(L"®"); - TL_IS_1863 = Str__literal(L"®"); - TL_IS_1864 = Str__literal(L"⥽"); - TL_IS_1865 = Str__literal(L"⌋"); - TL_IS_1866 = Str__literal(L"𝔯"); - TL_IS_1867 = Str__literal(L"⇁"); - TL_IS_1868 = Str__literal(L"⇀"); - TL_IS_1869 = Str__literal(L"⥬"); - TL_IS_1870 = Str__literal(L"ρ"); - TL_IS_1871 = Str__literal(L"ϱ"); - TL_IS_1872 = Str__literal(L"→"); - TL_IS_1873 = Str__literal(L"↣"); - TL_IS_1874 = Str__literal(L"⇁"); - TL_IS_1875 = Str__literal(L"⇀"); - TL_IS_1876 = Str__literal(L"⇄"); - TL_IS_1877 = Str__literal(L"⇌"); - TL_IS_1878 = Str__literal(L"⇉"); - TL_IS_1879 = Str__literal(L"↝"); - TL_IS_1880 = Str__literal(L"⋌"); - TL_IS_1881 = Str__literal(L"˚"); - TL_IS_1882 = Str__literal(L"≓"); - TL_IS_1883 = Str__literal(L"⇄"); - TL_IS_1884 = Str__literal(L"⇌"); - TL_IS_1885 = Str__literal(L"‏"); - TL_IS_1886 = Str__literal(L"⎱"); - TL_IS_1887 = Str__literal(L"⎱"); - TL_IS_1888 = Str__literal(L"⫮"); - TL_IS_1889 = Str__literal(L"⟭"); - TL_IS_1890 = Str__literal(L"⇾"); - TL_IS_1891 = Str__literal(L"⟧"); - TL_IS_1892 = Str__literal(L"⦆"); - TL_IS_1893 = Str__literal(L"𝕣"); - TL_IS_1894 = Str__literal(L"⨮"); - TL_IS_1895 = Str__literal(L"⨵"); - TL_IS_1896 = Str__literal(L")"); - TL_IS_1897 = Str__literal(L"⦔"); - TL_IS_1898 = Str__literal(L"⨒"); - TL_IS_1899 = Str__literal(L"⇉"); - TL_IS_1900 = Str__literal(L"›"); - TL_IS_1901 = Str__literal(L"𝓇"); - TL_IS_1902 = Str__literal(L"↱"); - TL_IS_1903 = Str__literal(L"]"); - TL_IS_1904 = Str__literal(L"’"); - TL_IS_1905 = Str__literal(L"’"); - TL_IS_1906 = Str__literal(L"⋌"); - TL_IS_1907 = Str__literal(L"⋊"); - TL_IS_1908 = Str__literal(L"▹"); - TL_IS_1909 = Str__literal(L"⊵"); - TL_IS_1910 = Str__literal(L"▸"); - TL_IS_1911 = Str__literal(L"⧎"); - TL_IS_1912 = Str__literal(L"⥨"); - TL_IS_1913 = Str__literal(L"℞"); - TL_IS_1914 = Str__literal(L"ś"); - TL_IS_1915 = Str__literal(L"‚"); - TL_IS_1916 = Str__literal(L"≻"); - TL_IS_1917 = Str__literal(L"⪴"); - TL_IS_1918 = Str__literal(L"⪸"); - TL_IS_1919 = Str__literal(L"š"); - TL_IS_1920 = Str__literal(L"≽"); - TL_IS_1921 = Str__literal(L"⪰"); - TL_IS_1922 = Str__literal(L"ş"); - TL_IS_1923 = Str__literal(L"ŝ"); - TL_IS_1924 = Str__literal(L"⪶"); - TL_IS_1925 = Str__literal(L"⪺"); - TL_IS_1926 = Str__literal(L"⋩"); - TL_IS_1927 = Str__literal(L"⨓"); - TL_IS_1928 = Str__literal(L"≿"); - TL_IS_1929 = Str__literal(L"с"); - TL_IS_1930 = Str__literal(L"⋅"); - TL_IS_1931 = Str__literal(L"⊡"); - TL_IS_1932 = Str__literal(L"⩦"); - TL_IS_1933 = Str__literal(L"⇘"); - TL_IS_1934 = Str__literal(L"⤥"); - TL_IS_1935 = Str__literal(L"↘"); - TL_IS_1936 = Str__literal(L"↘"); - TL_IS_1937 = Str__literal(L"§"); - TL_IS_1938 = Str__literal(L"§"); - TL_IS_1939 = Str__literal(L";"); - TL_IS_1940 = Str__literal(L"⤩"); - TL_IS_1941 = Str__literal(L"∖"); - TL_IS_1942 = Str__literal(L"∖"); - TL_IS_1943 = Str__literal(L"✶"); - TL_IS_1944 = Str__literal(L"𝔰"); - TL_IS_1945 = Str__literal(L"⌢"); - TL_IS_1946 = Str__literal(L"♯"); - TL_IS_1947 = Str__literal(L"щ"); - TL_IS_1948 = Str__literal(L"ш"); - TL_IS_1949 = Str__literal(L"∣"); - TL_IS_1950 = Str__literal(L"∥"); - TL_IS_1951 = Str__literal(L"­"); - TL_IS_1952 = Str__literal(L"­"); - TL_IS_1953 = Str__literal(L"σ"); - TL_IS_1954 = Str__literal(L"ς"); - TL_IS_1955 = Str__literal(L"ς"); - TL_IS_1956 = Str__literal(L"∼"); - TL_IS_1957 = Str__literal(L"⩪"); - TL_IS_1958 = Str__literal(L"≃"); - TL_IS_1959 = Str__literal(L"≃"); - TL_IS_1960 = Str__literal(L"⪞"); - TL_IS_1961 = Str__literal(L"⪠"); - TL_IS_1962 = Str__literal(L"⪝"); - TL_IS_1963 = Str__literal(L"⪟"); - TL_IS_1964 = Str__literal(L"≆"); - TL_IS_1965 = Str__literal(L"⨤"); - TL_IS_1966 = Str__literal(L"⥲"); - TL_IS_1967 = Str__literal(L"←"); - TL_IS_1968 = Str__literal(L"∖"); - TL_IS_1969 = Str__literal(L"⨳"); - TL_IS_1970 = Str__literal(L"⧤"); - TL_IS_1971 = Str__literal(L"∣"); - TL_IS_1972 = Str__literal(L"⌣"); - TL_IS_1973 = Str__literal(L"⪪"); - TL_IS_1974 = Str__literal(L"⪬"); - TL_IS_1975 = Str__literal(L"⪬︀"); - TL_IS_1976 = Str__literal(L"ь"); - TL_IS_1977 = Str__literal(L"/"); - TL_IS_1978 = Str__literal(L"⧄"); - TL_IS_1979 = Str__literal(L"⌿"); - TL_IS_1980 = Str__literal(L"𝕤"); - TL_IS_1981 = Str__literal(L"♠"); - TL_IS_1982 = Str__literal(L"♠"); - TL_IS_1983 = Str__literal(L"∥"); - TL_IS_1984 = Str__literal(L"⊓"); - TL_IS_1985 = Str__literal(L"⊓︀"); - TL_IS_1986 = Str__literal(L"⊔"); - TL_IS_1987 = Str__literal(L"⊔︀"); - TL_IS_1988 = Str__literal(L"⊏"); - TL_IS_1989 = Str__literal(L"⊑"); - TL_IS_1990 = Str__literal(L"⊏"); - TL_IS_1991 = Str__literal(L"⊑"); - TL_IS_1992 = Str__literal(L"⊐"); - TL_IS_1993 = Str__literal(L"⊒"); - TL_IS_1994 = Str__literal(L"⊐"); - TL_IS_1995 = Str__literal(L"⊒"); - TL_IS_1996 = Str__literal(L"□"); - TL_IS_1997 = Str__literal(L"□"); - TL_IS_1998 = Str__literal(L"▪"); - TL_IS_1999 = Str__literal(L"▪"); - TL_IS_2000 = Str__literal(L"→"); - TL_IS_2001 = Str__literal(L"𝓈"); - TL_IS_2002 = Str__literal(L"∖"); - TL_IS_2003 = Str__literal(L"⌣"); - TL_IS_2004 = Str__literal(L"⋆"); - TL_IS_2005 = Str__literal(L"☆"); - TL_IS_2006 = Str__literal(L"★"); - TL_IS_2007 = Str__literal(L"ϵ"); - TL_IS_2008 = Str__literal(L"ϕ"); - TL_IS_2009 = Str__literal(L"¯"); - TL_IS_2010 = Str__literal(L"⊂"); - TL_IS_2011 = Str__literal(L"⫅"); - TL_IS_2012 = Str__literal(L"⪽"); - TL_IS_2013 = Str__literal(L"⊆"); - TL_IS_2014 = Str__literal(L"⫃"); - TL_IS_2015 = Str__literal(L"⫁"); - TL_IS_2016 = Str__literal(L"⫋"); - TL_IS_2017 = Str__literal(L"⊊"); - TL_IS_2018 = Str__literal(L"⪿"); - TL_IS_2019 = Str__literal(L"⥹"); - TL_IS_2020 = Str__literal(L"⊂"); - TL_IS_2021 = Str__literal(L"⊆"); - TL_IS_2022 = Str__literal(L"⫅"); - TL_IS_2023 = Str__literal(L"⊊"); - TL_IS_2024 = Str__literal(L"⫋"); - TL_IS_2025 = Str__literal(L"⫇"); - TL_IS_2026 = Str__literal(L"⫕"); - TL_IS_2027 = Str__literal(L"⫓"); - TL_IS_2028 = Str__literal(L"≻"); - TL_IS_2029 = Str__literal(L"⪸"); - TL_IS_2030 = Str__literal(L"≽"); - TL_IS_2031 = Str__literal(L"⪰"); - TL_IS_2032 = Str__literal(L"⪺"); - TL_IS_2033 = Str__literal(L"⪶"); - TL_IS_2034 = Str__literal(L"⋩"); - TL_IS_2035 = Str__literal(L"≿"); - TL_IS_2036 = Str__literal(L"∑"); - TL_IS_2037 = Str__literal(L"♪"); - TL_IS_2038 = Str__literal(L"¹"); - TL_IS_2039 = Str__literal(L"¹"); - TL_IS_2040 = Str__literal(L"²"); - TL_IS_2041 = Str__literal(L"²"); - TL_IS_2042 = Str__literal(L"³"); - TL_IS_2043 = Str__literal(L"³"); - TL_IS_2044 = Str__literal(L"⊃"); - TL_IS_2045 = Str__literal(L"⫆"); - TL_IS_2046 = Str__literal(L"⪾"); - TL_IS_2047 = Str__literal(L"⫘"); - TL_IS_2048 = Str__literal(L"⊇"); - TL_IS_2049 = Str__literal(L"⫄"); - TL_IS_2050 = Str__literal(L"⟉"); - TL_IS_2051 = Str__literal(L"⫗"); - TL_IS_2052 = Str__literal(L"⥻"); - TL_IS_2053 = Str__literal(L"⫂"); - TL_IS_2054 = Str__literal(L"⫌"); - TL_IS_2055 = Str__literal(L"⊋"); - TL_IS_2056 = Str__literal(L"⫀"); - TL_IS_2057 = Str__literal(L"⊃"); - TL_IS_2058 = Str__literal(L"⊇"); - TL_IS_2059 = Str__literal(L"⫆"); - TL_IS_2060 = Str__literal(L"⊋"); - TL_IS_2061 = Str__literal(L"⫌"); - TL_IS_2062 = Str__literal(L"⫈"); - TL_IS_2063 = Str__literal(L"⫔"); - TL_IS_2064 = Str__literal(L"⫖"); - TL_IS_2065 = Str__literal(L"⇙"); - TL_IS_2066 = Str__literal(L"⤦"); - TL_IS_2067 = Str__literal(L"↙"); - TL_IS_2068 = Str__literal(L"↙"); - TL_IS_2069 = Str__literal(L"⤪"); - TL_IS_2070 = Str__literal(L"ß"); - TL_IS_2071 = Str__literal(L"ß"); - TL_IS_2072 = Str__literal(L"⌖"); - TL_IS_2073 = Str__literal(L"τ"); - TL_IS_2074 = Str__literal(L"⎴"); - TL_IS_2075 = Str__literal(L"ť"); - TL_IS_2076 = Str__literal(L"ţ"); - TL_IS_2077 = Str__literal(L"т"); - TL_IS_2078 = Str__literal(L"⃛"); - TL_IS_2079 = Str__literal(L"⌕"); - TL_IS_2080 = Str__literal(L"𝔱"); - TL_IS_2081 = Str__literal(L"∴"); - TL_IS_2082 = Str__literal(L"∴"); - TL_IS_2083 = Str__literal(L"θ"); - TL_IS_2084 = Str__literal(L"ϑ"); - TL_IS_2085 = Str__literal(L"ϑ"); - TL_IS_2086 = Str__literal(L"≈"); - TL_IS_2087 = Str__literal(L"∼"); - TL_IS_2088 = Str__literal(L" "); - TL_IS_2089 = Str__literal(L"≈"); - TL_IS_2090 = Str__literal(L"∼"); - TL_IS_2091 = Str__literal(L"þ"); - TL_IS_2092 = Str__literal(L"þ"); - TL_IS_2093 = Str__literal(L"˜"); - TL_IS_2094 = Str__literal(L"×"); - TL_IS_2095 = Str__literal(L"×"); - TL_IS_2096 = Str__literal(L"⊠"); - TL_IS_2097 = Str__literal(L"⨱"); - TL_IS_2098 = Str__literal(L"⨰"); - TL_IS_2099 = Str__literal(L"∭"); - TL_IS_2100 = Str__literal(L"⤨"); - TL_IS_2101 = Str__literal(L"⊤"); - TL_IS_2102 = Str__literal(L"⌶"); - TL_IS_2103 = Str__literal(L"⫱"); - TL_IS_2104 = Str__literal(L"𝕥"); - TL_IS_2105 = Str__literal(L"⫚"); - TL_IS_2106 = Str__literal(L"⤩"); - TL_IS_2107 = Str__literal(L"‴"); - TL_IS_2108 = Str__literal(L"™"); - TL_IS_2109 = Str__literal(L"▵"); - TL_IS_2110 = Str__literal(L"▿"); - TL_IS_2111 = Str__literal(L"◃"); - TL_IS_2112 = Str__literal(L"⊴"); - TL_IS_2113 = Str__literal(L"≜"); - TL_IS_2114 = Str__literal(L"▹"); - TL_IS_2115 = Str__literal(L"⊵"); - TL_IS_2116 = Str__literal(L"◬"); - TL_IS_2117 = Str__literal(L"≜"); - TL_IS_2118 = Str__literal(L"⨺"); - TL_IS_2119 = Str__literal(L"⨹"); - TL_IS_2120 = Str__literal(L"⧍"); - TL_IS_2121 = Str__literal(L"⨻"); - TL_IS_2122 = Str__literal(L"⏢"); - TL_IS_2123 = Str__literal(L"𝓉"); - TL_IS_2124 = Str__literal(L"ц"); - TL_IS_2125 = Str__literal(L"ћ"); - TL_IS_2126 = Str__literal(L"ŧ"); - TL_IS_2127 = Str__literal(L"≬"); - TL_IS_2128 = Str__literal(L"↞"); - TL_IS_2129 = Str__literal(L"↠"); - TL_IS_2130 = Str__literal(L"⇑"); - TL_IS_2131 = Str__literal(L"⥣"); - TL_IS_2132 = Str__literal(L"ú"); - TL_IS_2133 = Str__literal(L"ú"); - TL_IS_2134 = Str__literal(L"↑"); - TL_IS_2135 = Str__literal(L"ў"); - TL_IS_2136 = Str__literal(L"ŭ"); - TL_IS_2137 = Str__literal(L"û"); - TL_IS_2138 = Str__literal(L"û"); - TL_IS_2139 = Str__literal(L"у"); - TL_IS_2140 = Str__literal(L"⇅"); - TL_IS_2141 = Str__literal(L"ű"); - TL_IS_2142 = Str__literal(L"⥮"); - TL_IS_2143 = Str__literal(L"⥾"); - TL_IS_2144 = Str__literal(L"𝔲"); - TL_IS_2145 = Str__literal(L"ù"); - TL_IS_2146 = Str__literal(L"ù"); - TL_IS_2147 = Str__literal(L"↿"); - TL_IS_2148 = Str__literal(L"↾"); - TL_IS_2149 = Str__literal(L"▀"); - TL_IS_2150 = Str__literal(L"⌜"); - TL_IS_2151 = Str__literal(L"⌜"); - TL_IS_2152 = Str__literal(L"⌏"); - TL_IS_2153 = Str__literal(L"◸"); - TL_IS_2154 = Str__literal(L"ū"); - TL_IS_2155 = Str__literal(L"¨"); - TL_IS_2156 = Str__literal(L"¨"); - TL_IS_2157 = Str__literal(L"ų"); - TL_IS_2158 = Str__literal(L"𝕦"); - TL_IS_2159 = Str__literal(L"↑"); - TL_IS_2160 = Str__literal(L"↕"); - TL_IS_2161 = Str__literal(L"↿"); - TL_IS_2162 = Str__literal(L"↾"); - TL_IS_2163 = Str__literal(L"⊎"); - TL_IS_2164 = Str__literal(L"υ"); - TL_IS_2165 = Str__literal(L"ϒ"); - TL_IS_2166 = Str__literal(L"υ"); - TL_IS_2167 = Str__literal(L"⇈"); - TL_IS_2168 = Str__literal(L"⌝"); - TL_IS_2169 = Str__literal(L"⌝"); - TL_IS_2170 = Str__literal(L"⌎"); - TL_IS_2171 = Str__literal(L"ů"); - TL_IS_2172 = Str__literal(L"◹"); - TL_IS_2173 = Str__literal(L"𝓊"); - TL_IS_2174 = Str__literal(L"⋰"); - TL_IS_2175 = Str__literal(L"ũ"); - TL_IS_2176 = Str__literal(L"▵"); - TL_IS_2177 = Str__literal(L"▴"); - TL_IS_2178 = Str__literal(L"⇈"); - TL_IS_2179 = Str__literal(L"ü"); - TL_IS_2180 = Str__literal(L"ü"); - TL_IS_2181 = Str__literal(L"⦧"); - TL_IS_2182 = Str__literal(L"⇕"); - TL_IS_2183 = Str__literal(L"⫨"); - TL_IS_2184 = Str__literal(L"⫩"); - TL_IS_2185 = Str__literal(L"⊨"); - TL_IS_2186 = Str__literal(L"⦜"); - TL_IS_2187 = Str__literal(L"ϵ"); - TL_IS_2188 = Str__literal(L"ϰ"); - TL_IS_2189 = Str__literal(L"∅"); - TL_IS_2190 = Str__literal(L"ϕ"); - TL_IS_2191 = Str__literal(L"ϖ"); - TL_IS_2192 = Str__literal(L"∝"); - TL_IS_2193 = Str__literal(L"↕"); - TL_IS_2194 = Str__literal(L"ϱ"); - TL_IS_2195 = Str__literal(L"ς"); - TL_IS_2196 = Str__literal(L"⊊︀"); - TL_IS_2197 = Str__literal(L"⫋︀"); - TL_IS_2198 = Str__literal(L"⊋︀"); - TL_IS_2199 = Str__literal(L"⫌︀"); - TL_IS_2200 = Str__literal(L"ϑ"); - TL_IS_2201 = Str__literal(L"⊲"); - TL_IS_2202 = Str__literal(L"⊳"); - TL_IS_2203 = Str__literal(L"в"); - TL_IS_2204 = Str__literal(L"⊢"); - TL_IS_2205 = Str__literal(L"∨"); - TL_IS_2206 = Str__literal(L"⊻"); - TL_IS_2207 = Str__literal(L"≚"); - TL_IS_2208 = Str__literal(L"⋮"); - TL_IS_2209 = Str__literal(L"|"); - TL_IS_2210 = Str__literal(L"|"); - TL_IS_2211 = Str__literal(L"𝔳"); - TL_IS_2212 = Str__literal(L"⊲"); - TL_IS_2213 = Str__literal(L"⊂⃒"); - TL_IS_2214 = Str__literal(L"⊃⃒"); - TL_IS_2215 = Str__literal(L"𝕧"); - TL_IS_2216 = Str__literal(L"∝"); - TL_IS_2217 = Str__literal(L"⊳"); - TL_IS_2218 = Str__literal(L"𝓋"); - TL_IS_2219 = Str__literal(L"⫋︀"); - TL_IS_2220 = Str__literal(L"⊊︀"); - TL_IS_2221 = Str__literal(L"⫌︀"); - TL_IS_2222 = Str__literal(L"⊋︀"); - TL_IS_2223 = Str__literal(L"⦚"); - TL_IS_2224 = Str__literal(L"ŵ"); - TL_IS_2225 = Str__literal(L"⩟"); - TL_IS_2226 = Str__literal(L"∧"); - TL_IS_2227 = Str__literal(L"≙"); - TL_IS_2228 = Str__literal(L"℘"); - TL_IS_2229 = Str__literal(L"𝔴"); - TL_IS_2230 = Str__literal(L"𝕨"); - TL_IS_2231 = Str__literal(L"℘"); - TL_IS_2232 = Str__literal(L"≀"); - TL_IS_2233 = Str__literal(L"≀"); - TL_IS_2234 = Str__literal(L"𝓌"); - TL_IS_2235 = Str__literal(L"⋂"); - TL_IS_2236 = Str__literal(L"◯"); - TL_IS_2237 = Str__literal(L"⋃"); - TL_IS_2238 = Str__literal(L"▽"); - TL_IS_2239 = Str__literal(L"𝔵"); - TL_IS_2240 = Str__literal(L"⟺"); - TL_IS_2241 = Str__literal(L"⟷"); - TL_IS_2242 = Str__literal(L"ξ"); - TL_IS_2243 = Str__literal(L"⟸"); - TL_IS_2244 = Str__literal(L"⟵"); - TL_IS_2245 = Str__literal(L"⟼"); - TL_IS_2246 = Str__literal(L"⋻"); - TL_IS_2247 = Str__literal(L"⨀"); - TL_IS_2248 = Str__literal(L"𝕩"); - TL_IS_2249 = Str__literal(L"⨁"); - TL_IS_2250 = Str__literal(L"⨂"); - TL_IS_2251 = Str__literal(L"⟹"); - TL_IS_2252 = Str__literal(L"⟶"); - TL_IS_2253 = Str__literal(L"𝓍"); - TL_IS_2254 = Str__literal(L"⨆"); - TL_IS_2255 = Str__literal(L"⨄"); - TL_IS_2256 = Str__literal(L"△"); - TL_IS_2257 = Str__literal(L"⋁"); - TL_IS_2258 = Str__literal(L"⋀"); - TL_IS_2259 = Str__literal(L"ý"); - TL_IS_2260 = Str__literal(L"ý"); - TL_IS_2261 = Str__literal(L"я"); - TL_IS_2262 = Str__literal(L"ŷ"); - TL_IS_2263 = Str__literal(L"ы"); - TL_IS_2264 = Str__literal(L"¥"); - TL_IS_2265 = Str__literal(L"¥"); - TL_IS_2266 = Str__literal(L"𝔶"); - TL_IS_2267 = Str__literal(L"ї"); - TL_IS_2268 = Str__literal(L"𝕪"); - TL_IS_2269 = Str__literal(L"𝓎"); - TL_IS_2270 = Str__literal(L"ю"); - TL_IS_2271 = Str__literal(L"ÿ"); - TL_IS_2272 = Str__literal(L"ÿ"); - TL_IS_2273 = Str__literal(L"ź"); - TL_IS_2274 = Str__literal(L"ž"); - TL_IS_2275 = Str__literal(L"з"); - TL_IS_2276 = Str__literal(L"ż"); - TL_IS_2277 = Str__literal(L"ℨ"); - TL_IS_2278 = Str__literal(L"ζ"); - TL_IS_2279 = Str__literal(L"𝔷"); - TL_IS_2280 = Str__literal(L"ж"); - TL_IS_2281 = Str__literal(L"⇝"); - TL_IS_2282 = Str__literal(L"𝕫"); - TL_IS_2283 = Str__literal(L"𝓏"); - TL_IS_2284 = Str__literal(L"‍"); - TL_IS_2285 = Str__literal(L"‌"); - TL_IS_2286 = Str__literal(L"?UNDEFINED"); - TL_IS_2287 = Str__literal(L"DOCUMENT"); - TL_IS_2288 = Str__literal(L"VOLUME"); - TL_IS_2289 = Str__literal(L"FILE"); - TL_IS_2290 = Str__literal(L"BLOCK_QUOTE"); - TL_IS_2291 = Str__literal(L"UNORDERED_LIST"); - TL_IS_2292 = Str__literal(L"ORDERED_LIST"); - TL_IS_2293 = Str__literal(L"UNORDERED_LIST_ITEM"); - TL_IS_2294 = Str__literal(L"ORDERED_LIST_ITEM"); - TL_IS_2295 = Str__literal(L"PARAGRAPH"); - TL_IS_2296 = Str__literal(L"THEMATIC"); - TL_IS_2297 = Str__literal(L"HEADING"); - TL_IS_2298 = Str__literal(L"CODE_BLOCK"); - TL_IS_2299 = Str__literal(L"HTML"); - TL_IS_2300 = Str__literal(L"EMPTY"); - TL_IS_2301 = Str__literal(L"MATERIAL"); - TL_IS_2302 = Str__literal(L"PLAIN"); - TL_IS_2303 = Str__literal(L"LINE_BREAK"); - TL_IS_2304 = Str__literal(L"SOFT_BREAK"); - TL_IS_2305 = Str__literal(L"INLINE_HTML"); - TL_IS_2306 = Str__literal(L"EMPHASIS"); - TL_IS_2307 = Str__literal(L"STRONG"); - TL_IS_2308 = Str__literal(L"CODE"); - TL_IS_2309 = Str__literal(L"URI_AUTOLINK"); - TL_IS_2310 = Str__literal(L"EMAIL_AUTOLINK"); - TL_IS_2311 = Str__literal(L"LINK"); - TL_IS_2312 = Str__literal(L"IMAGE"); - TL_IS_2313 = Str__literal(L"LINK_DEST"); - TL_IS_2314 = Str__literal(L"LINK_TITLE"); - TL_IS_2315 = Str__literal(L"TABLE"); - TL_IS_2316 = Str__literal(L"TABLE_COLUMN"); - TL_IS_2317 = Str__literal(L"TABLE_ROW"); - TL_IS_2318 = Str__literal(L"STRIKETHROUGH"); - TL_IS_2319 = Str__literal(L"TICKBOX"); - TL_IS_2320 = Str__literal(L"XMPP_AUTOLINK"); - TL_IS_2321 = Str__literal(L""); - TL_IS_2322 = Str__literal(L"title"); - TL_IS_2323 = Str__literal(L"textarea"); - TL_IS_2324 = Str__literal(L"style"); - TL_IS_2325 = Str__literal(L"xmp"); - TL_IS_2326 = Str__literal(L"iframe"); - TL_IS_2327 = Str__literal(L"noembed"); - TL_IS_2328 = Str__literal(L"noframes"); - TL_IS_2329 = Str__literal(L"script"); - TL_IS_2330 = Str__literal(L"plaintext"); - TL_IS_2331 = Str__literal(L"CHAIN"); - TL_IS_2332 = Str__literal(L""); - TL_IS_2333 = Str__literal(L""); - TL_IS_2334 = Str__literal(L""); - TL_IS_2335 = Str__literal(L""); - TL_IS_2336 = Str__literal(L"-->"); - TL_IS_2337 = Str__literal(L"?>"); - TL_IS_2338 = Str__literal(L"!>"); - TL_IS_2339 = Str__literal(L"]]>"); - TL_IS_2340 = Str__literal(L"pre"); - TL_IS_2341 = Str__literal(L"script"); - TL_IS_2342 = Str__literal(L"style"); - TL_IS_2343 = Str__literal(L"textarea"); - TL_IS_2344 = Str__literal(L"!--"); - TL_IS_2345 = Str__literal(L"?"); - TL_IS_2346 = Str__literal(L"![CDATA["); - TL_IS_2347 = Str__literal(L"!"); - TL_IS_2348 = Str__literal(L"address"); - TL_IS_2349 = Str__literal(L"article"); - TL_IS_2350 = Str__literal(L"aside"); - TL_IS_2351 = Str__literal(L"base"); - TL_IS_2352 = Str__literal(L"basefont"); - TL_IS_2353 = Str__literal(L"blockquote"); - TL_IS_2354 = Str__literal(L"body"); - TL_IS_2355 = Str__literal(L"caption"); - TL_IS_2356 = Str__literal(L"center"); - TL_IS_2357 = Str__literal(L"col"); - TL_IS_2358 = Str__literal(L"colgroup"); - TL_IS_2359 = Str__literal(L"dd"); - TL_IS_2360 = Str__literal(L"details"); - TL_IS_2361 = Str__literal(L"dialog"); - TL_IS_2362 = Str__literal(L"dir"); - TL_IS_2363 = Str__literal(L"div"); - TL_IS_2364 = Str__literal(L"dl"); - TL_IS_2365 = Str__literal(L"dt"); - TL_IS_2366 = Str__literal(L"fieldset"); - TL_IS_2367 = Str__literal(L"figcaption"); - TL_IS_2368 = Str__literal(L"figure"); - TL_IS_2369 = Str__literal(L"footer"); - TL_IS_2370 = Str__literal(L"form"); - TL_IS_2371 = Str__literal(L"frame"); - TL_IS_2372 = Str__literal(L"frameset"); - TL_IS_2373 = Str__literal(L"h1"); - TL_IS_2374 = Str__literal(L"h2"); - TL_IS_2375 = Str__literal(L"h3"); - TL_IS_2376 = Str__literal(L"h4"); - TL_IS_2377 = Str__literal(L"h5"); - TL_IS_2378 = Str__literal(L"h6"); - TL_IS_2379 = Str__literal(L"head"); - TL_IS_2380 = Str__literal(L"header"); - TL_IS_2381 = Str__literal(L"hr"); - TL_IS_2382 = Str__literal(L"html"); - TL_IS_2383 = Str__literal(L"iframe"); - TL_IS_2384 = Str__literal(L"legend"); - TL_IS_2385 = Str__literal(L"li"); - TL_IS_2386 = Str__literal(L"link"); - TL_IS_2387 = Str__literal(L"main"); - TL_IS_2388 = Str__literal(L"menu"); - TL_IS_2389 = Str__literal(L"menuitem"); - TL_IS_2390 = Str__literal(L"nav"); - TL_IS_2391 = Str__literal(L"noframes"); - TL_IS_2392 = Str__literal(L"ol"); - TL_IS_2393 = Str__literal(L"optgroup"); - TL_IS_2394 = Str__literal(L"option"); - TL_IS_2395 = Str__literal(L"p"); - TL_IS_2396 = Str__literal(L"param"); - TL_IS_2397 = Str__literal(L"section"); - TL_IS_2398 = Str__literal(L"source"); - TL_IS_2399 = Str__literal(L"summary"); - TL_IS_2400 = Str__literal(L"table"); - TL_IS_2401 = Str__literal(L"tbody"); - TL_IS_2402 = Str__literal(L"td"); - TL_IS_2403 = Str__literal(L"tfoot"); - TL_IS_2404 = Str__literal(L"th"); - TL_IS_2405 = Str__literal(L"thead"); - TL_IS_2406 = Str__literal(L"title"); - TL_IS_2407 = Str__literal(L"tr"); - TL_IS_2408 = Str__literal(L"track"); - TL_IS_2409 = Str__literal(L"ul"); - TL_IS_2410 = Str__literal(L"pre"); - TL_IS_2411 = Str__literal(L"script"); - TL_IS_2412 = Str__literal(L"style"); - TL_IS_2413 = Str__literal(L"textarea"); - TL_IS_2414 = Str__literal(L"\n\n"); - TL_IS_2415 = Str__literal(L"\n"); - TL_IS_2416 = Str__literal(L"Before surgery"); - TL_IS_2417 = Str__literal(L"Before emphasis"); - TL_IS_2418 = Str__literal(L"Emphasis"); - TL_IS_2419 = Str__literal(L"After emphasis"); - TL_IS_2420 = Str__literal(L"mailto:"); - TL_IS_2421 = Str__literal(L"xmpp:"); - TL_IS_2422 = Str__literal(L"http://"); - TL_IS_2423 = Str__literal(L"block quotes"); - TL_IS_2424 = Str__literal(L"ordered lists"); - TL_IS_2425 = Str__literal(L"unordered lists"); - TL_IS_2426 = Str__literal(L"indented code blocks"); - TL_IS_2427 = Str__literal(L"fenced code blocks"); - TL_IS_2428 = Str__literal(L"HTML blocks"); - TL_IS_2429 = Str__literal(L"thematic markers"); - TL_IS_2430 = Str__literal(L"ATX headings"); - TL_IS_2431 = Str__literal(L"setext headings"); - TL_IS_2432 = Str__literal(L"web autolinks"); - TL_IS_2433 = Str__literal(L"email autolinks"); - TL_IS_2434 = Str__literal(L"inline HTML"); - TL_IS_2435 = Str__literal(L"backticked code"); - TL_IS_2436 = Str__literal(L"links"); - TL_IS_2437 = Str__literal(L"images"); - TL_IS_2438 = Str__literal(L"emphasis"); - TL_IS_2439 = Str__literal(L"emphasis"); - TL_IS_2440 = Str__literal(L"entities"); - TL_IS_2441 = Str__literal(L"CommonMark 0.30"); - TL_IS_2442 = Str__literal(L"strikethrough"); - TL_IS_2443 = Str__literal(L"tables"); - TL_IS_2444 = Str__literal(L"task list items"); - TL_IS_2445 = Str__literal(L"extended autolinks"); - TL_IS_2446 = Str__literal(L"disallowed raw HTML"); - TL_IS_2447 = Str__literal(L"GitHub-flavored Markdown 0.29"); - TL_IS_2448 = Str__literal(L"all in one"); - TL_IS_2449 = Str__literal(L"index.html"); - TL_IS_2450 = Str__literal(L"Inform-flavoured Markdown"); - TL_IS_2451 = Str__literal(L"formatting errors"); - TL_IS_2452 = Str__literal(L"INFORM_ERROR_MARKER"); - TL_IS_2453 = Str__literal(L"documentationerror"); - TL_IS_2454 = Str__literal(L"old Indoc headings"); - TL_IS_2455 = Str__literal(L"descriptive headings"); - TL_IS_2456 = Str__literal(L"embedded examples"); - TL_IS_2457 = Str__literal(L"INFORM_EXAMPLE_HEADING"); - TL_IS_2458 = Str__literal(L"this example should be marked (before the title) '*', '**', '***' or '****' for difficulty"); - TL_IS_2459 = Str__literal(L"four stars '****' is the maximum difficulty rating allowed"); - TL_IS_2460 = Str__literal(L"extensionexampleletter"); - TL_IS_2461 = Str__literal(L"indexdarkgrey"); - TL_IS_2462 = Str__literal(L"indexblack"); - TL_IS_2463 = Str__literal(L"paste buttons"); - TL_IS_2464 = Str__literal(L"{*}"); - TL_IS_2465 = Str__literal(L"{**}"); - TL_IS_2466 = Str__literal(L"phrase defn boxes"); - TL_IS_2467 = Str__literal(L"indexing marks"); - TL_IS_2468 = Str__literal(L"INDEX_MARKER"); - TL_IS_2469 = Str__literal(L"heading markers"); - TL_IS_2470 = Str__literal(L"HEADING_MARKER"); - TL_IS_2471 = Str__literal(L"paragraph gating"); - TL_IS_2472 = Str__literal(L"GATE"); - TL_IS_2473 = Str__literal(L"Inform syntax-colouring"); - TL_IS_2474 = Str__literal(L"inform"); - TL_IS_2475 = Str__literal(L"inform7"); - TL_IS_2476 = Str__literal(L"problems"); - TL_IS_2477 = Str__literal(L"Inform"); - TL_IS_2478 = Str__literal(L"Inform"); - TL_IS_2479 = Str__literal(L"indexdullblue"); - TL_IS_2480 = Str__literal(L"indexdullblue"); - TL_IS_2481 = Str__literal(L"indexdullblue"); - TL_IS_2482 = Str__literal(L"syntaxdefinition"); - TL_IS_2483 = Str__literal(L"syntaxfunction"); - TL_IS_2484 = Str__literal(L"syntaxreserved"); - TL_IS_2485 = Str__literal(L"syntaxelement"); - TL_IS_2486 = Str__literal(L"syntaxidentifier"); - TL_IS_2487 = Str__literal(L"syntaxcharacter"); - TL_IS_2488 = Str__literal(L"syntaxconstant"); - TL_IS_2489 = Str__literal(L"syntaxstring"); - TL_IS_2490 = Str__literal(L"syntaxplain"); - TL_IS_2491 = Str__literal(L"syntaxextract"); - TL_IS_2492 = Str__literal(L"syntaxcomment"); - TL_IS_2493 = Str__literal(L"ePub"); - TL_IS_2494 = Str__literal(L"OEBPS"); - TL_IS_2495 = Str__literal(L"mimetype"); - TL_IS_2496 = Str__literal(L"META-INF"); - TL_IS_2497 = Str__literal(L"container.xml"); - TL_IS_2498 = Str__literal(L"cover.html"); - TL_IS_2499 = Str__literal(L"Cover"); - TL_IS_2500 = Str__literal(L"cover"); - TL_IS_2501 = Str__literal(L"content.opf"); - TL_IS_2502 = Str__literal(L"toc.ncx"); - TL_IS_2503 = Str__literal(L".."); - TL_IS_2504 = Str__literal(L"A"); - TL_IS_2505 = Str__literal(L"Sequential Section Ranges"); - TL_IS_2506 = Str__literal(L"On"); - TL_IS_2507 = Str__literal(L"Web Syntax Version: 1"); - TL_IS_2508 = Str__literal(L"Web Syntax Version: 2"); - TL_IS_2509 = Str__literal(L"S"); - TL_IS_2510 = Str__literal(L"Sections"); - TL_IS_2511 = Str__literal(L"All"); - TL_IS_2512 = Str__literal(L"Headers"); - TL_IS_2513 = Str__literal(L"single-file webs cannot Import modules"); - TL_IS_2514 = Str__literal(L"Language"); - TL_IS_2515 = Str__literal(L"Language"); - TL_IS_2516 = Str__literal(L"Contents.w"); - TL_IS_2517 = Str__literal(L"Title"); - TL_IS_2518 = Str__literal(L"Author"); - TL_IS_2519 = Str__literal(L"Language"); - TL_IS_2520 = Str__literal(L"None"); - TL_IS_2521 = Str__literal(L"Purpose"); - TL_IS_2522 = Str__literal(L""); - TL_IS_2523 = Str__literal(L"License"); - TL_IS_2524 = Str__literal(L"Licence"); - TL_IS_2525 = Str__literal(L"Short Title"); - TL_IS_2526 = Str__literal(L"Capitalized Title"); - TL_IS_2527 = Str__literal(L"Build Date"); - TL_IS_2528 = Str__literal(L"Build Number"); - TL_IS_2529 = Str__literal(L"Prerelease"); - TL_IS_2530 = Str__literal(L"Semantic Version Number"); - TL_IS_2531 = Str__literal(L"Version Number"); - TL_IS_2532 = Str__literal(L"1"); - TL_IS_2533 = Str__literal(L"Version Name"); - TL_IS_2534 = Str__literal(L"Index Template"); - TL_IS_2535 = Str__literal(L"Preform Language"); - TL_IS_2536 = Str__literal(L"Declare Section Usage"); - TL_IS_2537 = Str__literal(L"Off"); - TL_IS_2538 = Str__literal(L"Namespaces"); - TL_IS_2539 = Str__literal(L"Off"); - TL_IS_2540 = Str__literal(L"Sequential Section Ranges"); - TL_IS_2541 = Str__literal(L"Off"); - TL_IS_2542 = Str__literal(L"Strict Usage Rules"); - TL_IS_2543 = Str__literal(L"Off"); - TL_IS_2544 = Str__literal(L"TeX Mathematics Notation"); - TL_IS_2545 = Str__literal(L"$"); - TL_IS_2546 = Str__literal(L"TeX Mathematics Displayed Notation"); - TL_IS_2547 = Str__literal(L"$$"); - TL_IS_2548 = Str__literal(L"Footnote Begins Notation"); - TL_IS_2549 = Str__literal(L"["); - TL_IS_2550 = Str__literal(L"Footnote Ends Notation"); - TL_IS_2551 = Str__literal(L"]"); - TL_IS_2552 = Str__literal(L"Code In Commentary Notation"); - TL_IS_2553 = Str__literal(L"|"); - TL_IS_2554 = Str__literal(L"Code In Code Comments Notation"); - TL_IS_2555 = Str__literal(L"|"); - TL_IS_2556 = Str__literal(L"Cross-References Notation"); - TL_IS_2557 = Str__literal(L"//"); - TL_IS_2558 = Str__literal(L"Web Syntax Version"); - TL_IS_2559 = Str__literal(L"Paragraph Numbers Visibility"); - TL_IS_2560 = Str__literal(L"On"); - TL_IS_2561 = Str__literal(L"Capitalized Title"); - TL_IS_2562 = Str__literal(L"miscellaneous"); - TL_IS_2563 = Str__literal(L"(main)"); - TL_IS_2564 = Str__literal(L"build.txt"); - TL_IS_2565 = Str__literal(L"build.txt"); - TL_IS_2566 = Str__literal(L"Prerelease"); - TL_IS_2567 = Str__literal(L"Build Number"); - TL_IS_2568 = Str__literal(L"Build Date"); - TL_IS_2569 = Str__literal(L"Semantic Version Number"); - TL_IS_2570 = Str__literal(L"Version Number"); - TL_IS_2571 = Str__literal(L"Prerelease"); - TL_IS_2572 = Str__literal(L"Build Number"); - TL_IS_2573 = Str__literal(L"Semantic Version Number"); - TL_IS_2574 = Str__literal(L"Sections"); - TL_IS_2575 = Str__literal(L"InC"); - TL_IS_2576 = Str__literal(L"Name"); - TL_IS_2577 = Str__literal(L"Details"); - TL_IS_2578 = Str__literal(L"Extension"); - TL_IS_2579 = Str__literal(L"Line Comment"); - TL_IS_2580 = Str__literal(L"Whole Line Comment"); - TL_IS_2581 = Str__literal(L"Multiline Comment Open"); - TL_IS_2582 = Str__literal(L"Multiline Comment Close"); - TL_IS_2583 = Str__literal(L"String Literal"); - TL_IS_2584 = Str__literal(L"String Literal Escape"); - TL_IS_2585 = Str__literal(L"Character Literal"); - TL_IS_2586 = Str__literal(L"Character Literal Escape"); - TL_IS_2587 = Str__literal(L"Binary Literal Prefix"); - TL_IS_2588 = Str__literal(L"Octal Literal Prefix"); - TL_IS_2589 = Str__literal(L"Hexadecimal Literal Prefix"); - TL_IS_2590 = Str__literal(L"Negative Literal Prefix"); - TL_IS_2591 = Str__literal(L"Shebang"); - TL_IS_2592 = Str__literal(L"Line Marker"); - TL_IS_2593 = Str__literal(L"Before Named Paragraph Expansion"); - TL_IS_2594 = Str__literal(L"After Named Paragraph Expansion"); - TL_IS_2595 = Str__literal(L"Start Definition"); - TL_IS_2596 = Str__literal(L"Prolong Definition"); - TL_IS_2597 = Str__literal(L"End Definition"); - TL_IS_2598 = Str__literal(L"Start Ifdef"); - TL_IS_2599 = Str__literal(L"Start Ifndef"); - TL_IS_2600 = Str__literal(L"End Ifdef"); - TL_IS_2601 = Str__literal(L"End Ifndef"); - TL_IS_2602 = Str__literal(L"C-Like"); - TL_IS_2603 = Str__literal(L"Suppress Disclaimer"); - TL_IS_2604 = Str__literal(L"Supports Namespaces"); - TL_IS_2605 = Str__literal(L"Function Declaration Notation"); - TL_IS_2606 = Str__literal(L"Type Declaration Notation"); - TL_IS_2607 = Str__literal(L"}"); - TL_IS_2608 = Str__literal(L"unquoted"); - TL_IS_2609 = Str__literal(L"{"); - TL_IS_2610 = Str__literal(L"debug"); - TL_IS_2611 = Str__literal(L"!string"); - TL_IS_2612 = Str__literal(L"!function"); - TL_IS_2613 = Str__literal(L"!definition"); - TL_IS_2614 = Str__literal(L"!reserved"); - TL_IS_2615 = Str__literal(L"!element"); - TL_IS_2616 = Str__literal(L"!identifier"); - TL_IS_2617 = Str__literal(L"!character"); - TL_IS_2618 = Str__literal(L"!constant"); - TL_IS_2619 = Str__literal(L"!plain"); - TL_IS_2620 = Str__literal(L"!extract"); - TL_IS_2621 = Str__literal(L"!comment"); - TL_IS_2622 = Str__literal(L"true"); - TL_IS_2623 = Str__literal(L"false"); - TL_IS_2624 = Str__literal(L"both"); - TL_IS_2625 = Str__literal(L"brackets"); - TL_IS_2626 = Str__literal(L"characters"); - TL_IS_2627 = Str__literal(L"coloured"); - TL_IS_2628 = Str__literal(L"colouring"); - TL_IS_2629 = Str__literal(L"debug"); - TL_IS_2630 = Str__literal(L"false"); - TL_IS_2631 = Str__literal(L"in"); - TL_IS_2632 = Str__literal(L"instances"); - TL_IS_2633 = Str__literal(L"keyword"); - TL_IS_2634 = Str__literal(L"matches"); - TL_IS_2635 = Str__literal(L"matching"); - TL_IS_2636 = Str__literal(L"not"); - TL_IS_2637 = Str__literal(L"of"); - TL_IS_2638 = Str__literal(L"on"); - TL_IS_2639 = Str__literal(L"optionally"); - TL_IS_2640 = Str__literal(L"prefix"); - TL_IS_2641 = Str__literal(L"runs"); - TL_IS_2642 = Str__literal(L"spaced"); - TL_IS_2643 = Str__literal(L"suffix"); - TL_IS_2644 = Str__literal(L"true"); - TL_IS_2645 = Str__literal(L"unquoted"); - TL_IS_2646 = Str__literal(L"inweb"); - TL_IS_2647 = Str__literal(L"Patterns"); - TL_IS_2648 = Str__literal(L"Materials"); - TL_IS_2649 = Str__literal(L"Languages"); - TL_IS_2650 = Str__literal(L"script.mkscript"); - TL_IS_2651 = Str__literal(L"script.giscript"); - TL_IS_2652 = Str__literal(L"script.rmscript"); - TL_IS_2653 = Str__literal(L"Short Title"); - TL_IS_2654 = Str__literal(L"Short Title"); - TL_IS_2655 = Str__literal(L"Title"); - TL_IS_2656 = Str__literal(L"0"); - TL_IS_2657 = Str__literal(L"for locating programming language definitions"); - TL_IS_2658 = Str__literal(L"for analysing a web"); - TL_IS_2659 = Str__literal(L"for weaving a web"); - TL_IS_2660 = Str__literal(L"for tangling a web"); - TL_IS_2661 = Str__literal(L"for dealing with colonies of webs together"); - TL_IS_2662 = Str__literal(L".inweb"); - TL_IS_2663 = Str__literal(L"0"); - TL_IS_2664 = Str__literal(L"Title"); - TL_IS_2665 = Str__literal(L"Booklet Title"); - TL_IS_2666 = Str__literal(L"Colours"); - TL_IS_2667 = Str__literal(L"Colours"); - TL_IS_2668 = Str__literal(L""); - TL_IS_2669 = Str__literal(L"Version Number"); - TL_IS_2670 = Str__literal(L"Version Number"); - TL_IS_2671 = Str__literal(L" "); - TL_IS_2672 = Str__literal(L"template-index.html"); - TL_IS_2673 = Str__literal(L"index.html"); - TL_IS_2674 = Str__literal(L"Index"); - TL_IS_2675 = Str__literal(L"index"); - TL_IS_2676 = Str__literal(L"0"); - TL_IS_2677 = Str__literal(L"pattern.txt"); - TL_IS_2678 = Str__literal(L"Patterns"); - TL_IS_2679 = Str__literal(L"pattern.txt"); - TL_IS_2680 = Str__literal(L"pattern.txt"); - TL_IS_2681 = Str__literal(L"name"); - TL_IS_2682 = Str__literal(L"plugin"); - TL_IS_2683 = Str__literal(L"format"); - TL_IS_2684 = Str__literal(L"number sections"); - TL_IS_2685 = Str__literal(L"default range"); - TL_IS_2686 = Str__literal(L"initial extension"); - TL_IS_2687 = Str__literal(L"mathematics plugin"); - TL_IS_2688 = Str__literal(L"footnotes plugin"); - TL_IS_2689 = Str__literal(L"block template"); - TL_IS_2690 = Str__literal(L"command"); - TL_IS_2691 = Str__literal(L"bibliographic data"); - TL_IS_2692 = Str__literal(L"assets"); - TL_IS_2693 = Str__literal(L"yes"); - TL_IS_2694 = Str__literal(L"no"); - TL_IS_2695 = Str__literal(L"none"); - TL_IS_2696 = Str__literal(L"WOVENPATH"); - TL_IS_2697 = Str__literal(L"WOVEN"); - TL_IS_2698 = Str__literal(L"PROCESS "); - TL_IS_2699 = Str__literal(L"Colouring"); - TL_IS_2700 = Str__literal(L"Coloring"); - TL_IS_2701 = Str__literal(L"Colouring"); - TL_IS_2702 = Str__literal(L"Coloring"); - TL_IS_2703 = Str__literal(L""); - TL_IS_2704 = Str__literal(L"copy"); - TL_IS_2705 = Str__literal(L"copy"); - TL_IS_2706 = Str__literal(L"private copy"); - TL_IS_2707 = Str__literal(L"embed"); - TL_IS_2708 = Str__literal(L"collate"); - TL_IS_2709 = Str__literal(L"prefix"); - TL_IS_2710 = Str__literal(L"suffix"); - TL_IS_2711 = Str__literal(L"transform names"); - TL_IS_2712 = Str__literal(L""); - TL_IS_2713 = Str__literal(L"URL"); - TL_IS_2714 = Str__literal(L"URL"); - TL_IS_2715 = Str__literal(L"Inweb Version"); - TL_IS_2716 = Str__literal(L"Language"); - TL_IS_2717 = Str__literal(L"Purpose"); - TL_IS_2718 = Str__literal(L"Woven"); - TL_IS_2719 = Str__literal(L"Tangled"); - TL_IS_2720 = Str__literal(L"Title"); - TL_IS_2721 = Str__literal(L""); - TL_IS_2722 = Str__literal(L"="); - TL_IS_2723 = Str__literal(L"@"); - TL_IS_2724 = Str__literal(L"Figures"); - TL_IS_2725 = Str__literal(L"unknown [[command]]"); - TL_IS_2726 = Str__literal(L"<...> definition begins outside of a paragraph"); - TL_IS_2727 = Str__literal(L"(very early code)"); - TL_IS_2728 = Str__literal(L"(early code)"); - TL_IS_2729 = Str__literal(L"Extracts"); - TL_IS_2730 = Str__literal(L"Figures"); - TL_IS_2731 = Str__literal(L"HTML"); - TL_IS_2732 = Str__literal(L"Audio"); - TL_IS_2733 = Str__literal(L"Video"); - TL_IS_2734 = Str__literal(L"Download"); - TL_IS_2735 = Str__literal(L"Download"); - TL_IS_2736 = Str__literal(L"Carousels"); - TL_IS_2737 = Str__literal(L"Carousels"); - TL_IS_2738 = Str__literal(L"Carousels"); - TL_IS_2739 = Str__literal(L"Carousels"); - TL_IS_2740 = Str__literal(L"Carousels"); - TL_IS_2741 = Str__literal(L"Videos"); - TL_IS_2742 = Str__literal(L"unknown bracketed annotation"); - TL_IS_2743 = Str__literal(L"unknown material after '='"); - TL_IS_2744 = Str__literal(L"undisplayed"); - TL_IS_2745 = Str__literal(L"hyperlinked"); - TL_IS_2746 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"); - TL_IS_2747 = Str__literal(L"="); - TL_IS_2748 = Str__literal(L"don't understand @command"); - TL_IS_2749 = Str__literal(L"Purpose used after bar"); - TL_IS_2750 = Str__literal(L"Interface used after bar"); - TL_IS_2751 = Str__literal(L"Definitions used after bar"); - TL_IS_2752 = Str__literal(L"second bar in the same section"); - TL_IS_2753 = Str__literal(L"enumeration constants can't supply a value"); - TL_IS_2754 = Str__literal(L"Paragraph Numbers Visibility"); - TL_IS_2755 = Str__literal(L"Off"); - TL_IS_2756 = Str__literal(L"P"); - TL_IS_2757 = Str__literal(L"S"); - TL_IS_2758 = Str__literal(L"Footnote Begins Notation"); - TL_IS_2759 = Str__literal(L"Footnote Ends Notation"); - TL_IS_2760 = Str__literal(L"Off"); - TL_IS_2761 = Str__literal(L"ifdef-"); - TL_IS_2762 = Str__literal(L"ifndef-"); - TL_IS_2763 = Str__literal(L"."); - TL_IS_2764 = Str__literal(L"This paragraph is used only if "); - TL_IS_2765 = Str__literal(L" and if "); - TL_IS_2766 = Str__literal(L" and "); - TL_IS_2767 = Str__literal(L" is"); - TL_IS_2768 = Str__literal(L" are"); - TL_IS_2769 = Str__literal(L" defined"); - TL_IS_2770 = Str__literal(L" undefined"); - TL_IS_2771 = Str__literal(L"enumeration constants must belong to a _FAMILY"); - TL_IS_2772 = Str__literal(L"this enumeration _FAMILY is unknown"); - TL_IS_2773 = Str__literal(L"this enumeration _FAMILY already exists"); - TL_IS_2774 = Str__literal(L"unrecognised interface line"); - TL_IS_2775 = Str__literal(L"."); - TL_IS_2776 = Str__literal(L".."); - TL_IS_2777 = Str__literal(L"web"); - TL_IS_2778 = Str__literal(L"default.mkscript"); - TL_IS_2779 = Str__literal(L"."); - TL_IS_2780 = Str__literal(L".."); - TL_IS_2781 = Str__literal(L"web"); - TL_IS_2782 = Str__literal(L"default.giscript"); - TL_IS_2783 = Str__literal(L"C"); - TL_IS_2784 = Str__literal(L"Dialects"); - TL_IS_2785 = Str__literal(L""); - TL_IS_2786 = Str__literal(L"Chapters"); - TL_IS_2787 = Str__literal(L"Modules"); - TL_IS_2788 = Str__literal(L"Module Page"); - TL_IS_2789 = Str__literal(L"Module Purpose"); - TL_IS_2790 = Str__literal(L"Purpose"); - TL_IS_2791 = Str__literal(L"Chapter Purpose"); - TL_IS_2792 = Str__literal(L"Section Purpose"); - TL_IS_2793 = Str__literal(L"Purpose"); - TL_IS_2794 = Str__literal(L"index.html"); - TL_IS_2795 = Str__literal(L"inweb"); - TL_IS_2796 = Str__literal(L"inweb"); - TL_IS_2797 = Str__literal(L"inweb"); - TL_IS_2798 = Str__literal(L"End of weave"); - TL_IS_2799 = Str__literal(L"Definitions"); - TL_IS_2800 = Str__literal(L"bad start to paragraph"); - TL_IS_2801 = Str__literal(L""); - TL_IS_2802 = Str__literal(L""); - TL_IS_2803 = Str__literal(L"footnote never cued"); - TL_IS_2804 = Str__literal(L"Preform"); - TL_IS_2805 = Str__literal(L"Preform"); - TL_IS_2806 = Str__literal(L"define"); - TL_IS_2807 = Str__literal(L"default"); - TL_IS_2808 = Str__literal(L"enum"); - TL_IS_2809 = Str__literal(L"Preform"); - TL_IS_2810 = Str__literal(L"This is "); - TL_IS_2811 = Str__literal(L"words: About Preform"); - TL_IS_2812 = Str__literal(L"Preform grammar"); - TL_IS_2813 = Str__literal(L"Preform grammar"); - TL_IS_2814 = Str__literal(L", not regular C code."); - TL_IS_2815 = Str__literal(L"This code is "); - TL_IS_2816 = Str__literal(L"never used"); - TL_IS_2817 = Str__literal(L", "); - TL_IS_2818 = Str__literal(L" and "); - TL_IS_2819 = Str__literal(L"used in "); - TL_IS_2820 = Str__literal(L" (twice)"); - TL_IS_2821 = Str__literal(L" (three times)"); - TL_IS_2822 = Str__literal(L" (four times)"); - TL_IS_2823 = Str__literal(L" (five times)"); - TL_IS_2824 = Str__literal(L"."); - TL_IS_2825 = Str__literal(L"The structure "); - TL_IS_2826 = Str__literal(L" is private to this section"); - TL_IS_2827 = Str__literal(L" is accessed in "); - TL_IS_2828 = Str__literal(L", "); - TL_IS_2829 = Str__literal(L" and here"); - TL_IS_2830 = Str__literal(L"."); - TL_IS_2831 = Str__literal(L"The function "); - TL_IS_2832 = Str__literal(L" appears nowhere else"); - TL_IS_2833 = Str__literal(L"none"); - TL_IS_2834 = Str__literal(L")"); - TL_IS_2835 = Str__literal(L"."); - TL_IS_2836 = Str__literal(L" is used in "); - TL_IS_2837 = Str__literal(L"), "); - TL_IS_2838 = Str__literal(L", "); - TL_IS_2839 = Str__literal(L" ("); - TL_IS_2840 = Str__literal(L" - "); - TL_IS_2841 = Str__literal(L", "); - TL_IS_2842 = Str__literal(L"Code In Code Comments Notation"); - TL_IS_2843 = Str__literal(L"Code In Commentary Notation"); - TL_IS_2844 = Str__literal(L"Off"); - TL_IS_2845 = Str__literal(L"TeX Mathematics Displayed Notation"); - TL_IS_2846 = Str__literal(L"Off"); - TL_IS_2847 = Str__literal(L"TeX Mathematics Notation"); - TL_IS_2848 = Str__literal(L"Off"); - TL_IS_2849 = Str__literal(L"Cross-References Notation"); - TL_IS_2850 = Str__literal(L"Off"); - TL_IS_2851 = Str__literal(L"http://"); - TL_IS_2852 = Str__literal(L"https://"); - TL_IS_2853 = Str__literal(L"this is a cue for a missing note"); - TL_IS_2854 = Str__literal(L"Cross-References Notation"); - TL_IS_2855 = Str__literal(L"Off"); - TL_IS_2856 = Str__literal(L"http://"); - TL_IS_2857 = Str__literal(L"https://"); - TL_IS_2858 = Str__literal(L"misplaced definition"); - TL_IS_2859 = Str__literal(L"unknown macro"); - TL_IS_2860 = Str__literal(L"Structures"); - TL_IS_2861 = Str__literal(L"Main::"); - TL_IS_2862 = Str__literal(L"Tangled output generated by inweb: do not edit"); - TL_IS_2863 = Str__literal(L"this programming language does not support @d"); - TL_IS_2864 = Str__literal(L"this programming language does not support multiline @d"); - TL_IS_2865 = Str__literal(L"Preform"); - TL_IS_2866 = Str__literal(L"Preform"); - TL_IS_2867 = Str__literal(L"Namespaces"); - TL_IS_2868 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace"); - TL_IS_2869 = Str__literal(L"Being externally called, this function must belong to a :: namespace"); - TL_IS_2870 = Str__literal(L"Structures"); - TL_IS_2871 = Str__literal(L"program ended with conditional compilation open"); - TL_IS_2872 = Str__literal(L"conditional compilation too deeply nested"); - TL_IS_2873 = Str__literal(L"found #endif without #ifdef or #ifndef"); - TL_IS_2874 = Str__literal(L"Preform"); - TL_IS_2875 = Str__literal(L"'WR[...]' notation unavailable"); - TL_IS_2876 = Str__literal(L"malformed '{ , }' formula"); - TL_IS_2877 = Str__literal(L"fail"); - TL_IS_2878 = Str__literal(L"fail production"); - TL_IS_2879 = Str__literal(L"fail nonterminal"); - TL_IS_2880 = Str__literal(L"advance "); - TL_IS_2881 = Str__literal(L"pass "); - TL_IS_2882 = Str__literal(L"lookahead"); - TL_IS_2883 = Str__literal(L"-"); - TL_IS_2884 = Str__literal(L"-"); - TL_IS_2885 = Str__literal(L"most_recent_result"); - TL_IS_2886 = Str__literal(L"most_recent_result_p"); - TL_IS_2887 = Str__literal(L"Syntax.preform"); - TL_IS_2888 = Str__literal(L"Preform Language"); - TL_IS_2889 = Str__literal(L"Preform Language"); - TL_IS_2890 = Str__literal(L"weave tree"); - TL_IS_2891 = Str__literal(L"document"); - TL_IS_2892 = Str__literal(L"head"); - TL_IS_2893 = Str__literal(L"body"); - TL_IS_2894 = Str__literal(L"tail"); - TL_IS_2895 = Str__literal(L"chapter footer"); - TL_IS_2896 = Str__literal(L"chapter header"); - TL_IS_2897 = Str__literal(L"section footer"); - TL_IS_2898 = Str__literal(L"section header"); - TL_IS_2899 = Str__literal(L"section purpose"); - TL_IS_2900 = Str__literal(L"subheading"); - TL_IS_2901 = Str__literal(L"bar"); - TL_IS_2902 = Str__literal(L"pagebreak"); - TL_IS_2903 = Str__literal(L"linebreak"); - TL_IS_2904 = Str__literal(L"paragraph"); - TL_IS_2905 = Str__literal(L"endnote"); - TL_IS_2906 = Str__literal(L"figure"); - TL_IS_2907 = Str__literal(L"extract"); - TL_IS_2908 = Str__literal(L"audio"); - TL_IS_2909 = Str__literal(L"video"); - TL_IS_2910 = Str__literal(L"download"); - TL_IS_2911 = Str__literal(L"material"); - TL_IS_2912 = Str__literal(L"embed"); - TL_IS_2913 = Str__literal(L"pmac"); - TL_IS_2914 = Str__literal(L"vskip"); - TL_IS_2915 = Str__literal(L"chapter"); - TL_IS_2916 = Str__literal(L"section"); - TL_IS_2917 = Str__literal(L"code line"); - TL_IS_2918 = Str__literal(L"function usage"); - TL_IS_2919 = Str__literal(L"commentary"); - TL_IS_2920 = Str__literal(L"carousel slide"); - TL_IS_2921 = Str__literal(L"toc"); - TL_IS_2922 = Str__literal(L"toc line"); - TL_IS_2923 = Str__literal(L"chapter_title_page"); - TL_IS_2924 = Str__literal(L"defn"); - TL_IS_2925 = Str__literal(L"source_code"); - TL_IS_2926 = Str__literal(L"url"); - TL_IS_2927 = Str__literal(L"footnote_cue"); - TL_IS_2928 = Str__literal(L"footnote"); - TL_IS_2929 = Str__literal(L"display line"); - TL_IS_2930 = Str__literal(L"function defn"); - TL_IS_2931 = Str__literal(L"item"); - TL_IS_2932 = Str__literal(L"grammar index"); - TL_IS_2933 = Str__literal(L"inline"); - TL_IS_2934 = Str__literal(L"locale"); - TL_IS_2935 = Str__literal(L"mathematics"); - TL_IS_2936 = Str__literal(L"verbatim"); - TL_IS_2937 = Str__literal(L"Weave Content"); - TL_IS_2938 = Str__literal(L"plain"); - TL_IS_2939 = Str__literal(L".txt"); - TL_IS_2940 = Str__literal(L"TeX"); - TL_IS_2941 = Str__literal(L".tex"); - TL_IS_2942 = Str__literal(L"S"); - TL_IS_2943 = Str__literal(L""); - TL_IS_2944 = Str__literal(L"Figures"); - TL_IS_2945 = Str__literal(L"weavesection"); - TL_IS_2946 = Str__literal(L"weavesections"); - TL_IS_2947 = Str__literal(L"weavesectionss"); - TL_IS_2948 = Str__literal(L"weavesectionsss"); - TL_IS_2949 = Str__literal(L"tweavesection"); - TL_IS_2950 = Str__literal(L"tweavesections"); - TL_IS_2951 = Str__literal(L"tweavesectionss"); - TL_IS_2952 = Str__literal(L"tweavesectionsss"); - TL_IS_2953 = Str__literal(L"nsweavesection"); - TL_IS_2954 = Str__literal(L"nsweavesections"); - TL_IS_2955 = Str__literal(L"HTML"); - TL_IS_2956 = Str__literal(L".html"); - TL_IS_2957 = Str__literal(L"ePub"); - TL_IS_2958 = Str__literal(L".html"); - TL_IS_2959 = Str__literal(L""); - TL_IS_2960 = Str__literal(L"private copy"); - TL_IS_2961 = Str__literal(L"Base"); - TL_IS_2962 = Str__literal(L"Colours"); - TL_IS_2963 = Str__literal(L""); - TL_IS_2964 = Str__literal(L""); - TL_IS_2965 = Str__literal(L"Breadcrumbs"); - TL_IS_2966 = Str__literal(L"Title"); - TL_IS_2967 = Str__literal(L"Short Title"); - TL_IS_2968 = Str__literal(L"Short Title"); - TL_IS_2969 = Str__literal(L"index.html"); - TL_IS_2970 = Str__literal(L"S"); - TL_IS_2971 = Str__literal(L"Sequential Section Ranges"); - TL_IS_2972 = Str__literal(L"On"); - TL_IS_2973 = Str__literal(L"Figures"); - TL_IS_2974 = Str__literal(L"HTML"); - TL_IS_2975 = Str__literal(L"Unable to find this HTML extract"); - TL_IS_2976 = Str__literal(L"Audio"); - TL_IS_2977 = Str__literal(L"Video"); - TL_IS_2978 = Str__literal(L"Downloads"); - TL_IS_2979 = Str__literal(L"Embedding"); - TL_IS_2980 = Str__literal(L"Download.html"); - TL_IS_2981 = Str__literal(L"Downloads are not supported"); - TL_IS_2982 = Str__literal(L"Downloads"); - TL_IS_2983 = Str__literal(L"Download file missing or empty"); - TL_IS_2984 = Str__literal(L"File Name"); - TL_IS_2985 = Str__literal(L"File URL"); - TL_IS_2986 = Str__literal(L"File Details"); - TL_IS_2987 = Str__literal(L" byte"); - TL_IS_2988 = Str__literal(L" bytes"); - TL_IS_2989 = Str__literal(L"kB"); - TL_IS_2990 = Str__literal(L"MB"); - TL_IS_2991 = Str__literal(L"GB"); - TL_IS_2992 = Str__literal(L"405"); - TL_IS_2993 = Str__literal(L"720"); - TL_IS_2994 = Str__literal(L"Embedding"); - TL_IS_2995 = Str__literal(L"This is not a supported service"); - TL_IS_2996 = Str__literal(L"Content ID"); - TL_IS_2997 = Str__literal(L"Content Width"); - TL_IS_2998 = Str__literal(L"Content Height"); - TL_IS_2999 = Str__literal(L"named-paragraph-link"); - TL_IS_3000 = Str__literal(L"function-link"); - TL_IS_3001 = Str__literal(L"Carousel"); - TL_IS_3002 = Str__literal(L"carousel-number"); - TL_IS_3003 = Str__literal(L"carousel-caption"); - TL_IS_3004 = Str__literal(L"carousel-caption-above"); - TL_IS_3005 = Str__literal(L"carousel-number-above"); - TL_IS_3006 = Str__literal(L"carousel-caption-below"); - TL_IS_3007 = Str__literal(L"carousel-number-below"); - TL_IS_3008 = Str__literal(L"external"); - TL_IS_3009 = Str__literal(L"internal"); - TL_IS_3010 = Str__literal(L"Popups"); - TL_IS_3011 = Str__literal(L"*"); - TL_IS_3012 = Str__literal(L"paragraph-anchor"); - TL_IS_3013 = Str__literal(L"Title"); - TL_IS_3014 = Str__literal(L"Base"); - TL_IS_3015 = Str__literal(L"Base.css"); - TL_IS_3016 = Str__literal(L"TestingInweb"); - TL_IS_3017 = Str__literal(L".txt"); - TL_IS_3018 = Str__literal(L".pdf"); - TL_IS_3019 = Str__literal(L"not"); - TL_IS_3020 = Str__literal(L"leq"); - TL_IS_3021 = Str__literal(L"geq"); - TL_IS_3022 = Str__literal(L"sim"); - TL_IS_3023 = Str__literal(L"hbox"); - TL_IS_3024 = Str__literal(L"left"); - TL_IS_3025 = Str__literal(L"right"); - TL_IS_3026 = Str__literal(L"Rightarrow"); - TL_IS_3027 = Str__literal(L"Leftrightarrow"); - TL_IS_3028 = Str__literal(L"to"); - TL_IS_3029 = Str__literal(L"rightarrow"); - TL_IS_3030 = Str__literal(L"longrightarrow"); - TL_IS_3031 = Str__literal(L"leftarrow"); - TL_IS_3032 = Str__literal(L"longleftarrow"); - TL_IS_3033 = Str__literal(L"lbrace"); - TL_IS_3034 = Str__literal(L"mid"); - TL_IS_3035 = Str__literal(L"rbrace"); - TL_IS_3036 = Str__literal(L"cdot"); - TL_IS_3037 = Str__literal(L"cdots"); - TL_IS_3038 = Str__literal(L"dots"); - TL_IS_3039 = Str__literal(L"times"); - TL_IS_3040 = Str__literal(L"quad"); - TL_IS_3041 = Str__literal(L"qquad"); - TL_IS_3042 = Str__literal(L"TeX"); - TL_IS_3043 = Str__literal(L"neq"); - TL_IS_3044 = Str__literal(L"noteq"); - TL_IS_3045 = Str__literal(L"ell"); - TL_IS_3046 = Str__literal(L"log"); - TL_IS_3047 = Str__literal(L"exp"); - TL_IS_3048 = Str__literal(L"sin"); - TL_IS_3049 = Str__literal(L"cos"); - TL_IS_3050 = Str__literal(L"tan"); - TL_IS_3051 = Str__literal(L"top"); - TL_IS_3052 = Str__literal(L"Alpha"); - TL_IS_3053 = Str__literal(L"Beta"); - TL_IS_3054 = Str__literal(L"Gamma"); - TL_IS_3055 = Str__literal(L"Delta"); - TL_IS_3056 = Str__literal(L"Epsilon"); - TL_IS_3057 = Str__literal(L"Zeta"); - TL_IS_3058 = Str__literal(L"Eta"); - TL_IS_3059 = Str__literal(L"Theta"); - TL_IS_3060 = Str__literal(L"Iota"); - TL_IS_3061 = Str__literal(L"Kappa"); - TL_IS_3062 = Str__literal(L"Lambda"); - TL_IS_3063 = Str__literal(L"Mu"); - TL_IS_3064 = Str__literal(L"Nu"); - TL_IS_3065 = Str__literal(L"Xi"); - TL_IS_3066 = Str__literal(L"Omicron"); - TL_IS_3067 = Str__literal(L"Pi"); - TL_IS_3068 = Str__literal(L"Rho"); - TL_IS_3069 = Str__literal(L"Varsigma"); - TL_IS_3070 = Str__literal(L"Sigma"); - TL_IS_3071 = Str__literal(L"Tau"); - TL_IS_3072 = Str__literal(L"Upsilon"); - TL_IS_3073 = Str__literal(L"Phi"); - TL_IS_3074 = Str__literal(L"Chi"); - TL_IS_3075 = Str__literal(L"Psi"); - TL_IS_3076 = Str__literal(L"Omega"); - TL_IS_3077 = Str__literal(L"alpha"); - TL_IS_3078 = Str__literal(L"beta"); - TL_IS_3079 = Str__literal(L"gamma"); - TL_IS_3080 = Str__literal(L"delta"); - TL_IS_3081 = Str__literal(L"epsilon"); - TL_IS_3082 = Str__literal(L"zeta"); - TL_IS_3083 = Str__literal(L"eta"); - TL_IS_3084 = Str__literal(L"theta"); - TL_IS_3085 = Str__literal(L"iota"); - TL_IS_3086 = Str__literal(L"kappa"); - TL_IS_3087 = Str__literal(L"lambda"); - TL_IS_3088 = Str__literal(L"mu"); - TL_IS_3089 = Str__literal(L"nu"); - TL_IS_3090 = Str__literal(L"xi"); - TL_IS_3091 = Str__literal(L"omicron"); - TL_IS_3092 = Str__literal(L"pi"); - TL_IS_3093 = Str__literal(L"rho"); - TL_IS_3094 = Str__literal(L"varsigma"); - TL_IS_3095 = Str__literal(L"sigma"); - TL_IS_3096 = Str__literal(L"tau"); - TL_IS_3097 = Str__literal(L"upsilon"); - TL_IS_3098 = Str__literal(L"phi"); - TL_IS_3099 = Str__literal(L"chi"); - TL_IS_3100 = Str__literal(L"psi"); - TL_IS_3101 = Str__literal(L"omega"); - TL_IS_3102 = Str__literal(L"exists"); - TL_IS_3103 = Str__literal(L"in"); - TL_IS_3104 = Str__literal(L"forall"); - TL_IS_3105 = Str__literal(L"cap"); - TL_IS_3106 = Str__literal(L"emptyset"); - TL_IS_3107 = Str__literal(L"subseteq"); - TL_IS_3108 = Str__literal(L"land"); - TL_IS_3109 = Str__literal(L"lor"); - TL_IS_3110 = Str__literal(L"lnot"); - TL_IS_3111 = Str__literal(L"sum"); - TL_IS_3112 = Str__literal(L"prod"); - TL_IS_3113 = Str__literal(L"n"); - TL_IS_3114 = Str__literal(L"t"); - TL_IS_3115 = Str__literal(L"exists"); - TL_IS_3116 = Str__literal(L"forall"); - TL_IS_3117 = Str__literal(L"platform-settings"); - TL_IS_3118 = Str__literal(L"identity-settings"); - TL_IS_3119 = Str__literal(L"modify-filenames"); - TL_IS_3120 = Str__literal(L"original: ORIGINAL ?suffix: SUFFIX ?prefix: PREFIX"); - TL_IS_3121 = Str__literal(L"component"); - TL_IS_3122 = Str__literal(L"symbol: SYMBOL webname: WEBNAME path: PATH set: SET type: TYPE"); - TL_IS_3123 = Str__literal(L"dependent-files"); - TL_IS_3124 = Str__literal(L"?tool: TOOL ?module: MODULES ?tool-and-modules: BOTH"); - TL_IS_3125 = Str__literal(L"components"); - TL_IS_3126 = Str__literal(L"type: TYPE ?set: SET"); - TL_IS_3127 = Str__literal(L"intest"); - TL_IS_3128 = Str__literal(L"platform-settings.mk"); - TL_IS_3129 = Str__literal(L"Materials"); - TL_IS_3130 = Str__literal(L"platforms"); - TL_IS_3131 = Str__literal(L"tool"); - TL_IS_3132 = Str__literal(L"web"); - TL_IS_3133 = Str__literal(L"module"); - TL_IS_3134 = Str__literal(L"SYMBOL"); - TL_IS_3135 = Str__literal(L"all"); - TL_IS_3136 = Str__literal(L"tool"); - TL_IS_3137 = Str__literal(L"web"); - TL_IS_3138 = Str__literal(L"module"); - TL_IS_3139 = Str__literal(L"all"); - TL_IS_3140 = Str__literal(L"basics"); - TL_IS_3141 = Str__literal(L"default.giscript"); - TL_IS_3142 = Str__literal(L"tags"); - TL_IS_3143 = Str__literal(L"bibliographic"); - TL_IS_3144 = Str__literal(L"datum: DATUM of: ASSET"); - TL_IS_3145 = Str__literal(L"Build Date"); - TL_IS_3146 = Str__literal(L"Version Number"); - TL_IS_3147 = Str__literal(L"Build Date"); - TL_IS_3148 = Str__literal(L"Version Number"); - TL_IS_3149 = Str__literal(L"inform6"); - TL_IS_3150 = Str__literal(L"header.h"); - TL_IS_3151 = Str__literal(L"(manifest).txt"); - TL_IS_3152 = Str__literal(L"README.txt"); - TL_IS_3153 = Str__literal(L"README.md"); - TL_IS_3154 = Str__literal(L"docs"); - TL_IS_3155 = Str__literal(L"web"); - TL_IS_3156 = Str__literal(L"module"); - TL_IS_3157 = Str__literal(L".inweb"); - TL_IS_3158 = Str__literal(L".inweb"); - TL_IS_3159 = Str__literal(L"docs"); - TL_IS_3160 = Str__literal(L"Multiple cross-references might be meant here"); - TL_IS_3161 = Str__literal(L"(main)"); + TL_IS_0 = Str__literal(U"INVOCATION"); + TL_IS_1 = Str__literal(U"debug-log.txt"); + TL_IS_2 = Str__literal(U"Tangled"); + TL_IS_3 = Str__literal(U"NAME"); + TL_IS_4 = Str__literal(U""); + TL_IS_5 = Str__literal(U"repeat"); + TL_IS_6 = Str__literal(U"with: WITH in: IN"); + TL_IS_7 = Str__literal(U"set"); + TL_IS_8 = Str__literal(U"name: NAME value: VALUE"); + TL_IS_9 = Str__literal(U"mismatched '[' ... ']'"); + TL_IS_10 = Str__literal(U"mismatched '{' ... '}'"); + TL_IS_11 = Str__literal(U"mismatched quotation marks"); + TL_IS_12 = Str__literal(U"true"); + TL_IS_13 = Str__literal(U"false"); + TL_IS_14 = Str__literal(U"null"); + TL_IS_15 = Str__literal(U"unknown JSON value"); + TL_IS_16 = Str__literal(U"whitespace where JSON value expected"); + TL_IS_17 = Str__literal(U"object body ends with comma"); + TL_IS_18 = Str__literal(U"key does not begin with quotation mark"); + TL_IS_19 = Str__literal(U"key does not end with quotation mark"); + TL_IS_20 = Str__literal(U"key is not followed by ':'"); + TL_IS_21 = Str__literal(U"duplicate key"); + TL_IS_22 = Str__literal(U"whitespace where number expected"); + TL_IS_23 = Str__literal(U"number is not a decimal integer"); + TL_IS_24 = Str__literal(U"number is not allowed to be NaN"); + TL_IS_25 = Str__literal(U"unescaped control character"); + TL_IS_26 = Str__literal(U"bad '\\' escape in string"); + TL_IS_27 = Str__literal(U"incomplete '\\u' escape"); + TL_IS_28 = Str__literal(U"garbled '\\u' escape"); + TL_IS_29 = Str__literal(U"array"); + TL_IS_30 = Str__literal(U"object"); + TL_IS_31 = Str__literal(U"erroneous JSON value from parsing bad text"); + TL_IS_32 = Str__literal(U"unexpected array entry"); + TL_IS_33 = Str__literal(U"mismatched '(' ... ')'"); + TL_IS_34 = Str__literal(U"whitespace where requirement expected"); + TL_IS_35 = Str__literal(U"mismatched '[' ... ']'"); + TL_IS_36 = Str__literal(U"mismatched '{' ... '}'"); + TL_IS_37 = Str__literal(U"mismatched '<' ... '>'"); + TL_IS_38 = Str__literal(U"unknown ''"); + TL_IS_39 = Str__literal(U"'<' ... '>' not allowed"); + TL_IS_40 = Str__literal(U"true"); + TL_IS_41 = Str__literal(U"false"); + TL_IS_42 = Str__literal(U"null"); + TL_IS_43 = Str__literal(U"number"); + TL_IS_44 = Str__literal(U"double"); + TL_IS_45 = Str__literal(U"string"); + TL_IS_46 = Str__literal(U"boolean"); + TL_IS_47 = Str__literal(U"key does not begin with quotation mark"); + TL_IS_48 = Str__literal(U"key does not end with quotation mark"); + TL_IS_49 = Str__literal(U"key is not followed by ':'"); + TL_IS_50 = Str__literal(U"duplicate key"); + TL_IS_51 = Str__literal(U"spurious text before first requirement"); + TL_IS_52 = Str__literal(U"CONTENT BEGINS"); + TL_IS_53 = Str__literal(U"CONTENT ENDS"); + TL_IS_54 = Str__literal(U"inform:/doc_images/ornament_flower.png"); + TL_IS_55 = Str__literal(U"Æ"); + TL_IS_56 = Str__literal(U"Æ"); + TL_IS_57 = Str__literal(U"&"); + TL_IS_58 = Str__literal(U"&"); + TL_IS_59 = Str__literal(U"Á"); + TL_IS_60 = Str__literal(U"Á"); + TL_IS_61 = Str__literal(U"Ă"); + TL_IS_62 = Str__literal(U"Â"); + TL_IS_63 = Str__literal(U"Â"); + TL_IS_64 = Str__literal(U"А"); + TL_IS_65 = Str__literal(U"𝔄"); + TL_IS_66 = Str__literal(U"À"); + TL_IS_67 = Str__literal(U"À"); + TL_IS_68 = Str__literal(U"Α"); + TL_IS_69 = Str__literal(U"Ā"); + TL_IS_70 = Str__literal(U"⩓"); + TL_IS_71 = Str__literal(U"Ą"); + TL_IS_72 = Str__literal(U"𝔸"); + TL_IS_73 = Str__literal(U"⁡"); + TL_IS_74 = Str__literal(U"Å"); + TL_IS_75 = Str__literal(U"Å"); + TL_IS_76 = Str__literal(U"𝒜"); + TL_IS_77 = Str__literal(U"≔"); + TL_IS_78 = Str__literal(U"Ã"); + TL_IS_79 = Str__literal(U"Ã"); + TL_IS_80 = Str__literal(U"Ä"); + TL_IS_81 = Str__literal(U"Ä"); + TL_IS_82 = Str__literal(U"∖"); + TL_IS_83 = Str__literal(U"⫧"); + TL_IS_84 = Str__literal(U"⌆"); + TL_IS_85 = Str__literal(U"Б"); + TL_IS_86 = Str__literal(U"∵"); + TL_IS_87 = Str__literal(U"ℬ"); + TL_IS_88 = Str__literal(U"Β"); + TL_IS_89 = Str__literal(U"𝔅"); + TL_IS_90 = Str__literal(U"𝔹"); + TL_IS_91 = Str__literal(U"˘"); + TL_IS_92 = Str__literal(U"ℬ"); + TL_IS_93 = Str__literal(U"≎"); + TL_IS_94 = Str__literal(U"Ч"); + TL_IS_95 = Str__literal(U"©"); + TL_IS_96 = Str__literal(U"©"); + TL_IS_97 = Str__literal(U"Ć"); + TL_IS_98 = Str__literal(U"⋒"); + TL_IS_99 = Str__literal(U"ⅅ"); + TL_IS_100 = Str__literal(U"ℭ"); + TL_IS_101 = Str__literal(U"Č"); + TL_IS_102 = Str__literal(U"Ç"); + TL_IS_103 = Str__literal(U"Ç"); + TL_IS_104 = Str__literal(U"Ĉ"); + TL_IS_105 = Str__literal(U"∰"); + TL_IS_106 = Str__literal(U"Ċ"); + TL_IS_107 = Str__literal(U"¸"); + TL_IS_108 = Str__literal(U"·"); + TL_IS_109 = Str__literal(U"ℭ"); + TL_IS_110 = Str__literal(U"Χ"); + TL_IS_111 = Str__literal(U"⊙"); + TL_IS_112 = Str__literal(U"⊖"); + TL_IS_113 = Str__literal(U"⊕"); + TL_IS_114 = Str__literal(U"⊗"); + TL_IS_115 = Str__literal(U"∲"); + TL_IS_116 = Str__literal(U"”"); + TL_IS_117 = Str__literal(U"’"); + TL_IS_118 = Str__literal(U"∷"); + TL_IS_119 = Str__literal(U"⩴"); + TL_IS_120 = Str__literal(U"≡"); + TL_IS_121 = Str__literal(U"∯"); + TL_IS_122 = Str__literal(U"∮"); + TL_IS_123 = Str__literal(U"ℂ"); + TL_IS_124 = Str__literal(U"∐"); + TL_IS_125 = Str__literal(U"∳"); + TL_IS_126 = Str__literal(U"⨯"); + TL_IS_127 = Str__literal(U"𝒞"); + TL_IS_128 = Str__literal(U"⋓"); + TL_IS_129 = Str__literal(U"≍"); + TL_IS_130 = Str__literal(U"ⅅ"); + TL_IS_131 = Str__literal(U"⤑"); + TL_IS_132 = Str__literal(U"Ђ"); + TL_IS_133 = Str__literal(U"Ѕ"); + TL_IS_134 = Str__literal(U"Џ"); + TL_IS_135 = Str__literal(U"‡"); + TL_IS_136 = Str__literal(U"↡"); + TL_IS_137 = Str__literal(U"⫤"); + TL_IS_138 = Str__literal(U"Ď"); + TL_IS_139 = Str__literal(U"Д"); + TL_IS_140 = Str__literal(U"∇"); + TL_IS_141 = Str__literal(U"Δ"); + TL_IS_142 = Str__literal(U"𝔇"); + TL_IS_143 = Str__literal(U"´"); + TL_IS_144 = Str__literal(U"˙"); + TL_IS_145 = Str__literal(U"˝"); + TL_IS_146 = Str__literal(U"`"); + TL_IS_147 = Str__literal(U"˜"); + TL_IS_148 = Str__literal(U"⋄"); + TL_IS_149 = Str__literal(U"ⅆ"); + TL_IS_150 = Str__literal(U"𝔻"); + TL_IS_151 = Str__literal(U"¨"); + TL_IS_152 = Str__literal(U"⃜"); + TL_IS_153 = Str__literal(U"≐"); + TL_IS_154 = Str__literal(U"∯"); + TL_IS_155 = Str__literal(U"¨"); + TL_IS_156 = Str__literal(U"⇓"); + TL_IS_157 = Str__literal(U"⇐"); + TL_IS_158 = Str__literal(U"⇔"); + TL_IS_159 = Str__literal(U"⫤"); + TL_IS_160 = Str__literal(U"⟸"); + TL_IS_161 = Str__literal(U"⟺"); + TL_IS_162 = Str__literal(U"⟹"); + TL_IS_163 = Str__literal(U"⇒"); + TL_IS_164 = Str__literal(U"⊨"); + TL_IS_165 = Str__literal(U"⇑"); + TL_IS_166 = Str__literal(U"⇕"); + TL_IS_167 = Str__literal(U"∥"); + TL_IS_168 = Str__literal(U"↓"); + TL_IS_169 = Str__literal(U"⤓"); + TL_IS_170 = Str__literal(U"⇵"); + TL_IS_171 = Str__literal(U"̑"); + TL_IS_172 = Str__literal(U"⥐"); + TL_IS_173 = Str__literal(U"⥞"); + TL_IS_174 = Str__literal(U"↽"); + TL_IS_175 = Str__literal(U"⥖"); + TL_IS_176 = Str__literal(U"⥟"); + TL_IS_177 = Str__literal(U"⇁"); + TL_IS_178 = Str__literal(U"⥗"); + TL_IS_179 = Str__literal(U"⊤"); + TL_IS_180 = Str__literal(U"↧"); + TL_IS_181 = Str__literal(U"⇓"); + TL_IS_182 = Str__literal(U"𝒟"); + TL_IS_183 = Str__literal(U"Đ"); + TL_IS_184 = Str__literal(U"Ŋ"); + TL_IS_185 = Str__literal(U"Ð"); + TL_IS_186 = Str__literal(U"Ð"); + TL_IS_187 = Str__literal(U"É"); + TL_IS_188 = Str__literal(U"É"); + TL_IS_189 = Str__literal(U"Ě"); + TL_IS_190 = Str__literal(U"Ê"); + TL_IS_191 = Str__literal(U"Ê"); + TL_IS_192 = Str__literal(U"Э"); + TL_IS_193 = Str__literal(U"Ė"); + TL_IS_194 = Str__literal(U"𝔈"); + TL_IS_195 = Str__literal(U"È"); + TL_IS_196 = Str__literal(U"È"); + TL_IS_197 = Str__literal(U"∈"); + TL_IS_198 = Str__literal(U"Ē"); + TL_IS_199 = Str__literal(U"◻"); + TL_IS_200 = Str__literal(U"▫"); + TL_IS_201 = Str__literal(U"Ę"); + TL_IS_202 = Str__literal(U"𝔼"); + TL_IS_203 = Str__literal(U"Ε"); + TL_IS_204 = Str__literal(U"⩵"); + TL_IS_205 = Str__literal(U"≂"); + TL_IS_206 = Str__literal(U"⇌"); + TL_IS_207 = Str__literal(U"ℰ"); + TL_IS_208 = Str__literal(U"⩳"); + TL_IS_209 = Str__literal(U"Η"); + TL_IS_210 = Str__literal(U"Ë"); + TL_IS_211 = Str__literal(U"Ë"); + TL_IS_212 = Str__literal(U"∃"); + TL_IS_213 = Str__literal(U"ⅇ"); + TL_IS_214 = Str__literal(U"Ф"); + TL_IS_215 = Str__literal(U"𝔉"); + TL_IS_216 = Str__literal(U"◼"); + TL_IS_217 = Str__literal(U"▪"); + TL_IS_218 = Str__literal(U"𝔽"); + TL_IS_219 = Str__literal(U"∀"); + TL_IS_220 = Str__literal(U"ℱ"); + TL_IS_221 = Str__literal(U"ℱ"); + TL_IS_222 = Str__literal(U"Ѓ"); + TL_IS_223 = Str__literal(U">"); + TL_IS_224 = Str__literal(U">"); + TL_IS_225 = Str__literal(U"Γ"); + TL_IS_226 = Str__literal(U"Ϝ"); + TL_IS_227 = Str__literal(U"Ğ"); + TL_IS_228 = Str__literal(U"Ģ"); + TL_IS_229 = Str__literal(U"Ĝ"); + TL_IS_230 = Str__literal(U"Г"); + TL_IS_231 = Str__literal(U"Ġ"); + TL_IS_232 = Str__literal(U"𝔊"); + TL_IS_233 = Str__literal(U"⋙"); + TL_IS_234 = Str__literal(U"𝔾"); + TL_IS_235 = Str__literal(U"≥"); + TL_IS_236 = Str__literal(U"⋛"); + TL_IS_237 = Str__literal(U"≧"); + TL_IS_238 = Str__literal(U"⪢"); + TL_IS_239 = Str__literal(U"≷"); + TL_IS_240 = Str__literal(U"⩾"); + TL_IS_241 = Str__literal(U"≳"); + TL_IS_242 = Str__literal(U"𝒢"); + TL_IS_243 = Str__literal(U"≫"); + TL_IS_244 = Str__literal(U"Ъ"); + TL_IS_245 = Str__literal(U"ˇ"); + TL_IS_246 = Str__literal(U"^"); + TL_IS_247 = Str__literal(U"Ĥ"); + TL_IS_248 = Str__literal(U"ℌ"); + TL_IS_249 = Str__literal(U"ℋ"); + TL_IS_250 = Str__literal(U"ℍ"); + TL_IS_251 = Str__literal(U"─"); + TL_IS_252 = Str__literal(U"ℋ"); + TL_IS_253 = Str__literal(U"Ħ"); + TL_IS_254 = Str__literal(U"≎"); + TL_IS_255 = Str__literal(U"≏"); + TL_IS_256 = Str__literal(U"Е"); + TL_IS_257 = Str__literal(U"IJ"); + TL_IS_258 = Str__literal(U"Ё"); + TL_IS_259 = Str__literal(U"Í"); + TL_IS_260 = Str__literal(U"Í"); + TL_IS_261 = Str__literal(U"Î"); + TL_IS_262 = Str__literal(U"Î"); + TL_IS_263 = Str__literal(U"И"); + TL_IS_264 = Str__literal(U"İ"); + TL_IS_265 = Str__literal(U"ℑ"); + TL_IS_266 = Str__literal(U"Ì"); + TL_IS_267 = Str__literal(U"Ì"); + TL_IS_268 = Str__literal(U"ℑ"); + TL_IS_269 = Str__literal(U"Ī"); + TL_IS_270 = Str__literal(U"ⅈ"); + TL_IS_271 = Str__literal(U"⇒"); + TL_IS_272 = Str__literal(U"∬"); + TL_IS_273 = Str__literal(U"∫"); + TL_IS_274 = Str__literal(U"⋂"); + TL_IS_275 = Str__literal(U"⁣"); + TL_IS_276 = Str__literal(U"⁢"); + TL_IS_277 = Str__literal(U"Į"); + TL_IS_278 = Str__literal(U"𝕀"); + TL_IS_279 = Str__literal(U"Ι"); + TL_IS_280 = Str__literal(U"ℐ"); + TL_IS_281 = Str__literal(U"Ĩ"); + TL_IS_282 = Str__literal(U"І"); + TL_IS_283 = Str__literal(U"Ï"); + TL_IS_284 = Str__literal(U"Ï"); + TL_IS_285 = Str__literal(U"Ĵ"); + TL_IS_286 = Str__literal(U"Й"); + TL_IS_287 = Str__literal(U"𝔍"); + TL_IS_288 = Str__literal(U"𝕁"); + TL_IS_289 = Str__literal(U"𝒥"); + TL_IS_290 = Str__literal(U"Ј"); + TL_IS_291 = Str__literal(U"Є"); + TL_IS_292 = Str__literal(U"Х"); + TL_IS_293 = Str__literal(U"Ќ"); + TL_IS_294 = Str__literal(U"Κ"); + TL_IS_295 = Str__literal(U"Ķ"); + TL_IS_296 = Str__literal(U"К"); + TL_IS_297 = Str__literal(U"𝔎"); + TL_IS_298 = Str__literal(U"𝕂"); + TL_IS_299 = Str__literal(U"𝒦"); + TL_IS_300 = Str__literal(U"Љ"); + TL_IS_301 = Str__literal(U"<"); + TL_IS_302 = Str__literal(U"<"); + TL_IS_303 = Str__literal(U"Ĺ"); + TL_IS_304 = Str__literal(U"Λ"); + TL_IS_305 = Str__literal(U"⟪"); + TL_IS_306 = Str__literal(U"ℒ"); + TL_IS_307 = Str__literal(U"↞"); + TL_IS_308 = Str__literal(U"Ľ"); + TL_IS_309 = Str__literal(U"Ļ"); + TL_IS_310 = Str__literal(U"Л"); + TL_IS_311 = Str__literal(U"⟨"); + TL_IS_312 = Str__literal(U"←"); + TL_IS_313 = Str__literal(U"⇤"); + TL_IS_314 = Str__literal(U"⇆"); + TL_IS_315 = Str__literal(U"⌈"); + TL_IS_316 = Str__literal(U"⟦"); + TL_IS_317 = Str__literal(U"⥡"); + TL_IS_318 = Str__literal(U"⇃"); + TL_IS_319 = Str__literal(U"⥙"); + TL_IS_320 = Str__literal(U"⌊"); + TL_IS_321 = Str__literal(U"↔"); + TL_IS_322 = Str__literal(U"⥎"); + TL_IS_323 = Str__literal(U"⊣"); + TL_IS_324 = Str__literal(U"↤"); + TL_IS_325 = Str__literal(U"⥚"); + TL_IS_326 = Str__literal(U"⊲"); + TL_IS_327 = Str__literal(U"⧏"); + TL_IS_328 = Str__literal(U"⊴"); + TL_IS_329 = Str__literal(U"⥑"); + TL_IS_330 = Str__literal(U"⥠"); + TL_IS_331 = Str__literal(U"↿"); + TL_IS_332 = Str__literal(U"⥘"); + TL_IS_333 = Str__literal(U"↼"); + TL_IS_334 = Str__literal(U"⥒"); + TL_IS_335 = Str__literal(U"⇐"); + TL_IS_336 = Str__literal(U"⇔"); + TL_IS_337 = Str__literal(U"⋚"); + TL_IS_338 = Str__literal(U"≦"); + TL_IS_339 = Str__literal(U"≶"); + TL_IS_340 = Str__literal(U"⪡"); + TL_IS_341 = Str__literal(U"⩽"); + TL_IS_342 = Str__literal(U"≲"); + TL_IS_343 = Str__literal(U"𝔏"); + TL_IS_344 = Str__literal(U"⋘"); + TL_IS_345 = Str__literal(U"⇚"); + TL_IS_346 = Str__literal(U"Ŀ"); + TL_IS_347 = Str__literal(U"⟵"); + TL_IS_348 = Str__literal(U"⟷"); + TL_IS_349 = Str__literal(U"⟶"); + TL_IS_350 = Str__literal(U"⟸"); + TL_IS_351 = Str__literal(U"⟺"); + TL_IS_352 = Str__literal(U"⟹"); + TL_IS_353 = Str__literal(U"𝕃"); + TL_IS_354 = Str__literal(U"↙"); + TL_IS_355 = Str__literal(U"↘"); + TL_IS_356 = Str__literal(U"ℒ"); + TL_IS_357 = Str__literal(U"↰"); + TL_IS_358 = Str__literal(U"Ł"); + TL_IS_359 = Str__literal(U"≪"); + TL_IS_360 = Str__literal(U"⤅"); + TL_IS_361 = Str__literal(U"М"); + TL_IS_362 = Str__literal(U" "); + TL_IS_363 = Str__literal(U"ℳ"); + TL_IS_364 = Str__literal(U"𝔐"); + TL_IS_365 = Str__literal(U"∓"); + TL_IS_366 = Str__literal(U"𝕄"); + TL_IS_367 = Str__literal(U"ℳ"); + TL_IS_368 = Str__literal(U"Μ"); + TL_IS_369 = Str__literal(U"Њ"); + TL_IS_370 = Str__literal(U"Ń"); + TL_IS_371 = Str__literal(U"Ň"); + TL_IS_372 = Str__literal(U"Ņ"); + TL_IS_373 = Str__literal(U"Н"); + TL_IS_374 = Str__literal(U"​"); + TL_IS_375 = Str__literal(U"​"); + TL_IS_376 = Str__literal(U"​"); + TL_IS_377 = Str__literal(U"​"); + TL_IS_378 = Str__literal(U"≫"); + TL_IS_379 = Str__literal(U"≪"); + TL_IS_380 = Str__literal(U" "); + TL_IS_381 = Str__literal(U"𝔑"); + TL_IS_382 = Str__literal(U"⁠"); + TL_IS_383 = Str__literal(U" "); + TL_IS_384 = Str__literal(U"ℕ"); + TL_IS_385 = Str__literal(U"⫬"); + TL_IS_386 = Str__literal(U"≢"); + TL_IS_387 = Str__literal(U"≭"); + TL_IS_388 = Str__literal(U"∦"); + TL_IS_389 = Str__literal(U"∉"); + TL_IS_390 = Str__literal(U"≠"); + TL_IS_391 = Str__literal(U"≂̸"); + TL_IS_392 = Str__literal(U"∄"); + TL_IS_393 = Str__literal(U"≯"); + TL_IS_394 = Str__literal(U"≱"); + TL_IS_395 = Str__literal(U"≧̸"); + TL_IS_396 = Str__literal(U"≫̸"); + TL_IS_397 = Str__literal(U"≹"); + TL_IS_398 = Str__literal(U"⩾̸"); + TL_IS_399 = Str__literal(U"≵"); + TL_IS_400 = Str__literal(U"≎̸"); + TL_IS_401 = Str__literal(U"≏̸"); + TL_IS_402 = Str__literal(U"⋪"); + TL_IS_403 = Str__literal(U"⧏̸"); + TL_IS_404 = Str__literal(U"⋬"); + TL_IS_405 = Str__literal(U"≮"); + TL_IS_406 = Str__literal(U"≰"); + TL_IS_407 = Str__literal(U"≸"); + TL_IS_408 = Str__literal(U"≪̸"); + TL_IS_409 = Str__literal(U"⩽̸"); + TL_IS_410 = Str__literal(U"≴"); + TL_IS_411 = Str__literal(U"⪢̸"); + TL_IS_412 = Str__literal(U"⪡̸"); + TL_IS_413 = Str__literal(U"⊀"); + TL_IS_414 = Str__literal(U"⪯̸"); + TL_IS_415 = Str__literal(U"⋠"); + TL_IS_416 = Str__literal(U"∌"); + TL_IS_417 = Str__literal(U"⋫"); + TL_IS_418 = Str__literal(U"⧐̸"); + TL_IS_419 = Str__literal(U"⋭"); + TL_IS_420 = Str__literal(U"⊏̸"); + TL_IS_421 = Str__literal(U"⋢"); + TL_IS_422 = Str__literal(U"⊐̸"); + TL_IS_423 = Str__literal(U"⋣"); + TL_IS_424 = Str__literal(U"⊂⃒"); + TL_IS_425 = Str__literal(U"⊈"); + TL_IS_426 = Str__literal(U"⊁"); + TL_IS_427 = Str__literal(U"⪰̸"); + TL_IS_428 = Str__literal(U"⋡"); + TL_IS_429 = Str__literal(U"≿̸"); + TL_IS_430 = Str__literal(U"⊃⃒"); + TL_IS_431 = Str__literal(U"⊉"); + TL_IS_432 = Str__literal(U"≁"); + TL_IS_433 = Str__literal(U"≄"); + TL_IS_434 = Str__literal(U"≇"); + TL_IS_435 = Str__literal(U"≉"); + TL_IS_436 = Str__literal(U"∤"); + TL_IS_437 = Str__literal(U"𝒩"); + TL_IS_438 = Str__literal(U"Ñ"); + TL_IS_439 = Str__literal(U"Ñ"); + TL_IS_440 = Str__literal(U"Ν"); + TL_IS_441 = Str__literal(U"Œ"); + TL_IS_442 = Str__literal(U"Ó"); + TL_IS_443 = Str__literal(U"Ó"); + TL_IS_444 = Str__literal(U"Ô"); + TL_IS_445 = Str__literal(U"Ô"); + TL_IS_446 = Str__literal(U"О"); + TL_IS_447 = Str__literal(U"Ő"); + TL_IS_448 = Str__literal(U"𝔒"); + TL_IS_449 = Str__literal(U"Ò"); + TL_IS_450 = Str__literal(U"Ò"); + TL_IS_451 = Str__literal(U"Ō"); + TL_IS_452 = Str__literal(U"Ω"); + TL_IS_453 = Str__literal(U"Ο"); + TL_IS_454 = Str__literal(U"𝕆"); + TL_IS_455 = Str__literal(U"“"); + TL_IS_456 = Str__literal(U"‘"); + TL_IS_457 = Str__literal(U"⩔"); + TL_IS_458 = Str__literal(U"𝒪"); + TL_IS_459 = Str__literal(U"Ø"); + TL_IS_460 = Str__literal(U"Ø"); + TL_IS_461 = Str__literal(U"Õ"); + TL_IS_462 = Str__literal(U"Õ"); + TL_IS_463 = Str__literal(U"⨷"); + TL_IS_464 = Str__literal(U"Ö"); + TL_IS_465 = Str__literal(U"Ö"); + TL_IS_466 = Str__literal(U"‾"); + TL_IS_467 = Str__literal(U"⏞"); + TL_IS_468 = Str__literal(U"⎴"); + TL_IS_469 = Str__literal(U"⏜"); + TL_IS_470 = Str__literal(U"∂"); + TL_IS_471 = Str__literal(U"П"); + TL_IS_472 = Str__literal(U"𝔓"); + TL_IS_473 = Str__literal(U"Φ"); + TL_IS_474 = Str__literal(U"Π"); + TL_IS_475 = Str__literal(U"±"); + TL_IS_476 = Str__literal(U"ℌ"); + TL_IS_477 = Str__literal(U"ℙ"); + TL_IS_478 = Str__literal(U"⪻"); + TL_IS_479 = Str__literal(U"≺"); + TL_IS_480 = Str__literal(U"⪯"); + TL_IS_481 = Str__literal(U"≼"); + TL_IS_482 = Str__literal(U"≾"); + TL_IS_483 = Str__literal(U"″"); + TL_IS_484 = Str__literal(U"∏"); + TL_IS_485 = Str__literal(U"∷"); + TL_IS_486 = Str__literal(U"∝"); + TL_IS_487 = Str__literal(U"𝒫"); + TL_IS_488 = Str__literal(U"Ψ"); + TL_IS_489 = Str__literal(U"""); + TL_IS_490 = Str__literal(U"""); + TL_IS_491 = Str__literal(U"𝔔"); + TL_IS_492 = Str__literal(U"ℚ"); + TL_IS_493 = Str__literal(U"𝒬"); + TL_IS_494 = Str__literal(U"⤐"); + TL_IS_495 = Str__literal(U"®"); + TL_IS_496 = Str__literal(U"®"); + TL_IS_497 = Str__literal(U"Ŕ"); + TL_IS_498 = Str__literal(U"⟫"); + TL_IS_499 = Str__literal(U"↠"); + TL_IS_500 = Str__literal(U"⤖"); + TL_IS_501 = Str__literal(U"Ř"); + TL_IS_502 = Str__literal(U"Ŗ"); + TL_IS_503 = Str__literal(U"Р"); + TL_IS_504 = Str__literal(U"ℜ"); + TL_IS_505 = Str__literal(U"∋"); + TL_IS_506 = Str__literal(U"⇋"); + TL_IS_507 = Str__literal(U"⥯"); + TL_IS_508 = Str__literal(U"ℜ"); + TL_IS_509 = Str__literal(U"Ρ"); + TL_IS_510 = Str__literal(U"⟩"); + TL_IS_511 = Str__literal(U"→"); + TL_IS_512 = Str__literal(U"⇥"); + TL_IS_513 = Str__literal(U"⇄"); + TL_IS_514 = Str__literal(U"⌉"); + TL_IS_515 = Str__literal(U"⟧"); + TL_IS_516 = Str__literal(U"⥝"); + TL_IS_517 = Str__literal(U"⇂"); + TL_IS_518 = Str__literal(U"⥕"); + TL_IS_519 = Str__literal(U"⌋"); + TL_IS_520 = Str__literal(U"⊢"); + TL_IS_521 = Str__literal(U"↦"); + TL_IS_522 = Str__literal(U"⥛"); + TL_IS_523 = Str__literal(U"⊳"); + TL_IS_524 = Str__literal(U"⧐"); + TL_IS_525 = Str__literal(U"⊵"); + TL_IS_526 = Str__literal(U"⥏"); + TL_IS_527 = Str__literal(U"⥜"); + TL_IS_528 = Str__literal(U"↾"); + TL_IS_529 = Str__literal(U"⥔"); + TL_IS_530 = Str__literal(U"⇀"); + TL_IS_531 = Str__literal(U"⥓"); + TL_IS_532 = Str__literal(U"⇒"); + TL_IS_533 = Str__literal(U"ℝ"); + TL_IS_534 = Str__literal(U"⥰"); + TL_IS_535 = Str__literal(U"⇛"); + TL_IS_536 = Str__literal(U"ℛ"); + TL_IS_537 = Str__literal(U"↱"); + TL_IS_538 = Str__literal(U"⧴"); + TL_IS_539 = Str__literal(U"Щ"); + TL_IS_540 = Str__literal(U"Ш"); + TL_IS_541 = Str__literal(U"Ь"); + TL_IS_542 = Str__literal(U"Ś"); + TL_IS_543 = Str__literal(U"⪼"); + TL_IS_544 = Str__literal(U"Š"); + TL_IS_545 = Str__literal(U"Ş"); + TL_IS_546 = Str__literal(U"Ŝ"); + TL_IS_547 = Str__literal(U"С"); + TL_IS_548 = Str__literal(U"𝔖"); + TL_IS_549 = Str__literal(U"↓"); + TL_IS_550 = Str__literal(U"←"); + TL_IS_551 = Str__literal(U"→"); + TL_IS_552 = Str__literal(U"↑"); + TL_IS_553 = Str__literal(U"Σ"); + TL_IS_554 = Str__literal(U"∘"); + TL_IS_555 = Str__literal(U"𝕊"); + TL_IS_556 = Str__literal(U"√"); + TL_IS_557 = Str__literal(U"□"); + TL_IS_558 = Str__literal(U"⊓"); + TL_IS_559 = Str__literal(U"⊏"); + TL_IS_560 = Str__literal(U"⊑"); + TL_IS_561 = Str__literal(U"⊐"); + TL_IS_562 = Str__literal(U"⊒"); + TL_IS_563 = Str__literal(U"⊔"); + TL_IS_564 = Str__literal(U"𝒮"); + TL_IS_565 = Str__literal(U"⋆"); + TL_IS_566 = Str__literal(U"⋐"); + TL_IS_567 = Str__literal(U"⋐"); + TL_IS_568 = Str__literal(U"⊆"); + TL_IS_569 = Str__literal(U"≻"); + TL_IS_570 = Str__literal(U"⪰"); + TL_IS_571 = Str__literal(U"≽"); + TL_IS_572 = Str__literal(U"≿"); + TL_IS_573 = Str__literal(U"∋"); + TL_IS_574 = Str__literal(U"∑"); + TL_IS_575 = Str__literal(U"⋑"); + TL_IS_576 = Str__literal(U"⊃"); + TL_IS_577 = Str__literal(U"⊇"); + TL_IS_578 = Str__literal(U"⋑"); + TL_IS_579 = Str__literal(U"Þ"); + TL_IS_580 = Str__literal(U"Þ"); + TL_IS_581 = Str__literal(U"™"); + TL_IS_582 = Str__literal(U"Ћ"); + TL_IS_583 = Str__literal(U"Ц"); + TL_IS_584 = Str__literal(U" "); + TL_IS_585 = Str__literal(U"Τ"); + TL_IS_586 = Str__literal(U"Ť"); + TL_IS_587 = Str__literal(U"Ţ"); + TL_IS_588 = Str__literal(U"Т"); + TL_IS_589 = Str__literal(U"𝔗"); + TL_IS_590 = Str__literal(U"∴"); + TL_IS_591 = Str__literal(U"Θ"); + TL_IS_592 = Str__literal(U"  "); + TL_IS_593 = Str__literal(U" "); + TL_IS_594 = Str__literal(U"∼"); + TL_IS_595 = Str__literal(U"≃"); + TL_IS_596 = Str__literal(U"≅"); + TL_IS_597 = Str__literal(U"≈"); + TL_IS_598 = Str__literal(U"𝕋"); + TL_IS_599 = Str__literal(U"⃛"); + TL_IS_600 = Str__literal(U"𝒯"); + TL_IS_601 = Str__literal(U"Ŧ"); + TL_IS_602 = Str__literal(U"Ú"); + TL_IS_603 = Str__literal(U"Ú"); + TL_IS_604 = Str__literal(U"↟"); + TL_IS_605 = Str__literal(U"⥉"); + TL_IS_606 = Str__literal(U"Ў"); + TL_IS_607 = Str__literal(U"Ŭ"); + TL_IS_608 = Str__literal(U"Û"); + TL_IS_609 = Str__literal(U"Û"); + TL_IS_610 = Str__literal(U"У"); + TL_IS_611 = Str__literal(U"Ű"); + TL_IS_612 = Str__literal(U"𝔘"); + TL_IS_613 = Str__literal(U"Ù"); + TL_IS_614 = Str__literal(U"Ù"); + TL_IS_615 = Str__literal(U"Ū"); + TL_IS_616 = Str__literal(U"_"); + TL_IS_617 = Str__literal(U"⏟"); + TL_IS_618 = Str__literal(U"⎵"); + TL_IS_619 = Str__literal(U"⏝"); + TL_IS_620 = Str__literal(U"⋃"); + TL_IS_621 = Str__literal(U"⊎"); + TL_IS_622 = Str__literal(U"Ų"); + TL_IS_623 = Str__literal(U"𝕌"); + TL_IS_624 = Str__literal(U"↑"); + TL_IS_625 = Str__literal(U"⤒"); + TL_IS_626 = Str__literal(U"⇅"); + TL_IS_627 = Str__literal(U"↕"); + TL_IS_628 = Str__literal(U"⥮"); + TL_IS_629 = Str__literal(U"⊥"); + TL_IS_630 = Str__literal(U"↥"); + TL_IS_631 = Str__literal(U"⇑"); + TL_IS_632 = Str__literal(U"⇕"); + TL_IS_633 = Str__literal(U"↖"); + TL_IS_634 = Str__literal(U"↗"); + TL_IS_635 = Str__literal(U"ϒ"); + TL_IS_636 = Str__literal(U"Υ"); + TL_IS_637 = Str__literal(U"Ů"); + TL_IS_638 = Str__literal(U"𝒰"); + TL_IS_639 = Str__literal(U"Ũ"); + TL_IS_640 = Str__literal(U"Ü"); + TL_IS_641 = Str__literal(U"Ü"); + TL_IS_642 = Str__literal(U"⊫"); + TL_IS_643 = Str__literal(U"⫫"); + TL_IS_644 = Str__literal(U"В"); + TL_IS_645 = Str__literal(U"⊩"); + TL_IS_646 = Str__literal(U"⫦"); + TL_IS_647 = Str__literal(U"⋁"); + TL_IS_648 = Str__literal(U"‖"); + TL_IS_649 = Str__literal(U"‖"); + TL_IS_650 = Str__literal(U"∣"); + TL_IS_651 = Str__literal(U"|"); + TL_IS_652 = Str__literal(U"❘"); + TL_IS_653 = Str__literal(U"≀"); + TL_IS_654 = Str__literal(U" "); + TL_IS_655 = Str__literal(U"𝔙"); + TL_IS_656 = Str__literal(U"𝕍"); + TL_IS_657 = Str__literal(U"𝒱"); + TL_IS_658 = Str__literal(U"⊪"); + TL_IS_659 = Str__literal(U"Ŵ"); + TL_IS_660 = Str__literal(U"⋀"); + TL_IS_661 = Str__literal(U"𝔚"); + TL_IS_662 = Str__literal(U"𝕎"); + TL_IS_663 = Str__literal(U"𝒲"); + TL_IS_664 = Str__literal(U"𝔛"); + TL_IS_665 = Str__literal(U"Ξ"); + TL_IS_666 = Str__literal(U"𝕏"); + TL_IS_667 = Str__literal(U"𝒳"); + TL_IS_668 = Str__literal(U"Я"); + TL_IS_669 = Str__literal(U"Ї"); + TL_IS_670 = Str__literal(U"Ю"); + TL_IS_671 = Str__literal(U"Ý"); + TL_IS_672 = Str__literal(U"Ý"); + TL_IS_673 = Str__literal(U"Ŷ"); + TL_IS_674 = Str__literal(U"Ы"); + TL_IS_675 = Str__literal(U"𝔜"); + TL_IS_676 = Str__literal(U"𝕐"); + TL_IS_677 = Str__literal(U"𝒴"); + TL_IS_678 = Str__literal(U"Ÿ"); + TL_IS_679 = Str__literal(U"Ж"); + TL_IS_680 = Str__literal(U"Ź"); + TL_IS_681 = Str__literal(U"Ž"); + TL_IS_682 = Str__literal(U"З"); + TL_IS_683 = Str__literal(U"Ż"); + TL_IS_684 = Str__literal(U"​"); + TL_IS_685 = Str__literal(U"Ζ"); + TL_IS_686 = Str__literal(U"ℨ"); + TL_IS_687 = Str__literal(U"ℤ"); + TL_IS_688 = Str__literal(U"𝒵"); + TL_IS_689 = Str__literal(U"á"); + TL_IS_690 = Str__literal(U"á"); + TL_IS_691 = Str__literal(U"ă"); + TL_IS_692 = Str__literal(U"∾"); + TL_IS_693 = Str__literal(U"∾̳"); + TL_IS_694 = Str__literal(U"∿"); + TL_IS_695 = Str__literal(U"â"); + TL_IS_696 = Str__literal(U"â"); + TL_IS_697 = Str__literal(U"´"); + TL_IS_698 = Str__literal(U"´"); + TL_IS_699 = Str__literal(U"а"); + TL_IS_700 = Str__literal(U"æ"); + TL_IS_701 = Str__literal(U"æ"); + TL_IS_702 = Str__literal(U"⁡"); + TL_IS_703 = Str__literal(U"𝔞"); + TL_IS_704 = Str__literal(U"à"); + TL_IS_705 = Str__literal(U"à"); + TL_IS_706 = Str__literal(U"ℵ"); + TL_IS_707 = Str__literal(U"ℵ"); + TL_IS_708 = Str__literal(U"α"); + TL_IS_709 = Str__literal(U"ā"); + TL_IS_710 = Str__literal(U"⨿"); + TL_IS_711 = Str__literal(U"&"); + TL_IS_712 = Str__literal(U"&"); + TL_IS_713 = Str__literal(U"∧"); + TL_IS_714 = Str__literal(U"⩕"); + TL_IS_715 = Str__literal(U"⩜"); + TL_IS_716 = Str__literal(U"⩘"); + TL_IS_717 = Str__literal(U"⩚"); + TL_IS_718 = Str__literal(U"∠"); + TL_IS_719 = Str__literal(U"⦤"); + TL_IS_720 = Str__literal(U"∠"); + TL_IS_721 = Str__literal(U"∡"); + TL_IS_722 = Str__literal(U"⦨"); + TL_IS_723 = Str__literal(U"⦩"); + TL_IS_724 = Str__literal(U"⦪"); + TL_IS_725 = Str__literal(U"⦫"); + TL_IS_726 = Str__literal(U"⦬"); + TL_IS_727 = Str__literal(U"⦭"); + TL_IS_728 = Str__literal(U"⦮"); + TL_IS_729 = Str__literal(U"⦯"); + TL_IS_730 = Str__literal(U"∟"); + TL_IS_731 = Str__literal(U"⊾"); + TL_IS_732 = Str__literal(U"⦝"); + TL_IS_733 = Str__literal(U"∢"); + TL_IS_734 = Str__literal(U"Å"); + TL_IS_735 = Str__literal(U"⍼"); + TL_IS_736 = Str__literal(U"ą"); + TL_IS_737 = Str__literal(U"𝕒"); + TL_IS_738 = Str__literal(U"≈"); + TL_IS_739 = Str__literal(U"⩰"); + TL_IS_740 = Str__literal(U"⩯"); + TL_IS_741 = Str__literal(U"≊"); + TL_IS_742 = Str__literal(U"≋"); + TL_IS_743 = Str__literal(U"'"); + TL_IS_744 = Str__literal(U"≈"); + TL_IS_745 = Str__literal(U"≊"); + TL_IS_746 = Str__literal(U"å"); + TL_IS_747 = Str__literal(U"å"); + TL_IS_748 = Str__literal(U"𝒶"); + TL_IS_749 = Str__literal(U"*"); + TL_IS_750 = Str__literal(U"≈"); + TL_IS_751 = Str__literal(U"≍"); + TL_IS_752 = Str__literal(U"ã"); + TL_IS_753 = Str__literal(U"ã"); + TL_IS_754 = Str__literal(U"ä"); + TL_IS_755 = Str__literal(U"ä"); + TL_IS_756 = Str__literal(U"∳"); + TL_IS_757 = Str__literal(U"⨑"); + TL_IS_758 = Str__literal(U"⫭"); + TL_IS_759 = Str__literal(U"≌"); + TL_IS_760 = Str__literal(U"϶"); + TL_IS_761 = Str__literal(U"‵"); + TL_IS_762 = Str__literal(U"∽"); + TL_IS_763 = Str__literal(U"⋍"); + TL_IS_764 = Str__literal(U"⊽"); + TL_IS_765 = Str__literal(U"⌅"); + TL_IS_766 = Str__literal(U"⌅"); + TL_IS_767 = Str__literal(U"⎵"); + TL_IS_768 = Str__literal(U"⎶"); + TL_IS_769 = Str__literal(U"≌"); + TL_IS_770 = Str__literal(U"б"); + TL_IS_771 = Str__literal(U"„"); + TL_IS_772 = Str__literal(U"∵"); + TL_IS_773 = Str__literal(U"∵"); + TL_IS_774 = Str__literal(U"⦰"); + TL_IS_775 = Str__literal(U"϶"); + TL_IS_776 = Str__literal(U"ℬ"); + TL_IS_777 = Str__literal(U"β"); + TL_IS_778 = Str__literal(U"ℶ"); + TL_IS_779 = Str__literal(U"≬"); + TL_IS_780 = Str__literal(U"𝔟"); + TL_IS_781 = Str__literal(U"⋂"); + TL_IS_782 = Str__literal(U"◯"); + TL_IS_783 = Str__literal(U"⋃"); + TL_IS_784 = Str__literal(U"⨀"); + TL_IS_785 = Str__literal(U"⨁"); + TL_IS_786 = Str__literal(U"⨂"); + TL_IS_787 = Str__literal(U"⨆"); + TL_IS_788 = Str__literal(U"★"); + TL_IS_789 = Str__literal(U"▽"); + TL_IS_790 = Str__literal(U"△"); + TL_IS_791 = Str__literal(U"⨄"); + TL_IS_792 = Str__literal(U"⋁"); + TL_IS_793 = Str__literal(U"⋀"); + TL_IS_794 = Str__literal(U"⤍"); + TL_IS_795 = Str__literal(U"⧫"); + TL_IS_796 = Str__literal(U"▪"); + TL_IS_797 = Str__literal(U"▴"); + TL_IS_798 = Str__literal(U"▾"); + TL_IS_799 = Str__literal(U"◂"); + TL_IS_800 = Str__literal(U"▸"); + TL_IS_801 = Str__literal(U"␣"); + TL_IS_802 = Str__literal(U"▒"); + TL_IS_803 = Str__literal(U"░"); + TL_IS_804 = Str__literal(U"▓"); + TL_IS_805 = Str__literal(U"█"); + TL_IS_806 = Str__literal(U"=⃥"); + TL_IS_807 = Str__literal(U"≡⃥"); + TL_IS_808 = Str__literal(U"⌐"); + TL_IS_809 = Str__literal(U"𝕓"); + TL_IS_810 = Str__literal(U"⊥"); + TL_IS_811 = Str__literal(U"⊥"); + TL_IS_812 = Str__literal(U"⋈"); + TL_IS_813 = Str__literal(U"╗"); + TL_IS_814 = Str__literal(U"╔"); + TL_IS_815 = Str__literal(U"╖"); + TL_IS_816 = Str__literal(U"╓"); + TL_IS_817 = Str__literal(U"═"); + TL_IS_818 = Str__literal(U"╦"); + TL_IS_819 = Str__literal(U"╩"); + TL_IS_820 = Str__literal(U"╤"); + TL_IS_821 = Str__literal(U"╧"); + TL_IS_822 = Str__literal(U"╝"); + TL_IS_823 = Str__literal(U"╚"); + TL_IS_824 = Str__literal(U"╜"); + TL_IS_825 = Str__literal(U"╙"); + TL_IS_826 = Str__literal(U"║"); + TL_IS_827 = Str__literal(U"╬"); + TL_IS_828 = Str__literal(U"╣"); + TL_IS_829 = Str__literal(U"╠"); + TL_IS_830 = Str__literal(U"╫"); + TL_IS_831 = Str__literal(U"╢"); + TL_IS_832 = Str__literal(U"╟"); + TL_IS_833 = Str__literal(U"⧉"); + TL_IS_834 = Str__literal(U"╕"); + TL_IS_835 = Str__literal(U"╒"); + TL_IS_836 = Str__literal(U"┐"); + TL_IS_837 = Str__literal(U"┌"); + TL_IS_838 = Str__literal(U"─"); + TL_IS_839 = Str__literal(U"╥"); + TL_IS_840 = Str__literal(U"╨"); + TL_IS_841 = Str__literal(U"┬"); + TL_IS_842 = Str__literal(U"┴"); + TL_IS_843 = Str__literal(U"⊟"); + TL_IS_844 = Str__literal(U"⊞"); + TL_IS_845 = Str__literal(U"⊠"); + TL_IS_846 = Str__literal(U"╛"); + TL_IS_847 = Str__literal(U"╘"); + TL_IS_848 = Str__literal(U"┘"); + TL_IS_849 = Str__literal(U"└"); + TL_IS_850 = Str__literal(U"│"); + TL_IS_851 = Str__literal(U"╪"); + TL_IS_852 = Str__literal(U"╡"); + TL_IS_853 = Str__literal(U"╞"); + TL_IS_854 = Str__literal(U"┼"); + TL_IS_855 = Str__literal(U"┤"); + TL_IS_856 = Str__literal(U"├"); + TL_IS_857 = Str__literal(U"‵"); + TL_IS_858 = Str__literal(U"˘"); + TL_IS_859 = Str__literal(U"¦"); + TL_IS_860 = Str__literal(U"¦"); + TL_IS_861 = Str__literal(U"𝒷"); + TL_IS_862 = Str__literal(U"⁏"); + TL_IS_863 = Str__literal(U"∽"); + TL_IS_864 = Str__literal(U"⋍"); + TL_IS_865 = Str__literal(U"\"); + TL_IS_866 = Str__literal(U"⧅"); + TL_IS_867 = Str__literal(U"⟈"); + TL_IS_868 = Str__literal(U"•"); + TL_IS_869 = Str__literal(U"•"); + TL_IS_870 = Str__literal(U"≎"); + TL_IS_871 = Str__literal(U"⪮"); + TL_IS_872 = Str__literal(U"≏"); + TL_IS_873 = Str__literal(U"≏"); + TL_IS_874 = Str__literal(U"ć"); + TL_IS_875 = Str__literal(U"∩"); + TL_IS_876 = Str__literal(U"⩄"); + TL_IS_877 = Str__literal(U"⩉"); + TL_IS_878 = Str__literal(U"⩋"); + TL_IS_879 = Str__literal(U"⩇"); + TL_IS_880 = Str__literal(U"⩀"); + TL_IS_881 = Str__literal(U"∩︀"); + TL_IS_882 = Str__literal(U"⁁"); + TL_IS_883 = Str__literal(U"ˇ"); + TL_IS_884 = Str__literal(U"⩍"); + TL_IS_885 = Str__literal(U"č"); + TL_IS_886 = Str__literal(U"ç"); + TL_IS_887 = Str__literal(U"ç"); + TL_IS_888 = Str__literal(U"ĉ"); + TL_IS_889 = Str__literal(U"⩌"); + TL_IS_890 = Str__literal(U"⩐"); + TL_IS_891 = Str__literal(U"ċ"); + TL_IS_892 = Str__literal(U"¸"); + TL_IS_893 = Str__literal(U"¸"); + TL_IS_894 = Str__literal(U"⦲"); + TL_IS_895 = Str__literal(U"¢"); + TL_IS_896 = Str__literal(U"¢"); + TL_IS_897 = Str__literal(U"·"); + TL_IS_898 = Str__literal(U"𝔠"); + TL_IS_899 = Str__literal(U"ч"); + TL_IS_900 = Str__literal(U"✓"); + TL_IS_901 = Str__literal(U"✓"); + TL_IS_902 = Str__literal(U"χ"); + TL_IS_903 = Str__literal(U"○"); + TL_IS_904 = Str__literal(U"⧃"); + TL_IS_905 = Str__literal(U"ˆ"); + TL_IS_906 = Str__literal(U"≗"); + TL_IS_907 = Str__literal(U"↺"); + TL_IS_908 = Str__literal(U"↻"); + TL_IS_909 = Str__literal(U"®"); + TL_IS_910 = Str__literal(U"Ⓢ"); + TL_IS_911 = Str__literal(U"⊛"); + TL_IS_912 = Str__literal(U"⊚"); + TL_IS_913 = Str__literal(U"⊝"); + TL_IS_914 = Str__literal(U"≗"); + TL_IS_915 = Str__literal(U"⨐"); + TL_IS_916 = Str__literal(U"⫯"); + TL_IS_917 = Str__literal(U"⧂"); + TL_IS_918 = Str__literal(U"♣"); + TL_IS_919 = Str__literal(U"♣"); + TL_IS_920 = Str__literal(U":"); + TL_IS_921 = Str__literal(U"≔"); + TL_IS_922 = Str__literal(U"≔"); + TL_IS_923 = Str__literal(U","); + TL_IS_924 = Str__literal(U"@"); + TL_IS_925 = Str__literal(U"∁"); + TL_IS_926 = Str__literal(U"∘"); + TL_IS_927 = Str__literal(U"∁"); + TL_IS_928 = Str__literal(U"ℂ"); + TL_IS_929 = Str__literal(U"≅"); + TL_IS_930 = Str__literal(U"⩭"); + TL_IS_931 = Str__literal(U"∮"); + TL_IS_932 = Str__literal(U"𝕔"); + TL_IS_933 = Str__literal(U"∐"); + TL_IS_934 = Str__literal(U"©"); + TL_IS_935 = Str__literal(U"©"); + TL_IS_936 = Str__literal(U"℗"); + TL_IS_937 = Str__literal(U"↵"); + TL_IS_938 = Str__literal(U"✗"); + TL_IS_939 = Str__literal(U"𝒸"); + TL_IS_940 = Str__literal(U"⫏"); + TL_IS_941 = Str__literal(U"⫑"); + TL_IS_942 = Str__literal(U"⫐"); + TL_IS_943 = Str__literal(U"⫒"); + TL_IS_944 = Str__literal(U"⋯"); + TL_IS_945 = Str__literal(U"⤸"); + TL_IS_946 = Str__literal(U"⤵"); + TL_IS_947 = Str__literal(U"⋞"); + TL_IS_948 = Str__literal(U"⋟"); + TL_IS_949 = Str__literal(U"↶"); + TL_IS_950 = Str__literal(U"⤽"); + TL_IS_951 = Str__literal(U"∪"); + TL_IS_952 = Str__literal(U"⩈"); + TL_IS_953 = Str__literal(U"⩆"); + TL_IS_954 = Str__literal(U"⩊"); + TL_IS_955 = Str__literal(U"⊍"); + TL_IS_956 = Str__literal(U"⩅"); + TL_IS_957 = Str__literal(U"∪︀"); + TL_IS_958 = Str__literal(U"↷"); + TL_IS_959 = Str__literal(U"⤼"); + TL_IS_960 = Str__literal(U"⋞"); + TL_IS_961 = Str__literal(U"⋟"); + TL_IS_962 = Str__literal(U"⋎"); + TL_IS_963 = Str__literal(U"⋏"); + TL_IS_964 = Str__literal(U"¤"); + TL_IS_965 = Str__literal(U"¤"); + TL_IS_966 = Str__literal(U"↶"); + TL_IS_967 = Str__literal(U"↷"); + TL_IS_968 = Str__literal(U"⋎"); + TL_IS_969 = Str__literal(U"⋏"); + TL_IS_970 = Str__literal(U"∲"); + TL_IS_971 = Str__literal(U"∱"); + TL_IS_972 = Str__literal(U"⌭"); + TL_IS_973 = Str__literal(U"⇓"); + TL_IS_974 = Str__literal(U"⥥"); + TL_IS_975 = Str__literal(U"†"); + TL_IS_976 = Str__literal(U"ℸ"); + TL_IS_977 = Str__literal(U"↓"); + TL_IS_978 = Str__literal(U"‐"); + TL_IS_979 = Str__literal(U"⊣"); + TL_IS_980 = Str__literal(U"⤏"); + TL_IS_981 = Str__literal(U"˝"); + TL_IS_982 = Str__literal(U"ď"); + TL_IS_983 = Str__literal(U"д"); + TL_IS_984 = Str__literal(U"ⅆ"); + TL_IS_985 = Str__literal(U"‡"); + TL_IS_986 = Str__literal(U"⇊"); + TL_IS_987 = Str__literal(U"⩷"); + TL_IS_988 = Str__literal(U"°"); + TL_IS_989 = Str__literal(U"°"); + TL_IS_990 = Str__literal(U"δ"); + TL_IS_991 = Str__literal(U"⦱"); + TL_IS_992 = Str__literal(U"⥿"); + TL_IS_993 = Str__literal(U"𝔡"); + TL_IS_994 = Str__literal(U"⇃"); + TL_IS_995 = Str__literal(U"⇂"); + TL_IS_996 = Str__literal(U"⋄"); + TL_IS_997 = Str__literal(U"⋄"); + TL_IS_998 = Str__literal(U"♦"); + TL_IS_999 = Str__literal(U"♦"); + TL_IS_1000 = Str__literal(U"¨"); + TL_IS_1001 = Str__literal(U"ϝ"); + TL_IS_1002 = Str__literal(U"⋲"); + TL_IS_1003 = Str__literal(U"÷"); + TL_IS_1004 = Str__literal(U"÷"); + TL_IS_1005 = Str__literal(U"÷"); + TL_IS_1006 = Str__literal(U"⋇"); + TL_IS_1007 = Str__literal(U"⋇"); + TL_IS_1008 = Str__literal(U"ђ"); + TL_IS_1009 = Str__literal(U"⌞"); + TL_IS_1010 = Str__literal(U"⌍"); + TL_IS_1011 = Str__literal(U"$"); + TL_IS_1012 = Str__literal(U"𝕕"); + TL_IS_1013 = Str__literal(U"˙"); + TL_IS_1014 = Str__literal(U"≐"); + TL_IS_1015 = Str__literal(U"≑"); + TL_IS_1016 = Str__literal(U"∸"); + TL_IS_1017 = Str__literal(U"∔"); + TL_IS_1018 = Str__literal(U"⊡"); + TL_IS_1019 = Str__literal(U"⌆"); + TL_IS_1020 = Str__literal(U"↓"); + TL_IS_1021 = Str__literal(U"⇊"); + TL_IS_1022 = Str__literal(U"⇃"); + TL_IS_1023 = Str__literal(U"⇂"); + TL_IS_1024 = Str__literal(U"⤐"); + TL_IS_1025 = Str__literal(U"⌟"); + TL_IS_1026 = Str__literal(U"⌌"); + TL_IS_1027 = Str__literal(U"𝒹"); + TL_IS_1028 = Str__literal(U"ѕ"); + TL_IS_1029 = Str__literal(U"⧶"); + TL_IS_1030 = Str__literal(U"đ"); + TL_IS_1031 = Str__literal(U"⋱"); + TL_IS_1032 = Str__literal(U"▿"); + TL_IS_1033 = Str__literal(U"▾"); + TL_IS_1034 = Str__literal(U"⇵"); + TL_IS_1035 = Str__literal(U"⥯"); + TL_IS_1036 = Str__literal(U"⦦"); + TL_IS_1037 = Str__literal(U"џ"); + TL_IS_1038 = Str__literal(U"⟿"); + TL_IS_1039 = Str__literal(U"⩷"); + TL_IS_1040 = Str__literal(U"≑"); + TL_IS_1041 = Str__literal(U"é"); + TL_IS_1042 = Str__literal(U"é"); + TL_IS_1043 = Str__literal(U"⩮"); + TL_IS_1044 = Str__literal(U"ě"); + TL_IS_1045 = Str__literal(U"≖"); + TL_IS_1046 = Str__literal(U"ê"); + TL_IS_1047 = Str__literal(U"ê"); + TL_IS_1048 = Str__literal(U"≕"); + TL_IS_1049 = Str__literal(U"э"); + TL_IS_1050 = Str__literal(U"ė"); + TL_IS_1051 = Str__literal(U"ⅇ"); + TL_IS_1052 = Str__literal(U"≒"); + TL_IS_1053 = Str__literal(U"𝔢"); + TL_IS_1054 = Str__literal(U"⪚"); + TL_IS_1055 = Str__literal(U"è"); + TL_IS_1056 = Str__literal(U"è"); + TL_IS_1057 = Str__literal(U"⪖"); + TL_IS_1058 = Str__literal(U"⪘"); + TL_IS_1059 = Str__literal(U"⪙"); + TL_IS_1060 = Str__literal(U"⏧"); + TL_IS_1061 = Str__literal(U"ℓ"); + TL_IS_1062 = Str__literal(U"⪕"); + TL_IS_1063 = Str__literal(U"⪗"); + TL_IS_1064 = Str__literal(U"ē"); + TL_IS_1065 = Str__literal(U"∅"); + TL_IS_1066 = Str__literal(U"∅"); + TL_IS_1067 = Str__literal(U"∅"); + TL_IS_1068 = Str__literal(U" "); + TL_IS_1069 = Str__literal(U" "); + TL_IS_1070 = Str__literal(U" "); + TL_IS_1071 = Str__literal(U"ŋ"); + TL_IS_1072 = Str__literal(U" "); + TL_IS_1073 = Str__literal(U"ę"); + TL_IS_1074 = Str__literal(U"𝕖"); + TL_IS_1075 = Str__literal(U"⋕"); + TL_IS_1076 = Str__literal(U"⧣"); + TL_IS_1077 = Str__literal(U"⩱"); + TL_IS_1078 = Str__literal(U"ε"); + TL_IS_1079 = Str__literal(U"ε"); + TL_IS_1080 = Str__literal(U"ϵ"); + TL_IS_1081 = Str__literal(U"≖"); + TL_IS_1082 = Str__literal(U"≕"); + TL_IS_1083 = Str__literal(U"≂"); + TL_IS_1084 = Str__literal(U"⪖"); + TL_IS_1085 = Str__literal(U"⪕"); + TL_IS_1086 = Str__literal(U"="); + TL_IS_1087 = Str__literal(U"≟"); + TL_IS_1088 = Str__literal(U"≡"); + TL_IS_1089 = Str__literal(U"⩸"); + TL_IS_1090 = Str__literal(U"⧥"); + TL_IS_1091 = Str__literal(U"≓"); + TL_IS_1092 = Str__literal(U"⥱"); + TL_IS_1093 = Str__literal(U"ℯ"); + TL_IS_1094 = Str__literal(U"≐"); + TL_IS_1095 = Str__literal(U"≂"); + TL_IS_1096 = Str__literal(U"η"); + TL_IS_1097 = Str__literal(U"ð"); + TL_IS_1098 = Str__literal(U"ð"); + TL_IS_1099 = Str__literal(U"ë"); + TL_IS_1100 = Str__literal(U"ë"); + TL_IS_1101 = Str__literal(U"€"); + TL_IS_1102 = Str__literal(U"!"); + TL_IS_1103 = Str__literal(U"∃"); + TL_IS_1104 = Str__literal(U"ℰ"); + TL_IS_1105 = Str__literal(U"ⅇ"); + TL_IS_1106 = Str__literal(U"≒"); + TL_IS_1107 = Str__literal(U"ф"); + TL_IS_1108 = Str__literal(U"♀"); + TL_IS_1109 = Str__literal(U"ffi"); + TL_IS_1110 = Str__literal(U"ff"); + TL_IS_1111 = Str__literal(U"ffl"); + TL_IS_1112 = Str__literal(U"𝔣"); + TL_IS_1113 = Str__literal(U"fi"); + TL_IS_1114 = Str__literal(U"fj"); + TL_IS_1115 = Str__literal(U"♭"); + TL_IS_1116 = Str__literal(U"fl"); + TL_IS_1117 = Str__literal(U"▱"); + TL_IS_1118 = Str__literal(U"ƒ"); + TL_IS_1119 = Str__literal(U"𝕗"); + TL_IS_1120 = Str__literal(U"∀"); + TL_IS_1121 = Str__literal(U"⋔"); + TL_IS_1122 = Str__literal(U"⫙"); + TL_IS_1123 = Str__literal(U"⨍"); + TL_IS_1124 = Str__literal(U"½"); + TL_IS_1125 = Str__literal(U"½"); + TL_IS_1126 = Str__literal(U"⅓"); + TL_IS_1127 = Str__literal(U"¼"); + TL_IS_1128 = Str__literal(U"¼"); + TL_IS_1129 = Str__literal(U"⅕"); + TL_IS_1130 = Str__literal(U"⅙"); + TL_IS_1131 = Str__literal(U"⅛"); + TL_IS_1132 = Str__literal(U"⅔"); + TL_IS_1133 = Str__literal(U"⅖"); + TL_IS_1134 = Str__literal(U"¾"); + TL_IS_1135 = Str__literal(U"¾"); + TL_IS_1136 = Str__literal(U"⅗"); + TL_IS_1137 = Str__literal(U"⅜"); + TL_IS_1138 = Str__literal(U"⅘"); + TL_IS_1139 = Str__literal(U"⅚"); + TL_IS_1140 = Str__literal(U"⅝"); + TL_IS_1141 = Str__literal(U"⅞"); + TL_IS_1142 = Str__literal(U"⁄"); + TL_IS_1143 = Str__literal(U"⌢"); + TL_IS_1144 = Str__literal(U"𝒻"); + TL_IS_1145 = Str__literal(U"≧"); + TL_IS_1146 = Str__literal(U"⪌"); + TL_IS_1147 = Str__literal(U"ǵ"); + TL_IS_1148 = Str__literal(U"γ"); + TL_IS_1149 = Str__literal(U"ϝ"); + TL_IS_1150 = Str__literal(U"⪆"); + TL_IS_1151 = Str__literal(U"ğ"); + TL_IS_1152 = Str__literal(U"ĝ"); + TL_IS_1153 = Str__literal(U"г"); + TL_IS_1154 = Str__literal(U"ġ"); + TL_IS_1155 = Str__literal(U"≥"); + TL_IS_1156 = Str__literal(U"⋛"); + TL_IS_1157 = Str__literal(U"≥"); + TL_IS_1158 = Str__literal(U"≧"); + TL_IS_1159 = Str__literal(U"⩾"); + TL_IS_1160 = Str__literal(U"⩾"); + TL_IS_1161 = Str__literal(U"⪩"); + TL_IS_1162 = Str__literal(U"⪀"); + TL_IS_1163 = Str__literal(U"⪂"); + TL_IS_1164 = Str__literal(U"⪄"); + TL_IS_1165 = Str__literal(U"⋛︀"); + TL_IS_1166 = Str__literal(U"⪔"); + TL_IS_1167 = Str__literal(U"𝔤"); + TL_IS_1168 = Str__literal(U"≫"); + TL_IS_1169 = Str__literal(U"⋙"); + TL_IS_1170 = Str__literal(U"ℷ"); + TL_IS_1171 = Str__literal(U"ѓ"); + TL_IS_1172 = Str__literal(U"≷"); + TL_IS_1173 = Str__literal(U"⪒"); + TL_IS_1174 = Str__literal(U"⪥"); + TL_IS_1175 = Str__literal(U"⪤"); + TL_IS_1176 = Str__literal(U"≩"); + TL_IS_1177 = Str__literal(U"⪊"); + TL_IS_1178 = Str__literal(U"⪊"); + TL_IS_1179 = Str__literal(U"⪈"); + TL_IS_1180 = Str__literal(U"⪈"); + TL_IS_1181 = Str__literal(U"≩"); + TL_IS_1182 = Str__literal(U"⋧"); + TL_IS_1183 = Str__literal(U"𝕘"); + TL_IS_1184 = Str__literal(U"`"); + TL_IS_1185 = Str__literal(U"ℊ"); + TL_IS_1186 = Str__literal(U"≳"); + TL_IS_1187 = Str__literal(U"⪎"); + TL_IS_1188 = Str__literal(U"⪐"); + TL_IS_1189 = Str__literal(U">"); + TL_IS_1190 = Str__literal(U">"); + TL_IS_1191 = Str__literal(U"⪧"); + TL_IS_1192 = Str__literal(U"⩺"); + TL_IS_1193 = Str__literal(U"⋗"); + TL_IS_1194 = Str__literal(U"⦕"); + TL_IS_1195 = Str__literal(U"⩼"); + TL_IS_1196 = Str__literal(U"⪆"); + TL_IS_1197 = Str__literal(U"⥸"); + TL_IS_1198 = Str__literal(U"⋗"); + TL_IS_1199 = Str__literal(U"⋛"); + TL_IS_1200 = Str__literal(U"⪌"); + TL_IS_1201 = Str__literal(U"≷"); + TL_IS_1202 = Str__literal(U"≳"); + TL_IS_1203 = Str__literal(U"≩︀"); + TL_IS_1204 = Str__literal(U"≩︀"); + TL_IS_1205 = Str__literal(U"⇔"); + TL_IS_1206 = Str__literal(U" "); + TL_IS_1207 = Str__literal(U"½"); + TL_IS_1208 = Str__literal(U"ℋ"); + TL_IS_1209 = Str__literal(U"ъ"); + TL_IS_1210 = Str__literal(U"↔"); + TL_IS_1211 = Str__literal(U"⥈"); + TL_IS_1212 = Str__literal(U"↭"); + TL_IS_1213 = Str__literal(U"ℏ"); + TL_IS_1214 = Str__literal(U"ĥ"); + TL_IS_1215 = Str__literal(U"♥"); + TL_IS_1216 = Str__literal(U"♥"); + TL_IS_1217 = Str__literal(U"…"); + TL_IS_1218 = Str__literal(U"⊹"); + TL_IS_1219 = Str__literal(U"𝔥"); + TL_IS_1220 = Str__literal(U"⤥"); + TL_IS_1221 = Str__literal(U"⤦"); + TL_IS_1222 = Str__literal(U"⇿"); + TL_IS_1223 = Str__literal(U"∻"); + TL_IS_1224 = Str__literal(U"↩"); + TL_IS_1225 = Str__literal(U"↪"); + TL_IS_1226 = Str__literal(U"𝕙"); + TL_IS_1227 = Str__literal(U"―"); + TL_IS_1228 = Str__literal(U"𝒽"); + TL_IS_1229 = Str__literal(U"ℏ"); + TL_IS_1230 = Str__literal(U"ħ"); + TL_IS_1231 = Str__literal(U"⁃"); + TL_IS_1232 = Str__literal(U"‐"); + TL_IS_1233 = Str__literal(U"í"); + TL_IS_1234 = Str__literal(U"í"); + TL_IS_1235 = Str__literal(U"⁣"); + TL_IS_1236 = Str__literal(U"î"); + TL_IS_1237 = Str__literal(U"î"); + TL_IS_1238 = Str__literal(U"и"); + TL_IS_1239 = Str__literal(U"е"); + TL_IS_1240 = Str__literal(U"¡"); + TL_IS_1241 = Str__literal(U"¡"); + TL_IS_1242 = Str__literal(U"⇔"); + TL_IS_1243 = Str__literal(U"𝔦"); + TL_IS_1244 = Str__literal(U"ì"); + TL_IS_1245 = Str__literal(U"ì"); + TL_IS_1246 = Str__literal(U"ⅈ"); + TL_IS_1247 = Str__literal(U"⨌"); + TL_IS_1248 = Str__literal(U"∭"); + TL_IS_1249 = Str__literal(U"⧜"); + TL_IS_1250 = Str__literal(U"℩"); + TL_IS_1251 = Str__literal(U"ij"); + TL_IS_1252 = Str__literal(U"ī"); + TL_IS_1253 = Str__literal(U"ℑ"); + TL_IS_1254 = Str__literal(U"ℐ"); + TL_IS_1255 = Str__literal(U"ℑ"); + TL_IS_1256 = Str__literal(U"ı"); + TL_IS_1257 = Str__literal(U"⊷"); + TL_IS_1258 = Str__literal(U"Ƶ"); + TL_IS_1259 = Str__literal(U"∈"); + TL_IS_1260 = Str__literal(U"℅"); + TL_IS_1261 = Str__literal(U"∞"); + TL_IS_1262 = Str__literal(U"⧝"); + TL_IS_1263 = Str__literal(U"ı"); + TL_IS_1264 = Str__literal(U"∫"); + TL_IS_1265 = Str__literal(U"⊺"); + TL_IS_1266 = Str__literal(U"ℤ"); + TL_IS_1267 = Str__literal(U"⊺"); + TL_IS_1268 = Str__literal(U"⨗"); + TL_IS_1269 = Str__literal(U"⨼"); + TL_IS_1270 = Str__literal(U"ё"); + TL_IS_1271 = Str__literal(U"į"); + TL_IS_1272 = Str__literal(U"𝕚"); + TL_IS_1273 = Str__literal(U"ι"); + TL_IS_1274 = Str__literal(U"⨼"); + TL_IS_1275 = Str__literal(U"¿"); + TL_IS_1276 = Str__literal(U"¿"); + TL_IS_1277 = Str__literal(U"𝒾"); + TL_IS_1278 = Str__literal(U"∈"); + TL_IS_1279 = Str__literal(U"⋹"); + TL_IS_1280 = Str__literal(U"⋵"); + TL_IS_1281 = Str__literal(U"⋴"); + TL_IS_1282 = Str__literal(U"⋳"); + TL_IS_1283 = Str__literal(U"∈"); + TL_IS_1284 = Str__literal(U"⁢"); + TL_IS_1285 = Str__literal(U"ĩ"); + TL_IS_1286 = Str__literal(U"і"); + TL_IS_1287 = Str__literal(U"ï"); + TL_IS_1288 = Str__literal(U"ï"); + TL_IS_1289 = Str__literal(U"ĵ"); + TL_IS_1290 = Str__literal(U"й"); + TL_IS_1291 = Str__literal(U"𝔧"); + TL_IS_1292 = Str__literal(U"ȷ"); + TL_IS_1293 = Str__literal(U"𝕛"); + TL_IS_1294 = Str__literal(U"𝒿"); + TL_IS_1295 = Str__literal(U"ј"); + TL_IS_1296 = Str__literal(U"є"); + TL_IS_1297 = Str__literal(U"κ"); + TL_IS_1298 = Str__literal(U"ϰ"); + TL_IS_1299 = Str__literal(U"ķ"); + TL_IS_1300 = Str__literal(U"к"); + TL_IS_1301 = Str__literal(U"𝔨"); + TL_IS_1302 = Str__literal(U"ĸ"); + TL_IS_1303 = Str__literal(U"х"); + TL_IS_1304 = Str__literal(U"ќ"); + TL_IS_1305 = Str__literal(U"𝕜"); + TL_IS_1306 = Str__literal(U"𝓀"); + TL_IS_1307 = Str__literal(U"⇚"); + TL_IS_1308 = Str__literal(U"⇐"); + TL_IS_1309 = Str__literal(U"⤛"); + TL_IS_1310 = Str__literal(U"⤎"); + TL_IS_1311 = Str__literal(U"≦"); + TL_IS_1312 = Str__literal(U"⪋"); + TL_IS_1313 = Str__literal(U"⥢"); + TL_IS_1314 = Str__literal(U"ĺ"); + TL_IS_1315 = Str__literal(U"⦴"); + TL_IS_1316 = Str__literal(U"ℒ"); + TL_IS_1317 = Str__literal(U"λ"); + TL_IS_1318 = Str__literal(U"⟨"); + TL_IS_1319 = Str__literal(U"⦑"); + TL_IS_1320 = Str__literal(U"⟨"); + TL_IS_1321 = Str__literal(U"⪅"); + TL_IS_1322 = Str__literal(U"«"); + TL_IS_1323 = Str__literal(U"«"); + TL_IS_1324 = Str__literal(U"←"); + TL_IS_1325 = Str__literal(U"⇤"); + TL_IS_1326 = Str__literal(U"⤟"); + TL_IS_1327 = Str__literal(U"⤝"); + TL_IS_1328 = Str__literal(U"↩"); + TL_IS_1329 = Str__literal(U"↫"); + TL_IS_1330 = Str__literal(U"⤹"); + TL_IS_1331 = Str__literal(U"⥳"); + TL_IS_1332 = Str__literal(U"↢"); + TL_IS_1333 = Str__literal(U"⪫"); + TL_IS_1334 = Str__literal(U"⤙"); + TL_IS_1335 = Str__literal(U"⪭"); + TL_IS_1336 = Str__literal(U"⪭︀"); + TL_IS_1337 = Str__literal(U"⤌"); + TL_IS_1338 = Str__literal(U"❲"); + TL_IS_1339 = Str__literal(U"{"); + TL_IS_1340 = Str__literal(U"["); + TL_IS_1341 = Str__literal(U"⦋"); + TL_IS_1342 = Str__literal(U"⦏"); + TL_IS_1343 = Str__literal(U"⦍"); + TL_IS_1344 = Str__literal(U"ľ"); + TL_IS_1345 = Str__literal(U"ļ"); + TL_IS_1346 = Str__literal(U"⌈"); + TL_IS_1347 = Str__literal(U"{"); + TL_IS_1348 = Str__literal(U"л"); + TL_IS_1349 = Str__literal(U"⤶"); + TL_IS_1350 = Str__literal(U"“"); + TL_IS_1351 = Str__literal(U"„"); + TL_IS_1352 = Str__literal(U"⥧"); + TL_IS_1353 = Str__literal(U"⥋"); + TL_IS_1354 = Str__literal(U"↲"); + TL_IS_1355 = Str__literal(U"≤"); + TL_IS_1356 = Str__literal(U"←"); + TL_IS_1357 = Str__literal(U"↢"); + TL_IS_1358 = Str__literal(U"↽"); + TL_IS_1359 = Str__literal(U"↼"); + TL_IS_1360 = Str__literal(U"⇇"); + TL_IS_1361 = Str__literal(U"↔"); + TL_IS_1362 = Str__literal(U"⇆"); + TL_IS_1363 = Str__literal(U"⇋"); + TL_IS_1364 = Str__literal(U"↭"); + TL_IS_1365 = Str__literal(U"⋋"); + TL_IS_1366 = Str__literal(U"⋚"); + TL_IS_1367 = Str__literal(U"≤"); + TL_IS_1368 = Str__literal(U"≦"); + TL_IS_1369 = Str__literal(U"⩽"); + TL_IS_1370 = Str__literal(U"⩽"); + TL_IS_1371 = Str__literal(U"⪨"); + TL_IS_1372 = Str__literal(U"⩿"); + TL_IS_1373 = Str__literal(U"⪁"); + TL_IS_1374 = Str__literal(U"⪃"); + TL_IS_1375 = Str__literal(U"⋚︀"); + TL_IS_1376 = Str__literal(U"⪓"); + TL_IS_1377 = Str__literal(U"⪅"); + TL_IS_1378 = Str__literal(U"⋖"); + TL_IS_1379 = Str__literal(U"⋚"); + TL_IS_1380 = Str__literal(U"⪋"); + TL_IS_1381 = Str__literal(U"≶"); + TL_IS_1382 = Str__literal(U"≲"); + TL_IS_1383 = Str__literal(U"⥼"); + TL_IS_1384 = Str__literal(U"⌊"); + TL_IS_1385 = Str__literal(U"𝔩"); + TL_IS_1386 = Str__literal(U"≶"); + TL_IS_1387 = Str__literal(U"⪑"); + TL_IS_1388 = Str__literal(U"↽"); + TL_IS_1389 = Str__literal(U"↼"); + TL_IS_1390 = Str__literal(U"⥪"); + TL_IS_1391 = Str__literal(U"▄"); + TL_IS_1392 = Str__literal(U"љ"); + TL_IS_1393 = Str__literal(U"≪"); + TL_IS_1394 = Str__literal(U"⇇"); + TL_IS_1395 = Str__literal(U"⌞"); + TL_IS_1396 = Str__literal(U"⥫"); + TL_IS_1397 = Str__literal(U"◺"); + TL_IS_1398 = Str__literal(U"ŀ"); + TL_IS_1399 = Str__literal(U"⎰"); + TL_IS_1400 = Str__literal(U"⎰"); + TL_IS_1401 = Str__literal(U"≨"); + TL_IS_1402 = Str__literal(U"⪉"); + TL_IS_1403 = Str__literal(U"⪉"); + TL_IS_1404 = Str__literal(U"⪇"); + TL_IS_1405 = Str__literal(U"⪇"); + TL_IS_1406 = Str__literal(U"≨"); + TL_IS_1407 = Str__literal(U"⋦"); + TL_IS_1408 = Str__literal(U"⟬"); + TL_IS_1409 = Str__literal(U"⇽"); + TL_IS_1410 = Str__literal(U"⟦"); + TL_IS_1411 = Str__literal(U"⟵"); + TL_IS_1412 = Str__literal(U"⟷"); + TL_IS_1413 = Str__literal(U"⟼"); + TL_IS_1414 = Str__literal(U"⟶"); + TL_IS_1415 = Str__literal(U"↫"); + TL_IS_1416 = Str__literal(U"↬"); + TL_IS_1417 = Str__literal(U"⦅"); + TL_IS_1418 = Str__literal(U"𝕝"); + TL_IS_1419 = Str__literal(U"⨭"); + TL_IS_1420 = Str__literal(U"⨴"); + TL_IS_1421 = Str__literal(U"∗"); + TL_IS_1422 = Str__literal(U"_"); + TL_IS_1423 = Str__literal(U"◊"); + TL_IS_1424 = Str__literal(U"◊"); + TL_IS_1425 = Str__literal(U"⧫"); + TL_IS_1426 = Str__literal(U"("); + TL_IS_1427 = Str__literal(U"⦓"); + TL_IS_1428 = Str__literal(U"⇆"); + TL_IS_1429 = Str__literal(U"⌟"); + TL_IS_1430 = Str__literal(U"⇋"); + TL_IS_1431 = Str__literal(U"⥭"); + TL_IS_1432 = Str__literal(U"‎"); + TL_IS_1433 = Str__literal(U"⊿"); + TL_IS_1434 = Str__literal(U"‹"); + TL_IS_1435 = Str__literal(U"𝓁"); + TL_IS_1436 = Str__literal(U"↰"); + TL_IS_1437 = Str__literal(U"≲"); + TL_IS_1438 = Str__literal(U"⪍"); + TL_IS_1439 = Str__literal(U"⪏"); + TL_IS_1440 = Str__literal(U"["); + TL_IS_1441 = Str__literal(U"‘"); + TL_IS_1442 = Str__literal(U"‚"); + TL_IS_1443 = Str__literal(U"ł"); + TL_IS_1444 = Str__literal(U"<"); + TL_IS_1445 = Str__literal(U"<"); + TL_IS_1446 = Str__literal(U"⪦"); + TL_IS_1447 = Str__literal(U"⩹"); + TL_IS_1448 = Str__literal(U"⋖"); + TL_IS_1449 = Str__literal(U"⋋"); + TL_IS_1450 = Str__literal(U"⋉"); + TL_IS_1451 = Str__literal(U"⥶"); + TL_IS_1452 = Str__literal(U"⩻"); + TL_IS_1453 = Str__literal(U"⦖"); + TL_IS_1454 = Str__literal(U"◃"); + TL_IS_1455 = Str__literal(U"⊴"); + TL_IS_1456 = Str__literal(U"◂"); + TL_IS_1457 = Str__literal(U"⥊"); + TL_IS_1458 = Str__literal(U"⥦"); + TL_IS_1459 = Str__literal(U"≨︀"); + TL_IS_1460 = Str__literal(U"≨︀"); + TL_IS_1461 = Str__literal(U"∺"); + TL_IS_1462 = Str__literal(U"¯"); + TL_IS_1463 = Str__literal(U"¯"); + TL_IS_1464 = Str__literal(U"♂"); + TL_IS_1465 = Str__literal(U"✠"); + TL_IS_1466 = Str__literal(U"✠"); + TL_IS_1467 = Str__literal(U"↦"); + TL_IS_1468 = Str__literal(U"↦"); + TL_IS_1469 = Str__literal(U"↧"); + TL_IS_1470 = Str__literal(U"↤"); + TL_IS_1471 = Str__literal(U"↥"); + TL_IS_1472 = Str__literal(U"▮"); + TL_IS_1473 = Str__literal(U"⨩"); + TL_IS_1474 = Str__literal(U"м"); + TL_IS_1475 = Str__literal(U"—"); + TL_IS_1476 = Str__literal(U"∡"); + TL_IS_1477 = Str__literal(U"𝔪"); + TL_IS_1478 = Str__literal(U"℧"); + TL_IS_1479 = Str__literal(U"µ"); + TL_IS_1480 = Str__literal(U"µ"); + TL_IS_1481 = Str__literal(U"∣"); + TL_IS_1482 = Str__literal(U"*"); + TL_IS_1483 = Str__literal(U"⫰"); + TL_IS_1484 = Str__literal(U"·"); + TL_IS_1485 = Str__literal(U"·"); + TL_IS_1486 = Str__literal(U"−"); + TL_IS_1487 = Str__literal(U"⊟"); + TL_IS_1488 = Str__literal(U"∸"); + TL_IS_1489 = Str__literal(U"⨪"); + TL_IS_1490 = Str__literal(U"⫛"); + TL_IS_1491 = Str__literal(U"…"); + TL_IS_1492 = Str__literal(U"∓"); + TL_IS_1493 = Str__literal(U"⊧"); + TL_IS_1494 = Str__literal(U"𝕞"); + TL_IS_1495 = Str__literal(U"∓"); + TL_IS_1496 = Str__literal(U"𝓂"); + TL_IS_1497 = Str__literal(U"∾"); + TL_IS_1498 = Str__literal(U"μ"); + TL_IS_1499 = Str__literal(U"⊸"); + TL_IS_1500 = Str__literal(U"⊸"); + TL_IS_1501 = Str__literal(U"⋙̸"); + TL_IS_1502 = Str__literal(U"≫⃒"); + TL_IS_1503 = Str__literal(U"≫̸"); + TL_IS_1504 = Str__literal(U"⇍"); + TL_IS_1505 = Str__literal(U"⇎"); + TL_IS_1506 = Str__literal(U"⋘̸"); + TL_IS_1507 = Str__literal(U"≪⃒"); + TL_IS_1508 = Str__literal(U"≪̸"); + TL_IS_1509 = Str__literal(U"⇏"); + TL_IS_1510 = Str__literal(U"⊯"); + TL_IS_1511 = Str__literal(U"⊮"); + TL_IS_1512 = Str__literal(U"∇"); + TL_IS_1513 = Str__literal(U"ń"); + TL_IS_1514 = Str__literal(U"∠⃒"); + TL_IS_1515 = Str__literal(U"≉"); + TL_IS_1516 = Str__literal(U"⩰̸"); + TL_IS_1517 = Str__literal(U"≋̸"); + TL_IS_1518 = Str__literal(U"ʼn"); + TL_IS_1519 = Str__literal(U"≉"); + TL_IS_1520 = Str__literal(U"♮"); + TL_IS_1521 = Str__literal(U"♮"); + TL_IS_1522 = Str__literal(U"ℕ"); + TL_IS_1523 = Str__literal(U" "); + TL_IS_1524 = Str__literal(U" "); + TL_IS_1525 = Str__literal(U"≎̸"); + TL_IS_1526 = Str__literal(U"≏̸"); + TL_IS_1527 = Str__literal(U"⩃"); + TL_IS_1528 = Str__literal(U"ň"); + TL_IS_1529 = Str__literal(U"ņ"); + TL_IS_1530 = Str__literal(U"≇"); + TL_IS_1531 = Str__literal(U"⩭̸"); + TL_IS_1532 = Str__literal(U"⩂"); + TL_IS_1533 = Str__literal(U"н"); + TL_IS_1534 = Str__literal(U"–"); + TL_IS_1535 = Str__literal(U"≠"); + TL_IS_1536 = Str__literal(U"⇗"); + TL_IS_1537 = Str__literal(U"⤤"); + TL_IS_1538 = Str__literal(U"↗"); + TL_IS_1539 = Str__literal(U"↗"); + TL_IS_1540 = Str__literal(U"≐̸"); + TL_IS_1541 = Str__literal(U"≢"); + TL_IS_1542 = Str__literal(U"⤨"); + TL_IS_1543 = Str__literal(U"≂̸"); + TL_IS_1544 = Str__literal(U"∄"); + TL_IS_1545 = Str__literal(U"∄"); + TL_IS_1546 = Str__literal(U"𝔫"); + TL_IS_1547 = Str__literal(U"≧̸"); + TL_IS_1548 = Str__literal(U"≱"); + TL_IS_1549 = Str__literal(U"≱"); + TL_IS_1550 = Str__literal(U"≧̸"); + TL_IS_1551 = Str__literal(U"⩾̸"); + TL_IS_1552 = Str__literal(U"⩾̸"); + TL_IS_1553 = Str__literal(U"≵"); + TL_IS_1554 = Str__literal(U"≯"); + TL_IS_1555 = Str__literal(U"≯"); + TL_IS_1556 = Str__literal(U"⇎"); + TL_IS_1557 = Str__literal(U"↮"); + TL_IS_1558 = Str__literal(U"⫲"); + TL_IS_1559 = Str__literal(U"∋"); + TL_IS_1560 = Str__literal(U"⋼"); + TL_IS_1561 = Str__literal(U"⋺"); + TL_IS_1562 = Str__literal(U"∋"); + TL_IS_1563 = Str__literal(U"њ"); + TL_IS_1564 = Str__literal(U"⇍"); + TL_IS_1565 = Str__literal(U"≦̸"); + TL_IS_1566 = Str__literal(U"↚"); + TL_IS_1567 = Str__literal(U"‥"); + TL_IS_1568 = Str__literal(U"≰"); + TL_IS_1569 = Str__literal(U"↚"); + TL_IS_1570 = Str__literal(U"↮"); + TL_IS_1571 = Str__literal(U"≰"); + TL_IS_1572 = Str__literal(U"≦̸"); + TL_IS_1573 = Str__literal(U"⩽̸"); + TL_IS_1574 = Str__literal(U"⩽̸"); + TL_IS_1575 = Str__literal(U"≮"); + TL_IS_1576 = Str__literal(U"≴"); + TL_IS_1577 = Str__literal(U"≮"); + TL_IS_1578 = Str__literal(U"⋪"); + TL_IS_1579 = Str__literal(U"⋬"); + TL_IS_1580 = Str__literal(U"∤"); + TL_IS_1581 = Str__literal(U"𝕟"); + TL_IS_1582 = Str__literal(U"¬"); + TL_IS_1583 = Str__literal(U"¬"); + TL_IS_1584 = Str__literal(U"∉"); + TL_IS_1585 = Str__literal(U"⋹̸"); + TL_IS_1586 = Str__literal(U"⋵̸"); + TL_IS_1587 = Str__literal(U"∉"); + TL_IS_1588 = Str__literal(U"⋷"); + TL_IS_1589 = Str__literal(U"⋶"); + TL_IS_1590 = Str__literal(U"∌"); + TL_IS_1591 = Str__literal(U"∌"); + TL_IS_1592 = Str__literal(U"⋾"); + TL_IS_1593 = Str__literal(U"⋽"); + TL_IS_1594 = Str__literal(U"∦"); + TL_IS_1595 = Str__literal(U"∦"); + TL_IS_1596 = Str__literal(U"⫽⃥"); + TL_IS_1597 = Str__literal(U"∂̸"); + TL_IS_1598 = Str__literal(U"⨔"); + TL_IS_1599 = Str__literal(U"⊀"); + TL_IS_1600 = Str__literal(U"⋠"); + TL_IS_1601 = Str__literal(U"⪯̸"); + TL_IS_1602 = Str__literal(U"⊀"); + TL_IS_1603 = Str__literal(U"⪯̸"); + TL_IS_1604 = Str__literal(U"⇏"); + TL_IS_1605 = Str__literal(U"↛"); + TL_IS_1606 = Str__literal(U"⤳̸"); + TL_IS_1607 = Str__literal(U"↝̸"); + TL_IS_1608 = Str__literal(U"↛"); + TL_IS_1609 = Str__literal(U"⋫"); + TL_IS_1610 = Str__literal(U"⋭"); + TL_IS_1611 = Str__literal(U"⊁"); + TL_IS_1612 = Str__literal(U"⋡"); + TL_IS_1613 = Str__literal(U"⪰̸"); + TL_IS_1614 = Str__literal(U"𝓃"); + TL_IS_1615 = Str__literal(U"∤"); + TL_IS_1616 = Str__literal(U"∦"); + TL_IS_1617 = Str__literal(U"≁"); + TL_IS_1618 = Str__literal(U"≄"); + TL_IS_1619 = Str__literal(U"≄"); + TL_IS_1620 = Str__literal(U"∤"); + TL_IS_1621 = Str__literal(U"∦"); + TL_IS_1622 = Str__literal(U"⋢"); + TL_IS_1623 = Str__literal(U"⋣"); + TL_IS_1624 = Str__literal(U"⊄"); + TL_IS_1625 = Str__literal(U"⫅̸"); + TL_IS_1626 = Str__literal(U"⊈"); + TL_IS_1627 = Str__literal(U"⊂⃒"); + TL_IS_1628 = Str__literal(U"⊈"); + TL_IS_1629 = Str__literal(U"⫅̸"); + TL_IS_1630 = Str__literal(U"⊁"); + TL_IS_1631 = Str__literal(U"⪰̸"); + TL_IS_1632 = Str__literal(U"⊅"); + TL_IS_1633 = Str__literal(U"⫆̸"); + TL_IS_1634 = Str__literal(U"⊉"); + TL_IS_1635 = Str__literal(U"⊃⃒"); + TL_IS_1636 = Str__literal(U"⊉"); + TL_IS_1637 = Str__literal(U"⫆̸"); + TL_IS_1638 = Str__literal(U"≹"); + TL_IS_1639 = Str__literal(U"ñ"); + TL_IS_1640 = Str__literal(U"ñ"); + TL_IS_1641 = Str__literal(U"≸"); + TL_IS_1642 = Str__literal(U"⋪"); + TL_IS_1643 = Str__literal(U"⋬"); + TL_IS_1644 = Str__literal(U"⋫"); + TL_IS_1645 = Str__literal(U"⋭"); + TL_IS_1646 = Str__literal(U"ν"); + TL_IS_1647 = Str__literal(U"#"); + TL_IS_1648 = Str__literal(U"№"); + TL_IS_1649 = Str__literal(U" "); + TL_IS_1650 = Str__literal(U"⊭"); + TL_IS_1651 = Str__literal(U"⤄"); + TL_IS_1652 = Str__literal(U"≍⃒"); + TL_IS_1653 = Str__literal(U"⊬"); + TL_IS_1654 = Str__literal(U"≥⃒"); + TL_IS_1655 = Str__literal(U">⃒"); + TL_IS_1656 = Str__literal(U"⧞"); + TL_IS_1657 = Str__literal(U"⤂"); + TL_IS_1658 = Str__literal(U"≤⃒"); + TL_IS_1659 = Str__literal(U"<⃒"); + TL_IS_1660 = Str__literal(U"⊴⃒"); + TL_IS_1661 = Str__literal(U"⤃"); + TL_IS_1662 = Str__literal(U"⊵⃒"); + TL_IS_1663 = Str__literal(U"∼⃒"); + TL_IS_1664 = Str__literal(U"⇖"); + TL_IS_1665 = Str__literal(U"⤣"); + TL_IS_1666 = Str__literal(U"↖"); + TL_IS_1667 = Str__literal(U"↖"); + TL_IS_1668 = Str__literal(U"⤧"); + TL_IS_1669 = Str__literal(U"Ⓢ"); + TL_IS_1670 = Str__literal(U"ó"); + TL_IS_1671 = Str__literal(U"ó"); + TL_IS_1672 = Str__literal(U"⊛"); + TL_IS_1673 = Str__literal(U"⊚"); + TL_IS_1674 = Str__literal(U"ô"); + TL_IS_1675 = Str__literal(U"ô"); + TL_IS_1676 = Str__literal(U"о"); + TL_IS_1677 = Str__literal(U"⊝"); + TL_IS_1678 = Str__literal(U"ő"); + TL_IS_1679 = Str__literal(U"⨸"); + TL_IS_1680 = Str__literal(U"⊙"); + TL_IS_1681 = Str__literal(U"⦼"); + TL_IS_1682 = Str__literal(U"œ"); + TL_IS_1683 = Str__literal(U"⦿"); + TL_IS_1684 = Str__literal(U"𝔬"); + TL_IS_1685 = Str__literal(U"˛"); + TL_IS_1686 = Str__literal(U"ò"); + TL_IS_1687 = Str__literal(U"ò"); + TL_IS_1688 = Str__literal(U"⧁"); + TL_IS_1689 = Str__literal(U"⦵"); + TL_IS_1690 = Str__literal(U"Ω"); + TL_IS_1691 = Str__literal(U"∮"); + TL_IS_1692 = Str__literal(U"↺"); + TL_IS_1693 = Str__literal(U"⦾"); + TL_IS_1694 = Str__literal(U"⦻"); + TL_IS_1695 = Str__literal(U"‾"); + TL_IS_1696 = Str__literal(U"⧀"); + TL_IS_1697 = Str__literal(U"ō"); + TL_IS_1698 = Str__literal(U"ω"); + TL_IS_1699 = Str__literal(U"ο"); + TL_IS_1700 = Str__literal(U"⦶"); + TL_IS_1701 = Str__literal(U"⊖"); + TL_IS_1702 = Str__literal(U"𝕠"); + TL_IS_1703 = Str__literal(U"⦷"); + TL_IS_1704 = Str__literal(U"⦹"); + TL_IS_1705 = Str__literal(U"⊕"); + TL_IS_1706 = Str__literal(U"∨"); + TL_IS_1707 = Str__literal(U"↻"); + TL_IS_1708 = Str__literal(U"⩝"); + TL_IS_1709 = Str__literal(U"ℴ"); + TL_IS_1710 = Str__literal(U"ℴ"); + TL_IS_1711 = Str__literal(U"ª"); + TL_IS_1712 = Str__literal(U"ª"); + TL_IS_1713 = Str__literal(U"º"); + TL_IS_1714 = Str__literal(U"º"); + TL_IS_1715 = Str__literal(U"⊶"); + TL_IS_1716 = Str__literal(U"⩖"); + TL_IS_1717 = Str__literal(U"⩗"); + TL_IS_1718 = Str__literal(U"⩛"); + TL_IS_1719 = Str__literal(U"ℴ"); + TL_IS_1720 = Str__literal(U"ø"); + TL_IS_1721 = Str__literal(U"ø"); + TL_IS_1722 = Str__literal(U"⊘"); + TL_IS_1723 = Str__literal(U"õ"); + TL_IS_1724 = Str__literal(U"õ"); + TL_IS_1725 = Str__literal(U"⊗"); + TL_IS_1726 = Str__literal(U"⨶"); + TL_IS_1727 = Str__literal(U"ö"); + TL_IS_1728 = Str__literal(U"ö"); + TL_IS_1729 = Str__literal(U"⌽"); + TL_IS_1730 = Str__literal(U"∥"); + TL_IS_1731 = Str__literal(U"¶"); + TL_IS_1732 = Str__literal(U"¶"); + TL_IS_1733 = Str__literal(U"∥"); + TL_IS_1734 = Str__literal(U"⫳"); + TL_IS_1735 = Str__literal(U"⫽"); + TL_IS_1736 = Str__literal(U"∂"); + TL_IS_1737 = Str__literal(U"п"); + TL_IS_1738 = Str__literal(U"%"); + TL_IS_1739 = Str__literal(U"."); + TL_IS_1740 = Str__literal(U"‰"); + TL_IS_1741 = Str__literal(U"⊥"); + TL_IS_1742 = Str__literal(U"‱"); + TL_IS_1743 = Str__literal(U"𝔭"); + TL_IS_1744 = Str__literal(U"φ"); + TL_IS_1745 = Str__literal(U"ϕ"); + TL_IS_1746 = Str__literal(U"ℳ"); + TL_IS_1747 = Str__literal(U"☎"); + TL_IS_1748 = Str__literal(U"π"); + TL_IS_1749 = Str__literal(U"⋔"); + TL_IS_1750 = Str__literal(U"ϖ"); + TL_IS_1751 = Str__literal(U"ℏ"); + TL_IS_1752 = Str__literal(U"ℎ"); + TL_IS_1753 = Str__literal(U"ℏ"); + TL_IS_1754 = Str__literal(U"+"); + TL_IS_1755 = Str__literal(U"⨣"); + TL_IS_1756 = Str__literal(U"⊞"); + TL_IS_1757 = Str__literal(U"⨢"); + TL_IS_1758 = Str__literal(U"∔"); + TL_IS_1759 = Str__literal(U"⨥"); + TL_IS_1760 = Str__literal(U"⩲"); + TL_IS_1761 = Str__literal(U"±"); + TL_IS_1762 = Str__literal(U"±"); + TL_IS_1763 = Str__literal(U"⨦"); + TL_IS_1764 = Str__literal(U"⨧"); + TL_IS_1765 = Str__literal(U"±"); + TL_IS_1766 = Str__literal(U"⨕"); + TL_IS_1767 = Str__literal(U"𝕡"); + TL_IS_1768 = Str__literal(U"£"); + TL_IS_1769 = Str__literal(U"£"); + TL_IS_1770 = Str__literal(U"≺"); + TL_IS_1771 = Str__literal(U"⪳"); + TL_IS_1772 = Str__literal(U"⪷"); + TL_IS_1773 = Str__literal(U"≼"); + TL_IS_1774 = Str__literal(U"⪯"); + TL_IS_1775 = Str__literal(U"≺"); + TL_IS_1776 = Str__literal(U"⪷"); + TL_IS_1777 = Str__literal(U"≼"); + TL_IS_1778 = Str__literal(U"⪯"); + TL_IS_1779 = Str__literal(U"⪹"); + TL_IS_1780 = Str__literal(U"⪵"); + TL_IS_1781 = Str__literal(U"⋨"); + TL_IS_1782 = Str__literal(U"≾"); + TL_IS_1783 = Str__literal(U"′"); + TL_IS_1784 = Str__literal(U"ℙ"); + TL_IS_1785 = Str__literal(U"⪵"); + TL_IS_1786 = Str__literal(U"⪹"); + TL_IS_1787 = Str__literal(U"⋨"); + TL_IS_1788 = Str__literal(U"∏"); + TL_IS_1789 = Str__literal(U"⌮"); + TL_IS_1790 = Str__literal(U"⌒"); + TL_IS_1791 = Str__literal(U"⌓"); + TL_IS_1792 = Str__literal(U"∝"); + TL_IS_1793 = Str__literal(U"∝"); + TL_IS_1794 = Str__literal(U"≾"); + TL_IS_1795 = Str__literal(U"⊰"); + TL_IS_1796 = Str__literal(U"𝓅"); + TL_IS_1797 = Str__literal(U"ψ"); + TL_IS_1798 = Str__literal(U" "); + TL_IS_1799 = Str__literal(U"𝔮"); + TL_IS_1800 = Str__literal(U"⨌"); + TL_IS_1801 = Str__literal(U"𝕢"); + TL_IS_1802 = Str__literal(U"⁗"); + TL_IS_1803 = Str__literal(U"𝓆"); + TL_IS_1804 = Str__literal(U"ℍ"); + TL_IS_1805 = Str__literal(U"⨖"); + TL_IS_1806 = Str__literal(U"?"); + TL_IS_1807 = Str__literal(U"≟"); + TL_IS_1808 = Str__literal(U"""); + TL_IS_1809 = Str__literal(U"""); + TL_IS_1810 = Str__literal(U"⇛"); + TL_IS_1811 = Str__literal(U"⇒"); + TL_IS_1812 = Str__literal(U"⤜"); + TL_IS_1813 = Str__literal(U"⤏"); + TL_IS_1814 = Str__literal(U"⥤"); + TL_IS_1815 = Str__literal(U"∽̱"); + TL_IS_1816 = Str__literal(U"ŕ"); + TL_IS_1817 = Str__literal(U"√"); + TL_IS_1818 = Str__literal(U"⦳"); + TL_IS_1819 = Str__literal(U"⟩"); + TL_IS_1820 = Str__literal(U"⦒"); + TL_IS_1821 = Str__literal(U"⦥"); + TL_IS_1822 = Str__literal(U"⟩"); + TL_IS_1823 = Str__literal(U"»"); + TL_IS_1824 = Str__literal(U"»"); + TL_IS_1825 = Str__literal(U"→"); + TL_IS_1826 = Str__literal(U"⥵"); + TL_IS_1827 = Str__literal(U"⇥"); + TL_IS_1828 = Str__literal(U"⤠"); + TL_IS_1829 = Str__literal(U"⤳"); + TL_IS_1830 = Str__literal(U"⤞"); + TL_IS_1831 = Str__literal(U"↪"); + TL_IS_1832 = Str__literal(U"↬"); + TL_IS_1833 = Str__literal(U"⥅"); + TL_IS_1834 = Str__literal(U"⥴"); + TL_IS_1835 = Str__literal(U"↣"); + TL_IS_1836 = Str__literal(U"↝"); + TL_IS_1837 = Str__literal(U"⤚"); + TL_IS_1838 = Str__literal(U"∶"); + TL_IS_1839 = Str__literal(U"ℚ"); + TL_IS_1840 = Str__literal(U"⤍"); + TL_IS_1841 = Str__literal(U"❳"); + TL_IS_1842 = Str__literal(U"}"); + TL_IS_1843 = Str__literal(U"]"); + TL_IS_1844 = Str__literal(U"⦌"); + TL_IS_1845 = Str__literal(U"⦎"); + TL_IS_1846 = Str__literal(U"⦐"); + TL_IS_1847 = Str__literal(U"ř"); + TL_IS_1848 = Str__literal(U"ŗ"); + TL_IS_1849 = Str__literal(U"⌉"); + TL_IS_1850 = Str__literal(U"}"); + TL_IS_1851 = Str__literal(U"р"); + TL_IS_1852 = Str__literal(U"⤷"); + TL_IS_1853 = Str__literal(U"⥩"); + TL_IS_1854 = Str__literal(U"”"); + TL_IS_1855 = Str__literal(U"”"); + TL_IS_1856 = Str__literal(U"↳"); + TL_IS_1857 = Str__literal(U"ℜ"); + TL_IS_1858 = Str__literal(U"ℛ"); + TL_IS_1859 = Str__literal(U"ℜ"); + TL_IS_1860 = Str__literal(U"ℝ"); + TL_IS_1861 = Str__literal(U"▭"); + TL_IS_1862 = Str__literal(U"®"); + TL_IS_1863 = Str__literal(U"®"); + TL_IS_1864 = Str__literal(U"⥽"); + TL_IS_1865 = Str__literal(U"⌋"); + TL_IS_1866 = Str__literal(U"𝔯"); + TL_IS_1867 = Str__literal(U"⇁"); + TL_IS_1868 = Str__literal(U"⇀"); + TL_IS_1869 = Str__literal(U"⥬"); + TL_IS_1870 = Str__literal(U"ρ"); + TL_IS_1871 = Str__literal(U"ϱ"); + TL_IS_1872 = Str__literal(U"→"); + TL_IS_1873 = Str__literal(U"↣"); + TL_IS_1874 = Str__literal(U"⇁"); + TL_IS_1875 = Str__literal(U"⇀"); + TL_IS_1876 = Str__literal(U"⇄"); + TL_IS_1877 = Str__literal(U"⇌"); + TL_IS_1878 = Str__literal(U"⇉"); + TL_IS_1879 = Str__literal(U"↝"); + TL_IS_1880 = Str__literal(U"⋌"); + TL_IS_1881 = Str__literal(U"˚"); + TL_IS_1882 = Str__literal(U"≓"); + TL_IS_1883 = Str__literal(U"⇄"); + TL_IS_1884 = Str__literal(U"⇌"); + TL_IS_1885 = Str__literal(U"‏"); + TL_IS_1886 = Str__literal(U"⎱"); + TL_IS_1887 = Str__literal(U"⎱"); + TL_IS_1888 = Str__literal(U"⫮"); + TL_IS_1889 = Str__literal(U"⟭"); + TL_IS_1890 = Str__literal(U"⇾"); + TL_IS_1891 = Str__literal(U"⟧"); + TL_IS_1892 = Str__literal(U"⦆"); + TL_IS_1893 = Str__literal(U"𝕣"); + TL_IS_1894 = Str__literal(U"⨮"); + TL_IS_1895 = Str__literal(U"⨵"); + TL_IS_1896 = Str__literal(U")"); + TL_IS_1897 = Str__literal(U"⦔"); + TL_IS_1898 = Str__literal(U"⨒"); + TL_IS_1899 = Str__literal(U"⇉"); + TL_IS_1900 = Str__literal(U"›"); + TL_IS_1901 = Str__literal(U"𝓇"); + TL_IS_1902 = Str__literal(U"↱"); + TL_IS_1903 = Str__literal(U"]"); + TL_IS_1904 = Str__literal(U"’"); + TL_IS_1905 = Str__literal(U"’"); + TL_IS_1906 = Str__literal(U"⋌"); + TL_IS_1907 = Str__literal(U"⋊"); + TL_IS_1908 = Str__literal(U"▹"); + TL_IS_1909 = Str__literal(U"⊵"); + TL_IS_1910 = Str__literal(U"▸"); + TL_IS_1911 = Str__literal(U"⧎"); + TL_IS_1912 = Str__literal(U"⥨"); + TL_IS_1913 = Str__literal(U"℞"); + TL_IS_1914 = Str__literal(U"ś"); + TL_IS_1915 = Str__literal(U"‚"); + TL_IS_1916 = Str__literal(U"≻"); + TL_IS_1917 = Str__literal(U"⪴"); + TL_IS_1918 = Str__literal(U"⪸"); + TL_IS_1919 = Str__literal(U"š"); + TL_IS_1920 = Str__literal(U"≽"); + TL_IS_1921 = Str__literal(U"⪰"); + TL_IS_1922 = Str__literal(U"ş"); + TL_IS_1923 = Str__literal(U"ŝ"); + TL_IS_1924 = Str__literal(U"⪶"); + TL_IS_1925 = Str__literal(U"⪺"); + TL_IS_1926 = Str__literal(U"⋩"); + TL_IS_1927 = Str__literal(U"⨓"); + TL_IS_1928 = Str__literal(U"≿"); + TL_IS_1929 = Str__literal(U"с"); + TL_IS_1930 = Str__literal(U"⋅"); + TL_IS_1931 = Str__literal(U"⊡"); + TL_IS_1932 = Str__literal(U"⩦"); + TL_IS_1933 = Str__literal(U"⇘"); + TL_IS_1934 = Str__literal(U"⤥"); + TL_IS_1935 = Str__literal(U"↘"); + TL_IS_1936 = Str__literal(U"↘"); + TL_IS_1937 = Str__literal(U"§"); + TL_IS_1938 = Str__literal(U"§"); + TL_IS_1939 = Str__literal(U";"); + TL_IS_1940 = Str__literal(U"⤩"); + TL_IS_1941 = Str__literal(U"∖"); + TL_IS_1942 = Str__literal(U"∖"); + TL_IS_1943 = Str__literal(U"✶"); + TL_IS_1944 = Str__literal(U"𝔰"); + TL_IS_1945 = Str__literal(U"⌢"); + TL_IS_1946 = Str__literal(U"♯"); + TL_IS_1947 = Str__literal(U"щ"); + TL_IS_1948 = Str__literal(U"ш"); + TL_IS_1949 = Str__literal(U"∣"); + TL_IS_1950 = Str__literal(U"∥"); + TL_IS_1951 = Str__literal(U"­"); + TL_IS_1952 = Str__literal(U"­"); + TL_IS_1953 = Str__literal(U"σ"); + TL_IS_1954 = Str__literal(U"ς"); + TL_IS_1955 = Str__literal(U"ς"); + TL_IS_1956 = Str__literal(U"∼"); + TL_IS_1957 = Str__literal(U"⩪"); + TL_IS_1958 = Str__literal(U"≃"); + TL_IS_1959 = Str__literal(U"≃"); + TL_IS_1960 = Str__literal(U"⪞"); + TL_IS_1961 = Str__literal(U"⪠"); + TL_IS_1962 = Str__literal(U"⪝"); + TL_IS_1963 = Str__literal(U"⪟"); + TL_IS_1964 = Str__literal(U"≆"); + TL_IS_1965 = Str__literal(U"⨤"); + TL_IS_1966 = Str__literal(U"⥲"); + TL_IS_1967 = Str__literal(U"←"); + TL_IS_1968 = Str__literal(U"∖"); + TL_IS_1969 = Str__literal(U"⨳"); + TL_IS_1970 = Str__literal(U"⧤"); + TL_IS_1971 = Str__literal(U"∣"); + TL_IS_1972 = Str__literal(U"⌣"); + TL_IS_1973 = Str__literal(U"⪪"); + TL_IS_1974 = Str__literal(U"⪬"); + TL_IS_1975 = Str__literal(U"⪬︀"); + TL_IS_1976 = Str__literal(U"ь"); + TL_IS_1977 = Str__literal(U"/"); + TL_IS_1978 = Str__literal(U"⧄"); + TL_IS_1979 = Str__literal(U"⌿"); + TL_IS_1980 = Str__literal(U"𝕤"); + TL_IS_1981 = Str__literal(U"♠"); + TL_IS_1982 = Str__literal(U"♠"); + TL_IS_1983 = Str__literal(U"∥"); + TL_IS_1984 = Str__literal(U"⊓"); + TL_IS_1985 = Str__literal(U"⊓︀"); + TL_IS_1986 = Str__literal(U"⊔"); + TL_IS_1987 = Str__literal(U"⊔︀"); + TL_IS_1988 = Str__literal(U"⊏"); + TL_IS_1989 = Str__literal(U"⊑"); + TL_IS_1990 = Str__literal(U"⊏"); + TL_IS_1991 = Str__literal(U"⊑"); + TL_IS_1992 = Str__literal(U"⊐"); + TL_IS_1993 = Str__literal(U"⊒"); + TL_IS_1994 = Str__literal(U"⊐"); + TL_IS_1995 = Str__literal(U"⊒"); + TL_IS_1996 = Str__literal(U"□"); + TL_IS_1997 = Str__literal(U"□"); + TL_IS_1998 = Str__literal(U"▪"); + TL_IS_1999 = Str__literal(U"▪"); + TL_IS_2000 = Str__literal(U"→"); + TL_IS_2001 = Str__literal(U"𝓈"); + TL_IS_2002 = Str__literal(U"∖"); + TL_IS_2003 = Str__literal(U"⌣"); + TL_IS_2004 = Str__literal(U"⋆"); + TL_IS_2005 = Str__literal(U"☆"); + TL_IS_2006 = Str__literal(U"★"); + TL_IS_2007 = Str__literal(U"ϵ"); + TL_IS_2008 = Str__literal(U"ϕ"); + TL_IS_2009 = Str__literal(U"¯"); + TL_IS_2010 = Str__literal(U"⊂"); + TL_IS_2011 = Str__literal(U"⫅"); + TL_IS_2012 = Str__literal(U"⪽"); + TL_IS_2013 = Str__literal(U"⊆"); + TL_IS_2014 = Str__literal(U"⫃"); + TL_IS_2015 = Str__literal(U"⫁"); + TL_IS_2016 = Str__literal(U"⫋"); + TL_IS_2017 = Str__literal(U"⊊"); + TL_IS_2018 = Str__literal(U"⪿"); + TL_IS_2019 = Str__literal(U"⥹"); + TL_IS_2020 = Str__literal(U"⊂"); + TL_IS_2021 = Str__literal(U"⊆"); + TL_IS_2022 = Str__literal(U"⫅"); + TL_IS_2023 = Str__literal(U"⊊"); + TL_IS_2024 = Str__literal(U"⫋"); + TL_IS_2025 = Str__literal(U"⫇"); + TL_IS_2026 = Str__literal(U"⫕"); + TL_IS_2027 = Str__literal(U"⫓"); + TL_IS_2028 = Str__literal(U"≻"); + TL_IS_2029 = Str__literal(U"⪸"); + TL_IS_2030 = Str__literal(U"≽"); + TL_IS_2031 = Str__literal(U"⪰"); + TL_IS_2032 = Str__literal(U"⪺"); + TL_IS_2033 = Str__literal(U"⪶"); + TL_IS_2034 = Str__literal(U"⋩"); + TL_IS_2035 = Str__literal(U"≿"); + TL_IS_2036 = Str__literal(U"∑"); + TL_IS_2037 = Str__literal(U"♪"); + TL_IS_2038 = Str__literal(U"¹"); + TL_IS_2039 = Str__literal(U"¹"); + TL_IS_2040 = Str__literal(U"²"); + TL_IS_2041 = Str__literal(U"²"); + TL_IS_2042 = Str__literal(U"³"); + TL_IS_2043 = Str__literal(U"³"); + TL_IS_2044 = Str__literal(U"⊃"); + TL_IS_2045 = Str__literal(U"⫆"); + TL_IS_2046 = Str__literal(U"⪾"); + TL_IS_2047 = Str__literal(U"⫘"); + TL_IS_2048 = Str__literal(U"⊇"); + TL_IS_2049 = Str__literal(U"⫄"); + TL_IS_2050 = Str__literal(U"⟉"); + TL_IS_2051 = Str__literal(U"⫗"); + TL_IS_2052 = Str__literal(U"⥻"); + TL_IS_2053 = Str__literal(U"⫂"); + TL_IS_2054 = Str__literal(U"⫌"); + TL_IS_2055 = Str__literal(U"⊋"); + TL_IS_2056 = Str__literal(U"⫀"); + TL_IS_2057 = Str__literal(U"⊃"); + TL_IS_2058 = Str__literal(U"⊇"); + TL_IS_2059 = Str__literal(U"⫆"); + TL_IS_2060 = Str__literal(U"⊋"); + TL_IS_2061 = Str__literal(U"⫌"); + TL_IS_2062 = Str__literal(U"⫈"); + TL_IS_2063 = Str__literal(U"⫔"); + TL_IS_2064 = Str__literal(U"⫖"); + TL_IS_2065 = Str__literal(U"⇙"); + TL_IS_2066 = Str__literal(U"⤦"); + TL_IS_2067 = Str__literal(U"↙"); + TL_IS_2068 = Str__literal(U"↙"); + TL_IS_2069 = Str__literal(U"⤪"); + TL_IS_2070 = Str__literal(U"ß"); + TL_IS_2071 = Str__literal(U"ß"); + TL_IS_2072 = Str__literal(U"⌖"); + TL_IS_2073 = Str__literal(U"τ"); + TL_IS_2074 = Str__literal(U"⎴"); + TL_IS_2075 = Str__literal(U"ť"); + TL_IS_2076 = Str__literal(U"ţ"); + TL_IS_2077 = Str__literal(U"т"); + TL_IS_2078 = Str__literal(U"⃛"); + TL_IS_2079 = Str__literal(U"⌕"); + TL_IS_2080 = Str__literal(U"𝔱"); + TL_IS_2081 = Str__literal(U"∴"); + TL_IS_2082 = Str__literal(U"∴"); + TL_IS_2083 = Str__literal(U"θ"); + TL_IS_2084 = Str__literal(U"ϑ"); + TL_IS_2085 = Str__literal(U"ϑ"); + TL_IS_2086 = Str__literal(U"≈"); + TL_IS_2087 = Str__literal(U"∼"); + TL_IS_2088 = Str__literal(U" "); + TL_IS_2089 = Str__literal(U"≈"); + TL_IS_2090 = Str__literal(U"∼"); + TL_IS_2091 = Str__literal(U"þ"); + TL_IS_2092 = Str__literal(U"þ"); + TL_IS_2093 = Str__literal(U"˜"); + TL_IS_2094 = Str__literal(U"×"); + TL_IS_2095 = Str__literal(U"×"); + TL_IS_2096 = Str__literal(U"⊠"); + TL_IS_2097 = Str__literal(U"⨱"); + TL_IS_2098 = Str__literal(U"⨰"); + TL_IS_2099 = Str__literal(U"∭"); + TL_IS_2100 = Str__literal(U"⤨"); + TL_IS_2101 = Str__literal(U"⊤"); + TL_IS_2102 = Str__literal(U"⌶"); + TL_IS_2103 = Str__literal(U"⫱"); + TL_IS_2104 = Str__literal(U"𝕥"); + TL_IS_2105 = Str__literal(U"⫚"); + TL_IS_2106 = Str__literal(U"⤩"); + TL_IS_2107 = Str__literal(U"‴"); + TL_IS_2108 = Str__literal(U"™"); + TL_IS_2109 = Str__literal(U"▵"); + TL_IS_2110 = Str__literal(U"▿"); + TL_IS_2111 = Str__literal(U"◃"); + TL_IS_2112 = Str__literal(U"⊴"); + TL_IS_2113 = Str__literal(U"≜"); + TL_IS_2114 = Str__literal(U"▹"); + TL_IS_2115 = Str__literal(U"⊵"); + TL_IS_2116 = Str__literal(U"◬"); + TL_IS_2117 = Str__literal(U"≜"); + TL_IS_2118 = Str__literal(U"⨺"); + TL_IS_2119 = Str__literal(U"⨹"); + TL_IS_2120 = Str__literal(U"⧍"); + TL_IS_2121 = Str__literal(U"⨻"); + TL_IS_2122 = Str__literal(U"⏢"); + TL_IS_2123 = Str__literal(U"𝓉"); + TL_IS_2124 = Str__literal(U"ц"); + TL_IS_2125 = Str__literal(U"ћ"); + TL_IS_2126 = Str__literal(U"ŧ"); + TL_IS_2127 = Str__literal(U"≬"); + TL_IS_2128 = Str__literal(U"↞"); + TL_IS_2129 = Str__literal(U"↠"); + TL_IS_2130 = Str__literal(U"⇑"); + TL_IS_2131 = Str__literal(U"⥣"); + TL_IS_2132 = Str__literal(U"ú"); + TL_IS_2133 = Str__literal(U"ú"); + TL_IS_2134 = Str__literal(U"↑"); + TL_IS_2135 = Str__literal(U"ў"); + TL_IS_2136 = Str__literal(U"ŭ"); + TL_IS_2137 = Str__literal(U"û"); + TL_IS_2138 = Str__literal(U"û"); + TL_IS_2139 = Str__literal(U"у"); + TL_IS_2140 = Str__literal(U"⇅"); + TL_IS_2141 = Str__literal(U"ű"); + TL_IS_2142 = Str__literal(U"⥮"); + TL_IS_2143 = Str__literal(U"⥾"); + TL_IS_2144 = Str__literal(U"𝔲"); + TL_IS_2145 = Str__literal(U"ù"); + TL_IS_2146 = Str__literal(U"ù"); + TL_IS_2147 = Str__literal(U"↿"); + TL_IS_2148 = Str__literal(U"↾"); + TL_IS_2149 = Str__literal(U"▀"); + TL_IS_2150 = Str__literal(U"⌜"); + TL_IS_2151 = Str__literal(U"⌜"); + TL_IS_2152 = Str__literal(U"⌏"); + TL_IS_2153 = Str__literal(U"◸"); + TL_IS_2154 = Str__literal(U"ū"); + TL_IS_2155 = Str__literal(U"¨"); + TL_IS_2156 = Str__literal(U"¨"); + TL_IS_2157 = Str__literal(U"ų"); + TL_IS_2158 = Str__literal(U"𝕦"); + TL_IS_2159 = Str__literal(U"↑"); + TL_IS_2160 = Str__literal(U"↕"); + TL_IS_2161 = Str__literal(U"↿"); + TL_IS_2162 = Str__literal(U"↾"); + TL_IS_2163 = Str__literal(U"⊎"); + TL_IS_2164 = Str__literal(U"υ"); + TL_IS_2165 = Str__literal(U"ϒ"); + TL_IS_2166 = Str__literal(U"υ"); + TL_IS_2167 = Str__literal(U"⇈"); + TL_IS_2168 = Str__literal(U"⌝"); + TL_IS_2169 = Str__literal(U"⌝"); + TL_IS_2170 = Str__literal(U"⌎"); + TL_IS_2171 = Str__literal(U"ů"); + TL_IS_2172 = Str__literal(U"◹"); + TL_IS_2173 = Str__literal(U"𝓊"); + TL_IS_2174 = Str__literal(U"⋰"); + TL_IS_2175 = Str__literal(U"ũ"); + TL_IS_2176 = Str__literal(U"▵"); + TL_IS_2177 = Str__literal(U"▴"); + TL_IS_2178 = Str__literal(U"⇈"); + TL_IS_2179 = Str__literal(U"ü"); + TL_IS_2180 = Str__literal(U"ü"); + TL_IS_2181 = Str__literal(U"⦧"); + TL_IS_2182 = Str__literal(U"⇕"); + TL_IS_2183 = Str__literal(U"⫨"); + TL_IS_2184 = Str__literal(U"⫩"); + TL_IS_2185 = Str__literal(U"⊨"); + TL_IS_2186 = Str__literal(U"⦜"); + TL_IS_2187 = Str__literal(U"ϵ"); + TL_IS_2188 = Str__literal(U"ϰ"); + TL_IS_2189 = Str__literal(U"∅"); + TL_IS_2190 = Str__literal(U"ϕ"); + TL_IS_2191 = Str__literal(U"ϖ"); + TL_IS_2192 = Str__literal(U"∝"); + TL_IS_2193 = Str__literal(U"↕"); + TL_IS_2194 = Str__literal(U"ϱ"); + TL_IS_2195 = Str__literal(U"ς"); + TL_IS_2196 = Str__literal(U"⊊︀"); + TL_IS_2197 = Str__literal(U"⫋︀"); + TL_IS_2198 = Str__literal(U"⊋︀"); + TL_IS_2199 = Str__literal(U"⫌︀"); + TL_IS_2200 = Str__literal(U"ϑ"); + TL_IS_2201 = Str__literal(U"⊲"); + TL_IS_2202 = Str__literal(U"⊳"); + TL_IS_2203 = Str__literal(U"в"); + TL_IS_2204 = Str__literal(U"⊢"); + TL_IS_2205 = Str__literal(U"∨"); + TL_IS_2206 = Str__literal(U"⊻"); + TL_IS_2207 = Str__literal(U"≚"); + TL_IS_2208 = Str__literal(U"⋮"); + TL_IS_2209 = Str__literal(U"|"); + TL_IS_2210 = Str__literal(U"|"); + TL_IS_2211 = Str__literal(U"𝔳"); + TL_IS_2212 = Str__literal(U"⊲"); + TL_IS_2213 = Str__literal(U"⊂⃒"); + TL_IS_2214 = Str__literal(U"⊃⃒"); + TL_IS_2215 = Str__literal(U"𝕧"); + TL_IS_2216 = Str__literal(U"∝"); + TL_IS_2217 = Str__literal(U"⊳"); + TL_IS_2218 = Str__literal(U"𝓋"); + TL_IS_2219 = Str__literal(U"⫋︀"); + TL_IS_2220 = Str__literal(U"⊊︀"); + TL_IS_2221 = Str__literal(U"⫌︀"); + TL_IS_2222 = Str__literal(U"⊋︀"); + TL_IS_2223 = Str__literal(U"⦚"); + TL_IS_2224 = Str__literal(U"ŵ"); + TL_IS_2225 = Str__literal(U"⩟"); + TL_IS_2226 = Str__literal(U"∧"); + TL_IS_2227 = Str__literal(U"≙"); + TL_IS_2228 = Str__literal(U"℘"); + TL_IS_2229 = Str__literal(U"𝔴"); + TL_IS_2230 = Str__literal(U"𝕨"); + TL_IS_2231 = Str__literal(U"℘"); + TL_IS_2232 = Str__literal(U"≀"); + TL_IS_2233 = Str__literal(U"≀"); + TL_IS_2234 = Str__literal(U"𝓌"); + TL_IS_2235 = Str__literal(U"⋂"); + TL_IS_2236 = Str__literal(U"◯"); + TL_IS_2237 = Str__literal(U"⋃"); + TL_IS_2238 = Str__literal(U"▽"); + TL_IS_2239 = Str__literal(U"𝔵"); + TL_IS_2240 = Str__literal(U"⟺"); + TL_IS_2241 = Str__literal(U"⟷"); + TL_IS_2242 = Str__literal(U"ξ"); + TL_IS_2243 = Str__literal(U"⟸"); + TL_IS_2244 = Str__literal(U"⟵"); + TL_IS_2245 = Str__literal(U"⟼"); + TL_IS_2246 = Str__literal(U"⋻"); + TL_IS_2247 = Str__literal(U"⨀"); + TL_IS_2248 = Str__literal(U"𝕩"); + TL_IS_2249 = Str__literal(U"⨁"); + TL_IS_2250 = Str__literal(U"⨂"); + TL_IS_2251 = Str__literal(U"⟹"); + TL_IS_2252 = Str__literal(U"⟶"); + TL_IS_2253 = Str__literal(U"𝓍"); + TL_IS_2254 = Str__literal(U"⨆"); + TL_IS_2255 = Str__literal(U"⨄"); + TL_IS_2256 = Str__literal(U"△"); + TL_IS_2257 = Str__literal(U"⋁"); + TL_IS_2258 = Str__literal(U"⋀"); + TL_IS_2259 = Str__literal(U"ý"); + TL_IS_2260 = Str__literal(U"ý"); + TL_IS_2261 = Str__literal(U"я"); + TL_IS_2262 = Str__literal(U"ŷ"); + TL_IS_2263 = Str__literal(U"ы"); + TL_IS_2264 = Str__literal(U"¥"); + TL_IS_2265 = Str__literal(U"¥"); + TL_IS_2266 = Str__literal(U"𝔶"); + TL_IS_2267 = Str__literal(U"ї"); + TL_IS_2268 = Str__literal(U"𝕪"); + TL_IS_2269 = Str__literal(U"𝓎"); + TL_IS_2270 = Str__literal(U"ю"); + TL_IS_2271 = Str__literal(U"ÿ"); + TL_IS_2272 = Str__literal(U"ÿ"); + TL_IS_2273 = Str__literal(U"ź"); + TL_IS_2274 = Str__literal(U"ž"); + TL_IS_2275 = Str__literal(U"з"); + TL_IS_2276 = Str__literal(U"ż"); + TL_IS_2277 = Str__literal(U"ℨ"); + TL_IS_2278 = Str__literal(U"ζ"); + TL_IS_2279 = Str__literal(U"𝔷"); + TL_IS_2280 = Str__literal(U"ж"); + TL_IS_2281 = Str__literal(U"⇝"); + TL_IS_2282 = Str__literal(U"𝕫"); + TL_IS_2283 = Str__literal(U"𝓏"); + TL_IS_2284 = Str__literal(U"‍"); + TL_IS_2285 = Str__literal(U"‌"); + TL_IS_2286 = Str__literal(U"?UNDEFINED"); + TL_IS_2287 = Str__literal(U"DOCUMENT"); + TL_IS_2288 = Str__literal(U"VOLUME"); + TL_IS_2289 = Str__literal(U"FILE"); + TL_IS_2290 = Str__literal(U"BLOCK_QUOTE"); + TL_IS_2291 = Str__literal(U"UNORDERED_LIST"); + TL_IS_2292 = Str__literal(U"ORDERED_LIST"); + TL_IS_2293 = Str__literal(U"UNORDERED_LIST_ITEM"); + TL_IS_2294 = Str__literal(U"ORDERED_LIST_ITEM"); + TL_IS_2295 = Str__literal(U"PARAGRAPH"); + TL_IS_2296 = Str__literal(U"THEMATIC"); + TL_IS_2297 = Str__literal(U"HEADING"); + TL_IS_2298 = Str__literal(U"CODE_BLOCK"); + TL_IS_2299 = Str__literal(U"HTML"); + TL_IS_2300 = Str__literal(U"EMPTY"); + TL_IS_2301 = Str__literal(U"MATERIAL"); + TL_IS_2302 = Str__literal(U"PLAIN"); + TL_IS_2303 = Str__literal(U"LINE_BREAK"); + TL_IS_2304 = Str__literal(U"SOFT_BREAK"); + TL_IS_2305 = Str__literal(U"INLINE_HTML"); + TL_IS_2306 = Str__literal(U"EMPHASIS"); + TL_IS_2307 = Str__literal(U"STRONG"); + TL_IS_2308 = Str__literal(U"CODE"); + TL_IS_2309 = Str__literal(U"URI_AUTOLINK"); + TL_IS_2310 = Str__literal(U"EMAIL_AUTOLINK"); + TL_IS_2311 = Str__literal(U"LINK"); + TL_IS_2312 = Str__literal(U"IMAGE"); + TL_IS_2313 = Str__literal(U"LINK_DEST"); + TL_IS_2314 = Str__literal(U"LINK_TITLE"); + TL_IS_2315 = Str__literal(U"TABLE"); + TL_IS_2316 = Str__literal(U"TABLE_COLUMN"); + TL_IS_2317 = Str__literal(U"TABLE_ROW"); + TL_IS_2318 = Str__literal(U"STRIKETHROUGH"); + TL_IS_2319 = Str__literal(U"TICKBOX"); + TL_IS_2320 = Str__literal(U"XMPP_AUTOLINK"); + TL_IS_2321 = Str__literal(U""); + TL_IS_2322 = Str__literal(U"title"); + TL_IS_2323 = Str__literal(U"textarea"); + TL_IS_2324 = Str__literal(U"style"); + TL_IS_2325 = Str__literal(U"xmp"); + TL_IS_2326 = Str__literal(U"iframe"); + TL_IS_2327 = Str__literal(U"noembed"); + TL_IS_2328 = Str__literal(U"noframes"); + TL_IS_2329 = Str__literal(U"script"); + TL_IS_2330 = Str__literal(U"plaintext"); + TL_IS_2331 = Str__literal(U"CHAIN"); + TL_IS_2332 = Str__literal(U""); + TL_IS_2333 = Str__literal(U""); + TL_IS_2334 = Str__literal(U""); + TL_IS_2335 = Str__literal(U""); + TL_IS_2336 = Str__literal(U"-->"); + TL_IS_2337 = Str__literal(U"?>"); + TL_IS_2338 = Str__literal(U"!>"); + TL_IS_2339 = Str__literal(U"]]>"); + TL_IS_2340 = Str__literal(U"pre"); + TL_IS_2341 = Str__literal(U"script"); + TL_IS_2342 = Str__literal(U"style"); + TL_IS_2343 = Str__literal(U"textarea"); + TL_IS_2344 = Str__literal(U"!--"); + TL_IS_2345 = Str__literal(U"?"); + TL_IS_2346 = Str__literal(U"![CDATA["); + TL_IS_2347 = Str__literal(U"!"); + TL_IS_2348 = Str__literal(U"address"); + TL_IS_2349 = Str__literal(U"article"); + TL_IS_2350 = Str__literal(U"aside"); + TL_IS_2351 = Str__literal(U"base"); + TL_IS_2352 = Str__literal(U"basefont"); + TL_IS_2353 = Str__literal(U"blockquote"); + TL_IS_2354 = Str__literal(U"body"); + TL_IS_2355 = Str__literal(U"caption"); + TL_IS_2356 = Str__literal(U"center"); + TL_IS_2357 = Str__literal(U"col"); + TL_IS_2358 = Str__literal(U"colgroup"); + TL_IS_2359 = Str__literal(U"dd"); + TL_IS_2360 = Str__literal(U"details"); + TL_IS_2361 = Str__literal(U"dialog"); + TL_IS_2362 = Str__literal(U"dir"); + TL_IS_2363 = Str__literal(U"div"); + TL_IS_2364 = Str__literal(U"dl"); + TL_IS_2365 = Str__literal(U"dt"); + TL_IS_2366 = Str__literal(U"fieldset"); + TL_IS_2367 = Str__literal(U"figcaption"); + TL_IS_2368 = Str__literal(U"figure"); + TL_IS_2369 = Str__literal(U"footer"); + TL_IS_2370 = Str__literal(U"form"); + TL_IS_2371 = Str__literal(U"frame"); + TL_IS_2372 = Str__literal(U"frameset"); + TL_IS_2373 = Str__literal(U"h1"); + TL_IS_2374 = Str__literal(U"h2"); + TL_IS_2375 = Str__literal(U"h3"); + TL_IS_2376 = Str__literal(U"h4"); + TL_IS_2377 = Str__literal(U"h5"); + TL_IS_2378 = Str__literal(U"h6"); + TL_IS_2379 = Str__literal(U"head"); + TL_IS_2380 = Str__literal(U"header"); + TL_IS_2381 = Str__literal(U"hr"); + TL_IS_2382 = Str__literal(U"html"); + TL_IS_2383 = Str__literal(U"iframe"); + TL_IS_2384 = Str__literal(U"legend"); + TL_IS_2385 = Str__literal(U"li"); + TL_IS_2386 = Str__literal(U"link"); + TL_IS_2387 = Str__literal(U"main"); + TL_IS_2388 = Str__literal(U"menu"); + TL_IS_2389 = Str__literal(U"menuitem"); + TL_IS_2390 = Str__literal(U"nav"); + TL_IS_2391 = Str__literal(U"noframes"); + TL_IS_2392 = Str__literal(U"ol"); + TL_IS_2393 = Str__literal(U"optgroup"); + TL_IS_2394 = Str__literal(U"option"); + TL_IS_2395 = Str__literal(U"p"); + TL_IS_2396 = Str__literal(U"param"); + TL_IS_2397 = Str__literal(U"section"); + TL_IS_2398 = Str__literal(U"source"); + TL_IS_2399 = Str__literal(U"summary"); + TL_IS_2400 = Str__literal(U"table"); + TL_IS_2401 = Str__literal(U"tbody"); + TL_IS_2402 = Str__literal(U"td"); + TL_IS_2403 = Str__literal(U"tfoot"); + TL_IS_2404 = Str__literal(U"th"); + TL_IS_2405 = Str__literal(U"thead"); + TL_IS_2406 = Str__literal(U"title"); + TL_IS_2407 = Str__literal(U"tr"); + TL_IS_2408 = Str__literal(U"track"); + TL_IS_2409 = Str__literal(U"ul"); + TL_IS_2410 = Str__literal(U"pre"); + TL_IS_2411 = Str__literal(U"script"); + TL_IS_2412 = Str__literal(U"style"); + TL_IS_2413 = Str__literal(U"textarea"); + TL_IS_2414 = Str__literal(U"\n\n"); + TL_IS_2415 = Str__literal(U"\n"); + TL_IS_2416 = Str__literal(U"Before surgery"); + TL_IS_2417 = Str__literal(U"Before emphasis"); + TL_IS_2418 = Str__literal(U"Emphasis"); + TL_IS_2419 = Str__literal(U"After emphasis"); + TL_IS_2420 = Str__literal(U"mailto:"); + TL_IS_2421 = Str__literal(U"xmpp:"); + TL_IS_2422 = Str__literal(U"http://"); + TL_IS_2423 = Str__literal(U"block quotes"); + TL_IS_2424 = Str__literal(U"ordered lists"); + TL_IS_2425 = Str__literal(U"unordered lists"); + TL_IS_2426 = Str__literal(U"indented code blocks"); + TL_IS_2427 = Str__literal(U"fenced code blocks"); + TL_IS_2428 = Str__literal(U"HTML blocks"); + TL_IS_2429 = Str__literal(U"thematic markers"); + TL_IS_2430 = Str__literal(U"ATX headings"); + TL_IS_2431 = Str__literal(U"setext headings"); + TL_IS_2432 = Str__literal(U"web autolinks"); + TL_IS_2433 = Str__literal(U"email autolinks"); + TL_IS_2434 = Str__literal(U"inline HTML"); + TL_IS_2435 = Str__literal(U"backticked code"); + TL_IS_2436 = Str__literal(U"links"); + TL_IS_2437 = Str__literal(U"images"); + TL_IS_2438 = Str__literal(U"emphasis"); + TL_IS_2439 = Str__literal(U"emphasis"); + TL_IS_2440 = Str__literal(U"entities"); + TL_IS_2441 = Str__literal(U"CommonMark 0.30"); + TL_IS_2442 = Str__literal(U"strikethrough"); + TL_IS_2443 = Str__literal(U"tables"); + TL_IS_2444 = Str__literal(U"task list items"); + TL_IS_2445 = Str__literal(U"extended autolinks"); + TL_IS_2446 = Str__literal(U"disallowed raw HTML"); + TL_IS_2447 = Str__literal(U"GitHub-flavored Markdown 0.29"); + TL_IS_2448 = Str__literal(U"all in one"); + TL_IS_2449 = Str__literal(U"index.html"); + TL_IS_2450 = Str__literal(U"Inform-flavoured Markdown"); + TL_IS_2451 = Str__literal(U"formatting errors"); + TL_IS_2452 = Str__literal(U"INFORM_ERROR_MARKER"); + TL_IS_2453 = Str__literal(U"documentationerror"); + TL_IS_2454 = Str__literal(U"old Indoc headings"); + TL_IS_2455 = Str__literal(U"descriptive headings"); + TL_IS_2456 = Str__literal(U"embedded examples"); + TL_IS_2457 = Str__literal(U"INFORM_EXAMPLE_HEADING"); + TL_IS_2458 = Str__literal(U"this example should be marked (before the title) '*', '**', '***' or '****' for difficulty"); + TL_IS_2459 = Str__literal(U"four stars '****' is the maximum difficulty rating allowed"); + TL_IS_2460 = Str__literal(U"extensionexampleletter"); + TL_IS_2461 = Str__literal(U"indexdarkgrey"); + TL_IS_2462 = Str__literal(U"indexblack"); + TL_IS_2463 = Str__literal(U"indexblack"); + TL_IS_2464 = Str__literal(U"extensionexampleseealso"); + TL_IS_2465 = Str__literal(U"paste buttons"); + TL_IS_2466 = Str__literal(U"{*}"); + TL_IS_2467 = Str__literal(U"{**}"); + TL_IS_2468 = Str__literal(U"phrase defn boxes"); + TL_IS_2469 = Str__literal(U"PHRASE_HEADER"); + TL_IS_2470 = Str__literal(U"+to+"); + TL_IS_2471 = Str__literal(U"if "); + TL_IS_2472 = Str__literal(U"+toif+"); + TL_IS_2473 = Str__literal(U"say "); + TL_IS_2474 = Str__literal(U"+tosay+"); + TL_IS_2475 = Str__literal(U"indexing marks"); + TL_IS_2476 = Str__literal(U"INDEX_MARKER"); + TL_IS_2477 = Str__literal(U"heading markers"); + TL_IS_2478 = Str__literal(U"HEADING_MARKER"); + TL_IS_2479 = Str__literal(U"paragraph gating"); + TL_IS_2480 = Str__literal(U"GATE"); + TL_IS_2481 = Str__literal(U"Inform syntax-colouring"); + TL_IS_2482 = Str__literal(U"inform"); + TL_IS_2483 = Str__literal(U"inform7"); + TL_IS_2484 = Str__literal(U"problems"); + TL_IS_2485 = Str__literal(U"Inform"); + TL_IS_2486 = Str__literal(U"Inform"); + TL_IS_2487 = Str__literal(U"indexdullblue"); + TL_IS_2488 = Str__literal(U"indexdullblue"); + TL_IS_2489 = Str__literal(U"indexdullblue"); + TL_IS_2490 = Str__literal(U"syntaxdefinition"); + TL_IS_2491 = Str__literal(U"syntaxfunction"); + TL_IS_2492 = Str__literal(U"syntaxreserved"); + TL_IS_2493 = Str__literal(U"syntaxelement"); + TL_IS_2494 = Str__literal(U"syntaxidentifier"); + TL_IS_2495 = Str__literal(U"syntaxcharacter"); + TL_IS_2496 = Str__literal(U"syntaxconstant"); + TL_IS_2497 = Str__literal(U"syntaxstring"); + TL_IS_2498 = Str__literal(U"syntaxplain"); + TL_IS_2499 = Str__literal(U"syntaxextract"); + TL_IS_2500 = Str__literal(U"syntaxcomment"); + TL_IS_2501 = Str__literal(U"ePub"); + TL_IS_2502 = Str__literal(U"OEBPS"); + TL_IS_2503 = Str__literal(U"mimetype"); + TL_IS_2504 = Str__literal(U"META-INF"); + TL_IS_2505 = Str__literal(U"container.xml"); + TL_IS_2506 = Str__literal(U"cover.html"); + TL_IS_2507 = Str__literal(U"Cover"); + TL_IS_2508 = Str__literal(U"cover"); + TL_IS_2509 = Str__literal(U"content.opf"); + TL_IS_2510 = Str__literal(U"toc.ncx"); + TL_IS_2511 = Str__literal(U".."); + TL_IS_2512 = Str__literal(U"A"); + TL_IS_2513 = Str__literal(U"Sequential Section Ranges"); + TL_IS_2514 = Str__literal(U"On"); + TL_IS_2515 = Str__literal(U"Web Syntax Version: 1"); + TL_IS_2516 = Str__literal(U"Web Syntax Version: 2"); + TL_IS_2517 = Str__literal(U"S"); + TL_IS_2518 = Str__literal(U"Sections"); + TL_IS_2519 = Str__literal(U"All"); + TL_IS_2520 = Str__literal(U"Headers"); + TL_IS_2521 = Str__literal(U"single-file webs cannot Import modules"); + TL_IS_2522 = Str__literal(U"Language"); + TL_IS_2523 = Str__literal(U"Language"); + TL_IS_2524 = Str__literal(U"Contents.w"); + TL_IS_2525 = Str__literal(U"Title"); + TL_IS_2526 = Str__literal(U"Author"); + TL_IS_2527 = Str__literal(U"Language"); + TL_IS_2528 = Str__literal(U"None"); + TL_IS_2529 = Str__literal(U"Purpose"); + TL_IS_2530 = Str__literal(U""); + TL_IS_2531 = Str__literal(U"License"); + TL_IS_2532 = Str__literal(U"Licence"); + TL_IS_2533 = Str__literal(U"Short Title"); + TL_IS_2534 = Str__literal(U"Capitalized Title"); + TL_IS_2535 = Str__literal(U"Build Date"); + TL_IS_2536 = Str__literal(U"Build Number"); + TL_IS_2537 = Str__literal(U"Prerelease"); + TL_IS_2538 = Str__literal(U"Semantic Version Number"); + TL_IS_2539 = Str__literal(U"Version Number"); + TL_IS_2540 = Str__literal(U"1"); + TL_IS_2541 = Str__literal(U"Version Name"); + TL_IS_2542 = Str__literal(U"Index Template"); + TL_IS_2543 = Str__literal(U"Preform Language"); + TL_IS_2544 = Str__literal(U"Declare Section Usage"); + TL_IS_2545 = Str__literal(U"Off"); + TL_IS_2546 = Str__literal(U"Namespaces"); + TL_IS_2547 = Str__literal(U"Off"); + TL_IS_2548 = Str__literal(U"Sequential Section Ranges"); + TL_IS_2549 = Str__literal(U"Off"); + TL_IS_2550 = Str__literal(U"Strict Usage Rules"); + TL_IS_2551 = Str__literal(U"Off"); + TL_IS_2552 = Str__literal(U"TeX Mathematics Notation"); + TL_IS_2553 = Str__literal(U"$"); + TL_IS_2554 = Str__literal(U"TeX Mathematics Displayed Notation"); + TL_IS_2555 = Str__literal(U"$$"); + TL_IS_2556 = Str__literal(U"Footnote Begins Notation"); + TL_IS_2557 = Str__literal(U"["); + TL_IS_2558 = Str__literal(U"Footnote Ends Notation"); + TL_IS_2559 = Str__literal(U"]"); + TL_IS_2560 = Str__literal(U"Code In Commentary Notation"); + TL_IS_2561 = Str__literal(U"|"); + TL_IS_2562 = Str__literal(U"Code In Code Comments Notation"); + TL_IS_2563 = Str__literal(U"|"); + TL_IS_2564 = Str__literal(U"Cross-References Notation"); + TL_IS_2565 = Str__literal(U"//"); + TL_IS_2566 = Str__literal(U"Web Syntax Version"); + TL_IS_2567 = Str__literal(U"Paragraph Numbers Visibility"); + TL_IS_2568 = Str__literal(U"On"); + TL_IS_2569 = Str__literal(U"Capitalized Title"); + TL_IS_2570 = Str__literal(U"miscellaneous"); + TL_IS_2571 = Str__literal(U"(main)"); + TL_IS_2572 = Str__literal(U"build.txt"); + TL_IS_2573 = Str__literal(U"build.txt"); + TL_IS_2574 = Str__literal(U"Prerelease"); + TL_IS_2575 = Str__literal(U"Build Number"); + TL_IS_2576 = Str__literal(U"Build Date"); + TL_IS_2577 = Str__literal(U"Semantic Version Number"); + TL_IS_2578 = Str__literal(U"Version Number"); + TL_IS_2579 = Str__literal(U"Prerelease"); + TL_IS_2580 = Str__literal(U"Build Number"); + TL_IS_2581 = Str__literal(U"Semantic Version Number"); + TL_IS_2582 = Str__literal(U"Sections"); + TL_IS_2583 = Str__literal(U"InC"); + TL_IS_2584 = Str__literal(U"Name"); + TL_IS_2585 = Str__literal(U"Details"); + TL_IS_2586 = Str__literal(U"Extension"); + TL_IS_2587 = Str__literal(U"Line Comment"); + TL_IS_2588 = Str__literal(U"Whole Line Comment"); + TL_IS_2589 = Str__literal(U"Multiline Comment Open"); + TL_IS_2590 = Str__literal(U"Multiline Comment Close"); + TL_IS_2591 = Str__literal(U"String Literal"); + TL_IS_2592 = Str__literal(U"String Literal Escape"); + TL_IS_2593 = Str__literal(U"Character Literal"); + TL_IS_2594 = Str__literal(U"Character Literal Escape"); + TL_IS_2595 = Str__literal(U"Binary Literal Prefix"); + TL_IS_2596 = Str__literal(U"Octal Literal Prefix"); + TL_IS_2597 = Str__literal(U"Hexadecimal Literal Prefix"); + TL_IS_2598 = Str__literal(U"Negative Literal Prefix"); + TL_IS_2599 = Str__literal(U"Shebang"); + TL_IS_2600 = Str__literal(U"Line Marker"); + TL_IS_2601 = Str__literal(U"Before Named Paragraph Expansion"); + TL_IS_2602 = Str__literal(U"After Named Paragraph Expansion"); + TL_IS_2603 = Str__literal(U"Start Definition"); + TL_IS_2604 = Str__literal(U"Prolong Definition"); + TL_IS_2605 = Str__literal(U"End Definition"); + TL_IS_2606 = Str__literal(U"Start Ifdef"); + TL_IS_2607 = Str__literal(U"Start Ifndef"); + TL_IS_2608 = Str__literal(U"End Ifdef"); + TL_IS_2609 = Str__literal(U"End Ifndef"); + TL_IS_2610 = Str__literal(U"C-Like"); + TL_IS_2611 = Str__literal(U"Suppress Disclaimer"); + TL_IS_2612 = Str__literal(U"Supports Namespaces"); + TL_IS_2613 = Str__literal(U"Function Declaration Notation"); + TL_IS_2614 = Str__literal(U"Type Declaration Notation"); + TL_IS_2615 = Str__literal(U"}"); + TL_IS_2616 = Str__literal(U"unquoted"); + TL_IS_2617 = Str__literal(U"{"); + TL_IS_2618 = Str__literal(U"debug"); + TL_IS_2619 = Str__literal(U"!string"); + TL_IS_2620 = Str__literal(U"!function"); + TL_IS_2621 = Str__literal(U"!definition"); + TL_IS_2622 = Str__literal(U"!reserved"); + TL_IS_2623 = Str__literal(U"!element"); + TL_IS_2624 = Str__literal(U"!identifier"); + TL_IS_2625 = Str__literal(U"!character"); + TL_IS_2626 = Str__literal(U"!constant"); + TL_IS_2627 = Str__literal(U"!plain"); + TL_IS_2628 = Str__literal(U"!extract"); + TL_IS_2629 = Str__literal(U"!comment"); + TL_IS_2630 = Str__literal(U"true"); + TL_IS_2631 = Str__literal(U"false"); + TL_IS_2632 = Str__literal(U"both"); + TL_IS_2633 = Str__literal(U"brackets"); + TL_IS_2634 = Str__literal(U"characters"); + TL_IS_2635 = Str__literal(U"coloured"); + TL_IS_2636 = Str__literal(U"colouring"); + TL_IS_2637 = Str__literal(U"debug"); + TL_IS_2638 = Str__literal(U"false"); + TL_IS_2639 = Str__literal(U"in"); + TL_IS_2640 = Str__literal(U"instances"); + TL_IS_2641 = Str__literal(U"keyword"); + TL_IS_2642 = Str__literal(U"matches"); + TL_IS_2643 = Str__literal(U"matching"); + TL_IS_2644 = Str__literal(U"not"); + TL_IS_2645 = Str__literal(U"of"); + TL_IS_2646 = Str__literal(U"on"); + TL_IS_2647 = Str__literal(U"optionally"); + TL_IS_2648 = Str__literal(U"prefix"); + TL_IS_2649 = Str__literal(U"runs"); + TL_IS_2650 = Str__literal(U"spaced"); + TL_IS_2651 = Str__literal(U"suffix"); + TL_IS_2652 = Str__literal(U"true"); + TL_IS_2653 = Str__literal(U"unquoted"); + TL_IS_2654 = Str__literal(U"inweb"); + TL_IS_2655 = Str__literal(U"Patterns"); + TL_IS_2656 = Str__literal(U"Materials"); + TL_IS_2657 = Str__literal(U"Languages"); + TL_IS_2658 = Str__literal(U"script.mkscript"); + TL_IS_2659 = Str__literal(U"script.giscript"); + TL_IS_2660 = Str__literal(U"script.rmscript"); + TL_IS_2661 = Str__literal(U"Short Title"); + TL_IS_2662 = Str__literal(U"Short Title"); + TL_IS_2663 = Str__literal(U"Title"); + TL_IS_2664 = Str__literal(U"0"); + TL_IS_2665 = Str__literal(U"for locating programming language definitions"); + TL_IS_2666 = Str__literal(U"for analysing a web"); + TL_IS_2667 = Str__literal(U"for weaving a web"); + TL_IS_2668 = Str__literal(U"for tangling a web"); + TL_IS_2669 = Str__literal(U"for dealing with colonies of webs together"); + TL_IS_2670 = Str__literal(U".inweb"); + TL_IS_2671 = Str__literal(U"0"); + TL_IS_2672 = Str__literal(U"Title"); + TL_IS_2673 = Str__literal(U"Booklet Title"); + TL_IS_2674 = Str__literal(U"Colours"); + TL_IS_2675 = Str__literal(U"Colours"); + TL_IS_2676 = Str__literal(U""); + TL_IS_2677 = Str__literal(U"Version Number"); + TL_IS_2678 = Str__literal(U"Version Number"); + TL_IS_2679 = Str__literal(U" "); + TL_IS_2680 = Str__literal(U"template-index.html"); + TL_IS_2681 = Str__literal(U"index.html"); + TL_IS_2682 = Str__literal(U"Index"); + TL_IS_2683 = Str__literal(U"index"); + TL_IS_2684 = Str__literal(U"0"); + TL_IS_2685 = Str__literal(U"pattern.txt"); + TL_IS_2686 = Str__literal(U"Patterns"); + TL_IS_2687 = Str__literal(U"pattern.txt"); + TL_IS_2688 = Str__literal(U"pattern.txt"); + TL_IS_2689 = Str__literal(U"name"); + TL_IS_2690 = Str__literal(U"plugin"); + TL_IS_2691 = Str__literal(U"format"); + TL_IS_2692 = Str__literal(U"number sections"); + TL_IS_2693 = Str__literal(U"default range"); + TL_IS_2694 = Str__literal(U"initial extension"); + TL_IS_2695 = Str__literal(U"mathematics plugin"); + TL_IS_2696 = Str__literal(U"footnotes plugin"); + TL_IS_2697 = Str__literal(U"block template"); + TL_IS_2698 = Str__literal(U"command"); + TL_IS_2699 = Str__literal(U"bibliographic data"); + TL_IS_2700 = Str__literal(U"assets"); + TL_IS_2701 = Str__literal(U"yes"); + TL_IS_2702 = Str__literal(U"no"); + TL_IS_2703 = Str__literal(U"none"); + TL_IS_2704 = Str__literal(U"WOVENPATH"); + TL_IS_2705 = Str__literal(U"WOVEN"); + TL_IS_2706 = Str__literal(U"PROCESS "); + TL_IS_2707 = Str__literal(U"Colouring"); + TL_IS_2708 = Str__literal(U"Coloring"); + TL_IS_2709 = Str__literal(U"Colouring"); + TL_IS_2710 = Str__literal(U"Coloring"); + TL_IS_2711 = Str__literal(U""); + TL_IS_2712 = Str__literal(U"copy"); + TL_IS_2713 = Str__literal(U"copy"); + TL_IS_2714 = Str__literal(U"private copy"); + TL_IS_2715 = Str__literal(U"embed"); + TL_IS_2716 = Str__literal(U"collate"); + TL_IS_2717 = Str__literal(U"prefix"); + TL_IS_2718 = Str__literal(U"suffix"); + TL_IS_2719 = Str__literal(U"transform names"); + TL_IS_2720 = Str__literal(U""); + TL_IS_2721 = Str__literal(U"URL"); + TL_IS_2722 = Str__literal(U"URL"); + TL_IS_2723 = Str__literal(U"Inweb Version"); + TL_IS_2724 = Str__literal(U"Language"); + TL_IS_2725 = Str__literal(U"Purpose"); + TL_IS_2726 = Str__literal(U"Woven"); + TL_IS_2727 = Str__literal(U"Tangled"); + TL_IS_2728 = Str__literal(U"Title"); + TL_IS_2729 = Str__literal(U""); + TL_IS_2730 = Str__literal(U"="); + TL_IS_2731 = Str__literal(U"@"); + TL_IS_2732 = Str__literal(U"Figures"); + TL_IS_2733 = Str__literal(U"unknown [[command]]"); + TL_IS_2734 = Str__literal(U"<...> definition begins outside of a paragraph"); + TL_IS_2735 = Str__literal(U"(very early code)"); + TL_IS_2736 = Str__literal(U"(early code)"); + TL_IS_2737 = Str__literal(U"Extracts"); + TL_IS_2738 = Str__literal(U"Figures"); + TL_IS_2739 = Str__literal(U"HTML"); + TL_IS_2740 = Str__literal(U"Audio"); + TL_IS_2741 = Str__literal(U"Video"); + TL_IS_2742 = Str__literal(U"Download"); + TL_IS_2743 = Str__literal(U"Download"); + TL_IS_2744 = Str__literal(U"Carousels"); + TL_IS_2745 = Str__literal(U"Carousels"); + TL_IS_2746 = Str__literal(U"Carousels"); + TL_IS_2747 = Str__literal(U"Carousels"); + TL_IS_2748 = Str__literal(U"Carousels"); + TL_IS_2749 = Str__literal(U"Videos"); + TL_IS_2750 = Str__literal(U"unknown bracketed annotation"); + TL_IS_2751 = Str__literal(U"unknown material after '='"); + TL_IS_2752 = Str__literal(U"undisplayed"); + TL_IS_2753 = Str__literal(U"hyperlinked"); + TL_IS_2754 = Str__literal(U"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"); + TL_IS_2755 = Str__literal(U"="); + TL_IS_2756 = Str__literal(U"don't understand @command"); + TL_IS_2757 = Str__literal(U"Purpose used after bar"); + TL_IS_2758 = Str__literal(U"Interface used after bar"); + TL_IS_2759 = Str__literal(U"Definitions used after bar"); + TL_IS_2760 = Str__literal(U"second bar in the same section"); + TL_IS_2761 = Str__literal(U"enumeration constants can't supply a value"); + TL_IS_2762 = Str__literal(U"Paragraph Numbers Visibility"); + TL_IS_2763 = Str__literal(U"Off"); + TL_IS_2764 = Str__literal(U"P"); + TL_IS_2765 = Str__literal(U"S"); + TL_IS_2766 = Str__literal(U"Footnote Begins Notation"); + TL_IS_2767 = Str__literal(U"Footnote Ends Notation"); + TL_IS_2768 = Str__literal(U"Off"); + TL_IS_2769 = Str__literal(U"ifdef-"); + TL_IS_2770 = Str__literal(U"ifndef-"); + TL_IS_2771 = Str__literal(U"."); + TL_IS_2772 = Str__literal(U"This paragraph is used only if "); + TL_IS_2773 = Str__literal(U" and if "); + TL_IS_2774 = Str__literal(U" and "); + TL_IS_2775 = Str__literal(U" is"); + TL_IS_2776 = Str__literal(U" are"); + TL_IS_2777 = Str__literal(U" defined"); + TL_IS_2778 = Str__literal(U" undefined"); + TL_IS_2779 = Str__literal(U"enumeration constants must belong to a _FAMILY"); + TL_IS_2780 = Str__literal(U"this enumeration _FAMILY is unknown"); + TL_IS_2781 = Str__literal(U"this enumeration _FAMILY already exists"); + TL_IS_2782 = Str__literal(U"unrecognised interface line"); + TL_IS_2783 = Str__literal(U"."); + TL_IS_2784 = Str__literal(U".."); + TL_IS_2785 = Str__literal(U"web"); + TL_IS_2786 = Str__literal(U"default.mkscript"); + TL_IS_2787 = Str__literal(U"."); + TL_IS_2788 = Str__literal(U".."); + TL_IS_2789 = Str__literal(U"web"); + TL_IS_2790 = Str__literal(U"default.giscript"); + TL_IS_2791 = Str__literal(U"C"); + TL_IS_2792 = Str__literal(U"Dialects"); + TL_IS_2793 = Str__literal(U""); + TL_IS_2794 = Str__literal(U"Chapters"); + TL_IS_2795 = Str__literal(U"Modules"); + TL_IS_2796 = Str__literal(U"Module Page"); + TL_IS_2797 = Str__literal(U"Module Purpose"); + TL_IS_2798 = Str__literal(U"Purpose"); + TL_IS_2799 = Str__literal(U"Chapter Purpose"); + TL_IS_2800 = Str__literal(U"Section Purpose"); + TL_IS_2801 = Str__literal(U"Purpose"); + TL_IS_2802 = Str__literal(U"index.html"); + TL_IS_2803 = Str__literal(U"inweb"); + TL_IS_2804 = Str__literal(U"inweb"); + TL_IS_2805 = Str__literal(U"inweb"); + TL_IS_2806 = Str__literal(U"End of weave"); + TL_IS_2807 = Str__literal(U"Definitions"); + TL_IS_2808 = Str__literal(U"bad start to paragraph"); + TL_IS_2809 = Str__literal(U""); + TL_IS_2810 = Str__literal(U""); + TL_IS_2811 = Str__literal(U"footnote never cued"); + TL_IS_2812 = Str__literal(U"Preform"); + TL_IS_2813 = Str__literal(U"Preform"); + TL_IS_2814 = Str__literal(U"define"); + TL_IS_2815 = Str__literal(U"default"); + TL_IS_2816 = Str__literal(U"enum"); + TL_IS_2817 = Str__literal(U"Preform"); + TL_IS_2818 = Str__literal(U"This is "); + TL_IS_2819 = Str__literal(U"words: About Preform"); + TL_IS_2820 = Str__literal(U"Preform grammar"); + TL_IS_2821 = Str__literal(U"Preform grammar"); + TL_IS_2822 = Str__literal(U", not regular C code."); + TL_IS_2823 = Str__literal(U"This code is "); + TL_IS_2824 = Str__literal(U"never used"); + TL_IS_2825 = Str__literal(U", "); + TL_IS_2826 = Str__literal(U" and "); + TL_IS_2827 = Str__literal(U"used in "); + TL_IS_2828 = Str__literal(U" (twice)"); + TL_IS_2829 = Str__literal(U" (three times)"); + TL_IS_2830 = Str__literal(U" (four times)"); + TL_IS_2831 = Str__literal(U" (five times)"); + TL_IS_2832 = Str__literal(U"."); + TL_IS_2833 = Str__literal(U"The structure "); + TL_IS_2834 = Str__literal(U" is private to this section"); + TL_IS_2835 = Str__literal(U" is accessed in "); + TL_IS_2836 = Str__literal(U", "); + TL_IS_2837 = Str__literal(U" and here"); + TL_IS_2838 = Str__literal(U"."); + TL_IS_2839 = Str__literal(U"The function "); + TL_IS_2840 = Str__literal(U" appears nowhere else"); + TL_IS_2841 = Str__literal(U"none"); + TL_IS_2842 = Str__literal(U")"); + TL_IS_2843 = Str__literal(U"."); + TL_IS_2844 = Str__literal(U" is used in "); + TL_IS_2845 = Str__literal(U"), "); + TL_IS_2846 = Str__literal(U", "); + TL_IS_2847 = Str__literal(U" ("); + TL_IS_2848 = Str__literal(U" - "); + TL_IS_2849 = Str__literal(U", "); + TL_IS_2850 = Str__literal(U"Code In Code Comments Notation"); + TL_IS_2851 = Str__literal(U"Code In Commentary Notation"); + TL_IS_2852 = Str__literal(U"Off"); + TL_IS_2853 = Str__literal(U"TeX Mathematics Displayed Notation"); + TL_IS_2854 = Str__literal(U"Off"); + TL_IS_2855 = Str__literal(U"TeX Mathematics Notation"); + TL_IS_2856 = Str__literal(U"Off"); + TL_IS_2857 = Str__literal(U"Cross-References Notation"); + TL_IS_2858 = Str__literal(U"Off"); + TL_IS_2859 = Str__literal(U"http://"); + TL_IS_2860 = Str__literal(U"https://"); + TL_IS_2861 = Str__literal(U"this is a cue for a missing note"); + TL_IS_2862 = Str__literal(U"Cross-References Notation"); + TL_IS_2863 = Str__literal(U"Off"); + TL_IS_2864 = Str__literal(U"http://"); + TL_IS_2865 = Str__literal(U"https://"); + TL_IS_2866 = Str__literal(U"misplaced definition"); + TL_IS_2867 = Str__literal(U"unknown macro"); + TL_IS_2868 = Str__literal(U"Structures"); + TL_IS_2869 = Str__literal(U"Main::"); + TL_IS_2870 = Str__literal(U"Tangled output generated by inweb: do not edit"); + TL_IS_2871 = Str__literal(U"this programming language does not support @d"); + TL_IS_2872 = Str__literal(U"this programming language does not support multiline @d"); + TL_IS_2873 = Str__literal(U"Preform"); + TL_IS_2874 = Str__literal(U"Preform"); + TL_IS_2875 = Str__literal(U"Namespaces"); + TL_IS_2876 = Str__literal(U"Being internally called, this function mustn't belong to a :: namespace"); + TL_IS_2877 = Str__literal(U"Being externally called, this function must belong to a :: namespace"); + TL_IS_2878 = Str__literal(U"Structures"); + TL_IS_2879 = Str__literal(U"program ended with conditional compilation open"); + TL_IS_2880 = Str__literal(U"conditional compilation too deeply nested"); + TL_IS_2881 = Str__literal(U"found #endif without #ifdef or #ifndef"); + TL_IS_2882 = Str__literal(U"Preform"); + TL_IS_2883 = Str__literal(U"'WR[...]' notation unavailable"); + TL_IS_2884 = Str__literal(U"malformed '{ , }' formula"); + TL_IS_2885 = Str__literal(U"fail"); + TL_IS_2886 = Str__literal(U"fail production"); + TL_IS_2887 = Str__literal(U"fail nonterminal"); + TL_IS_2888 = Str__literal(U"advance "); + TL_IS_2889 = Str__literal(U"pass "); + TL_IS_2890 = Str__literal(U"lookahead"); + TL_IS_2891 = Str__literal(U"-"); + TL_IS_2892 = Str__literal(U"-"); + TL_IS_2893 = Str__literal(U"most_recent_result"); + TL_IS_2894 = Str__literal(U"most_recent_result_p"); + TL_IS_2895 = Str__literal(U"Syntax.preform"); + TL_IS_2896 = Str__literal(U"Preform Language"); + TL_IS_2897 = Str__literal(U"Preform Language"); + TL_IS_2898 = Str__literal(U"weave tree"); + TL_IS_2899 = Str__literal(U"document"); + TL_IS_2900 = Str__literal(U"head"); + TL_IS_2901 = Str__literal(U"body"); + TL_IS_2902 = Str__literal(U"tail"); + TL_IS_2903 = Str__literal(U"chapter footer"); + TL_IS_2904 = Str__literal(U"chapter header"); + TL_IS_2905 = Str__literal(U"section footer"); + TL_IS_2906 = Str__literal(U"section header"); + TL_IS_2907 = Str__literal(U"section purpose"); + TL_IS_2908 = Str__literal(U"subheading"); + TL_IS_2909 = Str__literal(U"bar"); + TL_IS_2910 = Str__literal(U"pagebreak"); + TL_IS_2911 = Str__literal(U"linebreak"); + TL_IS_2912 = Str__literal(U"paragraph"); + TL_IS_2913 = Str__literal(U"endnote"); + TL_IS_2914 = Str__literal(U"figure"); + TL_IS_2915 = Str__literal(U"extract"); + TL_IS_2916 = Str__literal(U"audio"); + TL_IS_2917 = Str__literal(U"video"); + TL_IS_2918 = Str__literal(U"download"); + TL_IS_2919 = Str__literal(U"material"); + TL_IS_2920 = Str__literal(U"embed"); + TL_IS_2921 = Str__literal(U"pmac"); + TL_IS_2922 = Str__literal(U"vskip"); + TL_IS_2923 = Str__literal(U"chapter"); + TL_IS_2924 = Str__literal(U"section"); + TL_IS_2925 = Str__literal(U"code line"); + TL_IS_2926 = Str__literal(U"function usage"); + TL_IS_2927 = Str__literal(U"commentary"); + TL_IS_2928 = Str__literal(U"carousel slide"); + TL_IS_2929 = Str__literal(U"toc"); + TL_IS_2930 = Str__literal(U"toc line"); + TL_IS_2931 = Str__literal(U"chapter_title_page"); + TL_IS_2932 = Str__literal(U"defn"); + TL_IS_2933 = Str__literal(U"source_code"); + TL_IS_2934 = Str__literal(U"url"); + TL_IS_2935 = Str__literal(U"footnote_cue"); + TL_IS_2936 = Str__literal(U"footnote"); + TL_IS_2937 = Str__literal(U"display line"); + TL_IS_2938 = Str__literal(U"function defn"); + TL_IS_2939 = Str__literal(U"item"); + TL_IS_2940 = Str__literal(U"grammar index"); + TL_IS_2941 = Str__literal(U"inline"); + TL_IS_2942 = Str__literal(U"locale"); + TL_IS_2943 = Str__literal(U"mathematics"); + TL_IS_2944 = Str__literal(U"verbatim"); + TL_IS_2945 = Str__literal(U"Weave Content"); + TL_IS_2946 = Str__literal(U"plain"); + TL_IS_2947 = Str__literal(U".txt"); + TL_IS_2948 = Str__literal(U"TeX"); + TL_IS_2949 = Str__literal(U".tex"); + TL_IS_2950 = Str__literal(U"S"); + TL_IS_2951 = Str__literal(U""); + TL_IS_2952 = Str__literal(U"Figures"); + TL_IS_2953 = Str__literal(U"weavesection"); + TL_IS_2954 = Str__literal(U"weavesections"); + TL_IS_2955 = Str__literal(U"weavesectionss"); + TL_IS_2956 = Str__literal(U"weavesectionsss"); + TL_IS_2957 = Str__literal(U"tweavesection"); + TL_IS_2958 = Str__literal(U"tweavesections"); + TL_IS_2959 = Str__literal(U"tweavesectionss"); + TL_IS_2960 = Str__literal(U"tweavesectionsss"); + TL_IS_2961 = Str__literal(U"nsweavesection"); + TL_IS_2962 = Str__literal(U"nsweavesections"); + TL_IS_2963 = Str__literal(U"HTML"); + TL_IS_2964 = Str__literal(U".html"); + TL_IS_2965 = Str__literal(U"ePub"); + TL_IS_2966 = Str__literal(U".html"); + TL_IS_2967 = Str__literal(U""); + TL_IS_2968 = Str__literal(U"private copy"); + TL_IS_2969 = Str__literal(U"Base"); + TL_IS_2970 = Str__literal(U"Colours"); + TL_IS_2971 = Str__literal(U""); + TL_IS_2972 = Str__literal(U""); + TL_IS_2973 = Str__literal(U"Breadcrumbs"); + TL_IS_2974 = Str__literal(U"Title"); + TL_IS_2975 = Str__literal(U"Short Title"); + TL_IS_2976 = Str__literal(U"Short Title"); + TL_IS_2977 = Str__literal(U"index.html"); + TL_IS_2978 = Str__literal(U"S"); + TL_IS_2979 = Str__literal(U"Sequential Section Ranges"); + TL_IS_2980 = Str__literal(U"On"); + TL_IS_2981 = Str__literal(U"Figures"); + TL_IS_2982 = Str__literal(U"HTML"); + TL_IS_2983 = Str__literal(U"Unable to find this HTML extract"); + TL_IS_2984 = Str__literal(U"Audio"); + TL_IS_2985 = Str__literal(U"Video"); + TL_IS_2986 = Str__literal(U"Downloads"); + TL_IS_2987 = Str__literal(U"Embedding"); + TL_IS_2988 = Str__literal(U"Download.html"); + TL_IS_2989 = Str__literal(U"Downloads are not supported"); + TL_IS_2990 = Str__literal(U"Downloads"); + TL_IS_2991 = Str__literal(U"Download file missing or empty"); + TL_IS_2992 = Str__literal(U"File Name"); + TL_IS_2993 = Str__literal(U"File URL"); + TL_IS_2994 = Str__literal(U"File Details"); + TL_IS_2995 = Str__literal(U" byte"); + TL_IS_2996 = Str__literal(U" bytes"); + TL_IS_2997 = Str__literal(U"kB"); + TL_IS_2998 = Str__literal(U"MB"); + TL_IS_2999 = Str__literal(U"GB"); + TL_IS_3000 = Str__literal(U"405"); + TL_IS_3001 = Str__literal(U"720"); + TL_IS_3002 = Str__literal(U"Embedding"); + TL_IS_3003 = Str__literal(U"This is not a supported service"); + TL_IS_3004 = Str__literal(U"Content ID"); + TL_IS_3005 = Str__literal(U"Content Width"); + TL_IS_3006 = Str__literal(U"Content Height"); + TL_IS_3007 = Str__literal(U"named-paragraph-link"); + TL_IS_3008 = Str__literal(U"function-link"); + TL_IS_3009 = Str__literal(U"Carousel"); + TL_IS_3010 = Str__literal(U"carousel-number"); + TL_IS_3011 = Str__literal(U"carousel-caption"); + TL_IS_3012 = Str__literal(U"carousel-caption-above"); + TL_IS_3013 = Str__literal(U"carousel-number-above"); + TL_IS_3014 = Str__literal(U"carousel-caption-below"); + TL_IS_3015 = Str__literal(U"carousel-number-below"); + TL_IS_3016 = Str__literal(U"external"); + TL_IS_3017 = Str__literal(U"internal"); + TL_IS_3018 = Str__literal(U"Popups"); + TL_IS_3019 = Str__literal(U"*"); + TL_IS_3020 = Str__literal(U"paragraph-anchor"); + TL_IS_3021 = Str__literal(U"Title"); + TL_IS_3022 = Str__literal(U"Base"); + TL_IS_3023 = Str__literal(U"Base.css"); + TL_IS_3024 = Str__literal(U"TestingInweb"); + TL_IS_3025 = Str__literal(U".txt"); + TL_IS_3026 = Str__literal(U".pdf"); + TL_IS_3027 = Str__literal(U"not"); + TL_IS_3028 = Str__literal(U"leq"); + TL_IS_3029 = Str__literal(U"geq"); + TL_IS_3030 = Str__literal(U"sim"); + TL_IS_3031 = Str__literal(U"hbox"); + TL_IS_3032 = Str__literal(U"left"); + TL_IS_3033 = Str__literal(U"right"); + TL_IS_3034 = Str__literal(U"Rightarrow"); + TL_IS_3035 = Str__literal(U"Leftrightarrow"); + TL_IS_3036 = Str__literal(U"to"); + TL_IS_3037 = Str__literal(U"rightarrow"); + TL_IS_3038 = Str__literal(U"longrightarrow"); + TL_IS_3039 = Str__literal(U"leftarrow"); + TL_IS_3040 = Str__literal(U"longleftarrow"); + TL_IS_3041 = Str__literal(U"lbrace"); + TL_IS_3042 = Str__literal(U"mid"); + TL_IS_3043 = Str__literal(U"rbrace"); + TL_IS_3044 = Str__literal(U"cdot"); + TL_IS_3045 = Str__literal(U"cdots"); + TL_IS_3046 = Str__literal(U"dots"); + TL_IS_3047 = Str__literal(U"times"); + TL_IS_3048 = Str__literal(U"quad"); + TL_IS_3049 = Str__literal(U"qquad"); + TL_IS_3050 = Str__literal(U"TeX"); + TL_IS_3051 = Str__literal(U"neq"); + TL_IS_3052 = Str__literal(U"noteq"); + TL_IS_3053 = Str__literal(U"ell"); + TL_IS_3054 = Str__literal(U"log"); + TL_IS_3055 = Str__literal(U"exp"); + TL_IS_3056 = Str__literal(U"sin"); + TL_IS_3057 = Str__literal(U"cos"); + TL_IS_3058 = Str__literal(U"tan"); + TL_IS_3059 = Str__literal(U"top"); + TL_IS_3060 = Str__literal(U"Alpha"); + TL_IS_3061 = Str__literal(U"Beta"); + TL_IS_3062 = Str__literal(U"Gamma"); + TL_IS_3063 = Str__literal(U"Delta"); + TL_IS_3064 = Str__literal(U"Epsilon"); + TL_IS_3065 = Str__literal(U"Zeta"); + TL_IS_3066 = Str__literal(U"Eta"); + TL_IS_3067 = Str__literal(U"Theta"); + TL_IS_3068 = Str__literal(U"Iota"); + TL_IS_3069 = Str__literal(U"Kappa"); + TL_IS_3070 = Str__literal(U"Lambda"); + TL_IS_3071 = Str__literal(U"Mu"); + TL_IS_3072 = Str__literal(U"Nu"); + TL_IS_3073 = Str__literal(U"Xi"); + TL_IS_3074 = Str__literal(U"Omicron"); + TL_IS_3075 = Str__literal(U"Pi"); + TL_IS_3076 = Str__literal(U"Rho"); + TL_IS_3077 = Str__literal(U"Varsigma"); + TL_IS_3078 = Str__literal(U"Sigma"); + TL_IS_3079 = Str__literal(U"Tau"); + TL_IS_3080 = Str__literal(U"Upsilon"); + TL_IS_3081 = Str__literal(U"Phi"); + TL_IS_3082 = Str__literal(U"Chi"); + TL_IS_3083 = Str__literal(U"Psi"); + TL_IS_3084 = Str__literal(U"Omega"); + TL_IS_3085 = Str__literal(U"alpha"); + TL_IS_3086 = Str__literal(U"beta"); + TL_IS_3087 = Str__literal(U"gamma"); + TL_IS_3088 = Str__literal(U"delta"); + TL_IS_3089 = Str__literal(U"epsilon"); + TL_IS_3090 = Str__literal(U"zeta"); + TL_IS_3091 = Str__literal(U"eta"); + TL_IS_3092 = Str__literal(U"theta"); + TL_IS_3093 = Str__literal(U"iota"); + TL_IS_3094 = Str__literal(U"kappa"); + TL_IS_3095 = Str__literal(U"lambda"); + TL_IS_3096 = Str__literal(U"mu"); + TL_IS_3097 = Str__literal(U"nu"); + TL_IS_3098 = Str__literal(U"xi"); + TL_IS_3099 = Str__literal(U"omicron"); + TL_IS_3100 = Str__literal(U"pi"); + TL_IS_3101 = Str__literal(U"rho"); + TL_IS_3102 = Str__literal(U"varsigma"); + TL_IS_3103 = Str__literal(U"sigma"); + TL_IS_3104 = Str__literal(U"tau"); + TL_IS_3105 = Str__literal(U"upsilon"); + TL_IS_3106 = Str__literal(U"phi"); + TL_IS_3107 = Str__literal(U"chi"); + TL_IS_3108 = Str__literal(U"psi"); + TL_IS_3109 = Str__literal(U"omega"); + TL_IS_3110 = Str__literal(U"exists"); + TL_IS_3111 = Str__literal(U"in"); + TL_IS_3112 = Str__literal(U"forall"); + TL_IS_3113 = Str__literal(U"cap"); + TL_IS_3114 = Str__literal(U"emptyset"); + TL_IS_3115 = Str__literal(U"subseteq"); + TL_IS_3116 = Str__literal(U"land"); + TL_IS_3117 = Str__literal(U"lor"); + TL_IS_3118 = Str__literal(U"lnot"); + TL_IS_3119 = Str__literal(U"sum"); + TL_IS_3120 = Str__literal(U"prod"); + TL_IS_3121 = Str__literal(U"n"); + TL_IS_3122 = Str__literal(U"t"); + TL_IS_3123 = Str__literal(U"exists"); + TL_IS_3124 = Str__literal(U"forall"); + TL_IS_3125 = Str__literal(U"platform-settings"); + TL_IS_3126 = Str__literal(U"identity-settings"); + TL_IS_3127 = Str__literal(U"modify-filenames"); + TL_IS_3128 = Str__literal(U"original: ORIGINAL ?suffix: SUFFIX ?prefix: PREFIX"); + TL_IS_3129 = Str__literal(U"component"); + TL_IS_3130 = Str__literal(U"symbol: SYMBOL webname: WEBNAME path: PATH set: SET type: TYPE"); + TL_IS_3131 = Str__literal(U"dependent-files"); + TL_IS_3132 = Str__literal(U"?tool: TOOL ?module: MODULES ?tool-and-modules: BOTH"); + TL_IS_3133 = Str__literal(U"components"); + TL_IS_3134 = Str__literal(U"type: TYPE ?set: SET"); + TL_IS_3135 = Str__literal(U"intest"); + TL_IS_3136 = Str__literal(U"platform-settings.mk"); + TL_IS_3137 = Str__literal(U"Materials"); + TL_IS_3138 = Str__literal(U"platforms"); + TL_IS_3139 = Str__literal(U"tool"); + TL_IS_3140 = Str__literal(U"web"); + TL_IS_3141 = Str__literal(U"module"); + TL_IS_3142 = Str__literal(U"SYMBOL"); + TL_IS_3143 = Str__literal(U"all"); + TL_IS_3144 = Str__literal(U"tool"); + TL_IS_3145 = Str__literal(U"web"); + TL_IS_3146 = Str__literal(U"module"); + TL_IS_3147 = Str__literal(U"all"); + TL_IS_3148 = Str__literal(U"basics"); + TL_IS_3149 = Str__literal(U"default.giscript"); + TL_IS_3150 = Str__literal(U"tags"); + TL_IS_3151 = Str__literal(U"bibliographic"); + TL_IS_3152 = Str__literal(U"datum: DATUM of: ASSET"); + TL_IS_3153 = Str__literal(U"Build Date"); + TL_IS_3154 = Str__literal(U"Version Number"); + TL_IS_3155 = Str__literal(U"Build Date"); + TL_IS_3156 = Str__literal(U"Version Number"); + TL_IS_3157 = Str__literal(U"inform6"); + TL_IS_3158 = Str__literal(U"header.h"); + TL_IS_3159 = Str__literal(U"(manifest).txt"); + TL_IS_3160 = Str__literal(U"README.txt"); + TL_IS_3161 = Str__literal(U"README.md"); + TL_IS_3162 = Str__literal(U"docs"); + TL_IS_3163 = Str__literal(U"web"); + TL_IS_3164 = Str__literal(U"module"); + TL_IS_3165 = Str__literal(U".inweb"); + TL_IS_3166 = Str__literal(U".inweb"); + TL_IS_3167 = Str__literal(U"docs"); + TL_IS_3168 = Str__literal(U"Multiple cross-references might be meant here"); + TL_IS_3169 = Str__literal(U"(main)"); } diff --git a/foundation-module/Chapter 1/Foundation Module.w b/foundation-module/Chapter 1/Foundation Module.w index c4ead68f..79facf5f 100644 --- a/foundation-module/Chapter 1/Foundation Module.w +++ b/foundation-module/Chapter 1/Foundation Module.w @@ -45,7 +45,8 @@ supplied instead for that case. #include #include #include -#include + +typedef uint32_t inchar32_t; @ = text_stream *DL = NULL; /* Current destination of debugging text: kept |NULL| until opened */ @@ -118,10 +119,10 @@ which a narrative is printed, or not printed, to the debugging log file. The following are always provided, but are all off by default. @ = - Log::declare_aspect(DEBUGGING_LOG_INCLUSIONS_DA, L"debugging log inclusions", FALSE, FALSE); - Log::declare_aspect(SHELL_USAGE_DA, L"shell usage", FALSE, FALSE); - Log::declare_aspect(MEMORY_USAGE_DA, L"memory usage", FALSE, FALSE); - Log::declare_aspect(TEXT_FILES_DA, L"text files", FALSE, FALSE); + Log::declare_aspect(DEBUGGING_LOG_INCLUSIONS_DA, U"debugging log inclusions", FALSE, FALSE); + Log::declare_aspect(SHELL_USAGE_DA, U"shell usage", FALSE, FALSE); + Log::declare_aspect(MEMORY_USAGE_DA, U"memory usage", FALSE, FALSE); + Log::declare_aspect(TEXT_FILES_DA, U"text files", FALSE, FALSE); @ Debugging log writers are similar to stream writers, but implement the |$| escapes only available to the debugging log. For example, |$S| calls the @@ -150,20 +151,20 @@ than to exit cleanly, to make it easier to diagnose in a debugger. @ = CommandLine::begin_group(FOUNDATION_CLSG, NULL); - CommandLine::declare_switch(LOG_CLSW, L"log", 2, - L"write the debugging log to include diagnostics on X"); - CommandLine::declare_switch(VERSION_CLSW, L"version", 1, - L"print out version number"); - CommandLine::declare_boolean_switch(CRASH_CLSW, L"crash", 1, - L"intentionally crash on internal errors, for backtracing", FALSE); - CommandLine::declare_switch(HELP_CLSW, L"help", 1, - L"print this help information"); - CommandLine::declare_boolean_switch(FIXTIME_CLSW, L"fixtime", 1, - L"pretend the time is 11 a.m. on 28 March 2016 for testing", FALSE); - CommandLine::declare_switch(AT_CLSW, L"at", 2, - L"specify that this tool is installed at X"); - CommandLine::declare_switch(LOCALE_CLSW, L"locale", 2, - L"set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1"); + CommandLine::declare_switch(LOG_CLSW, U"log", 2, + U"write the debugging log to include diagnostics on X"); + CommandLine::declare_switch(VERSION_CLSW, U"version", 1, + U"print out version number"); + CommandLine::declare_boolean_switch(CRASH_CLSW, U"crash", 1, + U"intentionally crash on internal errors, for backtracing", FALSE); + CommandLine::declare_switch(HELP_CLSW, U"help", 1, + U"print this help information"); + CommandLine::declare_boolean_switch(FIXTIME_CLSW, U"fixtime", 1, + U"pretend the time is 11 a.m. on 28 March 2016 for testing", FALSE); + CommandLine::declare_switch(AT_CLSW, U"at", 2, + U"specify that this tool is installed at X"); + CommandLine::declare_switch(LOCALE_CLSW, U"locale", 2, + U"set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1"); CommandLine::end_group(); @ Once the following has been called, it is not safe to use any of the diff --git a/foundation-module/Chapter 1/POSIX Platforms.w b/foundation-module/Chapter 1/POSIX Platforms.w index e16debe1..8d64cca8 100644 --- a/foundation-module/Chapter 1/POSIX Platforms.w +++ b/foundation-module/Chapter 1/POSIX Platforms.w @@ -78,7 +78,7 @@ slashes, meaning a folder (i.e. directory) divide in either case. So: (b) When testing for such a divider, call the following. = -int Platform::is_folder_separator(wchar_t c) { +int Platform::is_folder_separator(inchar32_t c) { return (c == FOLDER_SEPARATOR); } @@ -112,7 +112,7 @@ always be unavailable: that doesn't mean we can't run on those platforms, just that installation and use of Foundation-built tools is less convenient.) = -void Platform::where_am_i(wchar_t *p, size_t length) { +void Platform::where_am_i(inchar32_t *p, size_t length) { char buffer[PATH_MAX + 1]; @; @; @@ -133,7 +133,7 @@ encoding, and possibly in a multibyte encoding such as UTF-8) to a wide-char string. @ = - size_t convert_len = mbstowcs(p, buffer, length); + size_t convert_len = mbstowcs((wchar_t *) p, buffer, length); if (convert_len == (size_t)-1) @; // wouldn't fit @ And now the Mac version: ^"ifdef-PLATFORM_MACOS" @@ -141,7 +141,7 @@ string. = (very early code) int _NSGetExecutablePath(char* buf, uint32_t* bufsize); -void Platform::where_am_i(wchar_t *p, size_t length) { +void Platform::where_am_i(inchar32_t *p, size_t length) { char relative_path[4 * PATH_MAX + 1]; char absolute_path[PATH_MAX + 1]; size_t convert_len; @@ -156,21 +156,21 @@ void Platform::where_am_i(wchar_t *p, size_t length) { /* Next, convert the obtained buffer (which is a string in the local * filename encoding, possibly multibyte) to a wide-char string. */ - convert_len = mbstowcs(p, absolute_path, length); + convert_len = mbstowcs((wchar_t *) p, absolute_path, length); if (convert_len == (size_t)-1) @; } @ For Unix, there's nothing we can generically do. ^"ifdef-PLATFORM_UNIX" = -void Platform::where_am_i(wchar_t *p, size_t length) { +void Platform::where_am_i(inchar32_t *p, size_t length) { @; } @ On Android, there's no real need for this. ^"ifdef-PLATFORM_ANDROID" = -void Platform::where_am_i(wchar_t *p, size_t length) { +void Platform::where_am_i(inchar32_t *p, size_t length) { @; } diff --git a/foundation-module/Chapter 1/Windows Platform.w b/foundation-module/Chapter 1/Windows Platform.w index 320299f6..c39be19f 100644 --- a/foundation-module/Chapter 1/Windows Platform.w +++ b/foundation-module/Chapter 1/Windows Platform.w @@ -27,26 +27,6 @@ on a POSIX operating system. #undef IN #undef OUT -@ A Windows-safe form of |isdigit|. Annoyingly, the C specification allows -the implementation to have |char| either signed or unsigned. On Windows it's -generally signed. Now, consider what happens with a character value of -acute-e. This has an |unsigned char| value of 233. When stored in a |char| -on Windows, this becomes a value of |-23|. When this is passed to |isdigit()|, -we need to consider the prototype for |isdigit()|: - -|int isdigit(int);| - -So, when casting to int we get |-23|, not |233|. Unfortunately the return value -from |isdigit()| is only defined by the C specification for values in the -range 0 to 255 (and also EOF), so the return value for |-23| is undefined. - -@d isdigit(x) Platform::Windows_isdigit(x) - -= -int Platform::Windows_isdigit(int c) { - return ((c >= '0') && (c <= '9')) ? 1 : 0; -} - @h Folder separator. When using a Unix-like system such as Cygwin or MSYS2 on Windows, it's inevitable that paths will sometimes contain backslashes and sometimes forward @@ -55,7 +35,7 @@ slashes, meaning a folder (i.e. directory) divide in either case. So: (b) When testing for such a divider, call the following. = -int Platform::is_folder_separator(wchar_t c) { +int Platform::is_folder_separator(inchar32_t c) { return ((c == '\\') || (c == '/')); } @@ -87,9 +67,27 @@ always be unavailable: that doesn't mean we can't run on those platforms, just that installation and use of Foundation-built tools is less convenient.) = -void Platform::where_am_i(wchar_t *p, size_t length) { - DWORD result = GetModuleFileNameW(NULL, p, (DWORD)length); - if ((result == 0) || (result == length)) p[0] = 0; +void Platform::where_am_i(inchar32_t *p, size_t length) { + WCHAR path[_MAX_PATH]; + DWORD result = GetModuleFileNameW(NULL, path, _MAX_PATH); + if ((result == 0) || (result >= _MAX_PATH)) + { + p[0] = 0; + return; + } + + size_t i = 0; + while (1) + { + if ((i >= length) || (i >= _MAX_PATH)) + { + p[0] = 0; + return; + } + p[i] = (inchar32_t)path[i]; + if (p[i] == '\0') return; + i++; + } } @h Shell commands. @@ -396,7 +394,11 @@ void Platform::configure_terminal(void) { = (very early code) typedef HANDLE foundation_thread; -typedef int foundation_thread_attributes; +typedef struct Win32_Thread_Attrs +{ + SIZE_T StackSize; +} +foundation_thread_attributes; struct Win32_Thread_Start { void *(*fn)(void *); void* arg; }; @@ -414,7 +416,7 @@ int Platform::create_thread(foundation_thread *pt, const foundation_thread_attri struct Win32_Thread_Start* start = (struct Win32_Thread_Start*) malloc(sizeof (struct Win32_Thread_Start)); start->fn = fn; start->arg = arg; - HANDLE thread = CreateThread(0, 0, Platform::Win32_Thread_Func, start, 0, 0); + HANDLE thread = CreateThread(0, pa->StackSize, Platform::Win32_Thread_Func, start, 0, 0); if (thread == 0) { free(start); return 1; @@ -429,10 +431,11 @@ int Platform::join_thread(foundation_thread pt, void** rv) { } void Platform::init_thread(foundation_thread_attributes* pa, size_t size) { + pa->StackSize = size; } size_t Platform::get_thread_stack_size(foundation_thread_attributes* pa) { - return 1000000; /* 1Mb, the Windows default */ + return pa->StackSize; } @ This function returns the number of logical cores in the host computer -- diff --git a/foundation-module/Chapter 2/Debugging Log.w b/foundation-module/Chapter 2/Debugging Log.w index cf81a87c..67f23b71 100644 --- a/foundation-module/Chapter 2/Debugging Log.w +++ b/foundation-module/Chapter 2/Debugging Log.w @@ -61,7 +61,7 @@ trace-sentences mode, that is, between asterisk sentences. int das_created = FALSE; debugging_aspect the_debugging_aspects[NO_DEFINED_DA_VALUES]; -void Log::declare_aspect(int a, wchar_t *name, int def, int alt) { +void Log::declare_aspect(int a, inchar32_t *name, int def, int alt) { if (das_created == FALSE) { das_created = TRUE; @; @@ -85,7 +85,7 @@ void Log::declare_aspect(int a, wchar_t *name, int def, int alt) { @ = WRITE_TO(da->negated_name, "no-"); for (int i=0; name[i]; i++) { - wchar_t c = name[i]; + inchar32_t c = name[i]; PUT_TO(da->unhyphenated_name, c); if (Characters::is_space_or_tab(c)) c = '-'; PUT_TO(da->hyphenated_name, c); @@ -209,9 +209,9 @@ print out a list of debugging aspects to |STDOUT|. = int Log::set_aspect_from_command_line(text_stream *name, int give_error) { int list_mode = FALSE; - if (Str::eq_wide_string(name, L"everything")) { Log::set_all_aspects(TRUE); return TRUE; } - if (Str::eq_wide_string(name, L"nothing")) { Log::set_all_aspects(FALSE); return TRUE; } - if (Str::eq_wide_string(name, L"list")) list_mode = TRUE; + if (Str::eq_wide_string(name, U"everything")) { Log::set_all_aspects(TRUE); return TRUE; } + if (Str::eq_wide_string(name, U"nothing")) { Log::set_all_aspects(FALSE); return TRUE; } + if (Str::eq_wide_string(name, U"list")) list_mode = TRUE; for (int i=0; ivacant) internal_error("read vacant dictionary entry"); return E->value; } -void *Dictionaries::read_value_literal(dictionary *D, wchar_t *key) { +void *Dictionaries::read_value_literal(dictionary *D, inchar32_t *key) { if (D == NULL) return NULL; if (D->textual) internal_error("textual dictionary accessed as pointy"); dict_entry *E = Dictionaries::find_literal(D, key); @@ -229,7 +229,7 @@ void Dictionaries::write_value(dictionary *D, text_stream *key, void *val) { if (E->vacant) internal_error("wrote vacant dictionary entry"); E->value = val; } -void Dictionaries::write_value_literal(dictionary *D, wchar_t *key, void *val) { +void Dictionaries::write_value_literal(dictionary *D, inchar32_t *key, void *val) { if (D == NULL) internal_error("wrote to null dictionary"); if (D->textual) internal_error("textual dictionary accessed as pointy"); dict_entry *E = Dictionaries::find_literal(D, key); @@ -248,7 +248,7 @@ text_stream *Dictionaries::create_text(dictionary *D, text_stream *key) { dict_entry *E = Dictionaries::create(D, key); return (text_stream *) E->value; } -text_stream *Dictionaries::create_text_literal(dictionary *D, wchar_t *lit) { +text_stream *Dictionaries::create_text_literal(dictionary *D, inchar32_t *lit) { if (D == NULL) internal_error("wrote to null dictionary"); if (D->textual == FALSE) internal_error("pointy dictionary accessed as textual"); dict_entry *E = Dictionaries::create_literal(D, lit); @@ -267,7 +267,7 @@ text_stream *Dictionaries::get_text(dictionary *D, text_stream *key) { return (text_stream *) E->value; } -text_stream *Dictionaries::get_text_literal(dictionary *D, wchar_t *lit) { +text_stream *Dictionaries::get_text_literal(dictionary *D, inchar32_t *lit) { if (D == NULL) return NULL; if (D->textual == FALSE) internal_error("pointy dictionary accessed as textual"); dict_entry *E = Dictionaries::find_literal(D, lit); diff --git a/foundation-module/Chapter 2/Streams.w b/foundation-module/Chapter 2/Streams.w index 793bcc0d..d1b2e4bb 100644 --- a/foundation-module/Chapter 2/Streams.w +++ b/foundation-module/Chapter 2/Streams.w @@ -132,7 +132,7 @@ old one. |TEMP| is a different stream each time it is created, so it does not violate the rule that every stream is opened and closed once only. @d TEMPORARY_TEXT(T) - wchar_t T##_dest[2048]; + inchar32_t T##_dest[2048]; text_stream T##_stream_structure = Streams::new_buffer(2048, T##_dest); text_stream *T = &T##_stream_structure; @@ -236,7 +236,7 @@ typedef struct text_stream { int stream_flags; /* bitmap of the |*_STRF| values above */ FILE *write_to_file; /* for an open stream, exactly one of these is |NULL| */ struct HTML_file_state *as_HTML; /* relevant only to the |HTML::| section */ - wchar_t *write_to_memory; + inchar32_t *write_to_memory; struct filename *file_written; /* ditto */ int chars_written; /* number of characters sent, counting |\n| as 1 */ int chars_capacity; /* maximum number the stream can accept without claiming more resources */ @@ -441,7 +441,7 @@ int Streams::open_to_memory(text_stream *stream, int capacity) { if (stream == NULL) internal_error("tried to open NULL stream"); capacity += SPACE_AT_END_OF_STREAM; Streams::initialise(stream, FOR_OM_STRF); - stream->write_to_memory = Memory::calloc(capacity, sizeof(wchar_t), STREAM_MREASON); + stream->write_to_memory = Memory::calloc(capacity, sizeof(inchar32_t), STREAM_MREASON); if (stream->write_to_memory == NULL) return FALSE; (stream->write_to_memory)[0] = 0; stream->stream_flags |= MALLOCED_STRF; @@ -453,7 +453,7 @@ int Streams::open_to_memory(text_stream *stream, int capacity) { already available. If called validly, this cannot fail. = -text_stream Streams::new_buffer(int capacity, wchar_t *at) { +text_stream Streams::new_buffer(int capacity, inchar32_t *at) { if (at == NULL) internal_error("tried to make stream wrapper for NULL string"); if (capacity < SPACE_AT_END_OF_STREAM) internal_error("memory stream too small"); @@ -471,15 +471,14 @@ by a C string. First, a wide string (a sequence of 32-bit Unicode code points, null terminated): = -int Streams::open_from_wide_string(text_stream *stream, const wchar_t *c_string) { +int Streams::open_from_wide_string(text_stream *stream, const inchar32_t *c_string, int capacity) { if (stream == NULL) internal_error("tried to open NULL stream"); - int capacity = (c_string)?((int) wcslen(c_string)):0; @; if (c_string) Streams::write_wide_string(stream, c_string); return TRUE; } -void Streams::write_wide_string(text_stream *stream, const wchar_t *c_string) { +void Streams::write_wide_string(text_stream *stream, const inchar32_t *c_string) { for (int i=0; c_string[i]; i++) Streams::putc(c_string[i], stream); } @@ -496,7 +495,7 @@ int Streams::open_from_ISO_string(text_stream *stream, const char *c_string) { } void Streams::write_ISO_string(text_stream *stream, const char *c_string) { - for (int i=0; c_string[i]; i++) Streams::putc(c_string[i], stream); + for (int i=0; c_string[i]; i++) Streams::putci(c_string[i], stream); } @ Finally, a UTF-8 encoded C string: @@ -512,7 +511,7 @@ int Streams::open_from_UTF8_string(text_stream *stream, const char *c_string) { void Streams::write_UTF8_string(text_stream *stream, const char *c_string) { unicode_file_buffer ufb = TextFiles::create_ufb(); - int c; + inchar32_t c; while ((c = TextFiles::utf8_fgetc(NULL, &c_string, &ufb)) != 0) Streams::putc(c, stream); } @@ -529,7 +528,7 @@ void Streams::write_UTF8_string(text_stream *stream, const char *c_string) { Now for the converse problem. = -void Streams::write_as_wide_string(wchar_t *C_string, text_stream *stream, int buffer_size) { +void Streams::write_as_wide_string(inchar32_t *C_string, text_stream *stream, int buffer_size) { if (buffer_size == 0) return; if (stream == NULL) { C_string[0] = 0; return; } if (stream->write_to_file) internal_error("stream_get_text on file stream"); @@ -556,7 +555,7 @@ void Streams::write_as_ISO_string(char *C_string, text_stream *stream, int buffe while (stream) { for (int j=0; jchars_written; j++) { if (i >= buffer_size-1) break; - wchar_t c = stream->write_to_memory[j]; + inchar32_t c = stream->write_to_memory[j]; if (c < 256) C_string[i++] = (char) c; else C_string[i++] = '?'; } stream = stream->stream_continues; @@ -684,9 +683,9 @@ how continuations are made, below. @ = if ((stream->stream_flags) & MALLOCED_STRF) { - wchar_t *mem = stream->write_to_memory; + inchar32_t *mem = stream->write_to_memory; stream->write_to_memory = NULL; - Memory::I7_free(mem, STREAM_MREASON, stream->chars_capacity*((int) sizeof(wchar_t))); + Memory::I7_free(mem, STREAM_MREASON, stream->chars_capacity*((int) sizeof(inchar32_t))); stream = NULL; } @@ -694,9 +693,7 @@ how continuations are made, below. Our equivalent of |fputc| reads: = -void Streams::putc(int c_int, text_stream *stream) { - unsigned int c; - if (c_int >= 0) c = (unsigned int) c_int; else c = (unsigned int) (c_int + 256); +void Streams::putc(inchar32_t c, text_stream *stream) { if (stream == NULL) return; text_stream *first_stream = stream; if (c != '\n') @; @@ -732,18 +729,24 @@ void Streams::putc(int c_int, text_stream *stream) { } else if (stream->write_to_memory) { if ((c >= 0x0300) && (c <= 0x036F) && (stream->chars_written > 0)) { unsigned int newc = (unsigned int) Characters::combine_accent( - (int) c, (stream->write_to_memory)[stream->chars_written - 1]); + c, (stream->write_to_memory)[stream->chars_written - 1]); if (newc) { c = newc; stream->chars_written--; } } - (stream->write_to_memory)[stream->chars_written] = (wchar_t) c; + (stream->write_to_memory)[stream->chars_written] = c; } if (c == '\n') first_stream->stream_flags |= INDENT_PENDING_STRF; stream->chars_written++; } +void Streams::putci(int c_int, text_stream *stream) { + inchar32_t c; + if (c_int >= 0) c = (inchar32_t) c_int; else c = (inchar32_t) (c_int + 256); + Streams::putc(c, stream); +} + @ Where we pack large character values, up to 65535, as follows. @ = @@ -794,7 +797,7 @@ hold any escape sequence when opened. if (stream->chars_written + SPACE_AT_END_OF_STREAM >= stream->chars_capacity) { if (stream->write_to_file) return; /* write nothing further */ if (stream->write_to_memory) { - int offset = (32 + 2*(stream->chars_capacity))*((int) sizeof(wchar_t)); + int offset = (32 + 2*(stream->chars_capacity))*((int) sizeof(inchar32_t)); int needed = offset + ((int) sizeof(text_stream)) + 32; void *further_allocation = Memory::malloc(needed, STREAM_MREASON); if (further_allocation == NULL) Errors::fatal("Out of memory"); @@ -815,7 +818,7 @@ void Streams::literal(text_stream *stream, char *p) { if (stream == NULL) return; int i, x = ((stream->stream_flags) & USES_XML_ESCAPES_STRF); if (x) stream->stream_flags -= USES_XML_ESCAPES_STRF; - for (i=0; p[i]; i++) Streams::putc((int) p[i], stream); + for (i=0; p[i]; i++) Streams::putci(p[i], stream); if (x) stream->stream_flags += USES_XML_ESCAPES_STRF; } @@ -888,7 +891,7 @@ int Streams::latest(text_stream *stream) { zero byte found, so that putting a zero truncates it. = -wchar_t Streams::get_char_at_index(text_stream *stream, int position) { +inchar32_t Streams::get_char_at_index(text_stream *stream, int position) { if (stream == NULL) internal_error("examining null stream"); if (stream->write_to_file) internal_error("examining file stream"); while (position >= stream->chars_written) { @@ -900,7 +903,7 @@ wchar_t Streams::get_char_at_index(text_stream *stream, int position) { return (stream->write_to_memory)[position]; } -void Streams::put_char_at_index(text_stream *stream, int position, wchar_t C) { +void Streams::put_char_at_index(text_stream *stream, int position, inchar32_t C) { if (stream == NULL) internal_error("modifying null stream"); if (stream->write_to_file) internal_error("modifying file stream"); if (stream->stream_flags & READ_ONLY_STRF) internal_error("modifying read-only stream"); @@ -956,7 +959,7 @@ void Streams::copy(text_stream *to, text_stream *from) { if (from->write_to_file) internal_error("stream_copy from file stream"); if (from->write_to_memory) { for (int i=0; ichars_written; i++) { - int c = (int) ((from->write_to_memory)[i]); + inchar32_t c = (from->write_to_memory)[i]; Streams::putc(c, to); } if (from->stream_continues) Streams::copy(to, from->stream_continues); diff --git a/foundation-module/Chapter 2/Writers and Loggers.w b/foundation-module/Chapter 2/Writers and Loggers.w index c1408fa8..43aa3bdb 100644 --- a/foundation-module/Chapter 2/Writers and Loggers.w +++ b/foundation-module/Chapter 2/Writers and Loggers.w @@ -87,8 +87,8 @@ void Writers::register_logger_I(int esc, void (*f)(text_stream *, int)) { void Writers::register_writer_p(int set, int esc, void *f, int cat) { if (escapes_registered == FALSE) @; if ((esc < 0) || (esc >= 128) || - ((Characters::isalpha((wchar_t) esc) == FALSE) && - (Characters::isdigit((wchar_t) esc) == FALSE))) + ((Characters::isalpha((inchar32_t) esc) == FALSE) && + (Characters::isdigit((inchar32_t) esc) == FALSE))) internal_error("nonalphabetic escape"); if (escapes_category[set][esc] != VACANT_ECAT) { WRITE_TO(STDERR, "Clashing escape is %s%c\n", (set == 0)?"%":"$", esc); @@ -148,12 +148,12 @@ void Writers::printf(text_stream *stream, char *fmt, ...) { case '"': if (stream->stream_flags & USES_I6_ESCAPES_STRF) Streams::putc('~', stream); - else Streams::putc(*p, stream); + else Streams::putci(*p, stream); break; case '\n': - Streams::putc(*p, stream); + Streams::putci(*p, stream); break; - default: Streams::putc(*p, stream); break; + default: Streams::putci(*p, stream); break; } } va_end(ap); /* macro to end variable argument processing */ @@ -239,28 +239,28 @@ file encodings, but expanding |%s| does not. switch (esc_number) { case 'c': { /* |char| is promoted to |int| in variable arguments */ int ival = va_arg(ap, int); - Streams::putc(ival, stream); + Streams::putci(ival, stream); break; } case 'd': case 'i': case 'x': { int ival = va_arg(ap, int); char temp[256]; if (snprintf(temp, 255, format_string, ival) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams::putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams::putci(temp[j], stream); break; } case 'g': { double dval = va_arg(ap, double); char temp[256]; if (snprintf(temp, 255, format_string, dval) >= 255) strcpy(temp, "?"); - for (int j = 0; temp[j]; j++) Streams::putc(temp[j], stream); + for (int j = 0; temp[j]; j++) Streams::putci(temp[j], stream); break; } case 's': - for (char *sval = va_arg(ap, char *); *sval; sval++) Streams::putc(*sval, stream); + for (char *sval = va_arg(ap, char *); *sval; sval++) Streams::putci(*sval, stream); break; case 'w': { - wchar_t *W = (wchar_t *) va_arg(ap, wchar_t *); + inchar32_t *W = (inchar32_t *) va_arg(ap, inchar32_t *); for (int j = 0; W[j]; j++) Streams::putc(W[j], stream); break; } diff --git a/foundation-module/Chapter 3/Case-Insensitive Filenames.w b/foundation-module/Chapter 3/Case-Insensitive Filenames.w index 55e2532f..c48d3e3d 100644 --- a/foundation-module/Chapter 3/Case-Insensitive Filenames.w +++ b/foundation-module/Chapter 3/Case-Insensitive Filenames.w @@ -205,7 +205,7 @@ can recognise any folder separator character. char *CIFilingSystem::strrchr(const char *p) { const char *q = NULL; while (*p) { - if (Platform::is_folder_separator((wchar_t) (*p))) q = p; + if (Platform::is_folder_separator((inchar32_t) (*p))) q = p; p++; } return (char *) q; diff --git a/foundation-module/Chapter 3/Command Line Arguments.w b/foundation-module/Chapter 3/Command Line Arguments.w index 4f4dc294..01f1287d 100644 --- a/foundation-module/Chapter 3/Command Line Arguments.w +++ b/foundation-module/Chapter 3/Command Line Arguments.w @@ -72,7 +72,7 @@ void CommandLine::end_group(void) { current_switch_group = NO_CLSG; } command_line_switch *CommandLine::declare_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { return CommandLine::declare_switch_p(id, Str::new_from_wide_string(name_literal), val, Str::new_from_wide_string(help_literal)); @@ -105,7 +105,7 @@ section. So the sorting version of |no-verbose| is |verbose_|. @ = cls->switch_sort_name = Str::duplicate(name); - if (Str::begins_with_wide_string(name, L"no-")) { + if (Str::begins_with_wide_string(name, U"no-")) { Str::delete_n_characters(cls->switch_sort_name, 3); WRITE_TO(cls->switch_sort_name, "_"); } @@ -115,7 +115,7 @@ section. So the sorting version of |no-verbose| is |verbose_|. = command_line_switch *CommandLine::declare_boolean_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal, int active) { + inchar32_t *name_literal, int val, inchar32_t *help_literal, int active) { command_line_switch *cls = CommandLine::declare_switch(id, name_literal, val, help_literal); text_stream *neg = Str::new(); @@ -134,14 +134,14 @@ command_line_switch *CommandLine::declare_boolean_switch(int id, } void CommandLine::declare_numerical_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { command_line_switch *cls = CommandLine::declare_switch(id, name_literal, val, help_literal); cls->form = NUMERICAL_CLSF; } void CommandLine::declare_textual_switch(int id, - wchar_t *name_literal, int val, wchar_t *help_literal) { + inchar32_t *name_literal, int val, inchar32_t *help_literal) { command_line_switch *cls = CommandLine::declare_switch(id, name_literal, val, help_literal); cls->form = TEXTUAL_CLSF; @@ -271,19 +271,19 @@ void CommandLine::read_file(clf_reader_state *crs) { void CommandLine::read_file_helper(text_stream *text, text_file_position *tfp, void *state) { clf_reader_state *crs = (clf_reader_state *) state; match_results mr = Regexp::create_mr(); - if ((Str::is_whitespace(text)) || (Regexp::match(&mr, text, L" *#%c*"))) { + if ((Str::is_whitespace(text)) || (Regexp::match(&mr, text, U" *#%c*"))) { ; } else { text_stream *logline = Str::new(); WRITE_TO(logline, "line %d: %S", tfp->line_count, text); CommandLine::record_log(logline); - if (Regexp::match(&mr, text, L" *-*(%C+) (%c+?) *")) { + if (Regexp::match(&mr, text, U" *-*(%C+) (%c+?) *")) { int N = CommandLine::read_pair(crs, mr.exp[0], mr.exp[1]); if (N == 0) Errors::fatal_with_text("unknown command line switch: -%S", mr.exp[0]); if (N == 1) Errors::fatal_with_text("command line switch does not take value: -%S", mr.exp[0]); - } else if (Regexp::match(&mr, text, L" *-*(%C+) *")) { + } else if (Regexp::match(&mr, text, U" *-*(%C+) *")) { int N = CommandLine::read_pair(crs, mr.exp[0], NULL); if (N == 0) Errors::fatal_with_text("unknown command line switch: -%S", mr.exp[0]); @@ -311,12 +311,12 @@ int CommandLine::read_pair(clf_reader_state *crs, text_stream *opt, text_stream Str::copy(opt_p, opt); int N = BOGUS_CLSN; match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, opt, L"(%c+)=(%d+)")) || - (Regexp::match(&mr, opt, L"(%c+)=(-%d+)"))) { + if ((Regexp::match(&mr, opt, U"(%c+)=(%d+)")) || + (Regexp::match(&mr, opt, U"(%c+)=(-%d+)"))) { N = Str::atoi(mr.exp[1], 0); Str::copy(opt_p, mr.exp[0]); Str::copy(opt_val, mr.exp[1]); - } else if (Regexp::match(&mr, opt, L"(%c+)=(%c*)")) { + } else if (Regexp::match(&mr, opt, U"(%c+)=(%c*)")) { Str::copy(opt_p, mr.exp[0]); Str::copy(opt_val, mr.exp[1]); } @@ -421,7 +421,7 @@ a brief description of the tool's name and purpose. = text_stream *cls_heading = NULL; -void CommandLine::declare_heading(wchar_t *heading_text_literal) { +void CommandLine::declare_heading(inchar32_t *heading_text_literal) { cls_heading = Str::new_from_wide_string(heading_text_literal); } diff --git a/foundation-module/Chapter 3/Filenames.w b/foundation-module/Chapter 3/Filenames.w index f37996e8..00de676f 100644 --- a/foundation-module/Chapter 3/Filenames.w +++ b/foundation-module/Chapter 3/Filenames.w @@ -131,7 +131,7 @@ text_stream *Filenames::get_leafname(filename *F) { void Filenames::write_unextended_leafname(OUTPUT_STREAM, filename *F) { LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == '.') return; PUT(c); } @@ -148,7 +148,7 @@ as equivalent to |frog.jpg| when deciding the likely file format. void Filenames::write_extension(OUTPUT_STREAM, filename *F) { int on = FALSE; LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == '.') on = TRUE; if (on) PUT(c); } @@ -157,7 +157,7 @@ void Filenames::write_extension(OUTPUT_STREAM, filename *F) { filename *Filenames::set_extension(filename *F, text_stream *extension) { TEMPORARY_TEXT(NEWLEAF) LOOP_THROUGH_TEXT(pos, F->leafname) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == '.') break; PUT_TO(NEWLEAF, c); } @@ -192,25 +192,25 @@ int Filenames::guess_format(filename *F) { Filenames::write_extension(EXT, F); TEMPORARY_TEXT(NORMALISED) LOOP_THROUGH_TEXT(pos, EXT) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c != ' ') PUT_TO(NORMALISED, Characters::tolower(c)); } DISCARD_TEXT(EXT) int verdict = FORMAT_UNRECOGNISED; - if (Str::eq_wide_string(NORMALISED, L".html")) verdict = FORMAT_PERHAPS_HTML; - else if (Str::eq_wide_string(NORMALISED, L".htm")) verdict = FORMAT_PERHAPS_HTML; - else if (Str::eq_wide_string(NORMALISED, L".jpg")) verdict = FORMAT_PERHAPS_JPEG; - else if (Str::eq_wide_string(NORMALISED, L".jpeg")) verdict = FORMAT_PERHAPS_JPEG; - else if (Str::eq_wide_string(NORMALISED, L".png")) verdict = FORMAT_PERHAPS_PNG; - else if (Str::eq_wide_string(NORMALISED, L".ogg")) verdict = FORMAT_PERHAPS_OGG; - else if (Str::eq_wide_string(NORMALISED, L".aiff")) verdict = FORMAT_PERHAPS_AIFF; - else if (Str::eq_wide_string(NORMALISED, L".aif")) verdict = FORMAT_PERHAPS_AIFF; - else if (Str::eq_wide_string(NORMALISED, L".midi")) verdict = FORMAT_PERHAPS_MIDI; - else if (Str::eq_wide_string(NORMALISED, L".mid")) verdict = FORMAT_PERHAPS_MIDI; - else if (Str::eq_wide_string(NORMALISED, L".mod")) verdict = FORMAT_PERHAPS_MOD; - else if (Str::eq_wide_string(NORMALISED, L".svg")) verdict = FORMAT_PERHAPS_SVG; - else if (Str::eq_wide_string(NORMALISED, L".gif")) verdict = FORMAT_PERHAPS_GIF; + if (Str::eq_wide_string(NORMALISED, U".html")) verdict = FORMAT_PERHAPS_HTML; + else if (Str::eq_wide_string(NORMALISED, U".htm")) verdict = FORMAT_PERHAPS_HTML; + else if (Str::eq_wide_string(NORMALISED, U".jpg")) verdict = FORMAT_PERHAPS_JPEG; + else if (Str::eq_wide_string(NORMALISED, U".jpeg")) verdict = FORMAT_PERHAPS_JPEG; + else if (Str::eq_wide_string(NORMALISED, U".png")) verdict = FORMAT_PERHAPS_PNG; + else if (Str::eq_wide_string(NORMALISED, U".ogg")) verdict = FORMAT_PERHAPS_OGG; + else if (Str::eq_wide_string(NORMALISED, U".aiff")) verdict = FORMAT_PERHAPS_AIFF; + else if (Str::eq_wide_string(NORMALISED, U".aif")) verdict = FORMAT_PERHAPS_AIFF; + else if (Str::eq_wide_string(NORMALISED, U".midi")) verdict = FORMAT_PERHAPS_MIDI; + else if (Str::eq_wide_string(NORMALISED, U".mid")) verdict = FORMAT_PERHAPS_MIDI; + else if (Str::eq_wide_string(NORMALISED, U".mod")) verdict = FORMAT_PERHAPS_MOD; + else if (Str::eq_wide_string(NORMALISED, U".svg")) verdict = FORMAT_PERHAPS_SVG; + else if (Str::eq_wide_string(NORMALISED, U".gif")) verdict = FORMAT_PERHAPS_GIF; else if (Str::len(NORMALISED) > 0) { if ((Str::get(Str::at(NORMALISED, 0)) == '.') && (Str::get(Str::at(NORMALISED, 1)) == 'z') && diff --git a/foundation-module/Chapter 3/Pathnames.w b/foundation-module/Chapter 3/Pathnames.w index 163116e7..678caacf 100644 --- a/foundation-module/Chapter 3/Pathnames.w +++ b/foundation-module/Chapter 3/Pathnames.w @@ -66,7 +66,7 @@ void Pathnames::set_installation_path(pathname *P) { } pathname *Pathnames::installation_path(const char *V, text_stream *def) { if (installation_path) return installation_path; - wchar_t where[4*MAX_FILENAME_LENGTH]; + inchar32_t where[4*MAX_FILENAME_LENGTH]; where[0] = 0; Platform::where_am_i(where, 4*MAX_FILENAME_LENGTH); if (where[0]) { @@ -140,12 +140,12 @@ Conversely, by the miracle of depth-first recursion: = void Pathnames::writer(OUTPUT_STREAM, char *format_string, void *vP) { pathname *P = (pathname *) vP; - int divider = FOLDER_SEPARATOR; + inchar32_t divider = FOLDER_SEPARATOR; if (format_string[0] == '/') divider = '/'; if (P) Pathnames::writer_r(OUT, P, divider); else WRITE("."); } -void Pathnames::writer_r(OUTPUT_STREAM, pathname *P, int divider) { +void Pathnames::writer_r(OUTPUT_STREAM, pathname *P, inchar32_t divider) { if (P->pathname_of_parent) { Pathnames::writer_r(OUT, P->pathname_of_parent, divider); PUT(divider); diff --git a/foundation-module/Chapter 3/Shell.w b/foundation-module/Chapter 3/Shell.w index 44350bd2..25caf321 100644 --- a/foundation-module/Chapter 3/Shell.w +++ b/foundation-module/Chapter 3/Shell.w @@ -36,7 +36,7 @@ void Shell::plain_text(OUTPUT_STREAM, text_stream *raw) { void Shell::quote_text(OUTPUT_STREAM, text_stream *raw) { PUT(SHELL_QUOTE_CHARACTER); LOOP_THROUGH_TEXT(pos, raw) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == SHELL_QUOTE_CHARACTER) PUT('\\'); PUT(c); } diff --git a/foundation-module/Chapter 4/Characters.w b/foundation-module/Chapter 4/Characters.w index fd0f62d1..aa02fddc 100644 --- a/foundation-module/Chapter 4/Characters.w +++ b/foundation-module/Chapter 4/Characters.w @@ -5,32 +5,31 @@ Individual characters. @h Character classes. = -wchar_t Characters::tolower(wchar_t c) { - return (wchar_t) tolower((int) c); +inchar32_t Characters::tolower(inchar32_t c) { + return (inchar32_t) tolower((int) c); } -wchar_t Characters::toupper(wchar_t c) { - return (wchar_t) toupper((int) c); +inchar32_t Characters::toupper(inchar32_t c) { + return (inchar32_t) toupper((int) c); } -int Characters::isalpha(wchar_t c) { +int Characters::isalpha(inchar32_t c) { return isalpha((int) c); } -int Characters::isdigit(wchar_t c) { +int Characters::isdigit(inchar32_t c) { return isdigit((int) c); } -int Characters::isupper(wchar_t c) { +int Characters::isupper(inchar32_t c) { return isupper((int) c); } -int Characters::islower(wchar_t c) { +int Characters::islower(inchar32_t c) { return islower((int) c); } -int Characters::isalnum(wchar_t c) { +int Characters::isalnum(inchar32_t c) { return isalnum((int) c); } -int Characters::iscntrl(wchar_t c) { - int i = c; - return ((i >= 0) && (i < 32)); +int Characters::iscntrl(inchar32_t c) { + return (c < 32); } -int Characters::vowel(wchar_t c) { +int Characters::vowel(inchar32_t c) { if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) return TRUE; return FALSE; } @@ -38,11 +37,11 @@ int Characters::vowel(wchar_t c) { @ White space classes: = -int Characters::is_space_or_tab(int c) { +int Characters::is_space_or_tab(inchar32_t c) { if ((c == ' ') || (c == '\t')) return TRUE; return FALSE; } -int Characters::is_whitespace(int c) { +int Characters::is_whitespace(inchar32_t c) { if ((c == ' ') || (c == '\t') || (c == '\n')) return TRUE; return FALSE; } @@ -52,7 +51,7 @@ sense of the Treaty of Babel rules on leading and trailing spaces in iFiction records. = -int Characters::is_babel_whitespace(int c) { +int Characters::is_babel_whitespace(inchar32_t c) { if ((c == ' ') || (c == '\t') || (c == '\x0a') || (c == '\x0d') || (c == NEWLINE_IN_STRING)) return TRUE; return FALSE; @@ -62,7 +61,7 @@ int Characters::is_babel_whitespace(int c) { non-ASCII Unicode characters of category Zs. = -int Characters::is_Unicode_whitespace(wchar_t c) { +int Characters::is_Unicode_whitespace(inchar32_t c) { if (c == 0x0009) return TRUE; if (c == 0x000A) return TRUE; if (c == 0x000C) return TRUE; @@ -91,7 +90,7 @@ int Characters::is_Unicode_whitespace(wchar_t c) { "ASCII punctuation" from the CommonMark standard: = -int Characters::is_ASCII_punctuation(wchar_t c) { +int Characters::is_ASCII_punctuation(inchar32_t c) { if ((c >= 0x0021) && (c <= 0x002F)) return TRUE; if ((c >= 0x003A) && (c <= 0x0040)) return TRUE; if ((c >= 0x005B) && (c <= 0x0060)) return TRUE; @@ -104,8 +103,8 @@ Pc, Pd, Pe, Pf, Pi, Po, or Ps. After all, we wouldn't want to get old Assyrian cuneiform spacing indicators wrong, would we? Or the Imperial Aramaic section sign? = -int Characters::is_Unicode_punctuation(wchar_t c) { - if ((c >= 0) && (c < 0x80)) return Characters::is_ASCII_punctuation(c); +int Characters::is_Unicode_punctuation(inchar32_t c) { + if (c < 0x80) return Characters::is_ASCII_punctuation(c); if (c == 0x00A1) return TRUE; // INVERTED EXCLAMATION MARK if (c == 0x00A7) return TRUE; // SECTION SIGN if (c == 0x00AB) return TRUE; // LEFT-POINTING DOUBLE ANGLE QUOTATION MARK @@ -935,9 +934,9 @@ defined by Unicode 15.0, turning |c| into a run of up to four characters representing its canonical upper-case form. = -void Characters::full_Unicode_fold(wchar_t c, wchar_t *F) { +void Characters::full_Unicode_fold(inchar32_t c, inchar32_t *F) { F[1] = 0; F[2] = 0; F[3] = 0; - if ((c >= 0) && (c < 0x0100)) { + if (c < 0x0100) { if ((c >= 0x0041) && (c <= 0x005A)) { F[0] = 0x0061 + (c - 0x0041); return; } /* LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z */ if (c == 0x00B5) { F[0] = 0x03BC; return; } /* MICRO SIGN */ if ((c >= 0x00C0) && (c <= 0x00D6)) { F[0] = 0x00E0 + (c - 0x00C0); return; } /* LATIN CAPITAL LETTER A WITH GRAVE to LATIN CAPITAL LETTER O WITH DIAERESIS */ @@ -1752,18 +1751,18 @@ void Characters::full_Unicode_fold(wchar_t c, wchar_t *F) { @ Whereas these are fairly unarguable. = -int Characters::is_ASCII_letter(wchar_t c) { +int Characters::is_ASCII_letter(inchar32_t c) { if ((c >= 'a') && (c <= 'z')) return TRUE; if ((c >= 'A') && (c <= 'Z')) return TRUE; return FALSE; } -int Characters::is_ASCII_digit(wchar_t c) { +int Characters::is_ASCII_digit(inchar32_t c) { if ((c >= '0') && (c <= '9')) return TRUE; return FALSE; } -int Characters::is_control_character(wchar_t c) { +int Characters::is_control_character(inchar32_t c) { if ((c >= 0x0001) && (c <= 0x001f)) return TRUE; if (c == 0x007f) return TRUE; return FALSE; @@ -1776,7 +1775,7 @@ Returns a combined character code, or 0 if there is no combining to be done. = -int Characters::combine_accent(int accent, int letter) { +inchar32_t Characters::combine_accent(inchar32_t accent, inchar32_t letter) { switch(accent) { case 0x0300: /* Unicode combining grave */ switch(letter) { @@ -1830,22 +1829,16 @@ It's occasionally useful to simplify text used as a filename by removing the more obvious accents from it. = -int Characters::make_filename_safe(int charcode) { +inchar32_t Characters::make_filename_safe(inchar32_t charcode) { charcode = Characters::remove_accent(charcode); if (charcode >= 128) charcode = '-'; return charcode; } -wchar_t Characters::make_wchar_t_filename_safe(wchar_t charcode) { - charcode = Characters::remove_wchar_t_accent(charcode); - if (charcode >= 128) charcode = '-'; - return charcode; -} - @ The following strips the accent, if present, from an ISO Latin-1 character: = -int Characters::remove_accent(int charcode) { +inchar32_t Characters::remove_accent(inchar32_t charcode) { switch (charcode) { case 0xC0: case 0xC1: case 0xC2: case 0xC3: case 0xC4: case 0xC5: charcode = 'A'; break; @@ -1872,14 +1865,10 @@ int Characters::remove_accent(int charcode) { return charcode; } -wchar_t Characters::remove_wchar_t_accent(wchar_t charcode) { - return (wchar_t) Characters::remove_accent((int) charcode); -} - @ This will do until we properly use Unicode character classes some day: = -int Characters::isalphabetic(int letter) { - return Characters::isalpha((wchar_t) Characters::remove_accent(letter)); +int Characters::isalphabetic(inchar32_t letter) { + return Characters::isalpha(Characters::remove_accent(letter)); } diff --git a/foundation-module/Chapter 4/JSON.w b/foundation-module/Chapter 4/JSON.w index 1d818d7a..8fd3a938 100755 --- a/foundation-module/Chapter 4/JSON.w +++ b/foundation-module/Chapter 4/JSON.w @@ -271,7 +271,7 @@ the JSON standard), and the special cases |true|, |false| and |null|. = JSON_value *JSON::decode_range(text_stream *T, int from, int to, text_file_position *tfp) { int first_nws = -1, last_nws = -1; - wchar_t first_c = 0, last_c = 0; + inchar32_t first_c = 0, last_c = 0; @; switch (first_c) { case '[': @@ -326,7 +326,7 @@ JSON_value *JSON::decode_array(JSON_value *array, text_stream *T, int from, int NextEntry: ; int first_comma = -1, bl = 0; for (int i=from, quoted = FALSE; i= '0') && (digit <= '9')) v = (int) (digit-'0'); else if ((digit >= 'a') && (digit <= 'f')) v = 10 + ((int) (digit-'a')); else if ((digit >= 'A') && (digit <= 'F')) v = 10 + ((int) (digit-'A')); else return JSON::decode_error(I"garbled '\\u' escape", tfp); hex = hex * 16 + v; } - c = (wchar_t) hex; + c = (inchar32_t) hex; i += 4; @h Encoding JSON. @@ -578,7 +578,7 @@ points above 32. = void JSON::encode_string(OUTPUT_STREAM, text_stream *T) { LOOP_THROUGH_TEXT(pos, T) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); switch (c) { case '\\': WRITE("\\\\"); break; case 8: WRITE("\\b"); break; @@ -1008,7 +1008,7 @@ JSON requirement. JSON_requirement *JSON::decode_req_range(text_stream *T, int from, int to, dictionary *known_names) { int first_nws = -1, last_nws = -1; - wchar_t first_c = 0, last_c = 0; + inchar32_t first_c = 0, last_c = 0; @; if (first_c == '(') { if (last_c != ')') @@ -1019,7 +1019,7 @@ JSON_requirement *JSON::decode_req_range(text_stream *T, int from, int to, NextEntry: ; int first_pipe = -1, bl = 0; for (int i=from, quoted = FALSE; i; if (first_nws < 0) return JSON::error_sr(I"whitespace where requirement expected"); switch (first_c) { @@ -1152,7 +1152,7 @@ JSON_single_requirement *JSON::decode_req_array(JSON_single_requirement *array_s NextEntry: ; int first_comma = -1, bl = 0; for (int i=from, quoted = FALSE; i *::= *(%c*)")) { + if (Regexp::match(&mr, text, U" *<(%C+)> *::= *(%c*)")) { JSON::process_req_defn(state); WRITE_TO(state->name, "%S", mr.exp[0]); WRITE_TO(state->defn, "%S", mr.exp[1]); state->at = *tfp; - } else if (Regexp::match(&mr, text, L" *!%c*")) { + } else if (Regexp::match(&mr, text, U" *!%c*")) { /* do nothing: this line is a comment */ - } else if (Regexp::match(&mr, text, L" *")) { + } else if (Regexp::match(&mr, text, U" *")) { /* do nothing: this line is blank */ } else if (Str::len(state->name) > 0) { WRITE_TO(state->defn, "%S\n", text); diff --git a/foundation-module/Chapter 4/Pattern Matching.w b/foundation-module/Chapter 4/Pattern Matching.w index cd97b664..04315811 100755 --- a/foundation-module/Chapter 4/Pattern Matching.w +++ b/foundation-module/Chapter 4/Pattern Matching.w @@ -7,7 +7,7 @@ We will define white space as spaces and tabs only, since the various kinds of line terminator will always be stripped out before this is applied. = -int Regexp::white_space(int c) { +int Regexp::white_space(inchar32_t c) { if ((c == ' ') || (c == '\t')) return TRUE; return FALSE; } @@ -17,7 +17,7 @@ C and has other meanings in other languages, but it's legal in C-for-Inform identifiers. = -int Regexp::identifier_char(int c) { +int Regexp::identifier_char(inchar32_t c) { if ((c == '_') || (c == ':') || ((c >= 'A') && (c <= 'Z')) || ((c >= 'a') && (c <= 'z')) || @@ -32,8 +32,8 @@ easily be done as a regular expression using |Regexp::match|, but the routine here is much quicker. = -int Regexp::find_expansion(text_stream *text, wchar_t on1, wchar_t on2, - wchar_t off1, wchar_t off2, int *len) { +int Regexp::find_expansion(text_stream *text, inchar32_t on1, inchar32_t on2, + inchar32_t off1, inchar32_t off2, int *len) { for (int i = 0; i < Str::len(text); i++) if ((Str::get_at(text, i) == on1) && (Str::get_at(text, i+1) == on2)) { for (int j=i+2; j < Str::len(text); j++) @@ -76,7 +76,7 @@ This is a very minimal regular expression parser, simply for convenience of pars short texts against particularly simple patterns. Here is an example of use: = (text as code) match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L"fish (%d+) ([a-zA-Z_][a-zA-Z0-9_]*) *") { + if (Regexp::match(&mr, text, U"fish (%d+) ([a-zA-Z_][a-zA-Z0-9_]*) *") { PRINT("Fish number: %S\n", mr.exp[0]); PRINT("Fish name: %S\n", mr.exp[1]); } @@ -124,7 +124,7 @@ are not. They are simply a little faster to access if short. = typedef struct match_result { - wchar_t match_text_storage[MATCH_TEXT_INITIAL_ALLOCATION]; + inchar32_t match_text_storage[MATCH_TEXT_INITIAL_ALLOCATION]; struct text_stream match_text_struct; } match_result; typedef struct match_results { @@ -165,14 +165,14 @@ void Regexp::dispose_of(match_results *mr) { @ So, then: the matcher itself. = -int Regexp::match(match_results *mr, text_stream *text, wchar_t *pattern) { +int Regexp::match(match_results *mr, text_stream *text, inchar32_t *pattern) { if (mr) Regexp::prepare(mr); int rv = (Regexp::match_r(mr, text, pattern, NULL, FALSE) >= 0)?TRUE:FALSE; if ((mr) && (rv == FALSE)) Regexp::dispose_of(mr); return rv; } -int Regexp::match_from(match_results *mr, text_stream *text, wchar_t *pattern, +int Regexp::match_from(match_results *mr, text_stream *text, inchar32_t *pattern, int x, int allow_partial) { int match_to = x; if (x < Str::len(text)) { @@ -204,7 +204,7 @@ void Regexp::prepare(match_results *mr) { } @ = -int Regexp::match_r(match_results *mr, text_stream *text, wchar_t *pattern, +int Regexp::match_r(match_results *mr, text_stream *text, inchar32_t *pattern, match_position *scan_from, int allow_partial) { match_position at; if (scan_from) at = *scan_from; @@ -335,7 +335,7 @@ is literal. @d QUOTE_CHARCLASS 10 = -int Regexp::get_cclass(wchar_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) { +int Regexp::get_cclass(inchar32_t *pattern, int ppos, int *len, int *from, int *to, int *reverse) { if (pattern[ppos] == '^') { ppos++; *reverse = TRUE; } else { *reverse = FALSE; } switch (pattern[ppos]) { case '%': @@ -365,11 +365,11 @@ int Regexp::get_cclass(wchar_t *pattern, int ppos, int *len, int *from, int *to, } @ = -int Regexp::test_cclass(int c, int chcl, int range_from, int range_to, wchar_t *drawn_from, int reverse) { +int Regexp::test_cclass(inchar32_t c, int chcl, int range_from, int range_to, inchar32_t *drawn_from, int reverse) { int match = FALSE; switch (chcl) { case ANY_CHARCLASS: if (c) match = TRUE; break; - case DIGIT_CHARCLASS: if (isdigit(c)) match = TRUE; break; + case DIGIT_CHARCLASS: if (Characters::isdigit(c)) match = TRUE; break; case WHITESPACE_CHARCLASS: if (Characters::is_whitespace(c)) match = TRUE; break; case TAB_CHARCLASS: if (c == '\t') match = TRUE; break; case NONWHITESPACE_CHARCLASS: if (!(Characters::is_whitespace(c))) match = TRUE; break; @@ -386,7 +386,7 @@ int Regexp::test_cclass(int c, int chcl, int range_from, int range_to, wchar_t * range_from++; reverse = reverse?FALSE:TRUE; } for (int j = range_from; j <= range_to; j++) { - int c1 = drawn_from[j], c2 = c1; + inchar32_t c1 = drawn_from[j], c2 = c1; if ((j+1 < range_to) && (drawn_from[j+1] == '-')) { c2 = drawn_from[j+2]; j += 2; } if ((c >= c1) && (c <= c2)) { match = TRUE; break; @@ -404,7 +404,7 @@ can match at substrings of the |text| (i.e., we are not forced to match from the start right to the end), and multiple replacements can be made. For example, = (text as code) - Regexp::replace(text, L"[aeiou]", L"!", REP_REPEATING); + Regexp::replace(text, U"[aeiou]", U"!", REP_REPEATING); = will turn the |text| "goose eggs" into "g!!s! !ggs". @@ -412,7 +412,7 @@ will turn the |text| "goose eggs" into "g!!s! !ggs". @d REP_ATSTART 2 = -int Regexp::replace(text_stream *text, wchar_t *pattern, wchar_t *replacement, int options) { +int Regexp::replace(text_stream *text, inchar32_t *pattern, inchar32_t *replacement, int options) { TEMPORARY_TEXT(altered) match_results mr = Regexp::create_mr(); int changes = 0; @@ -423,11 +423,11 @@ int Regexp::replace(text_stream *text, wchar_t *pattern, wchar_t *replacement, i if (try >= 0) { if (replacement) for (int j=0; replacement[j]; j++) { - int c = replacement[j]; + inchar32_t c = replacement[j]; if (c == '%') { j++; - int ind = replacement[j] - '0'; - if ((ind >= 0) && (ind < MAX_BRACKETED_SUBEXPRESSIONS)) + inchar32_t ind = replacement[j] - '0'; + if (ind < MAX_BRACKETED_SUBEXPRESSIONS) WRITE_TO(altered, "%S", mr.exp[ind]); else PUT_TO(altered, replacement[j]); diff --git a/foundation-module/Chapter 4/Preprocessor.w b/foundation-module/Chapter 4/Preprocessor.w index 91238a5b..40f2814d 100644 --- a/foundation-module/Chapter 4/Preprocessor.w +++ b/foundation-module/Chapter 4/Preprocessor.w @@ -26,7 +26,7 @@ one of |UTF8_ENC| or |ISO_ENC|. = void Preprocessor::preprocess(filename *prototype, filename *F, text_stream *header, - linked_list *special_macros, general_pointer specifics, wchar_t comment_char, + linked_list *special_macros, general_pointer specifics, inchar32_t comment_char, int encoding) { struct text_stream processed_file; if (STREAM_OPEN_TO_FILE(&processed_file, F, encoding) == FALSE) @@ -39,7 +39,7 @@ void Preprocessor::preprocess(filename *prototype, filename *F, text_stream *hea TextFiles::read(prototype, FALSE, "can't open prototype file", TRUE, Preprocessor::scan_line, NULL, &PPS); for (int i=0; i = LOOP_THROUGH_TEXT(pos, line) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == PPS->comment_character) return; if (Characters::is_whitespace(c) == FALSE) break; } @ = for (int i = 0; i < Str::len(line); i++) { - wchar_t c = Str::get_at(line, i); + inchar32_t c = Str::get_at(line, i); if (c == '\\') { - wchar_t d = Str::get_at(line, i+1); + inchar32_t d = Str::get_at(line, i+1); switch (d) { case '{': Str::put_at(line, i, PROTECTED_OPEN_BRACE_PPCHAR); @@ -153,9 +153,9 @@ is the special comment character: often |#|, but not necessarily. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L" *{define: *(%C+) *} *")) @; - if (Regexp::match(&mr, line, L" *{define: *(%C+) (%c*)} *")) @; - if (Regexp::match(&mr, line, L" *{end-define} *")) @; + if (Regexp::match(&mr, line, U" *{define: *(%C+) *} *")) @; + if (Regexp::match(&mr, line, U" *{define: *(%C+) (%c*)} *")) @; + if (Regexp::match(&mr, line, U" *{end-define} *")) @; if (PPS->defining) @; Regexp::dispose_of(&mr); @@ -221,7 +221,7 @@ void Preprocessor::expand(text_stream *text, text_file_position *tfp, preprocess TEMPORARY_TEXT(after_matter) int bl = 0, after_times = FALSE; for (int i = 0; i < Str::len(text); i++) { - wchar_t c = Str::get_at(text, i); + inchar32_t c = Str::get_at(text, i); if (after_times) PUT_TO(after_matter, c); else if (c == '{') { bl++; @@ -258,7 +258,7 @@ and the |after_matter| will be | ocean {BEHAVIOUR}|. text_stream *identifier = braced_matter; text_stream *parameter_settings = NULL; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, identifier, L"(%C+) (%c*)")) { + if (Regexp::match(&mr, identifier, U"(%C+) (%c*)")) { identifier = mr.exp[0]; parameter_settings = mr.exp[1]; } @@ -389,12 +389,12 @@ So you can have |in: {WHATEVER}| but not |{WHATEVER}: this|. @ = match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, parameter_settings, L" *(%C+): *(%c*)")) { + while (Regexp::match(&mr, parameter_settings, U" *(%C+): *(%c*)")) { text_stream *setting = mr.exp[0]; text_stream *value = mr.exp[1]; text_stream *remainder = NULL; match_results mr3 = Regexp::create_mr(); - if (Regexp::match(&mr3, value, L"(%c+?) *(%C+:[^/]%c*)")) { + if (Regexp::match(&mr3, value, U"(%c+?) *(%C+:[^/]%c*)")) { value = mr3.exp[0]; remainder = mr3.exp[1]; } @@ -456,7 +456,7 @@ Names of variables should conform to: = int Preprocessor::acceptable_variable_name(text_stream *name) { LOOP_THROUGH_TEXT(pos, name) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if ((c >= '0') && (c <= '9')) continue; if ((c >= 'A') && (c <= 'Z')) continue; if (c == '_') continue; @@ -632,7 +632,7 @@ preprocessor_macro *Preprocessor::new_macro(linked_list *L, text_stream *name, @ = text_stream *spec = Str::duplicate(parameter_specification); match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, spec, L" *(%C+): *(%C+) *(%c*)")) { + while (Regexp::match(&mr, spec, U" *(%C+): *(%C+) *(%c*)")) { text_stream *par_name = mr.exp[0]; text_stream *token_name = mr.exp[1]; Str::clear(spec); @@ -790,7 +790,7 @@ void Preprocessor::repeat_expander(preprocessor_macro *mm, preprocessor_state *P text_stream *in = parameter_values[1]; Preprocessor::set_loop_var_name(loop, with); match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, in, L"(%c*?),(%c*)")) { + while (Regexp::match(&mr, in, U"(%c*?),(%c*)")) { text_stream *value = mr.exp[0]; Str::trim_white_space(value); Preprocessor::add_loop_iteration(loop, value); diff --git a/foundation-module/Chapter 4/String Manipulation.w b/foundation-module/Chapter 4/String Manipulation.w index 9cade5cf..e94eb463 100644 --- a/foundation-module/Chapter 4/String Manipulation.w +++ b/foundation-module/Chapter 4/String Manipulation.w @@ -5,7 +5,7 @@ Convenient routines for manipulating strings of text. @h Strings are streams. Although Foundation provides limited facilities for handling standard or wide C-style strings -- that is, null-terminated arrays of |char| or -|wchar_t| -- these are not encouraged. +|inchar32_t| -- these are not encouraged. Instead, a standard string for a program using Foundation is nothing more than a text stream (see Chapter 2). These are unbounded in size, with memory @@ -70,9 +70,10 @@ with the capacity of the initial block large enough to hold the whole thing plus a little extra, for efficiency's sake. = -text_stream *Str::new_from_wide_string(const wchar_t *C_string) { +text_stream *Str::new_from_wide_string(const inchar32_t *C_string) { text_stream *S = CREATE(text_stream); - if (Streams::open_from_wide_string(S, C_string)) return S; + int C_len = (C_string)?Wide::len(C_string):0; + if (Streams::open_from_wide_string(S, C_string, C_len)) return S; return NULL; } @@ -97,8 +98,9 @@ text_stream *Str::new_from_locale_string(const char *C_string) { @ And sometimes we want to use an existing stream object: = -text_stream *Str::from_wide_string(text_stream *S, wchar_t *c_string) { - if (Streams::open_from_wide_string(S, c_string) == FALSE) return NULL; +text_stream *Str::from_wide_string(text_stream *S, inchar32_t *c_string) { + int c_len = (c_string)?Wide::len(c_string):0; + if (Streams::open_from_wide_string(S, c_string, c_len) == FALSE) return NULL; return S; } @@ -118,7 +120,7 @@ void Str::copy_to_UTF8_string(char *C_string, text_stream *S, int buffer_size) { Streams::write_as_UTF8_string(C_string, S, buffer_size); } -void Str::copy_to_wide_string(wchar_t *C_string, text_stream *S, int buffer_size) { +void Str::copy_to_wide_string(inchar32_t *C_string, text_stream *S, int buffer_size) { Streams::write_as_wide_string(C_string, S, buffer_size); } @@ -219,40 +221,40 @@ int Str::index(string_position P) { How to get at individual characters, then, now that we can refer to positions: = -wchar_t Str::get(string_position P) { +inchar32_t Str::get(string_position P) { if ((P.S == NULL) || (P.index < 0)) return 0; return Streams::get_char_at_index(P.S, P.index); } -wchar_t Str::get_at(text_stream *S, int index) { +inchar32_t Str::get_at(text_stream *S, int index) { if ((S == NULL) || (index < 0)) return 0; return Streams::get_char_at_index(S, index); } -wchar_t Str::get_first_char(text_stream *S) { +inchar32_t Str::get_first_char(text_stream *S) { return Str::get(Str::at(S, 0)); } -wchar_t Str::get_last_char(text_stream *S) { +inchar32_t Str::get_last_char(text_stream *S) { int L = Str::len(S); if (L == 0) return 0; return Str::get(Str::at(S, L-1)); } @ = -void Str::put(string_position P, wchar_t C) { +void Str::put(string_position P, inchar32_t C) { if (P.index < 0) internal_error("wrote before start of string"); if (P.S == NULL) internal_error("wrote to null stream"); int ext = Str::len(P.S); if (P.index > ext) internal_error("wrote beyond end of string"); if (P.index == ext) { - if (C) PUT_TO(P.S, (int) C); + if (C) PUT_TO(P.S, C); return; } Streams::put_char_at_index(P.S, P.index, C); } -void Str::put_at(text_stream *S, int index, wchar_t C) { +void Str::put_at(text_stream *S, int index, inchar32_t C) { Str::put(Str::at(S, index), C); } @@ -341,7 +343,7 @@ void Str::copy_UTF8_string(text_stream *S, char *C_string) { Streams::write_UTF8_string(S, C_string); } -void Str::copy_wide_string(text_stream *S, wchar_t *C_string) { +void Str::copy_wide_string(text_stream *S, inchar32_t *C_string) { Str::clear(S); Streams::write_wide_string(S, C_string); } @@ -444,7 +446,7 @@ int Str::ends_with(text_stream *S1, text_stream *S2) { return Str::suffix_eq(S1, S2, Str::len(S2)); } -int Str::begins_with_wide_string(text_stream *S, wchar_t *prefix) { +int Str::begins_with_wide_string(text_stream *S, inchar32_t *prefix) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -453,19 +455,19 @@ int Str::begins_with_wide_string(text_stream *S, wchar_t *prefix) { return TRUE; } -int Str::ends_with_wide_string(text_stream *S, wchar_t *suffix) { +int Str::ends_with_wide_string(text_stream *S, inchar32_t *suffix) { if ((suffix == NULL) || (*suffix == 0)) return TRUE; if (S == NULL) return FALSE; - for (int i = 0, at = Str::len(S) - (int) wcslen(suffix); suffix[i]; i++) + for (int i = 0, at = Str::len(S) - Wide::len(suffix); suffix[i]; i++) if (Str::get_at(S, at+i) != suffix[i]) return FALSE; return TRUE; } @ = -int Str::eq_wide_string(text_stream *S1, wchar_t *S2) { +int Str::eq_wide_string(text_stream *S1, inchar32_t *S2) { if (S2 == NULL) return (Str::len(S1) == 0)?TRUE:FALSE; - if (Str::len(S1) == (int) wcslen(S2)) { + if (Str::len(S1) == Wide::len(S2)) { int i=0; LOOP_THROUGH_TEXT(P, S1) if (Str::get(P) != S2[i++]) @@ -479,13 +481,13 @@ int Str::eq_narrow_string(text_stream *S1, char *S2) { if (Str::len(S1) == (int) strlen(S2)) { int i=0; LOOP_THROUGH_TEXT(P, S1) - if (Str::get(P) != (wchar_t) S2[i++]) + if (Str::get(P) != (inchar32_t) S2[i++]) return FALSE; return TRUE; } return FALSE; } -int Str::ne_wide_string(text_stream *S1, wchar_t *S2) { +int Str::ne_wide_string(text_stream *S1, inchar32_t *S2) { return (Str::eq_wide_string(S1, S2)?FALSE:TRUE); } @@ -519,7 +521,7 @@ void Str::trim_white_space(text_stream *S) { Str::truncate(S, len); if (i > 0) { string_position P = Str::start(S); - wchar_t c = 0; + inchar32_t c = 0; do { c = Str::get(F); Str::put(P, c); @@ -589,7 +591,7 @@ void Str::substr(OUTPUT_STREAM, string_position from, string_position to) { PUT(Str::get_at(from.S, i)); } -int Str::includes_character(text_stream *S, wchar_t c) { +int Str::includes_character(text_stream *S, inchar32_t c) { if (S) LOOP_THROUGH_TEXT(pos, S) if (Str::get(pos) == c) @@ -597,7 +599,7 @@ int Str::includes_character(text_stream *S, wchar_t c) { return FALSE; } -int Str::includes_wide_string_at(text_stream *S, wchar_t *prefix, int j) { +int Str::includes_wide_string_at(text_stream *S, inchar32_t *prefix, int j) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -606,7 +608,7 @@ int Str::includes_wide_string_at(text_stream *S, wchar_t *prefix, int j) { return TRUE; } -int Str::includes_wide_string_at_insensitive(text_stream *S, wchar_t *prefix, int j) { +int Str::includes_wide_string_at_insensitive(text_stream *S, inchar32_t *prefix, int j) { if ((prefix == NULL) || (*prefix == 0)) return TRUE; if (S == NULL) return FALSE; for (int i = 0; prefix[i]; i++) @@ -669,7 +671,7 @@ is run just once per I-literal in the source code, when the program starts up. = dictionary *string_literals_dictionary = NULL; -text_stream *Str::literal(wchar_t *wide_C_string) { +text_stream *Str::literal(inchar32_t *wide_C_string) { text_stream *answer = NULL; CREATE_MUTEX(mutex); LOCK_MUTEX(mutex); diff --git a/foundation-module/Chapter 4/Tab Stops.w b/foundation-module/Chapter 4/Tab Stops.w index 8d27c4e9..860638d5 100644 --- a/foundation-module/Chapter 4/Tab Stops.w +++ b/foundation-module/Chapter 4/Tab Stops.w @@ -47,8 +47,8 @@ stored at the read index is a tab then it represents a space for parsing purposes. = -wchar_t TabbedStr::get_character(tabbed_string_iterator *mdw) { - wchar_t c = Str::get_at(mdw->line, mdw->read_index); +inchar32_t TabbedStr::get_character(tabbed_string_iterator *mdw) { + inchar32_t c = Str::get_at(mdw->line, mdw->read_index); if (c == '\t') return ' '; return c; } @@ -58,7 +58,7 @@ being expanded into spaces: then the following returns |FALSE|. = int TabbedStr::at_whole_character(tabbed_string_iterator *mdw) { - wchar_t c = Str::get_at(mdw->line, mdw->read_index); + inchar32_t c = Str::get_at(mdw->line, mdw->read_index); if (c != '\t') return TRUE; if (mdw->line_position % mdw->tab_spacing == 0) return TRUE; return FALSE; @@ -129,7 +129,7 @@ int TabbedStr::spaces_available(tabbed_string_iterator *mdw) { = int TabbedStr::blank_from_here(tabbed_string_iterator *mdw) { for (int i=mdw->read_index; iline); i++) { - wchar_t c = Str::get_at(mdw->line, i); + inchar32_t c = Str::get_at(mdw->line, i); if ((c != ' ') && (c != '\t')) return FALSE; } return TRUE; diff --git a/foundation-module/Chapter 4/Text Files.w b/foundation-module/Chapter 4/Text Files.w index fe18754f..7a43362b 100755 --- a/foundation-module/Chapter 4/Text Files.w +++ b/foundation-module/Chapter 4/Text Files.w @@ -42,7 +42,7 @@ typedef struct text_file_position { struct unicode_file_buffer ufb; int line_count; /* counting from 1 */ int line_position; - int skip_terminator; + inchar32_t skip_terminator; int actively_scanning; /* whether we are still interested in the rest of the file */ } text_file_position; @@ -126,12 +126,15 @@ values returned by |ftell| into this field. @ We aim to get this right whether the lines are terminated by |0A|, |0D|, |0A 0D| or |0D 0A|. The final line is not required to be terminated. +@d CH32EOF 0xFFFFFFFFU /* We need an EOF marker that will fit in an inchar32_t. */ + @ = TEMPORARY_TEXT(line) - int i = 0, c = ' '; - while ((c != EOF) && (tfp.actively_scanning)) { + int i = 0; + inchar32_t c = ' '; + while ((c != CH32EOF) && (tfp.actively_scanning)) { c = TextFiles::utf8_fgetc(tfp.handle_when_open, NULL, &tfp.ufb); - if ((c == EOF) || (c == '\x0a') || (c == '\x0d')) { + if ((c == CH32EOF) || (c == '\x0a') || (c == '\x0d')) { Str::put_at(line, i, 0); if ((i > 0) || (c != tfp.skip_terminator)) { @; @@ -141,7 +144,7 @@ values returned by |ftell| into this field. @; i = 0; } else { - Str::put_at(line, i++, (wchar_t) c); + Str::put_at(line, i++, c); } } if ((i > 0) && (tfp.actively_scanning)) @@ -176,10 +179,11 @@ Text files seldom come that large. @ = void TextFiles::read_line(OUTPUT_STREAM, int escape_oddities, text_file_position *tfp) { Str::clear(OUT); - int i = 0, c = ' '; - while ((c != EOF) && (tfp->actively_scanning)) { + int i = 0; + inchar32_t c = ' '; + while ((c != CH32EOF) && (tfp->actively_scanning)) { c = TextFiles::utf8_fgetc(tfp->handle_when_open, NULL, &tfp->ufb); - if ((c == EOF) || (c == '\x0a') || (c == '\x0d')) { + if ((c == CH32EOF) || (c == '\x0a') || (c == '\x0d')) { Str::put_at(OUT, i, 0); if ((i > 0) || (c != tfp->skip_terminator)) { if (c == '\x0a') tfp->skip_terminator = '\x0d'; @@ -189,7 +193,7 @@ void TextFiles::read_line(OUTPUT_STREAM, int escape_oddities, text_file_position i = 0; tfp->line_count++; return; } - Str::put_at(OUT, i++, (wchar_t) c); + Str::put_at(OUT, i++, c); } if ((i > 0) && (tfp->actively_scanning)) tfp->line_count++; } @@ -209,21 +213,21 @@ trick it can only pull off by escaping non-ISO characters. This is done by taking character number |N| and feeding it out, one character at a time, as the text |[unicode N]|, writing the number in decimal. Only one UTF-8 file like this will be being read at a time, and the routine will be -repeatedly called until |EOF| or a line division. +repeatedly called until |CH32EOF| or a line division. Strictly speaking, we transmit not as ISO Latin-1 but as that subset of ISO which have corresponding (different) codes in the ZSCII character set. This excludes some typewriter symbols and a handful of letterforms, as we shall see. -There are two exceptions: |TextFiles::utf8_fgetc| can also return the usual C -end-of-file pseudo-character |EOF|, and it can also return the Unicode BOM -(byte-ordering marker) pseudo-character, which is legal at the start of a +There are two exceptions: |TextFiles::utf8_fgetc| can also return an +end-of-file pseudo-character |CH32EOF|, and it can also return the Unicode +BOM (byte-ordering marker) pseudo-character, which is legal at the start of a file and which is automatically prepended by some text editors and word-processors when they save a UTF-8 file (though in fact it is not required by the UTF-8 specification). Anyone calling |TextFiles::utf8_fgetc| must -check the return value for |EOF| every time, and for |0xFEFF| every time we -might be at the start of the file being read. +check the return value for |CH32EOF| every time, and for |0xFEFF| every time +we might be at the start of the file being read. @e NONE_UFBHM from 1 @e ZSCII_UFBHM @@ -249,18 +253,18 @@ unicode_file_buffer TextFiles::create_filtered_ufb(int mode) { return ufb; } -int TextFiles::utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) { +inchar32_t TextFiles::utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer *ufb) { int c = EOF, conts, mode = (ufb)?ufb->handling_mode:NONE_UFBHM; if ((ufb) && (ufb->ufb_counter >= 0)) { if (ufb->unicode_feed_buffer[ufb->ufb_counter] == 0) ufb->ufb_counter = -1; - else return ufb->unicode_feed_buffer[ufb->ufb_counter++]; + else return (inchar32_t) ufb->unicode_feed_buffer[ufb->ufb_counter++]; } if (from) c = fgetc(from); else if (or_from) c = ((unsigned char) *((*or_from)++)); - if (c == EOF) return c; /* ruling out EOF leaves a genuine byte from the file */ - if (c<0x80) return c; /* in all other cases, a UTF-8 continuation sequence begins */ + if (c == EOF) return CH32EOF; /* ruling out EOF leaves a genuine byte from the file */ + if (c<0x80) return (inchar32_t) c; /* in all other cases, a UTF-8 continuation sequence begins */ @; - if (c == 0xFEFF) return c; /* the Unicode BOM non-character */ + if (c == 0xFEFF) return (inchar32_t) c; /* the Unicode BOM non-character */ if (mode != NONE_UFBHM) @; @@ -273,7 +277,7 @@ int TextFiles::utf8_fgetc(FILE *from, const char **or_from, unicode_file_buffer } return '?'; } - return c; + return (inchar32_t) c; } @ Not every byte sequence is legal in a UTF-8 file: if we find a malformed @@ -308,12 +312,12 @@ rather than Douglas Adams, they might have filled this gap. As it was, "eth" never occurred in any of their works.) @ = - if ((c == 0xa1) || (c == 0xa3) || (c == 0xbf)) return c; /* pound sign, inverted ! and ? */ + if ((c == 0xa1) || (c == 0xa3) || (c == 0xbf)) return (inchar32_t) c; /* pound sign, inverted ! and ? */ if ((c >= 0xc0) && (c <= 0xff)) { /* accented West European letters, but... */ if ((c != 0xd0) && (c != 0xf0) && /* not Icelandic eths */ (c != 0xde) && (c != 0xfe) && /* nor Icelandic thorns */ (c != 0xf7)) /* nor division signs */ - return c; + return (inchar32_t) c; } @ We err on the safe side, accepting em-rules and non-breaking spaces, etc., diff --git a/foundation-module/Chapter 4/Tries and Avinues.w b/foundation-module/Chapter 4/Tries and Avinues.w index fd7cc8ae..e94b04af 100644 --- a/foundation-module/Chapter 4/Tries and Avinues.w +++ b/foundation-module/Chapter 4/Tries and Avinues.w @@ -41,8 +41,8 @@ in a list. = typedef struct match_trie { int match_character; /* or one of the special cases above */ - wchar_t group_characters[MAX_TRIE_GROUP_SIZE+1]; - wchar_t *match_outcome; + inchar32_t group_characters[MAX_TRIE_GROUP_SIZE+1]; + inchar32_t *match_outcome; struct match_trie *on_success; struct match_trie *next; } match_trie; @@ -74,7 +74,7 @@ a linked list of such nodes). @d MAX_TRIE_REWIND 10 /* that should be far, far more rewinding than necessary */ = -wchar_t *Tries::search(match_trie *T, text_stream *p, wchar_t *add_outcome) { +inchar32_t *Tries::search(match_trie *T, text_stream *p, inchar32_t *add_outcome) { if (T == NULL) internal_error("no trie to search"); int start, endpoint, delta; @@ -89,19 +89,19 @@ wchar_t *Tries::search(match_trie *T, text_stream *p, wchar_t *add_outcome) { match_trie *rewind_prev_positions[MAX_TRIE_REWIND]; for (int i = start; i != endpoint+delta; i += delta) { - wchar_t group[MAX_TRIE_GROUP_SIZE+1]; + inchar32_t group[MAX_TRIE_GROUP_SIZE+1]; int g = 0; /* size of group */ - wchar_t c = (i<0)?0:(Str::get_at(p, i)); /* i.e., zero at the two ends of the text */ + inchar32_t c = (i<0)?0:(Str::get_at(p, i)); /* i.e., zero at the two ends of the text */ if ((c >= 0x20) && (c <= 0x7f)) c = Characters::tolower(c); /* normalise it within ASCII */ if (c == 0x20) { c = 0; i = endpoint - delta; } /* force any space to be equivalent to the final 0 */ if (add_outcome) { - wchar_t pairc = 0; + inchar32_t pairc = 0; if (c == '<') pairc = '>'; if (c == '>') pairc = '<'; if (pairc) { int j; for (j = i+delta; j != endpoint; j += delta) { - wchar_t ch = (j<0)?0:(Str::get_at(p, j)); + inchar32_t ch = (j<0)?0:(Str::get_at(p, j)); if (ch == pairc) break; if (g > MAX_TRIE_GROUP_SIZE) { g = 0; break; } group[g++] = ch; @@ -179,15 +179,15 @@ or |continue| out of an outer loop from an inner one.) match_trie *new_pos = NULL; if (g > 0) { int nt = TRIE_ANY_GROUP; - wchar_t *from = group; + inchar32_t *from = group; if (group[0] == '!') { from++; nt = TRIE_NOT_GROUP; } if (group[(int) Wide::len(group)-1] == '!') { group[(int) Wide::len(group)-1] = 0; nt = TRIE_NOT_GROUP; } new_pos = Tries::new(nt); - wcscpy(new_pos->group_characters, from); + Wide::copy(new_pos->group_characters, from); } else if (c == '*') new_pos = Tries::new(TRIE_ANYTHING); - else new_pos = Tries::new(c); + else new_pos = Tries::new((int)c); if (prev->on_success == NULL) prev->on_success = new_pos; else { @@ -234,7 +234,7 @@ it there. @ Single nodes are matched thus: = -int Tries::matches(match_trie *pos, int c) { +int Tries::matches(match_trie *pos, inchar32_t c) { if (pos->match_character == TRIE_ANYTHING) return TRUE; if (pos->match_character == TRIE_ANY_GROUP) { int k; @@ -250,7 +250,7 @@ int Tries::matches(match_trie *pos, int c) { return FALSE; return TRUE; } - if (pos->match_character == c) return TRUE; + if (pos->match_character == (int)c) return TRUE; return FALSE; } @@ -297,7 +297,7 @@ match_avinue *Tries::new_avinue(int from_start) { return A; } -void Tries::add_to_avinue(match_avinue *mt, text_stream *from, wchar_t *to) { +void Tries::add_to_avinue(match_avinue *mt, text_stream *from, inchar32_t *to) { if ((mt == NULL) || (mt->the_trie == NULL)) internal_error("null trie"); Tries::search(mt->the_trie, from, to); } @@ -324,8 +324,8 @@ match_avinue *Tries::duplicate_avinue(match_avinue *A) { trie in turn until one matches (if it does). = -wchar_t *Tries::search_avinue(match_avinue *T, text_stream *p) { - wchar_t *result = NULL; +inchar32_t *Tries::search_avinue(match_avinue *T, text_stream *p) { + inchar32_t *result = NULL; while ((T) && (result == NULL)) { result = Tries::search(T->the_trie, p, NULL); T = T->next; diff --git a/foundation-module/Chapter 4/Wide Strings.w b/foundation-module/Chapter 4/Wide Strings.w index 40db2e8f..3d7cafe3 100644 --- a/foundation-module/Chapter 4/Wide Strings.w +++ b/foundation-module/Chapter 4/Wide Strings.w @@ -2,27 +2,64 @@ A minimal library for handling wide C strings. -@ By "wide string", we mean an array of |wchar_t|. A pointer to this type -is what is returned by an L-literal in ANSI C, such as |L"look, I'm wide"|. +@ By "wide string", we mean an array of |inchar32_t|. A pointer to this type +is what is returned by a U-literal in ANSI C, such as |U"look, I'm wide"|. A wide string is essentially a C string but with characters stored in full words instead of bytes. The character values should be Unicode code points. -We will do as little as possible with wide strings, and the following -wrappers simply abstract the standard C library's handling. - = -int Wide::len(wchar_t *p) { - return (int) wcslen(p); +int Wide::len(const inchar32_t *p) { + int l = 0; + while (p[l] != 0) l++; + return l; } @ On the rare occasions when we need to sort alphabetically we'll also call: = -int Wide::cmp(wchar_t *A, wchar_t *B) { - return wcscmp(A, B); +int Wide::cmp(inchar32_t *A, inchar32_t *B) { + int i = 0; + while (1) + { + inchar32_t a = A[i]; + inchar32_t b = B[i]; + if (a == b) + { + if (a == 0) return 0; + } + else + { + return (a > b) ? 1 : -1; + } + i++; + } + return 0; +} + +@ = +int Wide::atoi(inchar32_t *p) { + int val = 0, sign = 1; + while (Characters::is_whitespace(*p)) p++; + if (*p == '-') + { + sign = -1; + p++; + } + while (Characters::isdigit(*p)) + { + val = (val * 10) + (int) (*p - '0'); + p++; + } + return val * sign; } @ = -int Wide::atoi(wchar_t *p) { - return (int) wcstol(p, NULL, 10); +void Wide::copy(inchar32_t *to, inchar32_t *from) { + int i = 0; + while (1) + { + to[i] = from[i]; + if (to[i] == 0) return; + i++; + } } diff --git a/foundation-module/Chapter 5/Epub Ebooks.w b/foundation-module/Chapter 5/Epub Ebooks.w index 2bf01c5e..1d8a0e16 100644 --- a/foundation-module/Chapter 5/Epub Ebooks.w +++ b/foundation-module/Chapter 5/Epub Ebooks.w @@ -115,7 +115,7 @@ ebook *Epub::new(text_stream *title, char *prefix) { B->current_chapter = NULL; B->eventual_epub = NULL; B->prefix = prefix; - Epub::attach_metadata(B, L"title", title); + Epub::attach_metadata(B, U"title", title); return B; } @@ -127,7 +127,7 @@ void Epub::use_CSS(ebook_volume *V, filename *F) { V->CSS_file = F; } -text_stream *Epub::attach_metadata(ebook *B, wchar_t *K, text_stream *V) { +text_stream *Epub::attach_metadata(ebook *B, inchar32_t *K, text_stream *V) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) if (Str::eq_wide_string(D->key, K)) { @@ -141,7 +141,7 @@ text_stream *Epub::attach_metadata(ebook *B, wchar_t *K, text_stream *V) { return D->value; } -text_stream *Epub::get_metadata(ebook *B, wchar_t *K) { +text_stream *Epub::get_metadata(ebook *B, inchar32_t *K) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) if (Str::eq_wide_string(D->key, K)) @@ -149,7 +149,7 @@ text_stream *Epub::get_metadata(ebook *B, wchar_t *K) { return NULL; } -text_stream *Epub::ensure_metadata(ebook *B, wchar_t *K) { +text_stream *Epub::ensure_metadata(ebook *B, inchar32_t *K) { text_stream *S = Epub::get_metadata(B, K); if (S == NULL) S = Epub::attach_metadata(B, K, NULL); return S; @@ -168,7 +168,7 @@ ebook_page *Epub::note_page(ebook *B, filename *F, text_stream *title, text_stre WRITE_TO(P->page_ID, B->prefix); Filenames::write_unextended_leafname(P->page_ID, F); LOOP_THROUGH_TEXT(pos, P->page_ID) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if ((c == '-') || (c == ' ')) Str::put(pos, '_'); } ADD_TO_LINKED_LIST(P, ebook_page, B->ebook_page_list); @@ -224,7 +224,7 @@ pathname *Epub::begin_construction(ebook *B, pathname *P, filename *cover_image) if (Pathnames::create_in_file_system(P) == FALSE) return NULL; TEMPORARY_TEXT(TEMP) - WRITE_TO(TEMP, "%S.epub", Epub::get_metadata(B, L"title")); + WRITE_TO(TEMP, "%S.epub", Epub::get_metadata(B, U"title")); B->eventual_epub = Filenames::in(P, TEMP); DISCARD_TEXT(TEMP) @@ -296,7 +296,7 @@ images" at the ThreePress Consulting blog.) HTML::end_head(OUT); HTML::begin_body(OUT, NULL); HTML_OPEN_WITH("div", "id=\"cover-image\""); - HTML_TAG_WITH("img", "src=\"%/f\" alt=\"%S\"", cover_image, Epub::get_metadata(B, L"title")); + HTML_TAG_WITH("img", "src=\"%/f\" alt=\"%S\"", cover_image, Epub::get_metadata(B, U"title")); WRITE("\n"); HTML_CLOSE("div"); HTML::end_body(OUT); @@ -312,7 +312,7 @@ void Epub::end_construction(ebook *B) { } @ = - text_stream *datestamp = Epub::ensure_metadata(B, L"date"); + text_stream *datestamp = Epub::ensure_metadata(B, U"date"); if (Str::len(datestamp) == 0) { WRITE_TO(datestamp, "%04d-%02d-%02d", the_present->tm_year + 1900, (the_present->tm_mon)+1, the_present->tm_mday); @@ -320,15 +320,15 @@ void Epub::end_construction(ebook *B) { TEMPORARY_TEXT(TEMP) WRITE_TO(TEMP, "urn:www.inform7.com:"); - text_stream *identifier = Epub::ensure_metadata(B, L"identifier"); + text_stream *identifier = Epub::ensure_metadata(B, U"identifier"); if (Str::len(identifier) == 0) - WRITE_TO(TEMP, "%S", Epub::get_metadata(B, L"title")); + WRITE_TO(TEMP, "%S", Epub::get_metadata(B, U"title")); else WRITE_TO(TEMP, "%S", identifier); Str::copy(identifier, TEMP); DISCARD_TEXT(TEMP) - text_stream *lang = Epub::ensure_metadata(B, L"language"); + text_stream *lang = Epub::ensure_metadata(B, U"language"); if (Str::len(lang) == 0) WRITE_TO(lang, "en-UK"); @ = @@ -358,7 +358,7 @@ void Epub::end_construction(ebook *B) { ebook_datum *D = NULL; LOOP_OVER_LINKED_LIST(D, ebook_datum, B->metadata_list) { WRITE("key); - if (Str::eq_wide_string(D->key, L"identifier")) WRITE(" id=\"bookid\""); + if (Str::eq_wide_string(D->key, U"identifier")) WRITE(" id=\"bookid\""); WRITE(">"); WRITE("%S\n", D->value, D->key); } @@ -454,13 +454,13 @@ impaired people. @ = WRITE("\n"); INDENT; - WRITE("\n", Epub::get_metadata(B, L"identifier")); + WRITE("\n", Epub::get_metadata(B, U"identifier")); WRITE("\n", depth); WRITE("\n"); WRITE("\n"); OUTDENT; WRITE("\n"); WRITE("\n"); INDENT; - WRITE("%S\n", Epub::get_metadata(B, L"title")); + WRITE("%S\n", Epub::get_metadata(B, U"title")); OUTDENT; WRITE("\n"); @ = @@ -486,8 +486,8 @@ impaired people. ebook_page *P; LOOP_OVER_LINKED_LIST(P, ebook_page, B->ebook_page_list) { int in_phase = 1; - if ((Str::eq_wide_string(P->page_ID, L"cover")) || - (Str::eq_wide_string(P->page_ID, L"index"))) + if ((Str::eq_wide_string(P->page_ID, U"cover")) || + (Str::eq_wide_string(P->page_ID, U"index"))) in_phase = 0; if ((in_phase == phase) && (P->nav_entry_written == FALSE)) { @; diff --git a/foundation-module/Chapter 5/HTML Entities.w b/foundation-module/Chapter 5/HTML Entities.w index df332674..70ba7120 100644 --- a/foundation-module/Chapter 5/HTML Entities.w +++ b/foundation-module/Chapter 5/HTML Entities.w @@ -13,7 +13,7 @@ If the |entity| is not valid, neither |A| nor |B| is written to, and |FALSE| is returned. = -int HTMLEntities::parse(text_stream *entity, wchar_t *A, wchar_t *B) { +int HTMLEntities::parse(text_stream *entity, inchar32_t *A, inchar32_t *B) { if (Str::get_at(entity, 0) != '&') return FALSE; if (Str::get_at(entity, 1) == '#') { int base = 10, from = 2; @@ -23,7 +23,7 @@ int HTMLEntities::parse(text_stream *entity, wchar_t *A, wchar_t *B) { int total = 0, dc = 0; while (Str::get_at(entity, from)) { int dval = -1; - wchar_t digit = Str::get_at(entity, from); + inchar32_t digit = Str::get_at(entity, from); if ((digit >= '0') && (digit <= '9')) dval = (int) digit - (int) '0'; else if ((base == 16) && (digit >= 'a') && (digit <= 'f')) dval = 10 + (int) digit - (int) 'a'; else if ((base == 16) && (digit >= 'A') && (digit <= 'F')) dval = 10 + (int) digit - (int) 'A'; @@ -34,7 +34,7 @@ int HTMLEntities::parse(text_stream *entity, wchar_t *A, wchar_t *B) { if (dc > 7) return FALSE; } if (dc == 0) return FALSE; - if (A) *A = total; if (B) *B = 0; + if (A) *A = (inchar32_t)total; if (B) *B = 0; return TRUE; } else { switch (Str::get_at(entity, 1)) { diff --git a/foundation-module/Chapter 5/HTML.w b/foundation-module/Chapter 5/HTML.w index 8713e20d..0a52bea2 100644 --- a/foundation-module/Chapter 5/HTML.w +++ b/foundation-module/Chapter 5/HTML.w @@ -697,163 +697,163 @@ Inform uses these when constructing the map in the World index. = typedef struct colour_translation { - wchar_t *chip_name; - wchar_t *html_colour; + inchar32_t *chip_name; + inchar32_t *html_colour; } colour_translation; colour_translation table_of_translations[] = { - { L"Alice Blue", L"F0F8FF" }, - { L"Antique White", L"FAEBD7" }, - { L"Aqua", L"00FFFF" }, - { L"Aquamarine", L"7FFFD4" }, - { L"Azure", L"F0FFFF" }, - { L"Beige", L"F5F5DC" }, - { L"Bisque", L"FFE4C4" }, - { L"Black", L"000000" }, - { L"Blanched Almond", L"FFEBCD" }, - { L"Blue", L"0000FF" }, - { L"Blue Violet", L"8A2BE2" }, - { L"Brown", L"A52A2A" }, - { L"Burly Wood", L"DEB887" }, - { L"Cadet Blue", L"5F9EA0" }, - { L"Chartreuse", L"7FFF00" }, - { L"Chocolate", L"D2691E" }, - { L"Coral", L"FF7F50" }, - { L"Cornflower Blue", L"6495ED" }, - { L"Cornsilk", L"FFF8DC" }, - { L"Crimson", L"DC143C" }, - { L"Cyan", L"00FFFF" }, - { L"Dark Blue", L"00008B" }, - { L"Dark Cyan", L"008B8B" }, - { L"Dark Golden Rod", L"B8860B" }, - { L"Dark Gray", L"A9A9A9" }, - { L"Dark Green", L"006400" }, - { L"Dark Khaki", L"BDB76B" }, - { L"Dark Magenta", L"8B008B" }, - { L"Dark Olive Green", L"556B2F" }, - { L"Dark Orange", L"FF8C00" }, - { L"Dark Orchid", L"9932CC" }, - { L"Dark Red", L"8B0000" }, - { L"Dark Salmon", L"E9967A" }, - { L"Dark Sea Green", L"8FBC8F" }, - { L"Dark Slate Blue", L"483D8B" }, - { L"Dark Slate Gray", L"2F4F4F" }, - { L"Dark Turquoise", L"00CED1" }, - { L"Dark Violet", L"9400D3" }, - { L"Deep Pink", L"FF1493" }, - { L"Deep Sky Blue", L"00BFFF" }, - { L"Dim Gray", L"696969" }, - { L"Dodger Blue", L"1E90FF" }, - { L"Feldspar", L"D19275" }, - { L"Fire Brick", L"B22222" }, - { L"Floral White", L"FFFAF0" }, - { L"Forest Green", L"228B22" }, - { L"Fuchsia", L"FF00FF" }, - { L"Gainsboro", L"DCDCDC" }, - { L"Ghost White", L"F8F8FF" }, - { L"Gold", L"FFD700" }, - { L"Golden Rod", L"DAA520" }, - { L"Gray", L"808080" }, - { L"Green", L"008000" }, - { L"Green Yellow", L"ADFF2F" }, - { L"Honey Dew", L"F0FFF0" }, - { L"Hot Pink", L"FF69B4" }, - { L"Indian Red", L"CD5C5C" }, - { L"Indigo", L"4B0082" }, - { L"Ivory", L"FFFFF0" }, - { L"Khaki", L"F0E68C" }, - { L"Lavender", L"E6E6FA" }, - { L"Lavender Blush", L"FFF0F5" }, - { L"Lawn Green", L"7CFC00" }, - { L"Lemon Chiffon", L"FFFACD" }, - { L"Light Blue", L"ADD8E6" }, - { L"Light Coral", L"F08080" }, - { L"Light Cyan", L"E0FFFF" }, - { L"Light Golden Rod Yellow", L"FAFAD2" }, - { L"Light Grey", L"D3D3D3" }, - { L"Light Green", L"90EE90" }, - { L"Light Pink", L"FFB6C1" }, - { L"Light Salmon", L"FFA07A" }, - { L"Light Sea Green", L"20B2AA" }, - { L"Light Sky Blue", L"87CEFA" }, - { L"Light Slate Blue", L"8470FF" }, - { L"Light Slate Gray", L"778899" }, - { L"Light Steel Blue", L"B0C4DE" }, - { L"Light Yellow", L"FFFFE0" }, - { L"Lime", L"00FF00" }, - { L"Lime Green", L"32CD32" }, - { L"Linen", L"FAF0E6" }, - { L"Magenta", L"FF00FF" }, - { L"Maroon", L"800000" }, - { L"Medium Aquamarine", L"66CDAA" }, - { L"Medium Blue", L"0000CD" }, - { L"Medium Orchid", L"BA55D3" }, - { L"Medium Purple", L"9370D8" }, - { L"Medium Sea Green", L"3CB371" }, - { L"Medium Slate Blue", L"7B68EE" }, - { L"Medium Spring Green", L"00FA9A" }, - { L"Medium Turquoise", L"48D1CC" }, - { L"Medium Violet Red", L"CA226B" }, - { L"Midnight Blue", L"191970" }, - { L"Mint Cream", L"F5FFFA" }, - { L"Misty Rose", L"FFE4E1" }, - { L"Moccasin", L"FFE4B5" }, - { L"Navajo White", L"FFDEAD" }, - { L"Navy", L"000080" }, - { L"Old Lace", L"FDF5E6" }, - { L"Olive", L"808000" }, - { L"Olive Drab", L"6B8E23" }, - { L"Orange", L"FFA500" }, - { L"Orange Red", L"FF4500" }, - { L"Orchid", L"DA70D6" }, - { L"Pale Golden Rod", L"EEE8AA" }, - { L"Pale Green", L"98FB98" }, - { L"Pale Turquoise", L"AFEEEE" }, - { L"Pale Violet Red", L"D87093" }, - { L"Papaya Whip", L"FFEFD5" }, - { L"Peach Puff", L"FFDAB9" }, - { L"Peru", L"CD853F" }, - { L"Pink", L"FFC0CB" }, - { L"Plum", L"DDA0DD" }, - { L"Powder Blue", L"B0E0E6" }, - { L"Purple", L"800080" }, - { L"Red", L"FF0000" }, - { L"Rosy Brown", L"BC8F8F" }, - { L"Royal Blue", L"4169E1" }, - { L"Saddle Brown", L"8B4513" }, - { L"Salmon", L"FA8072" }, - { L"Sandy Brown", L"F4A460" }, - { L"Sea Green", L"2E8B57" }, - { L"Sea Shell", L"FFF5EE" }, - { L"Sienna", L"A0522D" }, - { L"Silver", L"C0C0C0" }, - { L"Sky Blue", L"87CEEB" }, - { L"Slate Blue", L"6A5ACD" }, - { L"Slate Gray", L"708090" }, - { L"Snow", L"FFFAFA" }, - { L"Spring Green", L"00FF7F" }, - { L"Steel Blue", L"4682B4" }, - { L"Tan", L"D2B48C" }, - { L"Teal", L"008080" }, - { L"Thistle", L"D8BFD8" }, - { L"Tomato", L"FF6347" }, - { L"Turquoise", L"40E0D0" }, - { L"Violet", L"EE82EE" }, - { L"Violet Red", L"D02090" }, - { L"Wheat", L"F5DEB3" }, - { L"White", L"FFFFFF" }, - { L"White Smoke", L"F5F5F5" }, - { L"Yellow", L"FFFF00" }, - { L"Yellow Green", L"9ACD32" }, - { L"", L"" } + { U"Alice Blue", U"F0F8FF" }, + { U"Antique White", U"FAEBD7" }, + { U"Aqua", U"00FFFF" }, + { U"Aquamarine", U"7FFFD4" }, + { U"Azure", U"F0FFFF" }, + { U"Beige", U"F5F5DC" }, + { U"Bisque", U"FFE4C4" }, + { U"Black", U"000000" }, + { U"Blanched Almond", U"FFEBCD" }, + { U"Blue", U"0000FF" }, + { U"Blue Violet", U"8A2BE2" }, + { U"Brown", U"A52A2A" }, + { U"Burly Wood", U"DEB887" }, + { U"Cadet Blue", U"5F9EA0" }, + { U"Chartreuse", U"7FFF00" }, + { U"Chocolate", U"D2691E" }, + { U"Coral", U"FF7F50" }, + { U"Cornflower Blue", U"6495ED" }, + { U"Cornsilk", U"FFF8DC" }, + { U"Crimson", U"DC143C" }, + { U"Cyan", U"00FFFF" }, + { U"Dark Blue", U"00008B" }, + { U"Dark Cyan", U"008B8B" }, + { U"Dark Golden Rod", U"B8860B" }, + { U"Dark Gray", U"A9A9A9" }, + { U"Dark Green", U"006400" }, + { U"Dark Khaki", U"BDB76B" }, + { U"Dark Magenta", U"8B008B" }, + { U"Dark Olive Green", U"556B2F" }, + { U"Dark Orange", U"FF8C00" }, + { U"Dark Orchid", U"9932CC" }, + { U"Dark Red", U"8B0000" }, + { U"Dark Salmon", U"E9967A" }, + { U"Dark Sea Green", U"8FBC8F" }, + { U"Dark Slate Blue", U"483D8B" }, + { U"Dark Slate Gray", U"2F4F4F" }, + { U"Dark Turquoise", U"00CED1" }, + { U"Dark Violet", U"9400D3" }, + { U"Deep Pink", U"FF1493" }, + { U"Deep Sky Blue", U"00BFFF" }, + { U"Dim Gray", U"696969" }, + { U"Dodger Blue", U"1E90FF" }, + { U"Feldspar", U"D19275" }, + { U"Fire Brick", U"B22222" }, + { U"Floral White", U"FFFAF0" }, + { U"Forest Green", U"228B22" }, + { U"Fuchsia", U"FF00FF" }, + { U"Gainsboro", U"DCDCDC" }, + { U"Ghost White", U"F8F8FF" }, + { U"Gold", U"FFD700" }, + { U"Golden Rod", U"DAA520" }, + { U"Gray", U"808080" }, + { U"Green", U"008000" }, + { U"Green Yellow", U"ADFF2F" }, + { U"Honey Dew", U"F0FFF0" }, + { U"Hot Pink", U"FF69B4" }, + { U"Indian Red", U"CD5C5C" }, + { U"Indigo", U"4B0082" }, + { U"Ivory", U"FFFFF0" }, + { U"Khaki", U"F0E68C" }, + { U"Lavender", U"E6E6FA" }, + { U"Lavender Blush", U"FFF0F5" }, + { U"Lawn Green", U"7CFC00" }, + { U"Lemon Chiffon", U"FFFACD" }, + { U"Light Blue", U"ADD8E6" }, + { U"Light Coral", U"F08080" }, + { U"Light Cyan", U"E0FFFF" }, + { U"Light Golden Rod Yellow", U"FAFAD2" }, + { U"Light Grey", U"D3D3D3" }, + { U"Light Green", U"90EE90" }, + { U"Light Pink", U"FFB6C1" }, + { U"Light Salmon", U"FFA07A" }, + { U"Light Sea Green", U"20B2AA" }, + { U"Light Sky Blue", U"87CEFA" }, + { U"Light Slate Blue", U"8470FF" }, + { U"Light Slate Gray", U"778899" }, + { U"Light Steel Blue", U"B0C4DE" }, + { U"Light Yellow", U"FFFFE0" }, + { U"Lime", U"00FF00" }, + { U"Lime Green", U"32CD32" }, + { U"Linen", U"FAF0E6" }, + { U"Magenta", U"FF00FF" }, + { U"Maroon", U"800000" }, + { U"Medium Aquamarine", U"66CDAA" }, + { U"Medium Blue", U"0000CD" }, + { U"Medium Orchid", U"BA55D3" }, + { U"Medium Purple", U"9370D8" }, + { U"Medium Sea Green", U"3CB371" }, + { U"Medium Slate Blue", U"7B68EE" }, + { U"Medium Spring Green", U"00FA9A" }, + { U"Medium Turquoise", U"48D1CC" }, + { U"Medium Violet Red", U"CA226B" }, + { U"Midnight Blue", U"191970" }, + { U"Mint Cream", U"F5FFFA" }, + { U"Misty Rose", U"FFE4E1" }, + { U"Moccasin", U"FFE4B5" }, + { U"Navajo White", U"FFDEAD" }, + { U"Navy", U"000080" }, + { U"Old Lace", U"FDF5E6" }, + { U"Olive", U"808000" }, + { U"Olive Drab", U"6B8E23" }, + { U"Orange", U"FFA500" }, + { U"Orange Red", U"FF4500" }, + { U"Orchid", U"DA70D6" }, + { U"Pale Golden Rod", U"EEE8AA" }, + { U"Pale Green", U"98FB98" }, + { U"Pale Turquoise", U"AFEEEE" }, + { U"Pale Violet Red", U"D87093" }, + { U"Papaya Whip", U"FFEFD5" }, + { U"Peach Puff", U"FFDAB9" }, + { U"Peru", U"CD853F" }, + { U"Pink", U"FFC0CB" }, + { U"Plum", U"DDA0DD" }, + { U"Powder Blue", U"B0E0E6" }, + { U"Purple", U"800080" }, + { U"Red", U"FF0000" }, + { U"Rosy Brown", U"BC8F8F" }, + { U"Royal Blue", U"4169E1" }, + { U"Saddle Brown", U"8B4513" }, + { U"Salmon", U"FA8072" }, + { U"Sandy Brown", U"F4A460" }, + { U"Sea Green", U"2E8B57" }, + { U"Sea Shell", U"FFF5EE" }, + { U"Sienna", U"A0522D" }, + { U"Silver", U"C0C0C0" }, + { U"Sky Blue", U"87CEEB" }, + { U"Slate Blue", U"6A5ACD" }, + { U"Slate Gray", U"708090" }, + { U"Snow", U"FFFAFA" }, + { U"Spring Green", U"00FF7F" }, + { U"Steel Blue", U"4682B4" }, + { U"Tan", U"D2B48C" }, + { U"Teal", U"008080" }, + { U"Thistle", U"D8BFD8" }, + { U"Tomato", U"FF6347" }, + { U"Turquoise", U"40E0D0" }, + { U"Violet", U"EE82EE" }, + { U"Violet Red", U"D02090" }, + { U"Wheat", U"F5DEB3" }, + { U"White", U"FFFFFF" }, + { U"White Smoke", U"F5F5F5" }, + { U"Yellow", U"FFFF00" }, + { U"Yellow Green", U"9ACD32" }, + { U"", U"" } }; @ The following is used only a handful of times, if at all, and does not need to run quickly. = -wchar_t *HTML::translate_colour_name(wchar_t *original) { - for (int j=0; Wide::cmp(table_of_translations[j].chip_name, L""); j++) +inchar32_t *HTML::translate_colour_name(inchar32_t *original) { + for (int j=0; Wide::cmp(table_of_translations[j].chip_name, U""); j++) if (Wide::cmp(table_of_translations[j].chip_name, original) == 0) return table_of_translations[j].html_colour; return NULL; @@ -887,7 +887,7 @@ To begin with, to XML: = void HTML::write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) { LOOP_THROUGH_TEXT(pos, txt) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); switch(c) { case '&': WRITE("&"); break; case '<': WRITE("<"); break; @@ -916,7 +916,7 @@ respectively. These do not occur in Inform source text. text_stream *source_ref_fields[3] = { NULL, NULL, NULL }; /* paraphrase, filename, line */ int source_ref_field = -1; /* which field we are buffering */ -void HTML::put(OUTPUT_STREAM, int charcode) { +void HTML::put(OUTPUT_STREAM, inchar32_t charcode) { @; switch(charcode) { case '"': WRITE("""); break; diff --git a/foundation-module/Chapter 5/Inform-Flavoured Markdown.w b/foundation-module/Chapter 5/Inform-Flavoured Markdown.w index 30fb88d6..a45f5ceb 100644 --- a/foundation-module/Chapter 5/Inform-Flavoured Markdown.w +++ b/foundation-module/Chapter 5/Inform-Flavoured Markdown.w @@ -95,12 +95,12 @@ void InformFlavouredMarkdown::OIH_intervene_after_Phase_I(markdown_feature *feat if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"%[x%] *(%c+?)")) { + if (Regexp::match(&mr, line, U"%[x%] *(%c+?)")) { MDBlockParser::change_type(NULL, md, HEADING_MIT); Markdown::set_heading_level(md, 2); Str::clear(line); WRITE_TO(line, "%S", mr.exp[0]); - } else if (Regexp::match(&mr, line, L"%[Chapter: *(%c+)%] *(%c+?)")) { + } else if (Regexp::match(&mr, line, U"%[Chapter: *(%c+)%] *(%c+?)")) { MDBlockParser::change_type(NULL, md, HEADING_MIT); Markdown::set_heading_level(md, 1); Str::clear(line); @@ -148,14 +148,14 @@ void InformFlavouredMarkdown::Inform_headings_r(markdown_item *md) { if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, line, L"Section *: *(%c+?)")) || - (Regexp::match(&mr, line, L"Section *- *(%c+?)"))) { + if ((Regexp::match(&mr, line, U"Section *: *(%c+?)")) || + (Regexp::match(&mr, line, U"Section *- *(%c+?)"))) { MDBlockParser::change_type(NULL, md, HEADING_MIT); Markdown::set_heading_level(md, 2); Str::clear(line); WRITE_TO(line, "%S", mr.exp[0]); - } else if ((Regexp::match(&mr, line, L"Chapter *: *(%c+?)")) || - (Regexp::match(&mr, line, L"Chapter *- *(%c+?)"))) { + } else if ((Regexp::match(&mr, line, U"Chapter *: *(%c+?)")) || + (Regexp::match(&mr, line, U"Chapter *- *(%c+?)"))) { MDBlockParser::change_type(NULL, md, HEADING_MIT); Markdown::set_heading_level(md, 1); Str::clear(line); @@ -329,8 +329,8 @@ void InformFlavouredMarkdown::detect_embedded_examples_r(markdown_item *md, int if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, line, L"Example *: *(%**) *(%c+?)")) || - (Regexp::match(&mr, line, L"Example *- *(%**) *(%c+?)"))) { + if ((Regexp::match(&mr, line, U"Example *: *(%**) *(%c+?)")) || + (Regexp::match(&mr, line, U"Example *- *(%**) *(%c+?)"))) { MDBlockParser::change_type(NULL, md, INFORM_EXAMPLE_HEADING_MIT); int star_count = Str::len(mr.exp[0]); IFM_example *new_eg = InformFlavouredMarkdown::new_example(mr.exp[1], NULL, @@ -594,7 +594,7 @@ void InformFlavouredMarkdown::pbiapi_r(markdown_item *md) { if (ch->type == CODE_BLOCK_MIT) { TEMPORARY_TEXT(detabbed) for (int i=0, margin=0; istashed); i++) { - wchar_t c = Str::get_at(ch->stashed, i); + inchar32_t c = Str::get_at(ch->stashed, i); if (c == '\t') { PUT_TO(detabbed, ' '); margin++; while (margin % 4 != 0) { PUT_TO(detabbed, ' '); margin++; } @@ -630,8 +630,8 @@ void InformFlavouredMarkdown::PD_intervene_after_Phase_I(markdown_feature *featu if (md->type == BLOCK_QUOTE_MIT) { if ((md->down) && (md->down->type == PARAGRAPH_MIT)) { match_results mr = Regexp::create_mr(); - if ((Regexp::match(&mr, md->down->stashed, L"phrase: *%{(%c*?)%} *(%c+?)")) || - (Regexp::match(&mr, md->down->stashed, L"(phrase): *(%c+?)"))) { + if ((Regexp::match(&mr, md->down->stashed, U"phrase: *%{(%c*?)%} *(%c+?)")) || + (Regexp::match(&mr, md->down->stashed, U"(phrase): *(%c+?)"))) { markdown_item *join_to = NULL; TEMPORARY_TEXT(phrase) for (int i=0; itype == HEADING_MIT) && (Markdown::get_heading_level(md) <= 2)) { text_stream *line = md->stashed; match_results mr = Regexp::create_mr(); - while (Regexp::match(&mr, line, L"(%c*) %{(%C+)%} *")) { + while (Regexp::match(&mr, line, U"(%c*) %{(%C+)%} *")) { markdown_item *hm_item = Markdown::new_item(HEADING_MARKER_MIT); hm_item->stashed = Str::duplicate(mr.exp[1]); Str::clear(line); Str::copy(line, mr.exp[0]); @@ -766,7 +766,7 @@ void InformFlavouredMarkdown::PG_intervene_after_Phase_I(markdown_feature *featu if (md->type == PARAGRAPH_MIT) { text_stream *line = md->stashed; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"%{(%C+?):%} *(%c*)")) { + if (Regexp::match(&mr, line, U"%{(%C+?):%} *(%c*)")) { MDBlockParser::change_type(NULL, md, GATE_MIT); md->details = TRUE; Str::clear(line); Str::copy(line, mr.exp[0]); @@ -870,7 +870,7 @@ block (if there is one) names the language in use. TEMPORARY_TEXT(language_text) TEMPORARY_TEXT(language) for (int i=0; iinfo_string); i++) { - wchar_t c = Str::get_at(md->info_string, i); + inchar32_t c = Str::get_at(md->info_string, i); if ((c == ' ') || (c == '\t')) break; PUT_TO(language_text, c); } @@ -934,7 +934,7 @@ use "transcript" instead. int ts = FALSE; for (int i=0; istashed, i); + inchar32_t c = Str::get_at(md->stashed, i); if (c == '[') ts = TRUE; if (ts) Str::put_at(colouring, i, EXTRACT_COLOUR); if (c == ']') ts = FALSE; @@ -967,7 +967,7 @@ use "transcript" instead. line_count++; if (Str::is_whitespace(line)) tabular = FALSE; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"Table %c*")) tabular = TRUE; + if (Regexp::match(&mr, line, U"Table %c*")) tabular = TRUE; Regexp::dispose_of(&mr); if (tabular) { if (tabulating) { @@ -1094,10 +1094,10 @@ and this is fiddly but elementary in the usual way of HTML tables: @ = void InformFlavouredMarkdown::syntax_coloured_code(OUTPUT_STREAM, text_stream *text, text_stream *colouring, int from, int to, int mode) { - wchar_t current_col = 0; + inchar32_t current_col = 0; for (int i=from; i 0) ornament_count++; } else { @@ -521,11 +521,11 @@ black width, in the second case it is the black width plus 1. @ = if (MarkdownVariations::supports(state->variation, UNORDERED_LISTS_MARKDOWNFEATURE)) { - wchar_t flavour = 0; + inchar32_t flavour = 0; tabbed_string_iterator adv = MDBlockParser::bullet_list_marker(starts_at, &flavour); int black_width = TabbedStr::get_position(&adv) - TabbedStr::get_position(line_scanner); if (black_width > 0) { - wchar_t next = TabbedStr::get_character(&adv); + inchar32_t next = TabbedStr::get_character(&adv); if ((next == ' ') || (next == 0)) { TabbedStr::eat_space(&adv); int white_width = TabbedStr::get_position(&adv) - TabbedStr::get_position(line_scanner); @@ -560,12 +560,12 @@ entry "Permission to use...". @ = if (MarkdownVariations::supports(state->variation, ORDERED_LISTS_MARKDOWNFEATURE)) { - wchar_t flavour = 0; + inchar32_t flavour = 0; int val = 0; tabbed_string_iterator adv = MDBlockParser::ordered_list_marker(starts_at, &val, &flavour); int black_width = TabbedStr::get_position(&adv) - TabbedStr::get_position(line_scanner); if (black_width > 0) { - wchar_t next = TabbedStr::get_character(&adv); + inchar32_t next = TabbedStr::get_character(&adv); if ((next == ' ') || (next == 0)) { TabbedStr::eat_space(&adv); int white_width = TabbedStr::get_position(&adv) - TabbedStr::get_position(line_scanner); @@ -1177,7 +1177,7 @@ because there was no content left, we have to preserve it as literal content, opening a new paragraph to hold the |-----|. @ = - wchar_t c = Str::get_at(line, content_index); + inchar32_t c = Str::get_at(line, content_index); markdown_item *headb = MDBlockParser::latest_paragraph(state); if (headb) { MDBlockParser::remove_link_references(state, headb); @@ -1196,7 +1196,7 @@ content, opening a new paragraph to hold the |-----|. if ((parb) && (parb->type == PARAGRAPH_MIT)) { WRITE_TO(parb->stashed, "\n"); for (int i = content_index; istashed, c); } } else internal_error("no paragraph is open after all"); @@ -1233,7 +1233,7 @@ we can make sure matching syntax is used on the closing line. text_stream *info_string = Str::new(); MDBlockParser::can_interpret_as(state, line, indentation, content_index, CODE_FENCE_OPEN_MDINTERPRETATION, info_string, NULL); - wchar_t c = Str::get_at(line, content_index); + inchar32_t c = Str::get_at(line, content_index); markdown_item *cb = Markdown::new_item(CODE_BLOCK_MIT); cb->stashed = Str::new(); cb->info_string = info_string; @@ -1276,7 +1276,7 @@ tab for this: we must use the correct fraction of a tab, using spaces as quarter TabbedStr::advance(&line_scanner); } for (int i = TabbedStr::get_index(&line_scanner); istashed, c); } PUT_TO(code_block->stashed, '\n'); @@ -1316,7 +1316,7 @@ block or not. (In this example, they will, but we can't know that.) if (indentation) for (int i=content_index; iblank_matter_after_receiver, c); } PUT_TO(state->blank_matter_after_receiver, '\n'); @@ -1340,7 +1340,7 @@ he might have gone on to give us.) text_stream *H = Str::new(); headb->stashed = H; for (int i=content_index+hash_count; itemporary_marker_limit == 1) from = 0; for (int i = from; istashed, c); } PUT_TO(latest->stashed, '\n'); @@ -1462,7 +1462,7 @@ block: TabbedStr::advance(&line_scanner); } for (int i = TabbedStr::get_index(&line_scanner); istashed, c); } PUT_TO(latest->stashed, '\n'); @@ -1567,17 +1567,17 @@ setext underline. if ((MarkdownVariations::supports(state->variation, INDENTED_CODE_BLOCKS_MARKDOWNFEATURE)) && (indentation)) return FALSE; if (MarkdownVariations::supports(state->variation, SETEXT_HEADINGS_MARKDOWNFEATURE)) { - wchar_t c = Str::get_at(line, content_index); + inchar32_t c = Str::get_at(line, content_index); if ((c == '-') || (c == '=')) { int ornament_count = 1, extraneous = 0; int j=content_index+1; for (; j 0) && (extraneous == 0)) return TRUE; @@ -1609,14 +1609,14 @@ reach line 5. if ((which == CODE_FENCE_CLOSE_MDINTERPRETATION) && (state->fencing.material == 0)) return FALSE; text_stream *info_string = text_details; - wchar_t c = Str::get_at(line, content_index); + inchar32_t c = Str::get_at(line, content_index); if ((which == CODE_FENCE_CLOSE_MDINTERPRETATION) && (state->fencing.material != c)) return FALSE; if ((c == '`') || (c == '~')) { int post_count = 0; int j = content_index; for (; j = int ambiguous = FALSE, count = 0, escaped = FALSE; for (; jvariation, HTML_BLOCKS_MARKDOWNFEATURE) == FALSE) return FALSE; - wchar_t c = Str::get_at(line, content_index); + inchar32_t c = Str::get_at(line, content_index); if (c != '<') return FALSE; int condition_type = 0; /* not a valid condition */ @@ -1690,7 +1690,7 @@ The one piece of good news is that they all start with a |<| character. int i = content_index+1; /* i.e., the index after the |<| */ TEMPORARY_TEXT(tag) for (; i')) break; PUT_TO(tag, c); } @@ -1833,7 +1833,7 @@ but can also be followed by HTML attributes and values: for example, TEMPORARY_TEXT(tag_name) int i = 0; for (; i 0) && ((Characters::is_ASCII_digit(c)) || (c == '-')))) PUT_TO(tag_name, c); @@ -1847,7 +1847,7 @@ but can also be followed by HTML attributes and values: for example, DISCARD_TEXT(tag_name) if (closing == FALSE) { while (TRUE) { - wchar_t c = Str::get_at(tag, i); + inchar32_t c = Str::get_at(tag, i); if ((c != ' ') && (c != '\t')) break; i = MDBlockParser::advance_past_spacing(tag, i); c = Str::get_at(tag, i); @@ -1861,7 +1861,7 @@ but can also be followed by HTML attributes and values: for example, if (Str::get_at(tag, i) == '=') { i++; i = MDBlockParser::advance_past_spacing(tag, i); - wchar_t c = Str::get_at(tag, i); + inchar32_t c = Str::get_at(tag, i); if (c == '\'') { i++; c = Str::get_at(tag, i); while ((c) && (c != '\'')) { @@ -1921,7 +1921,7 @@ we do not skip an entire visually blank line. = int MDBlockParser::advance_past_spacing(text_stream *tag, int i) { int newlines = 0; - wchar_t c = Str::get_at(tag, i); + inchar32_t c = Str::get_at(tag, i); while ((c == ' ') || (c == '\t') || (c == '\n')) { if (c == '\n') { newlines++; if (newlines == 2) break; @@ -1988,7 +1988,7 @@ int MDBlockParser::remove_link_references(md_doc_state *state, markdown_item *at @ = for (; i = - wchar_t c = Str::get_at(X, i); + inchar32_t c = Str::get_at(X, i); if (c == '<') { i++; c = Str::get_at(X, i); while ((c != 0) && (c != '\n')) { @@ -2029,12 +2029,12 @@ int MDBlockParser::remove_link_references(md_doc_state *state, markdown_item *at if ((valid) && (Str::get_at(X, i) == '\n')) stop_here = i; i = MDBlockParser::advance_past_spacing(X, i); ws_count = i - ws_count; - wchar_t quot = 0; + inchar32_t quot = 0; if (Str::get_at(X, i) == '"') quot = '"'; if (Str::get_at(X, i) == '\'') quot = '\''; if ((ws_count > 0) && (quot)) { for (i++; i 0) { Str::clear(line1); for (int i=remainder_at; idetails = count; if (name_inversion) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, md->stashed, L"(%c*) (%C+)")) { + if (Regexp::match(&mr, md->stashed, U"(%c*) (%C+)")) { Str::clear(md->stashed); WRITE_TO(md->stashed, "%S, %S", mr.exp[1], mr.exp[0]); } @@ -222,7 +222,7 @@ notation, also used by indoc. @ = if (Str::get_at(text, i) == '<') { for (int j=i+1; j') { int link_from = i+1, link_to = j-1, count = j-i+1; if (tracing_Markdown_parser) { @@ -292,7 +292,7 @@ period, or hyphen." int scheme_length = colon_at - link_from; if ((scheme_length < 2) || (scheme_length > 32)) scheme_valid = FALSE; for (int i=link_from; i link_from) && ((Characters::is_ASCII_digit(c)) || (c == '+') || (c == '-') || (c == '.'))))) @@ -301,7 +301,7 @@ period, or hyphen." @ = for (int i=colon_at+1; i<=link_to; i++) { - wchar_t c = Str::get_at(text, i); + inchar32_t c = Str::get_at(text, i); if ((c == '<') || (c == '>') || (c == ' ') || (Characters::is_control_character(c))) link_valid = FALSE; @@ -343,7 +343,7 @@ but you absolutely can. int username_length = atsign_at - link_from; if (username_length < 1) username_valid = FALSE; for (int i=link_from; i = int segment_length = 0; for (int i=atsign_at+1; i<=link_to; i++) { - wchar_t c = Str::get_at(text, i); + inchar32_t c = Str::get_at(text, i); if (segment_length == 0) { if (!((Characters::is_ASCII_letter(c)) || (Characters::is_ASCII_digit(c)))) domain_valid = FALSE; @@ -495,7 +495,7 @@ it as written. domain_name_invalid = TRUE; } else { for (int j=domain_from, dots_passed=0; j<=to; j++) { - wchar_t c = Str::get_at(text, j); + inchar32_t c = Str::get_at(text, j); if (c == '.') dots_passed++; if ((c == '_') && (dots_passed >= dot_count - 2)) domain_name_invalid = TRUE; } @@ -557,7 +557,7 @@ what the GitHub-flavored Markdown specification means by "alphanumeric" here: are arbitrary Unicode letters and numerals allowed? I'm going to say not. = -int MDInlineParser::extended_autolink_domain_char(wchar_t c) { +int MDInlineParser::extended_autolink_domain_char(inchar32_t c) { if ((Characters::isalnum(c)) || (c == '_') || (c == '-')) return TRUE; return FALSE; } @@ -566,7 +566,7 @@ int MDInlineParser::extended_autolink_domain_char(wchar_t c) { But we take care of |+| and |.| above. = -int MDInlineParser::extended_autolink_email_char(wchar_t c) { +int MDInlineParser::extended_autolink_email_char(inchar32_t c) { if ((Characters::isalnum(c)) || (c == '_') || (c == '-')) return TRUE; return FALSE; } @@ -574,7 +574,7 @@ int MDInlineParser::extended_autolink_email_char(wchar_t c) { @ "The resource can contain all alphanumeric characters, as well as @ and .." = -int MDInlineParser::extended_autolink_xmpp_resource_char(wchar_t c) { +int MDInlineParser::extended_autolink_xmpp_resource_char(inchar32_t c) { if ((Characters::isalnum(c)) || (c == '@') || (c == '.')) return TRUE; return FALSE; } @@ -583,7 +583,7 @@ int MDInlineParser::extended_autolink_xmpp_resource_char(wchar_t c) { considered part of the autolink." = -int MDInlineParser::extended_autolink_trailing_punctuation_char(wchar_t c) { +int MDInlineParser::extended_autolink_trailing_punctuation_char(inchar32_t c) { if ((c == '?') || (c == '!') || (c == ',') || (c == '.') || (c == ':') || (c == '*') || (c == '_') || (c == '~')) return TRUE; return FALSE; @@ -679,7 +679,7 @@ int MDInlineParser::extended_autolink_trailing_punctuation_char(wchar_t c) { } @ = - wchar_t c = Str::get_at(text, at); + inchar32_t c = Str::get_at(text, at); if (Characters::is_ASCII_letter(c) == FALSE) goto NotATag; TEMPORARY_TEXT(tag) while ((c == '-') || (Characters::is_ASCII_letter(c)) || (Characters::is_ASCII_digit(c))) { @@ -696,7 +696,7 @@ int MDInlineParser::extended_autolink_trailing_punctuation_char(wchar_t c) { int start_at = at; @; if (at == start_at) break; - wchar_t c = Str::get_at(text, at); + inchar32_t c = Str::get_at(text, at); if ((c == '_') || (c == ':') || (Characters::is_ASCII_letter(c))) { while ((c == '_') || (c == ':') || (c == '.') || (c == '-') || (Characters::is_ASCII_letter(c)) || (Characters::is_ASCII_digit(c))) @@ -718,7 +718,7 @@ int MDInlineParser::extended_autolink_trailing_punctuation_char(wchar_t c) { @ = int k = at; while (TRUE) { - wchar_t c = Str::get_at(text, k); + inchar32_t c = Str::get_at(text, k); if ((c == ' ') || (c == '\t') || (c == '\n') || (c == '"') || (c == '\'') || (c == '=') || (c == '<') || (c == '>') || (c == '`') || (c == 0)) break; @@ -746,14 +746,14 @@ int MDInlineParser::extended_autolink_trailing_punctuation_char(wchar_t c) { } @ = - wchar_t c = Str::get_at(text, at); + inchar32_t c = Str::get_at(text, at); if ((c != ' ') && (c != '\t') && (c != '\n')) goto NotATag; @; @ = int line_ending_count = 0; while (TRUE) { - wchar_t c = Str::get_at(text, at++); + inchar32_t c = Str::get_at(text, at++); if (c == '\n') { line_ending_count++; if (line_ending_count == 2) break; @@ -963,13 +963,13 @@ md_link_parse MDInlineParser::first_valid_link(markdown_variation *variation, int images_only, int links_only) { md_link_parse result; @; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = Markdown::nowhere(); int escaped = FALSE; while ((Markdown::somewhere(from)) && (Markdown::plainish(from.md) == FALSE)) from = Markdown::advance_up_to(from, to); for (md_charpos pos = from; Markdown::somewhere(pos); pos = Markdown::advance_up_to(pos, to)) { - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); if ((c == '\\') && (escaped == FALSE)) escaped = TRUE; else { if ((c == '[') && (escaped == FALSE)) { @@ -1069,10 +1069,10 @@ md_link_parse MDInlineParser::first_valid_link(markdown_variation *variation, } @ = - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); md_charpos prev_pos = pos; result.link_text_from = Markdown::advance_up_to(pos, to); - wchar_t prev_c = 0; + inchar32_t prev_c = 0; int bl = 0, count = 0, escaped = FALSE; while (c != 0) { if ((c == '\\') && (escaped == FALSE)) { @@ -1103,10 +1103,10 @@ md_link_parse MDInlineParser::first_valid_link(markdown_variation *variation, md_charpos prev_pos = pos; pos = Markdown::advance_up_to_plainish_only(pos, to); result.link_destination_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; int bl = 1, escaping = FALSE; TEMPORARY_TEXT(label) - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); while (c != 0) { if ((c == '\\') && (escaping == FALSE)) { escaping = TRUE; @@ -1158,7 +1158,7 @@ or image reference label, not other ASCII punctuation. pos = Markdown::advance_up_to_quasi_plainish_only(pos, to); result.link_destination_from = pos; int empty = TRUE; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; while ((Markdown::get(pos) != '>') || (prev_c == '\\')) { if (Markdown::get(pos) == 0) ABANDON_LINK("no end to destination in angles"); if (Markdown::get(pos) == '<') ABANDON_LINK("'<' in destination in angles"); @@ -1174,12 +1174,12 @@ or image reference label, not other ASCII punctuation. } else { result.link_destination_from = pos; int bl = 1; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; while ((Markdown::get(pos) != ' ') && (Markdown::get(pos) != '\n') && (Markdown::get(pos) != '\t')) { - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); if ((c == '(') && (prev_c != '\\')) bl++; if ((c == ')') && (prev_c != '\\')) { bl--; if (bl == 0) break; } if (c == 0) ABANDON_LINK("no end to destination"); @@ -1198,12 +1198,12 @@ or image reference label, not other ASCII punctuation. if (Markdown::get(pos) == '"') { pos = Markdown::advance_up_to_plainish_only(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); while (c != 0) { - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); if ((c == '"') && (prev_c != '\\')) break; prev_pos = pos; prev_c = c; @@ -1217,12 +1217,12 @@ or image reference label, not other ASCII punctuation. else if (Markdown::get(pos) == '\'') { pos = Markdown::advance_up_to_plainish_only(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); while (c != 0) { - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); if ((c == '\'') && (prev_c != '\\')) break; prev_pos = pos; prev_c = c; @@ -1236,12 +1236,12 @@ or image reference label, not other ASCII punctuation. else if (Markdown::get(pos) == '(') { pos = Markdown::advance_up_to(pos, to); result.link_title_from = pos; - wchar_t prev_c = 0; + inchar32_t prev_c = 0; md_charpos prev_pos = pos; int empty = TRUE; - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); while (c != 0) { - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); if ((c == '(') && (prev_c != '\\')) ABANDON_LINK("unescaped '(' in title"); if ((c == ')') && (prev_c != '\\')) break; prev_pos = pos; @@ -1256,7 +1256,7 @@ or image reference label, not other ASCII punctuation. @ = int line_endings = 0; - wchar_t c = Markdown::get(pos); + inchar32_t c = Markdown::get(pos); while ((c == ' ') || (c == '\t') || (c == '\n')) { if (c == '\n') { line_endings++; if (line_endings >= 2) break; } pos = Markdown::advance_up_to_quasi_plainish_only(pos, to); @@ -1338,10 +1338,10 @@ definition, the beginning and the end of the line count as Unicode whitespace." int MDInlineParser::left_flanking(md_charpos pos, int count) { if (count == 0) return FALSE; if (count < 0) count = -count; - wchar_t followed_by = Markdown::get_unescaped(pos, count); + inchar32_t followed_by = Markdown::get_unescaped(pos, count); if ((followed_by == 0) || (Characters::is_Unicode_whitespace(followed_by))) return FALSE; if (Characters::is_Unicode_punctuation(followed_by) == FALSE) return TRUE; - wchar_t preceded_by = Markdown::get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown::get_unescaped(pos, -1); if ((preceded_by == 0) || (Characters::is_Unicode_whitespace(preceded_by)) || (Characters::is_Unicode_punctuation(preceded_by))) return TRUE; return FALSE; @@ -1350,10 +1350,10 @@ int MDInlineParser::left_flanking(md_charpos pos, int count) { int MDInlineParser::right_flanking(md_charpos pos, int count) { if (count == 0) return FALSE; if (count < 0) count = -count; - wchar_t preceded_by = Markdown::get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown::get_unescaped(pos, -1); if ((preceded_by == 0) || (Characters::is_Unicode_whitespace(preceded_by))) return FALSE; if (Characters::is_Unicode_punctuation(preceded_by) == FALSE) return TRUE; - wchar_t followed_by = Markdown::get_unescaped(pos, count); + inchar32_t followed_by = Markdown::get_unescaped(pos, count); if ((followed_by == 0) || (Characters::is_Unicode_whitespace(followed_by)) || (Characters::is_Unicode_punctuation(followed_by))) return TRUE; return FALSE; @@ -1366,7 +1366,7 @@ int MDInlineParser::can_open_emphasis(md_charpos pos, int count) { if (MDInlineParser::left_flanking(pos, count) == FALSE) return FALSE; if (count > 0) return TRUE; if (MDInlineParser::right_flanking(pos, count) == FALSE) return TRUE; - wchar_t preceded_by = Markdown::get_unescaped(pos, -1); + inchar32_t preceded_by = Markdown::get_unescaped(pos, -1); if (Characters::is_Unicode_punctuation(preceded_by)) return TRUE; return FALSE; } @@ -1375,7 +1375,7 @@ int MDInlineParser::can_close_emphasis(md_charpos pos, int count) { if (MDInlineParser::right_flanking(pos, count) == FALSE) return FALSE; if (count > 0) return TRUE; if (MDInlineParser::left_flanking(pos, count) == FALSE) return TRUE; - wchar_t followed_by = Markdown::get_unescaped(pos, -count); /* count < 0 here */ + inchar32_t followed_by = Markdown::get_unescaped(pos, -count); /* count < 0 here */ if (Characters::is_Unicode_punctuation(followed_by)) return TRUE; return FALSE; } @@ -1684,7 +1684,7 @@ int MDInlineParser::penalty(markdown_item *md) { if (md->type == PLAIN_MIT) { for (int i=md->from; i<=md->to; i++) { md_charpos pos = Markdown::pos(md, i); - wchar_t c = Markdown::get_unescaped(pos, 0); + inchar32_t c = Markdown::get_unescaped(pos, 0); if ((c == '*') || (c == '_')) penalty += 100000; } } diff --git a/foundation-module/Chapter 5/Markdown Rendering.w b/foundation-module/Chapter 5/Markdown Rendering.w index 05ec1202..49585bfe 100644 --- a/foundation-module/Chapter 5/Markdown Rendering.w +++ b/foundation-module/Chapter 5/Markdown Rendering.w @@ -203,7 +203,7 @@ been taken out at the parsing stage.) if (mode & TAGS_MDRMODE) HTML_OPEN("pre"); TEMPORARY_TEXT(language) for (int i=0; iinfo_string); i++) { - wchar_t c = Str::get_at(md->info_string, i); + inchar32_t c = Str::get_at(md->info_string, i); if ((c == ' ') || (c == '\t')) break; PUT_TO(language, c); } @@ -389,21 +389,21 @@ void MDRenderer::slice(OUTPUT_STREAM, markdown_item *md, int mode) { if (md) { int angles = 0; for (int i=md->from; i<=md->to; i++) { - wchar_t c = Markdown::get_at(md, i); + inchar32_t c = Markdown::get_at(md, i); if ((mode & ESCAPES_MDRMODE) && (c == '\\') && (ito) && (Characters::is_ASCII_punctuation(Markdown::get_at(md, i+1)))) c = Markdown::get_at(md, ++i); else if ((mode & ENTITIES_MDRMODE) && (c == '&') && (i+2<=md->to)) { int at = i; TEMPORARY_TEXT(entity) - wchar_t d = c; + inchar32_t d = c; while ((d != 0) && (d != ';')) { if (at > md->to) break; d = Markdown::get_at(md, at++); PUT_TO(entity, d); } if (d == ';') { - wchar_t A = 0, B = 0; + inchar32_t A = 0, B = 0; int valid = HTMLEntities::parse(entity, &A, &B); DISCARD_TEXT(entity) if (valid) { @@ -435,7 +435,7 @@ void MDRenderer::stream(OUTPUT_STREAM, text_stream *stream, int mode) { ways to render characters: they all agree on ASCII digits and letters. = -void MDRenderer::char(OUTPUT_STREAM, wchar_t c, int mode) { +void MDRenderer::char(OUTPUT_STREAM, inchar32_t c, int mode) { if (mode & TOLOWER_MDRMODE) c = Characters::tolower(c); if (mode & RAW_MDRMODE) { PUT(c); @@ -491,6 +491,6 @@ CommonMark test examples, so: = void MDRenderer::hex_digit(OUTPUT_STREAM, unsigned int x) { x = x%16; - if (x<10) PUT('0'+(int) x); - else PUT('A'+((int) x-10)); + if (x<10) PUT('0'+x); + else PUT('A'+(x-10)); } diff --git a/foundation-module/Chapter 5/Markdown Variations.w b/foundation-module/Chapter 5/Markdown Variations.w index 24c73a97..82e1ddf8 100644 --- a/foundation-module/Chapter 5/Markdown Variations.w +++ b/foundation-module/Chapter 5/Markdown Variations.w @@ -371,22 +371,22 @@ void MarkdownVariations::multifile_r(markdown_item *md, md_links_dictionary *lin TEMPORARY_TEXT(xref) TEMPORARY_TEXT(anchor) match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, md->stashed, L"Chapter (%d+): *(%c*)")) { + if (Regexp::match(&mr, md->stashed, U"Chapter (%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[1]); WRITE_TO(anchor, "chapter%S", mr.exp[0]); - } else if (Regexp::match(&mr, md->stashed, L"Chapter (%d+)")) { + } else if (Regexp::match(&mr, md->stashed, U"Chapter (%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "chapter%S", mr.exp[0]); - } else if (Regexp::match(&mr, md->stashed, L"Section (%d+).(%d+): *(%c*)")) { + } else if (Regexp::match(&mr, md->stashed, U"Section (%d+).(%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[2]); WRITE_TO(anchor, "c%Ss%S", mr.exp[0], mr.exp[1]); - } else if (Regexp::match(&mr, md->stashed, L"Section (%d+).(%d+)")) { + } else if (Regexp::match(&mr, md->stashed, U"Section (%d+).(%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "c%Ss%S", mr.exp[0], mr.exp[1]); - } else if (Regexp::match(&mr, md->stashed, L"Section (%d+): *(%c*)")) { + } else if (Regexp::match(&mr, md->stashed, U"Section (%d+): *(%c*)")) { WRITE_TO(xref, "%S", mr.exp[1]); WRITE_TO(anchor, "s%S", mr.exp[0]); - } else if (Regexp::match(&mr, md->stashed, L"Section (%d+)")) { + } else if (Regexp::match(&mr, md->stashed, U"Section (%d+)")) { WRITE_TO(xref, "%S", md->stashed); WRITE_TO(anchor, "s%S", mr.exp[0]); } else { diff --git a/foundation-module/Chapter 5/Markdown.w b/foundation-module/Chapter 5/Markdown.w index ff41b8bf..82796369 100644 --- a/foundation-module/Chapter 5/Markdown.w +++ b/foundation-module/Chapter 5/Markdown.w @@ -222,7 +222,7 @@ three lines of which the third is empty. @ = TEMPORARY_TEXT(line) LOOP_THROUGH_TEXT(pos, text) { - wchar_t c = Str::get(pos); + inchar32_t c = Str::get(pos); if (c == '\n') { MDBlockParser::add_to_document(state, line); Str::clear(line); @@ -696,7 +696,7 @@ int Markdown::get_item_number(markdown_item *md) { return md->details; } -wchar_t Markdown::get_item_flavour(markdown_item *md) { +inchar32_t Markdown::get_item_flavour(markdown_item *md) { if ((md == NULL) || ((md->type != ORDERED_LIST_ITEM_MIT) && (md->type != UNORDERED_LIST_ITEM_MIT))) return 0; @@ -704,10 +704,10 @@ wchar_t Markdown::get_item_flavour(markdown_item *md) { if (md->details >= 0) return ')'; return '.'; } - return (wchar_t) md->details; + return (inchar32_t) md->details; } -void Markdown::set_item_number_and_flavour(markdown_item *md, int L, wchar_t f) { +void Markdown::set_item_number_and_flavour(markdown_item *md, int L, inchar32_t f) { if (md->type == ORDERED_LIST_ITEM_MIT) { if (L < 0) internal_error("bad list item number"); if (f == ')') md->details = L; @@ -715,7 +715,7 @@ void Markdown::set_item_number_and_flavour(markdown_item *md, int L, wchar_t f) } if (md->type == UNORDERED_LIST_ITEM_MIT) { if (L != 0) internal_error("inappropriate list item number"); - md->details = f; + md->details = (int)f; } } @@ -727,8 +727,8 @@ This function returns a harmless letter for an escaped active character, so that it can be used to test for unescaped active characters. = -wchar_t Markdown::get_unescaped(md_charpos pos, int offset) { - wchar_t c = Markdown::get_offset(pos, offset); +inchar32_t Markdown::get_unescaped(md_charpos pos, int offset) { + inchar32_t c = Markdown::get_offset(pos, offset); int preceding_backslashes = 0; while (Markdown::get_offset(pos, offset - 1 - preceding_backslashes) == '\\') preceding_backslashes++; @@ -740,7 +740,7 @@ wchar_t Markdown::get_unescaped(md_charpos pos, int offset) { must be non-zero, which are not escaped with a backslash. = -int Markdown::unescaped_run(md_charpos pos, wchar_t of) { +int Markdown::unescaped_run(md_charpos pos, inchar32_t of) { int count = 0; while (Markdown::get_unescaped(pos, count) == of) count++; if (Markdown::get_unescaped(pos, -1) == of) count = 0; @@ -788,7 +788,7 @@ range being sliced: this is intentional and is needed for some of the delimiter-scanning. = -wchar_t Markdown::get_at(markdown_item *md, int at) { +inchar32_t Markdown::get_at(markdown_item *md, int at) { if (md == NULL) return 0; if (Str::len(md->sliced_from) == 0) return 0; return Str::get_at(md->sliced_from, at); @@ -804,7 +804,7 @@ int Markdown::width(markdown_item *md) { int width = 0; if (md->type == PLAIN_MIT) { for (int i=md->from; i<=md->to; i++) { - wchar_t c = Markdown::get_at(md, i); + inchar32_t c = Markdown::get_at(md, i); if (c == '\\') i++; width++; } @@ -955,20 +955,20 @@ md_charpos Markdown::advance_up_to_quasi_plainish_only(md_charpos pos, md_charpo @ The character at a given position: = -wchar_t Markdown::get(md_charpos pos) { +inchar32_t Markdown::get(md_charpos pos) { return Markdown::get_offset(pos, 0); } -wchar_t Markdown::get_offset(md_charpos pos, int by) { +inchar32_t Markdown::get_offset(md_charpos pos, int by) { if (Markdown::somewhere(pos)) return Markdown::get_at(pos.md, pos.at + by); return 0; } -void Markdown::put(md_charpos pos, wchar_t c) { +void Markdown::put(md_charpos pos, inchar32_t c) { Markdown::put_offset(pos, 0, c); } -void Markdown::put_offset(md_charpos pos, int by, wchar_t c) { +void Markdown::put_offset(md_charpos pos, int by, inchar32_t c) { if (Markdown::somewhere(pos)) Str::put_at(pos.md->sliced_from, pos.at + by, c); } @@ -1126,14 +1126,14 @@ space." void Markdown::normalise_link_label(text_stream *label) { TEMPORARY_TEXT(normal) for (int i=0, ws = FALSE; i 1)) return -1; return Str::atoi(T, 0); } diff --git a/foundation-module/Chapter 8/Bibliographic Data for Webs.w b/foundation-module/Chapter 8/Bibliographic Data for Webs.w index c1b6dd9b..299fd29c 100755 --- a/foundation-module/Chapter 8/Bibliographic Data for Webs.w +++ b/foundation-module/Chapter 8/Bibliographic Data for Webs.w @@ -127,7 +127,7 @@ web_bibliographic_datum *Bibliographic::set_datum(web_md *Wm, text_stream *key, web_bibliographic_datum *bd = Bibliographic::look_up_datum(Wm, key); if (bd == NULL) @ else Str::copy(bd->value, val); - if (Str::eq_wide_string(key, L"Title")) @; + if (Str::eq_wide_string(key, U"Title")) @; return bd; } diff --git a/foundation-module/Chapter 8/Build Files.w b/foundation-module/Chapter 8/Build Files.w index af0e163e..9eaec68e 100644 --- a/foundation-module/Chapter 8/Build Files.w +++ b/foundation-module/Chapter 8/Build Files.w @@ -41,11 +41,11 @@ void BuildFiles::build_file_helper(text_stream *text, text_file_position *tfp, v build_file_data *bfd = (build_file_data *) state; if (Str::len(text) == 0) return; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L"Build Date: *(%c*)")) { + if (Regexp::match(&mr, text, U"Build Date: *(%c*)")) { bfd->build_date = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, text, L"Build Number: *(%c*)")) { + } else if (Regexp::match(&mr, text, U"Build Number: *(%c*)")) { bfd->build_code = Str::duplicate(mr.exp[0]); - } else if (Regexp::match(&mr, text, L"Prerelease: *(%c*)")) { + } else if (Regexp::match(&mr, text, U"Prerelease: *(%c*)")) { bfd->prerelease_text = Str::duplicate(mr.exp[0]); } else { Errors::in_text_file("can't parse build file line", tfp); @@ -174,12 +174,11 @@ some 58 years. void BuildFiles::increment(text_stream *T) { if (Str::len(T) != 4) Errors::with_text("build code malformed: %S", T); else { - int N = Str::get_at(T, 0) - '0'; - int L = Str::get_at(T, 1); - int M1 = Str::get_at(T, 2) - '0'; - int M2 = Str::get_at(T, 3) - '0'; - if ((N < 0) || (N > 9) || (L < 'A') || (L > 'Z') || - (M1 < 0) || (M1 > 9) || (M2 < 0) || (M2 > 9)) { + inchar32_t N = Str::get_at(T, 0) - '0'; + inchar32_t L = Str::get_at(T, 1); + inchar32_t M1 = Str::get_at(T, 2) - '0'; + inchar32_t M2 = Str::get_at(T, 3) - '0'; + if ((N > 9) || (L < 'A') || (L > 'Z') || (M1 > 9) || (M2 > 9)) { Errors::with_text("build code malformed: %S", T); } else { M2++; diff --git a/foundation-module/Chapter 8/Simple Tangler.w b/foundation-module/Chapter 8/Simple Tangler.w index a7968e7a..3e53c01e 100644 --- a/foundation-module/Chapter 8/Simple Tangler.w +++ b/foundation-module/Chapter 8/Simple Tangler.w @@ -137,12 +137,13 @@ from a web |W|, we translate that into the path |W/Sections/Juggling.i6t|. TEMPORARY_TEXT(command) TEMPORARY_TEXT(argument) int skip_part = FALSE, extract = FALSE; - int col = 1, cr, prev_cr = 0, line_count = 1, sfp = 0, final_newline = FALSE; + int col = 1, line_count = 1, sfp = 0, final_newline = FALSE; + inchar32_t cr = 0, prev_cr = 0; do { Str::clear(command); Str::clear(argument); @; - NewCharacter: if (cr == EOF) break; + NewCharacter: if (cr == CH32EOF) break; if (((cr == '@') || (cr == '=')) && (col == 1)) { int inweb_syntax = -1; if (cr == '=') @ @@ -151,7 +152,7 @@ from a web |W|, we translate that into the path |W/Sections/Juggling.i6t|. continue; } if (comment == FALSE) @; - } while (cr != EOF); + } while (cr != CH32EOF); DISCARD_TEXT(command) DISCARD_TEXT(argument) @@ -164,16 +165,16 @@ increment the line count in such cases.) @ = if (Input_File) { if (final_newline) { - cr = EOF; + cr = CH32EOF; } else { - cr = fgetc(Input_File); - if ((cr == EOF) && (prev_cr != 10) && (prev_cr != 13)) { + cr = (inchar32_t) fgetc(Input_File); + if ((cr == (inchar32_t) EOF) && (prev_cr != 10) && (prev_cr != 13)) { final_newline = TRUE; cr = '\n'; } } } else if (text) { - cr = Str::get_at(text, sfp); if (cr == 0) cr = EOF; else sfp++; - } else cr = EOF; + cr = Str::get_at(text, sfp); if (cr == 0) cr = CH32EOF; else sfp++; + } else cr = CH32EOF; col++; if ((cr == 10) || (cr == 13)) { col = 0; @@ -199,17 +200,17 @@ commands can be used, at least. while (TRUE) { @; if ((committed == FALSE) && ((cr == 10) || (cr == 13) || (cr == ' '))) { - if (Str::eq_wide_string(at_cmd, L"")) + if (Str::eq_wide_string(at_cmd, U"")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str::eq_wide_string(at_cmd, L"p")) + else if (Str::eq_wide_string(at_cmd, U"p")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str::eq_wide_string(at_cmd, L"h")) + else if (Str::eq_wide_string(at_cmd, U"h")) inweb_syntax = INWEB_PARAGRAPH_SYNTAX; - else if (Str::eq_wide_string(at_cmd, L"c")) + else if (Str::eq_wide_string(at_cmd, U"c")) inweb_syntax = INWEB_CODE_SYNTAX; else if (Str::get_first_char(at_cmd) == '-') inweb_syntax = INWEB_DASH_SYNTAX; - else if (Str::begins_with_wide_string(at_cmd, L"Purpose:")) + else if (Str::begins_with_wide_string(at_cmd, U"Purpose:")) inweb_syntax = INWEB_PURPOSE_SYNTAX; committed = TRUE; if (inweb_syntax == -1) { @@ -243,11 +244,11 @@ commands can be used, at least. PUT_TO(equals_cmd, cr); } match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, equals_cmd, L" %(text%c*%) *")) { + if (Regexp::match(&mr, equals_cmd, U" %(text%c*%) *")) { inweb_syntax = INWEB_EXTRACT_SYNTAX; - } else if (Regexp::match(&mr, equals_cmd, L" %(figure%c*%) *")) { + } else if (Regexp::match(&mr, equals_cmd, U" %(figure%c*%) *")) { inweb_syntax = INWEB_FIGURE_SYNTAX; - } else if (Regexp::match(&mr, equals_cmd, L" %(%c*%) *")) { + } else if (Regexp::match(&mr, equals_cmd, U" %(%c*%) *")) { (*(docket->error_callback))( "unsupported '= (...)' marker at column 0", NULL); } else { @@ -261,7 +262,7 @@ commands can be used, at least. case INWEB_PARAGRAPH_SYNTAX: { TEMPORARY_TEXT(heading_name) Str::copy_tail(heading_name, command, 2); - int c; + inchar32_t c; while (((c = Str::get_last_char(heading_name)) != 0) && ((c == ' ') || (c == '\t') || (c == '.'))) Str::delete_last_character(heading_name); @@ -333,7 +334,7 @@ be the empty string: see above). The argument must not include |}|. int com_mode = TRUE; while (TRUE) { @; - if ((cr == '}') || (cr == EOF)) break; + if ((cr == '}') || (cr == CH32EOF)) break; if ((cr == ':') && (com_mode)) { com_mode = FALSE; continue; } if (com_mode) PUT_TO(command, cr); else PUT_TO(argument, cr); @@ -346,7 +347,7 @@ I7 material within I6: TEMPORARY_TEXT(material) while (TRUE) { @; - if (cr == EOF) break; + if (cr == CH32EOF) break; if ((cr == ')') && (Str::get_last_char(material) == '+')) { Str::delete_last_character(material); break; } PUT_TO(material, cr); diff --git a/foundation-module/Chapter 8/Web Modules.w b/foundation-module/Chapter 8/Web Modules.w index bfc1aa88..0f819c89 100644 --- a/foundation-module/Chapter 8/Web Modules.w +++ b/foundation-module/Chapter 8/Web Modules.w @@ -149,7 +149,7 @@ int WebModules::named_reference(module **return_M, section_md **return_Sm, match_results mr = Regexp::create_mr(); text_stream *seek = text; text_stream *seek_module = NULL; - if (Regexp::match(&mr, text, L"(%C+?): *(%c+?) *")) { + if (Regexp::match(&mr, text, U"(%C+?): *(%c+?) *")) { seek_module = mr.exp[0]; seek = mr.exp[1]; } else { seek_module = from_M->module_name; seek = text; diff --git a/foundation-module/Chapter 8/Web Structure.w b/foundation-module/Chapter 8/Web Structure.w index 4181fe6c..80ba5339 100755 --- a/foundation-module/Chapter 8/Web Structure.w +++ b/foundation-module/Chapter 8/Web Structure.w @@ -181,7 +181,7 @@ would be "elctrcty", since we don't count "y" as a vowel here. else { if (letters_from_current_word < letters_from_each_word) { if (Str::get_at(from, sn) != '-') { - wchar_t l = Characters::tolower(Str::get_at(from, sn)); + inchar32_t l = Characters::tolower(Str::get_at(from, sn)); if ((letters_from_current_word == 0) || ((l != 'a') && (l != 'e') && (l != 'i') && (l != 'o') && (l != 'u'))) { @@ -386,7 +386,7 @@ variables with fixed names; a blank line ends the block. @ = if (RS->main_web_not_module) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c+?): (%c+?) *")) { + if (Regexp::match(&mr, line, U"(%c+?): (%c+?) *")) { TEMPORARY_TEXT(key) Str::copy(key, mr.exp[0]); TEMPORARY_TEXT(value) @@ -406,7 +406,7 @@ variables with fixed names; a blank line ends the block. @ = if (Bibliographic::datum_can_be_declared(RS->Wm, key)) { if (Bibliographic::datum_on_or_off(RS->Wm, key)) { - if ((Str::ne_wide_string(value, L"On")) && (Str::ne_wide_string(value, L"Off"))) { + if ((Str::ne_wide_string(value, U"On")) && (Str::ne_wide_string(value, U"Off"))) { TEMPORARY_TEXT(err) WRITE_TO(err, "this setting must be 'On' or 'Off': %S", key); Errors::in_text_file_S(err, tfp); @@ -457,7 +457,7 @@ we like a spoonful of syntactic sugar on our porridge, that's why. text_stream *language_name = NULL; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c*%C) %(Independent(%c*)%)")) { + if (Regexp::match(&mr, line, U"(%c*%C) %(Independent(%c*)%)")) { text_stream *title_alone = mr.exp[0]; language_name = mr.exp[1]; @; @@ -465,34 +465,34 @@ we like a spoonful of syntactic sugar on our porridge, that's why. } int this_is_a_chapter = TRUE; Str::clear(RS->chapter_dir_name); - if (Str::eq_wide_string(line, L"Sections")) { + if (Str::eq_wide_string(line, U"Sections")) { WRITE_TO(new_chapter_range, "S"); WRITE_TO(RS->chapter_dir_name, "Sections"); WRITE_TO(pdf_leafname, "Sections.pdf"); RS->Wm->chaptered = FALSE; Str::clear(RS->titling_line_to_insert); - } else if (Str::eq_wide_string(line, L"Preliminaries")) { + } else if (Str::eq_wide_string(line, U"Preliminaries")) { WRITE_TO(new_chapter_range, "P"); WRITE_TO(RS->chapter_dir_name, "Preliminaries"); Str::clear(RS->titling_line_to_insert); WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Preliminaries.pdf"); RS->Wm->chaptered = TRUE; - } else if (Str::eq_wide_string(line, L"Manual")) { + } else if (Str::eq_wide_string(line, U"Manual")) { WRITE_TO(new_chapter_range, "M"); WRITE_TO(RS->chapter_dir_name, "Manual"); Str::clear(RS->titling_line_to_insert); WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Manual.pdf"); RS->Wm->chaptered = TRUE; - } else if (Regexp::match(&mr, line, L"Header: (%c+)")) { + } else if (Regexp::match(&mr, line, U"Header: (%c+)")) { pathname *P = RS->path_to; if (P == NULL) P = RS->Wm->path_to_web; P = Pathnames::down(P, I"Headers"); filename *HF = Filenames::in(P, mr.exp[0]); ADD_TO_LINKED_LIST(HF, filename, RS->Wm->header_filenames); this_is_a_chapter = FALSE; - } else if (Regexp::match(&mr, line, L"Import: (%c+)")) { + } else if (Regexp::match(&mr, line, U"Import: (%c+)")) { if (RS->halt_at_at) Errors::in_text_file_S(I"single-file webs cannot Import modules", tfp); else if (RS->import_from) { @@ -514,7 +514,7 @@ we like a spoonful of syntactic sugar on our porridge, that's why. } } this_is_a_chapter = FALSE; - } else if (Regexp::match(&mr, line, L"Chapter (%d+): %c+")) { + } else if (Regexp::match(&mr, line, U"Chapter (%d+): %c+")) { int n = Str::atoi(mr.exp[0], 0); WRITE_TO(new_chapter_range, "%d", n); WRITE_TO(RS->chapter_dir_name, "Chapter %d", n); @@ -522,7 +522,7 @@ we like a spoonful of syntactic sugar on our porridge, that's why. WRITE_TO(RS->titling_line_to_insert, "%S.", line); WRITE_TO(pdf_leafname, "Chapter-%d.pdf", n); RS->Wm->chaptered = TRUE; - } else if (Regexp::match(&mr, line, L"Appendix (%c): %c+")) { + } else if (Regexp::match(&mr, line, U"Appendix (%c): %c+")) { text_stream *letter = mr.exp[0]; Str::copy(new_chapter_range, letter); WRITE_TO(RS->chapter_dir_name, "Appendix %S", letter); @@ -550,9 +550,9 @@ with the same language as the main web unless stated otherwise. @ = match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, language_name, L" *")) + if (Regexp::match(&mr, language_name, U" *")) language_name = Bibliographic::get_datum(RS->Wm, I"Language"); - else if (Regexp::match(&mr, language_name, L" *(%c*?) *")) + else if (Regexp::match(&mr, language_name, U" *(%c*?) *")) language_name = mr.exp[0]; Regexp::dispose_of(&mr); @@ -562,7 +562,7 @@ with the same language as the main web unless stated otherwise. if (line == NULL) PRINT("Nullity!\n"); Cm->ch_title = Str::duplicate(line); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, Cm->ch_title, L"(%c*?): *(%c*)")) { + if (Regexp::match(&mr, Cm->ch_title, U"(%c*?): *(%c*)")) { Cm->ch_basic_title = Str::duplicate(mr.exp[0]); Cm->ch_decorated_title = Str::duplicate(mr.exp[1]); } else { @@ -602,7 +602,7 @@ we also read in and process its file. Str::clear(RS->titling_line_to_insert); match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c+) %^\"(%c+)\" *")) { + if (Regexp::match(&mr, line, U"(%c+) %^\"(%c+)\" *")) { Sm->sect_title = Str::duplicate(mr.exp[0]); Sm->tag_name = Str::duplicate(mr.exp[1]); } else { @@ -623,7 +623,7 @@ we also read in and process its file. @ = Sm->sect_language_name = RS->chapter_being_scanned->ch_language_name; /* by default */ match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, line, L"(%c*%C) %(Independent (%c*) *%)")) { + if (Regexp::match(&mr, line, U"(%c*%C) %(Independent (%c*) *%)")) { text_stream *title_alone = mr.exp[0]; text_stream *language_name = mr.exp[1]; @; diff --git a/foundation-module/Chapter 9/Programming Languages.w b/foundation-module/Chapter 9/Programming Languages.w index 82f20ad5..55f2c8e4 100644 --- a/foundation-module/Chapter 9/Programming Languages.w +++ b/foundation-module/Chapter 9/Programming Languages.w @@ -129,8 +129,8 @@ typedef struct programming_language { text_stream *end_ifdef; text_stream *start_ifndef; text_stream *end_ifndef; - wchar_t type_notation[MAX_ILDF_REGEXP_LENGTH]; - wchar_t function_notation[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t type_notation[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t function_notation[MAX_ILDF_REGEXP_LENGTH]; int suppress_disclaimer; int C_like; /* languages with this set have access to extra features */ @@ -239,15 +239,15 @@ void Languages::read_definition_line(text_stream *line, text_file_position *tfp, declare a reserved keyword, or set a key to a value. @ = - if (Regexp::match(&mr, line, L"colouring {")) { + if (Regexp::match(&mr, line, U"colouring {")) { if (pl->program) Errors::in_text_file("duplicate colouring program", tfp); pl->program = Languages::new_block(NULL, WHOLE_LINE_CRULE_RUN); state->current_block = pl->program; - } else if (Regexp::match(&mr, line, L"keyword (%C+) of (%c+?)")) { + } else if (Regexp::match(&mr, line, U"keyword (%C+) of (%c+?)")) { Languages::reserved(pl, Languages::text(mr.exp[0], tfp, FALSE), Languages::colour(mr.exp[1], tfp), tfp); - } else if (Regexp::match(&mr, line, L"keyword (%C+)")) { + } else if (Regexp::match(&mr, line, U"keyword (%C+)")) { Languages::reserved(pl, Languages::text(mr.exp[0], tfp, FALSE), RESERVED_COLOUR, tfp); - } else if (Regexp::match(&mr, line, L"(%c+) *: *(%c+?)")) { + } else if (Regexp::match(&mr, line, U"(%c+) *: *(%c+?)")) { text_stream *key = mr.exp[0], *value = Str::duplicate(mr.exp[1]); if (Str::eq(key, I"Name")) pl->language_name = Languages::text(value, tfp, TRUE); else if (Str::eq(key, I"Details")) @@ -324,34 +324,34 @@ runs of a given colour, or give an if-X-then-Y rule: @ = if (Str::eq(line, I"}")) { state->current_block = state->current_block->parent; - } else if (Regexp::match(&mr, line, L"characters {")) { + } else if (Regexp::match(&mr, line, U"characters {")) { colouring_rule *rule = Languages::new_rule(state->current_block); rule->execute_block = Languages::new_block(state->current_block, CHARACTERS_CRULE_RUN); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, line, L"characters in (%c+) {")) { + } else if (Regexp::match(&mr, line, U"characters in (%c+) {")) { colouring_rule *rule = Languages::new_rule(state->current_block); rule->execute_block = Languages::new_block(state->current_block, CHARACTERS_IN_CRULE_RUN); rule->execute_block->char_set = Languages::text(mr.exp[0], tfp, FALSE); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, line, L"runs of (%c+) {")) { + } else if (Regexp::match(&mr, line, U"runs of (%c+) {")) { colouring_rule *rule = Languages::new_rule(state->current_block); - wchar_t r = UNQUOTED_COLOUR; + inchar32_t r = UNQUOTED_COLOUR; if (Str::ne(mr.exp[0], I"unquoted")) r = Languages::colour(mr.exp[0], tfp); rule->execute_block = Languages::new_block(state->current_block, (int) r); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, line, L"instances of (%c+) {")) { + } else if (Regexp::match(&mr, line, U"instances of (%c+) {")) { colouring_rule *rule = Languages::new_rule(state->current_block); rule->execute_block = Languages::new_block(state->current_block, INSTANCES_CRULE_RUN); rule->execute_block->run_instance = Languages::text(mr.exp[0], tfp, FALSE); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, line, L"matches of (%c+) {")) { + } else if (Regexp::match(&mr, line, U"matches of (%c+) {")) { colouring_rule *rule = Languages::new_rule(state->current_block); rule->execute_block = Languages::new_block(state->current_block, MATCHES_CRULE_RUN); Languages::regexp(rule->execute_block->match_regexp_text, mr.exp[0], tfp); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, line, L"brackets in (%c+) {")) { + } else if (Regexp::match(&mr, line, U"brackets in (%c+) {")) { colouring_rule *rule = Languages::new_rule(state->current_block); rule->execute_block = Languages::new_block(state->current_block, BRACKETS_CRULE_RUN); Languages::regexp(rule->execute_block->match_regexp_text, mr.exp[0], tfp); @@ -395,7 +395,7 @@ typedef struct colouring_language_block { int run; /* one of the |*_CRULE_RUN| values, or else a colour */ struct text_stream *run_instance; /* used only for |INSTANCES_CRULE_RUN| */ struct text_stream *char_set; /* used only for |CHARACTERS_IN_CRULE_RUN| */ - wchar_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; /* used for |MATCHES_CRULE_RUN|, |BRACKETS_CRULE_RUN| */ + inchar32_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; /* used for |MATCHES_CRULE_RUN|, |BRACKETS_CRULE_RUN| */ /* workspace during painting */ struct match_results mr; /* of a regular expression */ @@ -436,18 +436,18 @@ Note that rules can be unconditional, in that the premiss always passes. typedef struct colouring_rule { /* the premiss: */ int sense; /* |FALSE| to negate the condition */ - wchar_t match_colour; /* for |coloured C|, or else |NOT_A_COLOUR| */ - wchar_t match_keyword_of_colour; /* for |keyword C|, or else |NOT_A_COLOUR| */ + inchar32_t match_colour; /* for |coloured C|, or else |NOT_A_COLOUR| */ + inchar32_t match_keyword_of_colour; /* for |keyword C|, or else |NOT_A_COLOUR| */ struct text_stream *match_text; /* or length 0 to mean "anything" */ int match_prefix; /* one of the |*_RULE_PREFIX| values above */ - wchar_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; + inchar32_t match_regexp_text[MAX_ILDF_REGEXP_LENGTH]; int number; /* for |number N| rules; 0 for others */ int number_of; /* for |number N of M| rules; 0 for others */ /* the conclusion: */ struct colouring_language_block *execute_block; /* or |NULL|, in which case... */ - wchar_t set_to_colour; /* ...paint the snippet in this colour */ - wchar_t set_prefix_to_colour; /* ...also paint this (same for suffix) */ + inchar32_t set_to_colour; /* ...paint the snippet in this colour */ + inchar32_t set_prefix_to_colour; /* ...also paint this (same for suffix) */ int debug; /* ...or print debugging text to console */ /* workspace during painting */ @@ -492,40 +492,40 @@ void Languages::parse_rule(language_reader_state *state, text_stream *premiss, } @ = - while (Regexp::match(&mr, premiss, L"not (%c+)")) { + while (Regexp::match(&mr, premiss, U"not (%c+)")) { rule->sense = (rule->sense)?FALSE:TRUE; Str::clear(premiss); Str::copy(premiss, mr.exp[0]); } - if (Regexp::match(&mr, premiss, L"number (%d+)")) { + if (Regexp::match(&mr, premiss, U"number (%d+)")) { rule->number = Str::atoi(mr.exp[0], 0); - } else if (Regexp::match(&mr, premiss, L"number (%d+) of (%d+)")) { + } else if (Regexp::match(&mr, premiss, U"number (%d+) of (%d+)")) { rule->number = Str::atoi(mr.exp[0], 0); rule->number_of = Str::atoi(mr.exp[1], 0); - } else if (Regexp::match(&mr, premiss, L"keyword of (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"keyword of (%c+)")) { rule->match_keyword_of_colour = Languages::colour(mr.exp[0], tfp); - } else if (Regexp::match(&mr, premiss, L"keyword")) { + } else if (Regexp::match(&mr, premiss, U"keyword")) { Errors::in_text_file("ambiguous: make it keyword of !reserved or \"keyword\"", tfp); - } else if (Regexp::match(&mr, premiss, L"prefix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"prefix (%c+)")) { rule->match_prefix = UNSPACED_RULE_PREFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"matching (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"matching (%c+)")) { Languages::regexp(rule->match_regexp_text, mr.exp[0], tfp); - } else if (Regexp::match(&mr, premiss, L"spaced prefix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"spaced prefix (%c+)")) { rule->match_prefix = SPACED_RULE_PREFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"optionally spaced prefix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"optionally spaced prefix (%c+)")) { rule->match_prefix = OPTIONALLY_SPACED_RULE_PREFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"suffix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"suffix (%c+)")) { rule->match_prefix = UNSPACED_RULE_SUFFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"spaced suffix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"spaced suffix (%c+)")) { rule->match_prefix = SPACED_RULE_SUFFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"optionally spaced suffix (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"optionally spaced suffix (%c+)")) { rule->match_prefix = OPTIONALLY_SPACED_RULE_SUFFIX; rule->match_text = Languages::text(mr.exp[0], tfp, FALSE); - } else if (Regexp::match(&mr, premiss, L"coloured (%c+)")) { + } else if (Regexp::match(&mr, premiss, U"coloured (%c+)")) { rule->match_colour = Languages::colour(mr.exp[0], tfp); } else if (Str::len(premiss) > 0) { rule->match_text = Languages::text(premiss, tfp, FALSE); @@ -536,11 +536,11 @@ void Languages::parse_rule(language_reader_state *state, text_stream *premiss, rule->execute_block = Languages::new_block(state->current_block, WHOLE_LINE_CRULE_RUN); state->current_block = rule->execute_block; - } else if (Regexp::match(&mr, action, L"(!%c+) on prefix")) { + } else if (Regexp::match(&mr, action, U"(!%c+) on prefix")) { rule->set_prefix_to_colour = Languages::colour(mr.exp[0], tfp); - } else if (Regexp::match(&mr, action, L"(!%c+) on suffix")) { + } else if (Regexp::match(&mr, action, U"(!%c+) on suffix")) { rule->set_prefix_to_colour = Languages::colour(mr.exp[0], tfp); - } else if (Regexp::match(&mr, action, L"(!%c+) on both")) { + } else if (Regexp::match(&mr, action, U"(!%c+) on both")) { rule->set_to_colour = Languages::colour(mr.exp[0], tfp); rule->set_prefix_to_colour = rule->set_to_colour; } else if (Str::get_first_char(action) == '!') { @@ -561,7 +561,7 @@ typedef struct reserved_word { CLASS_DEFINITION } reserved_word; -reserved_word *Languages::reserved(programming_language *pl, text_stream *W, wchar_t C, +reserved_word *Languages::reserved(programming_language *pl, text_stream *W, inchar32_t C, text_file_position *tfp) { reserved_word *rw; LOOP_OVER_LINKED_LIST(rw, reserved_word, pl->reserved_words) @@ -598,7 +598,7 @@ but which are not expressible in the syntax of this file. @d UNQUOTED_COLOUR '_' = -wchar_t Languages::colour(text_stream *T, text_file_position *tfp) { +inchar32_t Languages::colour(text_stream *T, text_file_position *tfp) { if (Str::get_first_char(T) != '!') { Errors::in_text_file("colour names must begin with !", tfp); return PLAIN_COLOUR; @@ -646,7 +646,7 @@ text_stream *Languages::text(text_stream *T, text_file_position *tfp, int allow) bareword = FALSE; from++; to--; } for (int i=from; i<=to; i++) { - wchar_t c = Str::get_at(T, i); + inchar32_t c = Str::get_at(T, i); if (c == ' ') spaced = TRUE; if ((c == '\\') && (Str::get_at(T, i+1) == 'n')) { PUT_TO(V, '\n'); @@ -724,7 +724,7 @@ text_stream *Languages::text(text_stream *T, text_file_position *tfp, int allow) @ And regular expressions. = -void Languages::regexp(wchar_t *write_to, text_stream *T, text_file_position *tfp) { +void Languages::regexp(inchar32_t *write_to, text_stream *T, text_file_position *tfp) { if (write_to == NULL) internal_error("no buffer"); write_to[0] = 0; if (Str::len(T) > 0) { @@ -733,9 +733,9 @@ void Languages::regexp(wchar_t *write_to, text_stream *T, text_file_position *tf (Str::get_at(T, from) == '/') && (Str::get_at(T, to) == '/')) { from++; to--; for (int i=from; i<=to; i++) { - wchar_t c = Str::get_at(T, i); + inchar32_t c = Str::get_at(T, i); if (c == '\\') { - wchar_t w = Str::get_at(T, i+1); + inchar32_t w = Str::get_at(T, i+1); if (w == '\\') { x = Languages::add_to_regexp(write_to, x, w); } else if (w == 'd') { @@ -774,12 +774,12 @@ void Languages::regexp(wchar_t *write_to, text_stream *T, text_file_position *tf } } -int Languages::add_to_regexp(wchar_t *write_to, int i, wchar_t c) { +int Languages::add_to_regexp(inchar32_t *write_to, int i, inchar32_t c) { if (i < MAX_ILDF_REGEXP_LENGTH) write_to[i++] = c; return i; } -int Languages::add_escape_to_regexp(wchar_t *write_to, int i, wchar_t c) { +int Languages::add_escape_to_regexp(inchar32_t *write_to, int i, inchar32_t c) { i = Languages::add_to_regexp(write_to, i, '%'); i = Languages::add_to_regexp(write_to, i, c); return i; diff --git a/foundation-module/Chapter 9/Reserved Words.w b/foundation-module/Chapter 9/Reserved Words.w index 5ab25951..bdfaee0b 100644 --- a/foundation-module/Chapter 9/Reserved Words.w +++ b/foundation-module/Chapter 9/Reserved Words.w @@ -25,12 +25,12 @@ int ReservedWords::hash_code_from_word(text_stream *text) { int numeric = TRUE; /* the first character may prove to be the start of a number: is this true? */ for (p = Str::forward(p); Str::in_range(p); p = Str::forward(p)) - if (isdigit(Str::get(p)) == FALSE) numeric = FALSE; + if (Characters::isdigit(Str::get(p)) == FALSE) numeric = FALSE; if (numeric) return NUMBER_HASH; } } for (p=Str::start(text); Str::in_range(p); p = Str::forward(p)) - hash_code = (unsigned int) ((int) (hash_code*30011) + (Str::get(p))); + hash_code = (hash_code*30011) + Str::get(p); return (int) (1+(hash_code % (HASH_TAB_SIZE-1))); /* result of X 30011, plus 1 */ } diff --git a/foundation-module/Chapter 9/The Painter.w b/foundation-module/Chapter 9/The Painter.w index c9e00b00..c147db9c 100644 --- a/foundation-module/Chapter 9/The Painter.w +++ b/foundation-module/Chapter 9/The Painter.w @@ -72,16 +72,16 @@ void Painter::syntax_colour_inner(programming_language *pl, } @ = - int squote = Str::get_first_char(pl->character_literal); - int squote_escape = Str::get_first_char(pl->character_literal_escape); - int dquote = Str::get_first_char(pl->string_literal); - int dquote_escape = Str::get_first_char(pl->string_literal_escape); + inchar32_t squote = Str::get_first_char(pl->character_literal); + inchar32_t squote_escape = Str::get_first_char(pl->character_literal_escape); + inchar32_t dquote = Str::get_first_char(pl->string_literal); + inchar32_t dquote_escape = Str::get_first_char(pl->string_literal_escape); for (int i=from; i <= to; i++) { - wchar_t skip = NOT_A_COLOUR; + inchar32_t skip = NOT_A_COLOUR; int one_off = -1, will_be = -1, glob = 1; switch (colouring_state) { case PLAIN_COLOUR: { - wchar_t c = Str::get_at(matter, i); + inchar32_t c = Str::get_at(matter, i); if (c == dquote) { colouring_state = STRING_COLOUR; break; @@ -108,21 +108,21 @@ void Painter::syntax_colour_inner(programming_language *pl, } break; case CHARACTER_COLOUR: { - wchar_t c = Str::get_at(matter, i); + inchar32_t c = Str::get_at(matter, i); if (c == squote) will_be = PLAIN_COLOUR; if (c == squote_escape) skip = CHARACTER_COLOUR; break; } case STRING_COLOUR: { - wchar_t c = Str::get_at(matter, i); + inchar32_t c = Str::get_at(matter, i); if (c == dquote) will_be = PLAIN_COLOUR; if (c == dquote_escape) skip = STRING_COLOUR; break; } } for (int j=0; j= 0) Str::put_at(colouring, i+j, (wchar_t) one_off); - else Str::put_at(colouring, i+j, (wchar_t) colouring_state); + if (one_off >= 0) Str::put_at(colouring, i+j, (inchar32_t) one_off); + else Str::put_at(colouring, i+j, (inchar32_t) colouring_state); } i += glob - 1; if (will_be >= 0) colouring_state = will_be; @@ -136,7 +136,7 @@ void Painter::syntax_colour_inner(programming_language *pl, for (int i=from; i <= to; i++) { if ((Str::get_at(colouring, i) == PLAIN_COLOUR) || (Str::get_at(colouring, i) == IDENTIFIER_COLOUR)) { - wchar_t c = Str::get_at(matter, i); + inchar32_t c = Str::get_at(matter, i); if (Str::includes_at(matter, i, pl->binary_literal_prefix)) { base = 2; for (int j=0; jbinary_literal_prefix); j++) @@ -172,7 +172,7 @@ void Painter::syntax_colour_inner(programming_language *pl, case 2: if ((c == '0') || (c == '1')) pass = TRUE; break; case 10: if (Characters::isdigit(c)) pass = TRUE; break; case 16: if (Characters::isdigit(c)) pass = TRUE; - int d = Characters::tolower(c); + inchar32_t d = Characters::tolower(c); if ((d == 'a') || (d == 'b') || (d == 'c') || (d == 'd') || (d == 'e') || (d == 'f')) pass = TRUE; break; @@ -195,7 +195,7 @@ can contain a |::| namespace divider. = int Painter::identifier_at(programming_language *pl, text_stream *matter, text_stream *colouring, int i) { - wchar_t c = Str::get_at(matter, i); + inchar32_t c = Str::get_at(matter, i); if ((i > 0) && (Str::get_at(colouring, i-1) == IDENTIFIER_COLOUR)) { if ((c == '_') || ((c >= 'A') && (c <= 'Z')) || @@ -203,7 +203,7 @@ int Painter::identifier_at(programming_language *pl, ((c >= '0') && (c <= '9'))) return TRUE; if ((c == ':') && (pl->supports_namespaces)) return TRUE; } else { - wchar_t d = 0; + inchar32_t d = 0; if (i > 0) d = Str::get_at(matter, i); if ((d >= '0') && (d <= '9')) return FALSE; if ((c == '_') || @@ -284,7 +284,7 @@ void Painter::execute(hash_table *HT, colouring_language_block *block, text_stre default: { int ident_from = -1, count = 1; for (int i=from; i<=to; i++) { - int col = Str::get_at(colouring_at_start, i); + int col = (int) Str::get_at(colouring_at_start, i); if ((col == block->run) || ((block->run == UNQUOTED_COLOUR) && ((col != STRING_COLOUR) && (col != CHARACTER_COLOUR)))) { @@ -343,7 +343,7 @@ int Painter::satisfies(hash_table *HT, colouring_rule *rule, text_stream *matter (rule->match_prefix == OPTIONALLY_SPACED_RULE_PREFIX)) { int pos = from; if (rule->match_prefix != UNSPACED_RULE_PREFIX) { - while ((pos > 0) && (Characters::is_whitespace(pos-1))) pos--; + while ((pos > 0) && (Characters::is_whitespace(Str::get_at(rule->match_text, pos-1)))) pos--; if ((rule->match_prefix == SPACED_RULE_PREFIX) && (pos == from)) return FALSE; } @@ -356,7 +356,7 @@ int Painter::satisfies(hash_table *HT, colouring_rule *rule, text_stream *matter (rule->match_prefix == OPTIONALLY_SPACED_RULE_SUFFIX)) { int pos = to + 1; if (rule->match_prefix != UNSPACED_RULE_SUFFIX) { - while ((pos < Str::len(rule->match_text)) && (Characters::is_whitespace(pos))) pos++; + while ((pos < Str::len(rule->match_text)) && (Characters::is_whitespace(Str::get_at(rule->match_text, pos)))) pos++; if ((rule->match_prefix == SPACED_RULE_SUFFIX) && (pos == from)) return FALSE; } @@ -477,7 +477,7 @@ int Painter::parse_comment(programming_language *pl, text_stream *line, text_stream *part_before_comment, text_stream *part_within_comment) { int q_mode = 0, c_mode = 0, non_white_space = FALSE, c_position = -1, c_end = -1; for (int i=0; i; break; case 1: @; break; diff --git a/foundation-module/Preliminaries/A Brief Guide to Foundation.w b/foundation-module/Preliminaries/A Brief Guide to Foundation.w index 0d64c878..0ae45db0 100644 --- a/foundation-module/Preliminaries/A Brief Guide to Foundation.w +++ b/foundation-module/Preliminaries/A Brief Guide to Foundation.w @@ -122,14 +122,14 @@ For slicing, see the //string_position// type, representing positions for the benefit of functions like //Str::substr//. @ Individual characters are represented in Foundation using the standard -POSIX type |wchar_t|, which on all modern systems is a very wide integer, +POSIX type |inchar32_t|, which on all modern systems is a very wide integer, whether or not signed. It's safe to assume it can hold all normal Unicode code points. See //Characters// for class functions like //Characters::isdigit//, which have been carefully written to work equivalently on either Windows or Unix-based systems. //C Strings// and //Wide Strings// provide bare-minimum facilities for handling -traditional null-terminated |char| and |wchar_t| arrays, but don't use these. +traditional null-terminated |char| and |inchar32_t| arrays, but don't use these. Texts are just better. @h Objects. diff --git a/foundation-test/Sections/Program Control.w b/foundation-test/Sections/Program Control.w index 3f6da4c7..271c234c 100644 --- a/foundation-test/Sections/Program Control.w +++ b/foundation-test/Sections/Program Control.w @@ -21,30 +21,30 @@ Choosing which unit test to run on the basis of the command-line arguments. = int main(int argc, char **argv) { Foundation::start(argc, argv); - CommandLine::declare_heading(L"inexample: a tool for testing foundation facilities\n"); + CommandLine::declare_heading(U"inexample: a tool for testing foundation facilities\n"); - CommandLine::declare_switch(TEST_STRINGS_CLSW, L"test-strings", 2, - L"test string manipulation (X is ignored)"); - CommandLine::declare_switch(TEST_RE_CLSW, L"test-regexp", 2, - L"test regular expression matches on a list of cases in file X"); - CommandLine::declare_switch(TEST_DICT_CLSW, L"test-dictionaries", 2, - L"test dictionary building on a list of keys and values in file X"); - CommandLine::declare_switch(TEST_LITERALS_CLSW, L"test-literals", 2, - L"test string literals (X is ignored)"); - CommandLine::declare_switch(TEST_REPLACEMENT_CLSW, L"test-replacement", 2, - L"test regular expression replacements on a list of cases in file X"); - CommandLine::declare_switch(TEST_LISTS_CLSW, L"test-lists", 2, - L"test linked lists (X is ignored)"); - CommandLine::declare_switch(TEST_STACKS_CLSW, L"test-stacks", 2, - L"test LIFO stacks (X is ignored)"); - CommandLine::declare_switch(TEST_SEMVER_CLSW, L"test-semver", 2, - L"test semantic version numbers (X is ignored)"); - CommandLine::declare_switch(TEST_TREES_CLSW, L"test-trees", 2, - L"test heterogeneous trees (X is ignored)"); - CommandLine::declare_switch(TEST_JSON_CLSW, L"test-json", 2, - L"test decoding and encoding of JSON file X"); - CommandLine::declare_switch(TEST_MARKDOWN_CLSW, L"test-markdown", 2, - L"test decoding and rendering of Markdown notation in file X"); + CommandLine::declare_switch(TEST_STRINGS_CLSW, U"test-strings", 2, + U"test string manipulation (X is ignored)"); + CommandLine::declare_switch(TEST_RE_CLSW, U"test-regexp", 2, + U"test regular expression matches on a list of cases in file X"); + CommandLine::declare_switch(TEST_DICT_CLSW, U"test-dictionaries", 2, + U"test dictionary building on a list of keys and values in file X"); + CommandLine::declare_switch(TEST_LITERALS_CLSW, U"test-literals", 2, + U"test string literals (X is ignored)"); + CommandLine::declare_switch(TEST_REPLACEMENT_CLSW, U"test-replacement", 2, + U"test regular expression replacements on a list of cases in file X"); + CommandLine::declare_switch(TEST_LISTS_CLSW, U"test-lists", 2, + U"test linked lists (X is ignored)"); + CommandLine::declare_switch(TEST_STACKS_CLSW, U"test-stacks", 2, + U"test LIFO stacks (X is ignored)"); + CommandLine::declare_switch(TEST_SEMVER_CLSW, U"test-semver", 2, + U"test semantic version numbers (X is ignored)"); + CommandLine::declare_switch(TEST_TREES_CLSW, U"test-trees", 2, + U"test heterogeneous trees (X is ignored)"); + CommandLine::declare_switch(TEST_JSON_CLSW, U"test-json", 2, + U"test decoding and encoding of JSON file X"); + CommandLine::declare_switch(TEST_MARKDOWN_CLSW, U"test-markdown", 2, + U"test decoding and rendering of Markdown notation in file X"); CommandLine::read(argc, argv, NULL, &Main::respond, &Main::ignore); Foundation::end(); diff --git a/foundation-test/Sections/Unit Tests.w b/foundation-test/Sections/Unit Tests.w index 31bd2025..c82a7323 100644 --- a/foundation-test/Sections/Unit Tests.w +++ b/foundation-test/Sections/Unit Tests.w @@ -6,15 +6,15 @@ A selection of tests for, or demonstrations of, foundation features. = void Unit::test_strings(void) { - text_stream *S = Str::new_from_wide_string(L"Jack and Jill"); + text_stream *S = Str::new_from_wide_string(U"Jack and Jill"); PRINT("Setup: %S\n", S); - text_stream *T = Str::new_from_wide_string(L" had a great fall"); + text_stream *T = Str::new_from_wide_string(U" had a great fall"); PRINT("Plus: %S\n", T); Str::concatenate(S, T); PRINT("Concatenation: %S\n", S); - text_stream *BB = Str::new_from_wide_string(L" banana bread is fun "); + text_stream *BB = Str::new_from_wide_string(U" banana bread is fun "); PRINT("Setup statically: <%S>\n", BB); Str::trim_white_space(BB); PRINT("Trimmed: <%S>\n", BB); @@ -27,8 +27,8 @@ void Unit::test_strings(void) { Str::put(Str::at(BB, 3), L'Q'); PRINT("Modified: <%S>\n", BB); - text_stream *A = Str::new_from_wide_string(L"fish"); - text_stream *B = Str::new_from_wide_string(L"Fish"); + text_stream *A = Str::new_from_wide_string(U"fish"); + text_stream *B = Str::new_from_wide_string(U"Fish"); PRINT("%S eq %S? %d\n", A, B, Str::eq(A, B)); PRINT("%S ci-eq %S? %d\n", A, B, Str::eq_insensitive(A, B)); @@ -70,8 +70,8 @@ void Unit::test_dictionaries(text_stream *arg) { void Unit::test_dictionaries_helper1(text_stream *text, text_file_position *tfp, void *vD) { dictionary *D = (dictionary *) vD; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L" *")) return; - if (Regexp::match(&mr, text, L"%'(%c*?)%' %'(%c*)%'")) { + if (Regexp::match(&mr, text, U" *")) return; + if (Regexp::match(&mr, text, U"%'(%c*?)%' %'(%c*)%'")) { if (Dictionaries::find(D, mr.exp[0]) == NULL) { PRINT("Creating new entry <%S>\n", mr.exp[0]); Dictionaries::create_text(D, mr.exp[0]); @@ -89,8 +89,8 @@ void Unit::test_dictionaries_helper1(text_stream *text, text_file_position *tfp, void Unit::test_dictionaries_helper2(text_stream *text, text_file_position *tfp, void *vD) { dictionary *D = (dictionary *) vD; match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L" *")) return; - if (Regexp::match(&mr, text, L"%'(%c*?)%' %'(%c*)%'")) { + if (Regexp::match(&mr, text, U" *")) return; + if (Regexp::match(&mr, text, U"%'(%c*?)%' %'(%c*)%'")) { if (Dictionaries::find(D, mr.exp[0]) == NULL) { PRINT("Missing %S\n", mr.exp[0]); } else { @@ -114,9 +114,9 @@ void Unit::test_regexp(text_stream *arg) { void Unit::test_regexp_helper(text_stream *text, text_file_position *tfp, void *state) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L" *")) return; - if (Regexp::match(&mr, text, L"%'(%c*?)%' %'(%c*)%'")) { - wchar_t pattern[1024]; + if (Regexp::match(&mr, text, U" *")) return; + if (Regexp::match(&mr, text, U"%'(%c*?)%' %'(%c*)%'")) { + inchar32_t pattern[1024]; Str::copy_to_wide_string(pattern, mr.exp[1], 1024); match_results mr2 = Regexp::create_mr(); PRINT("Text <%S> pattern <%w>: ", mr.exp[0], pattern); @@ -146,10 +146,10 @@ void Unit::test_replacement(text_stream *arg) { void Unit::test_replacement_helper(text_stream *text, text_file_position *tfp, void *state) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, text, L" *")) return; - if (Regexp::match(&mr, text, L"%'(%c*?)%' %'(%c*?)%' %'(%c*)%'")) { - wchar_t pattern[1024]; - wchar_t replacement[1024]; + if (Regexp::match(&mr, text, U" *")) return; + if (Regexp::match(&mr, text, U"%'(%c*?)%' %'(%c*?)%' %'(%c*)%'")) { + inchar32_t pattern[1024]; + inchar32_t replacement[1024]; Str::copy_to_wide_string(pattern, mr.exp[1], 1024); Str::copy_to_wide_string(replacement, mr.exp[2], 1024); PRINT("Text <%S> pattern <%w> replacement <%w>: ", mr.exp[0], pattern, replacement); @@ -433,7 +433,7 @@ void Unit::test_JSON_helper(text_stream *text, text_file_position *tfp, void *st text_stream *JSON = (text_stream *) state; if (Str::eq(text, I"----")) { match_results mr = Regexp::create_mr(); - if (Regexp::match(&mr, JSON, L" *<(%C+)> *= *(%c+)")) { + if (Regexp::match(&mr, JSON, U" *<(%C+)> *= *(%c+)")) { text_stream *rname = mr.exp[0]; text_stream *rtext = mr.exp[1]; WRITE_TO(STDOUT, "JSON requirement <%S> set to:\n%S----\n", rname, rtext); @@ -443,7 +443,7 @@ void Unit::test_JSON_helper(text_stream *text, text_file_position *tfp, void *st if (de) de->value = req; JSON::encode_req(STDOUT, req); } - } else if (Regexp::match(&mr, JSON, L" *(%c+?) against *(%c+)")) { + } else if (Regexp::match(&mr, JSON, U" *(%c+?) against *(%c+)")) { text_stream *rtext = mr.exp[0]; text_stream *material = mr.exp[1]; WRITE_TO(STDOUT, "JSON verification test on:\n%S-- to match --\n%S\n----\n",