Skip to content
Derek Nylen edited this page Jan 26, 2018 · 20 revisions

The Duck Object Library is an object system and library for "duck-typed" programming in C. It takes many cues from Objective-C, CoreFoundation and COM, yet is small and readable enough to be easily ported to platforms where using those is inconvenient.

The Duck source is free software distributed under the MIT License. The packages in the 'ThirdParty' directory are distributed according to their respective licenses, but are similarly unrestrictive.

Project Goals and Roadmap

Quick Start

Building the library
Initializing the Runtime
Object Life Cycle

Runtime

Classes and Objects
Interfaces and Message Handlers
Properties
Reflection

Libary

These pages are links to the library headers, of which some are better documented than others. Eventually the headers may be supplemented by external documentation, but for now it's just a good place to get a grasp on where things are.

Data Types

DKData | DKString

DKBoolean | DKNumber | DKPair | DKStruct

Containers

Interfaces
DKCollection | DKList | DKDictionary | DKSet

Types
DKArray | DKLinkedList | DKHashTable | DKBinaryTree | DKGraph

Common Interfaces

DKAllocation | DKCopying

DKComparison | DKConversion | DKDescription | DKLocking

DKBuffer | DKStream

Thread Synchronization

DKThread | DKThreadPool

DKMutex | DKCondition | DKReadWriteLock

File I/O

DKFile - File Streams
DKEgg - Binary Serialization
DKJSON - JSON Serialization
DKShell - Multipart data
DKXML - XML Parsing

Everything Else

DKEnum - Mapping Strings to Integars
DKPredicate - Logical Predicates

DKPlatform - System Utilities
DKConfig - Build Configuration
DKEncoding - Binary Type Info
DKUnicode - Unicode Support Functions

Low-Level Storage Types
DKByteArray | DKGenericArray | DKGenericHashTable | DKNodePool

Third Party