Programmer's Guide

FreeBASIC programmer's guide.

Work in Progress: New pages created for this guide should use the ProPg* 
prefix.

Getting Started
   Hello World
   FreeBASIC Primer #1

Source Files
   Source Files (.bas)
   Header Files (.bi)
   Using Prebuilt Libraries
   Manage Reusable Procedures by Including Source vs Compiled Modules

Lexical Conventions
   Comments
   Identifier Rules
   Literals
   Labels
   Line Continuation
   Line Separator

Variables and Datatypes
   Constants and Enumerations
   Numeric Types
   Strings (string, zstring, and wstring)
   Coercion and Conversion
   Constants
   Variables

   Arrays
      Overview
      Fixed-length Arrays
      Variable-length Arrays
      Array Indexing
      Passing Arrays to Procedures

   Pointers
      Overview
      Pointer Arithmetic

   References
      From Pointers to References
      Using References

Declarations
   Implicit Declarations
   Initialization
   Storage Classes
   Variable Scope
   Simple Variable Lifetime vs Scope
   Dynamic Object and Data Lifetime
   Namespaces
   Variable and Procedure Linkage

User Defined Types
   Overview
   Type Aliases
   Temporary Types
   Type (UDT/Alias/Temporary) and Union
   Constructors and Destructors (basics)
   Member Procedures
   Properties
   Variable-length member data
   Member Access Rights and Encapsulation
   Operator Overloading
   Iterators
   New and Delete
   Types as Objects
   Composition, Aggregation, Inheritance
   Inheritance Polymorphism
   Constructors, '=' Assignment-Operators, and Destructors (advanced, part #1)
   Constructors, '=' Assignment-Operators, and Destructors (advanced, part #2)
Statements and Expressions
   Differences between Expressions and Statements
   Constant Expressions
   Assignments
   Operator List
   Operator Precedence
   Control Flow Statements

Procedures
   Procedures Overview
   Passing Arguments to Procedures
   Returning Values
   Procedure Scopes
   Calling Conventions
   Recursion
   Callback
   Constructors and Destructors
   Pointers to Procedures
   Variadic Arguments

Graphics
   FreeBASIC GfxLib overview
   Graphics Mode Refresh and Anti-Flickering
   Internal Graphics Formats
   External Graphics File Formats (page to fill in)

Multi-Threading
   Overview
   Threads
   Mutual Exclusion
   Conditional Variables
   Critical Sections
   Critical Sections FAQ

Making Binaries
   Executables
   Static Libraries
   Shared Libraries (DLLs)
   Profiling

Preprocessor
   Overview
   Conditional Compilation
   Macros

Other Topics
(And topics that need to get placed elsewhere)
   ASCII
   Date Serials
   Radians
   Error Handling
   Event Handling
   Intrinsic Defines
   Identifier Look-ups in namespaces and types

Technical Articles
   Inline Asm
   C Standard Library Functions
   File I/O with FreeBASIC
   Dynamic memory management with FreeBASIC
   Replace Recursion with Iteration
   OBJECT built-in and RTTI info
   Embed and Access binary Data in Executable
   Use Implicit / Overload New([]) and Delete([]) Operators with Inheritance Polymorphism
   Emulate a TLS (Thread Local Storage) and a TP (Thread Pooling) feature

NOTE: Existing CatPg pages should be recreated as ProPg pages providing a 
general overview to the grouping of keywords.

