Welcome to the Haiku Book

Below you will find documentation on the Application Programming Interface (API) of the Haiku operating system. This API describes the internals of the operating system, allowing developers to write native C++ applications and device drivers. See the online version for the most updated version of this document. If you would like to help contributing to the documentation effort, contact the documentation mailing list. For guidance on how to help document the API, see the [Documenting the API <>][documenting the api <>] page. A list of contributors can be found in the Credits. Documenting the API is an ongoing process, so contributions are greatly appreciated.

The Haiku API is based on the BeOS R5 API, but changes and additions have been included where appropriate. Important compatibility differences are detailed on the Application Level API Incompatibilities with BeOS page. New classes and methods and incompatible API changes to the BeOS R5 API are noted in the appropriate sections.

Kits and Servers

The API is split into several kits and servers, each detailing a different aspect of the operating system.

  • The Application Kit is the starting point for developing applications and includes classes for messaging and for interacting with the rest of the system.

  • The Device Kit ???

  • The Game Kit provides classes for producing game sounds and working with full screen apps.

  • The Input Server

  • The Interface Kit is used to create responsive and attractive graphical user interfaces, building on the messaging facilities provided by the Application Kit.

    • The Layout API is a new addition to the Interface Kit, in which Haiku provides resources to layout your application flexibly and easily.

  • The Kernel Kit ???

  • The Locale Kit includes classes to localize your application to different languages, timezones, number formatting conventions and much more.

  • The Mail Kit includes classes to work with e-mail files, folders, protocols, and filters as part of Haiku’s unique mail handling system.

  • The Media Kit provides a unified and consistent interface for media streams and applications to intercommunicate.

  • The MIDI 2Kit describes an interface to generating, processing, and playing music in MIDI format. For reference documentation on the old MIDI Kit (libmidi.so) is also included.

  • The Network Kit handles everything network related, from interface IP address settings to HTTP connections.

  • The OpenGL Kit

  • The Storage Kit is a collection of classes that deal with storing and retrieving information from disk.

  • The Support Kit contains support classes to use in your application including resources for thread safety, IO, and serialization.

  • The Translation Kit provides a framework for converting data streams between media formats.

Classes and Methods

  • Classes And Methods

    • The Application Kit

    • The Device Kit

    • The Game Kit

    • The Input Server

    • The Interface Kit

    • The Kernel Kit

    • The Mail Kit

    • The Network Kit

    • The OpenGL Kit

    • The Storage Kit

    • The Support Kit

    • The Translation Kit

System Overview

The Application Kit

The Device Kit

The Game Kit

The Input Server

The Interface Kit

The Kernel Kit

The Mail Kit

The Media Kit

The Network Kit

The OpenGL Kit

The Storage Kit

The Translation Kit

Special Topics

  • C, POSIX, GNU and BSD functions

Device Drivers

The Deskbar

The Keyboard

The Tracker

Other Topics

  • JSON Handling

  • Experimental Network Services Support

  • Appendices

    • About This Book

    • Revision History

  • Class Index

  • Function Index

  • Constant Index

  • Type Index

  • Search Page

Acknowledgements

We want to express out gratitude to ACCESS Co. for showing their support for the Haiku Project by allowing the distribution and modification of the Be Book and the Be Newsletters. The Haiku Book is the successor of the Be Book, updated with additional APIs and the refresh of existing API documentation.

Not only do the Be Book and the Be Newsletters hold historical value, but these documents are also a very valuable reference resource for all Haiku developers. We also want to thank Simon Kennedy for his work on formatting these documents.

Indices and tables