Worgle (main)
Worgle (main)
1. What is Worgle?
1.1. The name "Worgle"
1.2. Bootstrapping
2. Top-level files
2.1. Top Level C File
2.2. Header File
2.3. Header File (private)
3. An Outline of What Worgle does
3.1. Initialization
3.1.1. Initialize worgle data
3.1.2. Get and set filename
3.1.3. Initialize return codes
3.2. Load file into memory
3.2.1. Loadfile function
3.2.2. Open file
3.2.3. Get file size
3.2.4. Allocate memory, read, and close
3.3. Parsing
3.3.1. Top Level Parsing Function
3.3.2. Parsing Modes
3.3.2.1. MODE_ORG
3.3.2.1.1. Org Parse Top
3.3.2.1.2. Finding the next named block
3.3.2.1.3. Extracting information from #+NAME
3.3.2.1.4. Beginning a new block
3.3.2.1.5. DONE Parsing Header Information
3.3.2.1.6. DONE Content Parsing
3.3.2.1.7. DONE Code Reference
3.3.2.2. MODE_BEGINCODE
3.3.2.2.1. Extracting information from #+BEGIN_SRC
3.3.2.2.2. Setting up code for a new read
3.3.2.2.3. Appending a new file
3.3.2.3. MODE_CODE
3.3.3. Parser Local Variables
3.3.4. Reading a line at a time
3.4. Generation
3.5. Cleanup
4. Core Data Structures
4.1. Top Level Struct
4.1.1. Worgle Initialization
4.1.2. Worgle Deallocation
4.1.3. Worgle Data
4.1.3.1. Text Block
4.1.3.2. Segment Block
4.1.3.3. Current Line
4.1.3.4. Block Started Flag
4.1.3.5. New Content Flag
4.1.3.6. Dictionary
4.1.3.7. File List
4.1.3.8. Text Buffer
4.1.3.9. Current Block
4.1.3.10. Line Number
4.1.3.11. Orgfile Array
4.1.3.11.1. Declaration + Initialization
4.1.3.11.2. Freeing
4.1.3.11.3. Appending an Org file
4.1.3.12. Program ID
4.2. String
4.2.1. Reset or initialize a string
4.2.2. Writing a String
4.3. Segment
4.3.1. Text Chunk Type
4.3.2. Reference Type
4.3.3. Initializing a Segment
4.3.4. Writing a Segment
4.3.5. Segment Type Checks
4.4. Code Block
4.4.1. Initializing a code block
4.4.2. Freeing a code block
4.4.3. Appending a segment to a code block
4.4.3.1. Appending a string segment
4.4.3.2. Appending a reference segment
4.4.4. Appending a code block to a code block
4.4.5. Writing a code block to filehandle
4.4.6. Keeping track of the last segment
4.5. Code Block List
4.5.1. Block List Initialization
4.5.2. Freeing a Block List
4.5.3. Appending a Block
4.6. Hash Map
4.6.1. Hash map Initialization
4.6.2. Freeing a Hash Map
4.6.3. Looking up an entry
4.6.4. Getting an entry
4.7. File
4.7.1. Writing A File to a filehandle
4.8. The File List
4.8.1. Initializing a file list
4.8.2. Freeing a file list
4.8.3. Appending a file to a file list
4.8.4. Writing a filelist to disk
4.9. Text Buffer
4.9.1. Zeroing out a text buffer
4.9.2. Initializing a text buffer
4.9.3. Freeing a text buffer
4.10. UUID
4.10.1. Worgle Long Typedef
4.10.2. Top-level UUID counter
4.10.3. Segment ID
4.10.4. Block ID
4.10.5. File ID
4.10.6. Orglet ID
4.11. Org File
4.11.1. Struct
4.11.2. DONE Initialization
4.11.3. DONE Freeing
4.11.4. Appending To File
4.11.4.1. Appending an orglet
4.11.4.2. DONE Appending a header
4.11.4.3. DONE Appending Content
4.11.4.4. DONE Appending Block Reference
4.12. Orglet
4.12.1. Struct
4.12.2. Initializing
4.12.3. Freeing
4.12.4. Types
4.12.5. Orglet Header
4.12.6. Orglet Content
4.12.7. Orglet Block Reference
5. Command Line Arguments
5.1. Parsing command line flags
5.2. Turning on debug macros (-g)
5.3. Turning on Warnings (-W)
5.3.1. Checking for unused blocks
5.4. Map Source Code (-m)
5.5. Appending filenames
5.6. Generate Database (-d)
5.7. Set program id (-p)
5.8. Disable tangling (-n)
6. Source mapping