	List of C Examples	25

	List of Figures	29

Volume 1

1	Introduction	35

	1.1	Overview of The Documentation		CIntro : 37

		1.1.1	What You Will Learn		CIntro : 37

		1.1.2	What You Are Expected To Know		CIntro : 37

		1.1.3	Roadmap to the Development Kit		CIntro : 38

		1.1.4	Typographical Cues		CIntro : 39

	1.2	Chapters in the Books		CIntro : 40

		1.2.1	The Concepts Book		CIntro : 40

		1.2.2	The Object Reference Book		CIntro : 43

		1.2.3	The Tools Reference Manual		CIntro : 47

		1.2.4	The Esp Book		CIntro : 48

	1.3	Suggestions for Study		CIntro : 48

2	Building Your Application	51

	2.1	What Everyone Should Read		CBuild : 53

	2.2	Topics Listing		CBuild : 54

		2.2.1	Defining Your User Interface		CBuild : 54

		2.2.2	Providing Other User Interface		CBuild : 56

		2.2.3	Documents and Data Structures		CBuild : 56

		2.2.4	Accessing Hardware		CBuild : 57

		2.2.5	Programming Topics		CBuild : 58

		2.2.6	Other Topics		CBuild : 58

3	System Architecture	61

	3.1	GEOS Overview		CArch : 63

	3.2	The System Architecture		CArch : 64

		3.2.1	Applications		CArch : 66

		3.2.2	Libraries		CArch : 66

		3.2.3	The Kernel		CArch : 66

		3.2.4	Device Drivers		CArch : 67

		3.2.5	The User Interface		CArch : 67

	3.3	Object-Oriented Programming		CArch : 68

		3.3.1	Objects, Messages, and Methods		CArch : 69

		3.3.2	Classes and Inheritance		CArch : 73

	3.4	Multitasking and Multithreading		CArch : 75

	3.5	The GEOS User Interface		CArch : 76

		3.5.1	The Generic User Interface		CArch : 77

		3.5.2	The Scalable User Interface		CArch : 79

		3.5.3	Windows and Window Management		CArch : 79

		3.5.4	Input		CArch : 80

		3.5.5	Menus and Dialog Boxes		CArch : 80

		3.5.6	Scrolling Views		CArch : 84

		3.5.7	Visible Object Classes		CArch : 86

		3.5.8	Geometry Manager		CArch : 86

		3.5.9	Lists		CArch : 86

		3.5.10	Other Gadgets		CArch : 87

		3.5.11	Managing Documents and Files		CArch : 88

		3.5.12	Multiple Document Interface		CArch : 88

		3.5.13	Clipboard and Quick-Transfer		CArch : 88

		3.5.14	General Change Notification		CArch : 89

		3.5.15	Help Object		CArch : 89

	3.6	System Services		CArch : 90

		3.6.1	Memory		CArch : 90

		3.6.2	Virtual Memory		CArch : 93

		3.6.3	Local Memory and Object Blocks		CArch : 93

		3.6.4	Item Database Library		CArch : 94

		3.6.5	Graphics System		CArch : 95

		3.6.6	Text		CArch : 98

		3.6.7	Print Spooler and Printing		CArch : 99

		3.6.8	Timers		CArch : 99

		3.6.9	Streams		CArch : 100

		3.6.10	Math support		CArch : 100

		3.6.11	International Support		CArch : 100

	3.7	Libraries		CArch : 101

	3.8	Device Drivers		CArch : 102

4	First Steps: Hello World	105

	4.1	Application Structure		CGetSta : 107

	4.2	Hello World		CGetSta : 108

		4.2.1	Features of Hello World		CGetSta : 109

		4.2.2	Strategy and Internals		CGetSta : 109

		4.2.3	Naming Conventions		CGetSta : 112

	4.3	Geode Parameters File		CGetSta : 114

	4.4	The Source File and Source Code		CGetSta : 116

		4.4.1	Inclusions and Global Variables		CGetSta : 117

		4.4.2	The Process Object		CGetSta : 119

		4.4.3	UI Objects		CGetSta : 120

		4.4.4	Code and Message Handlers		CGetSta : 128

	4.5	Exercises and Suggestions		CGetSta : 136

5	GEOS Programming	139

	5.1	Basic Data Types and Structures		CCoding : 141

		5.1.1	Records and Enumerated Types		CCoding : 142

		5.1.2	Handles and Pointers		CCoding : 144

		5.1.3	Fixed Point Structures		CCoding : 147

	5.2	Goc and C		CCoding : 149

		5.2.1	Goc File Types		CCoding : 149

		5.2.2	Conditional Code in Goc		CCoding : 151

		5.2.3	Macros in Goc		CCoding : 151

		5.2.4	Using Routine Pointers in Goc		CCoding : 152

	5.3	The GEOS Object System		CCoding : 154

		5.3.1	GEOS Terminology		CCoding : 154

		5.3.2	Object Structures		CCoding : 158

		5.3.3	The GEOS Message System		CCoding : 180

	5.4	Using Classes and Objects		CCoding : 182

		5.4.1	Defining a New Class or Subclass		CCoding : 184

		5.4.2	Non-relocatable Data		CCoding : 203

		5.4.3	Defining Methods		CCoding : 204

		5.4.4	Declaring Objects		CCoding : 209

		5.4.5	Sending Messages		CCoding : 219

		5.4.6	Managing Objects		CCoding : 226

6	Applications and Geodes	239

	6.1	Geodes		CAppl : 242

		6.1.1	Geode Components and Structures		CAppl : 244

		6.1.2	Launching an Application		CAppl : 247

		6.1.3	Shutting Down an Application		CAppl : 249

		6.1.4	Saving and Restoring State		CAppl : 250

		6.1.5	Using Other Geodes		CAppl : 253

		6.1.6	Writing Your Own Libraries		CAppl : 257

		6.1.7	Working with Geodes		CAppl : 259

		6.1.8	Geode Protocols and Release Levels		CAppl : 261

		6.1.9	Temporary Geode Memory		CAppl : 264

	6.2	Creating Icons		CAppl : 265

		6.2.1	The Token Database		CAppl : 265

		6.2.2	Managing the Token Database File		CAppl : 267

	6.3	Saving User Options		CAppl : 269

		6.3.1	Saving Generic Object Options		CAppl : 269

		6.3.2	The GEOS.INI File		CAppl : 271

	6.4	General System Utilities		CAppl : 277

		6.4.1	Changing the System Clock		CAppl : 277

		6.4.2	Using Timers		CAppl : 277

		6.4.3	System Statistics and Utilities		CAppl : 278

		6.4.4	Shutting the System Down		CAppl : 279

	6.5	The Error-Checking Version		CAppl : 280

		6.5.1	Adding EC Code to Your Program		CAppl : 281

		6.5.2	Special EC Routines		CAppl : 282

	6.6	Inter-Application Communication		CAppl : 283

		6.6.1	IACP Overview		CAppl : 284

		6.6.2	GenApplicationClass Behavior		CAppl : 286

		6.6.3	Messages Across an IACP Link		CAppl : 287

		6.6.4	Being a Client		CAppl : 288

		6.6.5	Being a Server		CAppl : 292

7	 The Clipboard	297

	7.1	Overview		CClipb : 299

		7.1.1	Cut, Copy, and Paste		CClipb : 300

		7.1.2	Quick-Transfer		CClipb : 301

	7.2	Transfer Data Structures		CClipb : 302

		7.2.1	The Transfer VM File Format		CClipb : 303

		7.2.2	ClipboardItemFormatInfo		CClipb : 305

		7.2.3	Transfer Data Structures		CClipb : 307

		7.2.4	Clipboard Item Formats		CClipb : 308

	7.3	Using The Clipboard		CClipb : 309

		7.3.1	Registering with the Clipboard		CClipb : 311

		7.3.2	Managing the Edit Menu		CClipb : 311

		7.3.3	The GenEditControl		CClipb : 314

		7.3.4	Handling Cut and Copy		CClipb : 316

		7.3.5	Handling Paste		CClipb : 319

		7.3.6	Unregistering with the Clipboard		CClipb : 322

		7.3.7	Implementing Undo		CClipb : 322

		7.3.8	Transfer File Information		CClipb : 322

		7.3.9	Undoing a Clipboard Change		CClipb : 323

	7.4	Using Quick-Transfer		CClipb : 323

		7.4.1	Supporting Quick-Transfer		CClipb : 324

		7.4.2	Quick-Transfer Procedure		CClipb : 325

		7.4.3	Quick-Transfer Data Structures		CClipb : 326

		7.4.4	Source Object Responsibility		CClipb : 327

	7.5	Shutdown Issues		CClipb : 331

8	Localization	333

	8.1	Localization Goals		CLocal : 335

	8.2	How To Use Localization		CLocal : 337

	8.3	Preparing for ResEdit		CLocal : 337

	8.4	International Formats		CLocal : 340

		8.4.1	Number and Measure		CLocal : 341

		8.4.2	Currency		CLocal : 343

		8.4.3	Quotation Marks		CLocal : 343

		8.4.4	Dates and Times		CLocal : 344

		8.4.5	Filters for Formats		CLocal : 346

	8.5	Lexical Functions		CLocal : 348

		8.5.1	Comparing Strings		CLocal : 348

		8.5.2	String Length and Size		CLocal : 349

		8.5.3	Casing		CLocal : 349

		8.5.4	Character Categories		CLocal : 349

		8.5.5	Lexical Values		CLocal : 350

		8.5.6	DOS Text & Code Pages		CLocal : 350

9	General Change Notification	353

	9.1	Design Goals		CGCN : 355

	9.2	The Mechanics of GCN		CGCN : 356

	9.3	System Notification		CGCN : 357

		9.3.1	Registering for System Notification		CGCN : 357

		9.3.2	Handling System Notification		CGCN : 360

		9.3.3	Removal from a System List		CGCN : 364

	9.4	Application Local GCN Lists		CGCN : 364

		9.4.1	Creating Types and Lists		CGCN : 366

		9.4.2	Registering for Notification		CGCN : 366

		9.4.3	Handling Application Notification		CGCN : 368

		9.4.4	Removal from Application Lists		CGCN : 371

10	The GEOS User Interface	373

	10.1	The GUI		CUIOver : 375

	10.2	The GEOS User Interface		CUIOver : 376

	10.3	Using the Generic Classes		CUIOver : 378

		10.3.1	The Generic Class Tree		CUIOver : 380

		10.3.2	Creating a Generic Object Tree		CUIOver : 385

	10.4	Using the Visible Classes		CUIOver : 385

		10.4.1	Visible Objects and the GenView		CUIOver : 386

		10.4.2	The Visible Object Document		CUIOver : 386

		10.4.3	Visible Object Abilities		CUIOver : 387

		10.4.4	The Vis Class Tree		CUIOver : 388

		10.4.5	Creating a Visible Object Tree		CUIOver : 389

		10.4.6	Working with Visible Object Trees		CUIOver : 390

	10.5	A UI Example		CUIOver : 391

		10.5.1	What TicTac Illustrates		CUIOver : 391

		10.5.2	What TicTac Does		CUIOver : 392

		10.5.3	The Structure of TicTac		CUIOver : 392

		10.5.4	TicTacBoard Specifics		CUIOver : 400

		10.5.5	TicTacPiece Specifics		CUIOver : 404

11	Input	417

	11.1	Input Flow		CInput : 419

		11.1.1	Devices and Drivers		CInput : 421

		11.1.2	Input Manager and GenSystem		CInput : 422

		11.1.3	Input Events		CInput : 422

		11.1.4	Input Hierarchies		CInput : 423

	11.2	Mouse Input		CInput : 424

		11.2.1	Mouse Events		CInput : 425

		11.2.2	Gaining the Mouse Grab		CInput : 431

		11.2.3	Large Mouse Events		CInput : 433

		11.2.4	Setting the Pointer Image		CInput : 434

	11.3	Keyboard Input		CInput : 437

		11.3.1	Keyboard Input Flow		CInput : 437

		11.3.2	Keyboard Events		CInput : 438

	11.4	Pen Input and Ink		CInput : 442

		11.4.1	Ink Data Structures		CInput : 443

		11.4.2	Ink Input Flow		CInput : 444

	11.5	Input Hierarchies		CInput : 448

		11.5.1	The Three Hierarchies		CInput : 449

		11.5.2	Common Hierarchy Basics		CInput : 449

		11.5.3	Using Focus		CInput : 453

		11.5.4	Using Target		CInput : 456

		11.5.5	Using Model		CInput : 460

		11.5.6	Extending the Hierarchies		CInput : 462

12	Managing UI Geometry	465

	12.1	Geometry Manager Overview		CGeom : 467

		12.1.1	Geometry Manager Features		CGeom : 468

		12.1.2	How Geometry Is Managed		CGeom : 469

	12.2	Arranging Your Generic Objects		CGeom : 472

		12.2.1	General Geometry Rules		CGeom : 472

		12.2.2	Orienting Children		CGeom : 474

		12.2.3	Justifying and Centering Children		CGeom : 478

		12.2.4	Sizing Objects		CGeom : 480

		12.2.5	Outlining the Composite		CGeom : 487

		12.2.6	Using Monikers		CGeom : 487

		12.2.7	Using Custom Child Spacing		CGeom : 490

		12.2.8	Allowing Children to Wrap		CGeom : 492

		12.2.9	Object Placement		CGeom : 493

	12.3	Positioning and Sizing Windows		CGeom : 497

		12.3.1	Window Positioning		CGeom : 499

		12.3.2	Determining Initial Size		CGeom : 500

		12.3.3	On-Screen Behavior		CGeom : 501

		12.3.4	Window Look and Feel		CGeom : 502

13	Sound Library	503

	13.1	Goals and Motives		CSound : 505

	13.2	Playing UI Sounds		CSound : 505

	13.3	Representing Tones		CSound : 506

	13.4	Single Notes		CSound : 510

	13.5	Declaring Music Buffers		CSound : 513

	13.6	Playing Music Buffers		CSound : 516

	13.7	Playing Very Large Music Buffers		CSound : 518

	13.8	Playing Sampled Sounds		CSound : 518

	13.9	Grabbing the Sound Exclusive		CSound : 520

	13.10	Simulating Musical Instruments		CSound : 521

		13.10.1	Acoustics In Brief		CSound : 521

		13.10.2	Simple Instrument Description		CSound : 522

		13.10.3	Advanced Description		CSound : 523

Volume 2

14	Handles	535

	14.1	Design Philosophy		CHandle : 537

	14.2	The Global Handle Table		CHandle : 539

	14.3	Local Handles		CHandle : 539

15	Memory Management	541

	15.1	Design Philosophy		CMemory : 543

	15.2	The Structure of Memory		CMemory : 544

		15.2.1	Expanded/Extended Memory		CMemory : 544

		15.2.2	Main Memory		CMemory : 545

	15.3	Using Global Memory		CMemory : 552

		15.3.1	Memory Etiquette		CMemory : 552

		15.3.2	Requesting Memory		CMemory : 554

		15.3.3	Freeing Memory		CMemory : 555

		15.3.4	Accessing Data in a Block		CMemory : 555

		15.3.5	Accessing Data: An Example		CMemory : 556

		15.3.6	Data-Access Synchronization		CMemory : 558

		15.3.7	Retrieving Block Information		CMemory : 561

		15.3.8	The Reference Count		CMemory : 563

	15.4	malloc()		CMemory : 564

16	Local Memory	567

	16.1	Design Philosophy		CLMem : 569

	16.2	Structure of a Local Memory Heap		CLMem : 570

		16.2.1	The Local Heap		CLMem : 571

		16.2.2	Chunks and Chunk Handles		CLMem : 572

		16.2.3	Types of LMem Heaps		CLMem : 573

	16.3	Using Local Memory Heaps		CLMem : 577

		16.3.1	Creating a Local Heap		CLMem : 577

		16.3.2	Using Chunks		CLMem : 579

		16.3.3	Contracting the LMem Heap		CLMem : 581

		16.3.4	Example of LMem Usage		CLMem : 581

	16.4	Special LMem Uses		CLMem : 583

		16.4.1	Chunk Arrays		CLMem : 584

		16.4.2	Element Arrays		CLMem : 595

		16.4.3	Name Arrays		CLMem : 602

17	File System	609

	17.1	Design Philosophy		CFile : 611

	17.2	File System Overview		CFile : 613

	17.3	Disks and Drives		CFile : 616

		17.3.1	Accessing Drives		CFile : 616

		17.3.2	Accessing Disks		CFile : 619

	17.4	Directories and Paths		CFile : 631

		17.4.1	Standard Paths		CFile : 632

		17.4.2	Current Path and Directory Stack		CFile : 636

		17.4.3	Creating and Deleting Directories		CFile : 639

	17.5	Files		CFile : 641

		17.5.1	DOS Files and GEOS Files		CFile : 641

		17.5.2	Files and File Handles		CFile : 643

		17.5.3	GEOS Extended Attributes		CFile : 643

		17.5.4	File Utilities		CFile : 653

		17.5.5	FileEnum()		CFile : 655

		17.5.6	Bytewise File Operations		CFile : 661

18	Virtual Memory	671

	18.1	Design Philosophy		CVM : 673

	18.2	VM Structure		CVM : 674

		18.2.1	The VM Manager		CVM : 675

		18.2.2	VM Handles		CVM : 676

		18.2.3	Virtual Memory Blocks		CVM : 677

		18.2.4	VM File Attributes		CVM : 681

	18.3	Using Virtual Memory		CVM : 683

		18.3.1	How to Use VM		CVM : 683

		18.3.2	Opening or Creating a VM File		CVM : 684

		18.3.3	Changing VM File Attributes		CVM : 687

		18.3.4	Creating and Freeing Blocks		CVM : 687

		18.3.5	Attaching Memory Blocks		CVM : 689

		18.3.6	Accessing and Altering VM Blocks		CVM : 690

		18.3.7	VM Block Information		CVM : 692

		18.3.8	Updating and Saving Files		CVM : 693

		18.3.9	Closing Files		CVM : 695

		18.3.10	The VM File's Map Block		CVM : 696

		18.3.11	File-Access Synchronization		CVM : 697

		18.3.12	Other VM Utilities		CVM : 699

	18.4	VM Chains		CVM : 700

		18.4.1	Structure of a VM Chain		CVM : 701

		18.4.2	VM Chain Utilities		CVM : 703

	18.5	Huge Arrays		CVM : 705

		18.5.1	Structure of a Huge Array		CVM : 706

		18.5.2	Basic Huge Array Routines		CVM : 708

		18.5.3	Huge Array Utilities		CVM : 713

19	Database Library	717

	19.1	Design Philosophy		CDB : 719

	19.2	Database Structure		CDB : 720

		19.2.1	DB Items		CDB : 720

		19.2.2	DB Groups		CDB : 721

		19.2.3	Allocating Groups and Items		CDB : 722

		19.2.4	Ungrouped DB Items		CDB : 723

		19.2.5	The DB Map Item		CDB : 723

	19.3	Using Database Routines		CDB : 724

		19.3.1	General Rules to Follow		CDB : 724

		19.3.2	Allocating and Freeing Groups		CDB : 725

		19.3.3	Allocating and Freeing Items		CDB : 725

		19.3.4	Accessing DB Items		CDB : 726

		19.3.5	Resizing DB Items		CDB : 727

		19.3.6	Setting and Using the Map Item		CDB : 728

		19.3.7	Routines for Ungrouped Items		CDB : 729

		19.3.8	Other DB Utilities		CDB : 730

	19.4	The Cell Library		CDB : 731

		19.4.1	Structure and Design		CDB : 732

		19.4.2	Using the Cell Library		CDB : 734

20	Parse Library	741

	20.1	Parse Library Behavior		CParse : 743

		20.1.1	The Scanner		CParse : 745

		20.1.2	The Parser		CParse : 753

		20.1.3	Evaluator		CParse : 759

		20.1.4	Formatter		CParse : 761

	20.2	Parser Functions		CParse : 761

		20.2.1	Internal Functions		CParse : 762

		20.2.2	External Functions		CParse : 765

	20.3	Coding with the Parse Library		CParse : 766

		20.3.1	Parsing a String		CParse : 766

		20.3.2	Evaluating a Token Sequence		CParse : 767

		20.3.3	Formatting a Token Sequence		CParse : 770

21	 Using Streams	771

	21.1	Using Streams: The Basics		CStream : 773

		21.1.1	Initializing a Stream		CStream : 775

		21.1.2	Blocking on Read or Write		CStream : 777

		21.1.3	Writing Data to a Stream		CStream : 778

		21.1.4	Reading Data from a Stream		CStream : 779

		21.1.5	Shutting Down a Stream		CStream : 781

		21.1.6	Miscellaneous Functions		CStream : 782

	21.2	Using the Serial Ports		CStream : 782

		21.2.1	Initializing a Serial Port		CStream : 783

		21.2.2	Communicating		CStream : 787

		21.2.3	Closing a Serial Port		CStream : 788

	21.3	Using the Parallel Ports		CStream : 789

		21.3.1	Initializing a Parallel Port		CStream : 789

		21.3.2	Communicating		CStream : 790

		21.3.3	Closing a Parallel Port		CStream : 790

22	PCCom Library	793

	22.1	PCCom Library Abilities		795

	22.2	What To Do		795

	22.3	Staying Informed		796

23	Graphics Environment	799

	23.1	Graphics Road Map		CGraph : 801

		23.1.1	Chapter Structure		CGraph : 801

		23.1.2	Vocabulary		CGraph : 803

	23.2	Graphics Goals		CGraph : 806

	23.3	Graphics Architecture		CGraph : 807

	23.4	How To Use Graphics		CGraph : 808

	23.5	Coordinate Space		CGraph : 810

		23.5.1	Standard Coordinate Space		CGraph : 811

		23.5.2	Coordinate Transformations		CGraph : 812

		23.5.3	Precise Coordinates		CGraph : 818

		23.5.4	Device Coordinates		CGraph : 819

		23.5.5	Larger Document Spaces		CGraph : 823

		23.5.6	Current Position		CGraph : 824

	23.6	Graphics State		CGraph : 825

		23.6.1	GState Contents		CGraph : 826

		23.6.2	Working with GStates		CGraph : 827

	23.7	Working With Bitmaps		CGraph : 828

	23.8	Graphics Strings		CGraph : 832

		23.8.1	Storage and Loading		CGraph : 832

		23.8.2	Special Drawing Commands		CGraph : 834

		23.8.3	Declaring a GString Statically		CGraph : 836

		23.8.4	Creating GStrings Dynamically		CGraph : 840

		23.8.5	Drawing and Scanning		CGraph : 843

		23.8.6	Editing GStrings Dynamically		CGraph : 846

		23.8.7	Parsing GStrings		CGraph : 847

	23.9	Graphics Paths		CGraph : 849

	23.10	Working With Video Drivers		CGraph : 852

		23.10.1	Kernel Routines		CGraph : 852

		23.10.2	Direct Calls to the Driver		CGraph : 853

	23.11	Windowing and Clipping		CGraph : 854

		23.11.1	Palettes		CGraph : 854

		23.11.2	Clipping		CGraph : 854

		23.11.3	Signalling Updates		CGraph : 855

24	Drawing Graphics	857

	24.1	Drawing Goals		CShapes : 859

	24.2	Shapes		CShapes : 859

		24.2.1	Dots		CShapes : 860

		24.2.2	Lines		CShapes : 861

		24.2.3	Rectangles		CShapes : 862

		24.2.4	Ellipses		CShapes : 862

		24.2.5	Elliptical Arcs		CShapes : 863

		24.2.6	Three-Point Arcs		CShapes : 864

		24.2.7	Rounded Rectangles		CShapes : 865

		24.2.8	Polylines and Polygons		CShapes : 866

		24.2.9	Bézier Curves and Splines		CShapes : 867

		24.2.10	Drawing Bitmaps		CShapes : 870

		24.2.11	Paths		CShapes : 872

		24.2.12	Regions		CShapes : 873

		24.2.13	Text		CShapes : 876

	24.3	Shape Attributes		CShapes : 885

		24.3.1	Color		CShapes : 886

		24.3.2	Patterns and Hatching		CShapes : 891

		24.3.3	Mix Mode		CShapes : 895

		24.3.4	Masks		CShapes : 897

		24.3.5	Line-Specific Attributes		CShapes : 899

A	Machine Architecture	903

	A.1	History of the 80x86		CHardw : 905

	A.2	8086 Architecture Overview		CHardw : 906

		A.2.1	Memory		CHardw : 906

		A.2.2	Registers		CHardw : 908

		A.2.3	The Prefetch Queue		CHardw : 909

		A.2.4	Inherent Optimizations		CHardw : 910

B	Threads and Semaphores 875	911

	B.1	Multitasking Goals		CMultit : 913

	B.2	Two Models of Multitasking		CMultit : 914

		B.2.1	Cooperative Multitasking		CMultit : 914

		B.2.2	Preemptive Multitasking		CMultit : 915

	B.3	GEOS Multitasking		CMultit : 916

		B.3.1	GEOS Threads		CMultit : 917

		B.3.2	Context Switches		CMultit : 918

		B.3.3	Thread Scheduling		CMultit : 919

		B.3.4	Applications and Threads		CMultit : 920

	B.4	Using Multiple Threads		CMultit : 921

		B.4.1	How GEOS Threads Are Created		CMultit : 921

		B.4.2	Managing Priority Values		CMultit : 923

		B.4.3	Handling Errors in a Thread		CMultit : 924

		B.4.4	When a Thread Is Finished		CMultit : 925

	B.5	Synchronizing Threads		CMultit : 926

		B.5.1	Semaphores: The Concept		CMultit : 926

		B.5.2	Semaphores In GEOS		CMultit : 928

C	Libraries	933

	C.1	Design Philosophy		CLibr : 935

	C.2	Library Basics		CLibr : 936

	C.3	The Library Entry Point		CLibr : 937

	C.4	Exported Routines and Classes		CLibr : 940

	C.5	Header Files		CLibr : 941

	C.6	Compiler Directives		CLibr : 941

D	The Math Library	943

	D.1	Basic Math Functions		CMath : 945

		D.1.1	Algebraic Functions		CMath : 947

		D.1.2	Transcendental Functions		CMath : 949

		D.1.3	Random Number Generation		CMath : 950

	D.2	Conversions to Other Types		CMath : 951

	D.3	Float Formats		CMath : 960

		D.3.1	System-defined Formats		CMath : 960

		D.3.2	User-defined Formats		CMath : 963

	D.4	Direct FP Operations		CMath : 964

		D.4.1	Floating Point Numbers		CMath : 965

		D.4.2	The Floating Point Stack		CMath : 966

		D.4.3	Floating Point Math Routines		CMath : 971

	Credits	979

	Index	IX : 1
