Some fundamental definitions, mostly setting up for the Foundation module to manage memory for us.


§1. Build identity. First we define the build, using a notation which tangles out to the current build number as specified in the contents section of this web.

    define INTOOL_NAME "inweb"
    define INWEB_BUILD "[[Version Number]]"

§2. Setting up the memory manager. We need to itemise the structures we'll want to allocate. To explicate this see Foundation, but these are all struct names with either _MT or, in one case, _array_MT appended. MT stands for "memory type".

    enum bibliographic_datum_MT
    enum c_structure_MT
    enum chapter_MT
    enum para_macro_MT
    enum enumeration_set_MT
    enum function_MT
    enum hash_table_entry_MT
    enum hash_table_entry_usage_MT
    enum macro_usage_MT
    enum module_MT
    enum module_search_MT
    enum nonterminal_variable_MT
    enum paragraph_MT
    enum paragraph_tagging_MT
    enum preform_nonterminal_MT
    enum programming_language_MT
    enum section_MT
    enum source_line_array_MT
    enum structure_element_MT
    enum tangle_target_MT
    enum tex_results_MT
    enum text_literal_MT
    enum theme_tag_MT
    enum weave_format_MT
    enum weave_pattern_MT
    enum weave_target_MT
    enum web_MT

§3. And then expand the following macros, all defined in Foundation. This makes all the necessary constructor functions for creating objects of these types.

    ALLOCATE_IN_ARRAYS(source_line, 1000)
    ALLOCATE_INDIVIDUALLY(bibliographic_datum)
    ALLOCATE_INDIVIDUALLY(c_structure)
    ALLOCATE_INDIVIDUALLY(chapter)
    ALLOCATE_INDIVIDUALLY(para_macro)
    ALLOCATE_INDIVIDUALLY(enumeration_set)
    ALLOCATE_INDIVIDUALLY(function)
    ALLOCATE_INDIVIDUALLY(hash_table_entry_usage)
    ALLOCATE_INDIVIDUALLY(hash_table_entry)
    ALLOCATE_INDIVIDUALLY(macro_usage)
    ALLOCATE_INDIVIDUALLY(module)
    ALLOCATE_INDIVIDUALLY(module_search)
    ALLOCATE_INDIVIDUALLY(nonterminal_variable)
    ALLOCATE_INDIVIDUALLY(paragraph_tagging)
    ALLOCATE_INDIVIDUALLY(paragraph)
    ALLOCATE_INDIVIDUALLY(preform_nonterminal)
    ALLOCATE_INDIVIDUALLY(programming_language)
    ALLOCATE_INDIVIDUALLY(tex_results)
    ALLOCATE_INDIVIDUALLY(section)
    ALLOCATE_INDIVIDUALLY(structure_element)
    ALLOCATE_INDIVIDUALLY(tangle_target)
    ALLOCATE_INDIVIDUALLY(text_literal)
    ALLOCATE_INDIVIDUALLY(theme_tag)
    ALLOCATE_INDIVIDUALLY(weave_format)
    ALLOCATE_INDIVIDUALLY(weave_pattern)
    ALLOCATE_INDIVIDUALLY(weave_target)
    ALLOCATE_INDIVIDUALLY(web)