Some fundamental definitions, mostly declaring object types to the Foundation module.
§1. Every program using foundation must define this:
define PROGRAM_NAME "inweb" define THIS_IS_INWEB
§2. We need to itemise the structures we'll want to allocate. For explanations, see A Brief Guide to Foundation (in foundation).
enum asset_rule_CLASS enum breadcrumb_request_CLASS enum chapter_CLASS enum colony_CLASS enum colony_member_CLASS enum colour_scheme_CLASS enum defined_constant_CLASS enum enumeration_set_CLASS enum footnote_CLASS enum hash_table_entry_usage_CLASS enum language_function_CLASS enum language_type_CLASS enum macro_usage_CLASS enum makefile_specifics_CLASS enum nonterminal_variable_CLASS enum para_macro_CLASS enum paragraph_CLASS enum paragraph_tagging_CLASS enum preform_nonterminal_CLASS enum section_CLASS enum source_line_CLASS enum structure_element_CLASS enum tangle_target_CLASS enum tex_results_CLASS enum text_literal_CLASS enum theme_tag_CLASS enum weave_format_CLASS enum weave_pattern_CLASS enum weave_plugin_CLASS enum weave_order_CLASS enum web_CLASS enum writeme_asset_CLASS enum weave_document_node_CLASS enum weave_head_node_CLASS enum weave_body_node_CLASS enum weave_tail_node_CLASS enum weave_section_header_node_CLASS enum weave_section_footer_node_CLASS enum weave_chapter_header_node_CLASS enum weave_chapter_footer_node_CLASS enum weave_verbatim_node_CLASS enum weave_section_purpose_node_CLASS enum weave_subheading_node_CLASS enum weave_bar_node_CLASS enum weave_linebreak_node_CLASS enum weave_pagebreak_node_CLASS enum weave_paragraph_heading_node_CLASS enum weave_endnote_node_CLASS enum weave_material_node_CLASS enum weave_figure_node_CLASS enum weave_extract_node_CLASS enum weave_audio_node_CLASS enum weave_download_node_CLASS enum weave_video_node_CLASS enum weave_embed_node_CLASS enum weave_pmac_node_CLASS enum weave_vskip_node_CLASS enum weave_chapter_node_CLASS enum weave_section_node_CLASS enum weave_code_line_node_CLASS enum weave_function_usage_node_CLASS enum weave_commentary_node_CLASS enum weave_carousel_slide_node_CLASS enum weave_toc_node_CLASS enum weave_toc_line_node_CLASS enum weave_chapter_title_page_node_CLASS enum weave_defn_node_CLASS enum weave_source_code_node_CLASS enum weave_url_node_CLASS enum weave_footnote_cue_node_CLASS enum weave_begin_footnote_text_node_CLASS enum weave_display_line_node_CLASS enum weave_function_defn_node_CLASS enum weave_item_node_CLASS enum weave_grammar_index_node_CLASS enum weave_inline_node_CLASS enum weave_locale_node_CLASS enum weave_maths_node_CLASS
§3. And then expand the following macros, all defined in Memory (in foundation).
DECLARE_CLASS_ALLOCATED_IN_ARRAYS(source_line, 1000) DECLARE_CLASS(asset_rule) DECLARE_CLASS(breadcrumb_request) DECLARE_CLASS(chapter) DECLARE_CLASS(colony) DECLARE_CLASS(colony_member) DECLARE_CLASS(colour_scheme) DECLARE_CLASS(defined_constant) DECLARE_CLASS(enumeration_set) DECLARE_CLASS(footnote) DECLARE_CLASS(hash_table_entry_usage) DECLARE_CLASS(language_function) DECLARE_CLASS(language_type) DECLARE_CLASS(macro_usage) DECLARE_CLASS(makefile_specifics) DECLARE_CLASS(nonterminal_variable) DECLARE_CLASS(para_macro) DECLARE_CLASS(paragraph_tagging) DECLARE_CLASS(paragraph) DECLARE_CLASS(preform_nonterminal) DECLARE_CLASS(section) DECLARE_CLASS(structure_element) DECLARE_CLASS(tangle_target) DECLARE_CLASS(tex_results) DECLARE_CLASS(text_literal) DECLARE_CLASS(theme_tag) DECLARE_CLASS(weave_format) DECLARE_CLASS(weave_pattern) DECLARE_CLASS(weave_plugin) DECLARE_CLASS(weave_order) DECLARE_CLASS(web) DECLARE_CLASS(writeme_asset) DECLARE_CLASS(weave_document_node) DECLARE_CLASS(weave_head_node) DECLARE_CLASS(weave_body_node) DECLARE_CLASS(weave_tail_node) DECLARE_CLASS(weave_section_header_node) DECLARE_CLASS(weave_section_footer_node) DECLARE_CLASS(weave_chapter_header_node) DECLARE_CLASS(weave_chapter_footer_node) DECLARE_CLASS(weave_verbatim_node) DECLARE_CLASS(weave_section_purpose_node) DECLARE_CLASS(weave_subheading_node) DECLARE_CLASS(weave_bar_node) DECLARE_CLASS(weave_linebreak_node) DECLARE_CLASS(weave_pagebreak_node) DECLARE_CLASS(weave_paragraph_heading_node) DECLARE_CLASS(weave_endnote_node) DECLARE_CLASS(weave_material_node) DECLARE_CLASS(weave_figure_node) DECLARE_CLASS(weave_extract_node) DECLARE_CLASS(weave_audio_node) DECLARE_CLASS(weave_video_node) DECLARE_CLASS(weave_download_node) DECLARE_CLASS(weave_embed_node) DECLARE_CLASS(weave_pmac_node) DECLARE_CLASS(weave_vskip_node) DECLARE_CLASS(weave_chapter_node) DECLARE_CLASS(weave_section_node) DECLARE_CLASS(weave_code_line_node) DECLARE_CLASS(weave_function_usage_node) DECLARE_CLASS(weave_commentary_node) DECLARE_CLASS(weave_carousel_slide_node) DECLARE_CLASS(weave_toc_node) DECLARE_CLASS(weave_toc_line_node) DECLARE_CLASS(weave_chapter_title_page_node) DECLARE_CLASS(weave_defn_node) DECLARE_CLASS(weave_source_code_node) DECLARE_CLASS(weave_url_node) DECLARE_CLASS(weave_footnote_cue_node) DECLARE_CLASS(weave_begin_footnote_text_node) DECLARE_CLASS(weave_display_line_node) DECLARE_CLASS(weave_item_node) DECLARE_CLASS(weave_grammar_index_node) DECLARE_CLASS(weave_inline_node) DECLARE_CLASS(weave_locale_node) DECLARE_CLASS(weave_maths_node) DECLARE_CLASS(weave_function_defn_node)