2019-02-04 22:26:45 +00:00
< html >
< head >
2020-03-23 15:04:43 +00:00
< title > foundation< / title >
2020-03-19 00:03:04 +00:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2019-02-04 22:26:45 +00:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
2020-03-19 00:03:04 +00:00
< link href = "../inweb.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2020-04-12 16:24:23 +00:00
2019-02-04 22:26:45 +00:00
< / head >
< body >
2020-03-19 00:03:04 +00:00
< nav role = "navigation" >
2020-04-12 16:24:23 +00:00
< h1 > < a href = "../webs.html" > Inweb Source< / a > < / h1 >
2020-03-19 00:03:04 +00:00
< ul >
< li > < a href = "../inweb/index.html" > inweb< / a > < / li >
< / ul >
< h2 > Foundation< / h2 >
< ul >
< li > < a href = "../foundation-module/index.html" > foundation-module< / a > < / li >
< li > < a href = "../foundation-test/index.html" > foundation-test< / a > < / li >
2020-04-12 16:24:23 +00:00
< / ul >
< h2 > Example Webs< / h2 >
< ul >
< li > < a href = "../goldbach/index.html" > goldbach< / a > < / li >
< li > < a href = "../twinprimes/twinprimes.html" > twinprimes< / a > < / li >
2020-03-19 00:03:04 +00:00
< / ul >
< / nav >
< main role = "main" >
2020-04-12 16:24:23 +00:00
< ul class = "crumbs" > < li > < a href = "../webs.html" > Home< / a > < / li > < li > < b > foundation< / b > < / li > < / ul >
2020-03-23 15:04:43 +00:00
< p class = "purpose" > A library of common code used by all of the Inform tools. This is version 1.< / p >
2019-02-04 22:26:45 +00:00
< hr >
< ul class = "chapterlist" >
< li >
< p > < a name = "1" > < / a > < spon class = "chaptertitle" > Chapter 1: Setting Up< / span > < / p >
< p > < span class = "purpose" > Absolute basics.< / span > < / p >
< ul class = "sectionlist" >
< li >
2020-04-09 17:32:37 +00:00
< p > < a href = "1-fm.html" > < spon class = "sectiontitle" > Foundation Module< / span > < / a > -
2019-02-04 22:26:45 +00:00
< span class = "purpose" > Starting up and shutting down.< / span > < / p >
< / li >
< li >
< p > < a href = "1-pp.html" > < spon class = "sectiontitle" > POSIX Platforms< / span > < / a > -
< span class = "purpose" > A version of our operating system interface suitable for POSIX-compliant operating systems.< / span > < / p >
< / li >
< li >
< p > < a href = "1-wp.html" > < spon class = "sectiontitle" > Windows Platform< / span > < / a > -
< span class = "purpose" > A version of our operating system interface suitable for Microsoft Windows.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p > < a name = "2" > < / a > < spon class = "chaptertitle" > Chapter 2: Memory, Streams and Collections< / span > < / p >
< p > < span class = "purpose" > Creating objects in memory, and forming lists, hashes, and text streams.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "2-dl.html" > < spon class = "sectiontitle" > Debugging Log< / span > < / a > -
< span class = "purpose" > To write to the debugging log, a plain text file which traces what we're doing, in order to assist those lost souls debugging it.< / span > < / p >
< / li >
< li >
< p > < a href = "2-mmr.html" > < spon class = "sectiontitle" > Memory< / span > < / a > -
< span class = "purpose" > To allocate memory suitable for the dynamic creation of objects of different sizes, placing some larger objects automatically into doubly linked lists and assigning each a unique allocation ID number.< / span > < / p >
< / li >
< li >
< p > < a href = "2-str.html" > < spon class = "sectiontitle" > Streams< / span > < / a > -
< span class = "purpose" > Support for writing structured textual output, perhaps to the screen, to a file, or to a flexible-sized wide string.< / span > < / p >
< / li >
< li >
< p > < a href = "2-wal.html" > < spon class = "sectiontitle" > Writers and Loggers< / span > < / a > -
< span class = "purpose" > Formatted text output to streams.< / span > < / p >
< / li >
< li >
< p > < a href = "2-mth.html" > < spon class = "sectiontitle" > Methods< / span > < / a > -
< span class = "purpose" > General support for something approximating method calls.< / span > < / p >
< / li >
< li >
< p > < a href = "2-llas.html" > < spon class = "sectiontitle" > Linked Lists and Stacks< / span > < / a > -
< span class = "purpose" > A simple implementation for single-linked lists of objects allocated by Foundation's memory manager, and for last-in-first-out stacks of same.< / span > < / p >
< / li >
< li >
< p > < a href = "2-dct.html" > < spon class = "sectiontitle" > Dictionaries< / span > < / a > -
< span class = "purpose" > A simple implementation for a flexible-sized dictionary of key-value pairs.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p > < a name = "3" > < / a > < spon class = "chaptertitle" > Chapter 3: The Operating System< / span > < / p >
< p > < span class = "purpose" > Dealing with the host operating system.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "3-em.html" > < spon class = "sectiontitle" > Error Messages< / span > < / a > -
< span class = "purpose" > A basic system for command-line tool error messages.< / span > < / p >
< / li >
< li >
< p > < a href = "3-cla.html" > < spon class = "sectiontitle" > Command Line Arguments< / span > < / a > -
< span class = "purpose" > To parse the command line arguments with which inweb was called, and to handle any errors it needs to issue.< / span > < / p >
< / li >
< li >
< p > < a href = "3-pth.html" > < spon class = "sectiontitle" > Pathnames< / span > < / a > -
< span class = "purpose" > To manage references to locations in the host computer's file system.< / span > < / p >
< / li >
< li >
< p > < a href = "3-fln.html" > < spon class = "sectiontitle" > Filenames< / span > < / a > -
< span class = "purpose" > Given the different environments in which we might be running, and the large range of files we may need from within a project folder, it's useful to have a section of code simply to deduce filenames.< / span > < / p >
< / li >
< li >
< p > < a href = "3-cf.html" > < spon class = "sectiontitle" > Case-Insensitive Filenames< / span > < / a > -
< span class = "purpose" > On some of the Unix-derived file systems on which Inform runs, filenames are case-sensitive, so that FISH and fish might be different files. This makes extension files, installed by the user, prone to being missed. The code in this section provides a routine to carry out file opening as if filenames are case-insensitive, and is used only for extensions.< / span > < / p >
< / li >
< li >
< p > < a href = "3-shl.html" > < spon class = "sectiontitle" > Shell< / span > < / a > -
< span class = "purpose" > Sending commands to the shell, on Unix-like platforms, or simulating this on Windows.< / span > < / p >
< / li >
< li >
< p > < a href = "3-drc.html" > < spon class = "sectiontitle" > Directories< / span > < / a > -
< span class = "purpose" > Scanning directories on the host filing system.< / span > < / p >
< / li >
< li >
< p > < a href = "3-tm.html" > < spon class = "sectiontitle" > Time< / span > < / a > -
< span class = "purpose" > Managing how we record and use the current time and date.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p > < a name = "4" > < / a > < spon class = "chaptertitle" > Chapter 4: Text Handling< / span > < / p >
< p > < span class = "purpose" > Reading, writing and parsing text.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "4-chr.html" > < spon class = "sectiontitle" > Characters< / span > < / a > -
< span class = "purpose" > Individual characters.< / span > < / p >
< / li >
< li >
< p > < a href = "4-cst.html" > < spon class = "sectiontitle" > C Strings< / span > < / a > -
< span class = "purpose" > A minimal library for handling C-style strings.< / span > < / p >
< / li >
< li >
2020-04-09 17:32:37 +00:00
< p > < a href = "4-ws.html" > < spon class = "sectiontitle" > Wide Strings< / span > < / a > -
2019-02-04 22:26:45 +00:00
< span class = "purpose" > A minimal library for handling wide C strings.< / span > < / p >
< / li >
< li >
< p > < a href = "4-sm.html" > < spon class = "sectiontitle" > String Manipulation< / span > < / a > -
< span class = "purpose" > Convenient routines for manipulating strings of text.< / span > < / p >
< / li >
< li >
< p > < a href = "4-tf.html" > < spon class = "sectiontitle" > Text Files< / span > < / a > -
< span class = "purpose" > To read text files of whatever flavour, one line at a time.< / span > < / p >
< / li >
< li >
< p > < a href = "4-taa.html" > < spon class = "sectiontitle" > Tries and Avinues< / span > < / a > -
< span class = "purpose" > To examine heads and tails of text, to see how it may inflect.< / span > < / p >
< / li >
< li >
< p > < a href = "4-pm.html" > < spon class = "sectiontitle" > Pattern Matching< / span > < / a > -
< span class = "purpose" > To provide a limited regular-expression parser.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p > < a name = "5" > < / a > < spon class = "chaptertitle" > Chapter 5: Generating Websites< / span > < / p >
< p > < span class = "purpose" > For making individual web pages, or gathering them into mini-sites or ebooks.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "5-htm.html" > < spon class = "sectiontitle" > HTML< / span > < / a > -
< span class = "purpose" > Utility functions for writing HTML.< / span > < / p >
< / li >
< li >
< p > < a href = "5-ee.html" > < spon class = "sectiontitle" > Epub Ebooks< / span > < / a > -
< span class = "purpose" > To provide for wrapping up sets of HTML files into ePub ebooks.< / span > < / p >
< / li >
< / ul >
< / li >
< li >
< p > < a name = "6" > < / a > < spon class = "chaptertitle" > Chapter 6: Media< / span > < / p >
< p > < span class = "purpose" > Examining image and sound files.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "6-bf.html" > < spon class = "sectiontitle" > Binary Files< / span > < / a > -
< span class = "purpose" > Routines for reading raw data from binary files.< / span > < / p >
< / li >
< li >
< p > < a href = "6-id.html" > < spon class = "sectiontitle" > Image Dimensions< / span > < / a > -
< span class = "purpose" > These utility routines look at the headers of JPEG and PNG files to find the pixel dimensions of any images supplied by the user for cover art and figures.< / span > < / p >
< / li >
< li >
< p > < a href = "6-sd.html" > < spon class = "sectiontitle" > Sound Durations< / span > < / a > -
< span class = "purpose" > These utility routines look at the headers of AIFF, OGG Vorbis or MIDI files to find the durations, and verify that they are what they purport to be.< / span > < / p >
< / li >
< / ul >
< / li >
2020-03-23 15:04:43 +00:00
< li >
< p > < a name = "7" > < / a > < spon class = "chaptertitle" > Chapter 7: Semantic Versioning< / span > < / p >
< p > < span class = "purpose" > For reading, storing and comparing standard semantic version numbers.< / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "7-vn.html" > < spon class = "sectiontitle" > Version Numbers< / span > < / a > -
< span class = "purpose" > Semantic version numbers such as 3.7.1.< / span > < / p >
< / li >
< li >
< p > < a href = "7-vnr.html" > < spon class = "sectiontitle" > Version Number Ranges< / span > < / a > -
< span class = "purpose" > Ranges of acceptable version numbers.< / span > < / p >
< / li >
< / ul >
< / li >
2020-04-01 19:43:48 +00:00
< li >
< p > < a name = "8" > < / a > < spon class = "chaptertitle" > Chapter 8: Literate Programming< / span > < / p >
< p > < span class = "purpose" > < / span > < / p >
< ul class = "sectionlist" >
< li >
< p > < a href = "8-ws.html" > < spon class = "sectiontitle" > Web Structure< / span > < / a > -
< span class = "purpose" > To read the structure of a literate programming web from a path in the file system.< / span > < / p >
< / li >
2020-04-02 12:30:38 +00:00
< li >
< p > < a href = "8-bdfw.html" > < spon class = "sectiontitle" > Bibliographic Data for Webs< / span > < / a > -
< span class = "purpose" > To manage key-value pairs of bibliographic data, metadata if you like, associated with a given web.< / span > < / p >
< / li >
2020-04-01 19:43:48 +00:00
< li >
< p > < a href = "8-wm.html" > < spon class = "sectiontitle" > Web Modules< / span > < / a > -
< span class = "purpose" > To search for included modules, and track dependencies between them.< / span > < / p >
< / li >
< li >
< p > < a href = "8-bf.html" > < spon class = "sectiontitle" > Build Files< / span > < / a > -
< span class = "purpose" > Manages the build metadata for an inweb project.< / span > < / p >
< / li >
< / ul >
< / li >
2019-02-04 22:26:45 +00:00
< / ul >
< hr >
2020-03-25 23:42:55 +00:00
2020-03-19 00:03:04 +00:00
< / main >
2019-02-04 22:26:45 +00:00
< / body >
< / html >