From Onda Technology Institute Wiki
Jump to: navigation, search

The OCL is an open class library for C++. It is one of the most important published projects being developed by the Onda Technology Institute. It has been under slow, but steady development for several years. This project was started when the team felt the need for a low level API, which had to be operating system independent, to support some "by-contract" projects. It was also important that it had as little dependencies on third party elements as possible and that it was able to provide an environment as complete as possible. We are focusing on trying to bring to C++ the same diversity in functionality of the standard class libraries of the .Net and the Java platforms. This library has very high quality and high performance, tuned to the detail and aims for a high level of consistency, ease of use and safety. The OCL is now undergoing some rewriting and code refining to prepare it for current needs, improve its quality and consistency and make it more third-party friendly. It is based upon several different modules, described below, each with a specific context.

No, there are no downloads yet. The code has been in cold storage for a while due to some unfortunate events. But as soon as we polish it up, it will be out in the open.


OCL provides you with its own types, including some predictable-size numeric types. POD types are "Plain Old Data" types, meaning they are pure types.

Type name Size C/C++ equivalent Description
SmallInt 8 bits char POD Type
ShortInt 16 bits short int POD Type
LongInt 32 bits long int POD Type
HugeInt 64 bits long long int / __int64 POD Type
Float float POD Type
Double double POD Type


  • Onda::F0 - Base data, configuration files and build scripts
  • Onda::F1 - Shared code base, base classes and framework
  • Onda::F2 - Onda::SQL - SQL Database access classes
  • Onda::F3 - Onda::GAL - Base classes for a markup based graphical user interface widget set
  • Onda::F4 - Onda::AUI - CSS parser and interpreter for F3
  • Onda::F5 - Onda::GUL - Graphical Utilities Library
  • Onda::F6 - Onda::L3DE - Lightweight 3D Engine
  • Onda::F7 - Driver Onda::SQL<MySQL> - MySQL driver for F2
  • Onda::F8 - Driver Onda::SQL<Interbase> - Firebird/Interbase driver for F8
  • Onda::F9 - Onda::Threads - Threads abstraction layer
  • Onda::F10 - XML DOM library
  • Onda::F12 - Driver Onda::File - File stream implementation
  • Onda::F13 - Driver Onda::Drive - Direct drive access stream implementation
  • Onda::F14 - Reference implementation for a configuration manager
  • Onda::F17 - Driver Onda::Sockets - Socket stream implementation
  • Onda::F18 - Reference implementation for a message manager (string based i18n)
  • Onda::F19 - Reference implementation for a STDERR debug client
  • Onda::F20 - Driver Onda::NetProtos::HTTP/C - HTTP client module
  • Onda::F21 - Driver Onda::NetProtos::FTP/C - FTP client module
  • Onda::F22 - Driver Onda::NetProtos::SSH/C - SSH client module
  • Onda::F23 - Driver Onda::NetProtos::SMTP/C - SMTP client module
  • Onda::F24 - Driver Onda::NetProtos::IMAP/C - IMAP client module
  • Onda::F25 - Driver Onda::NetProtos::POP3/C - POP3 client module
  • Onda::F26 - Backend Onda::GAL<XLib> - XLib backend for F3
  • Onda::F27 - Backend Onda::GAL<OpenGL> - OpenGL backend for F3
  • Onda::F28 - Backend Onda::GAL<Windows> - Windows backend for F3
  • Onda::F29 - Backend Onda::GAL<DirectFB> - DirectFB backend for F3


  • If you are developing for OCL, YOU MUST follow the guidelines and code style on this book.

General information about using OCL

  • RTTI: Currently, OCL cannot be compiled without RTTI (run-time type information). For example, with GCC you CANNOT use -fno-rtti. Compiling without RTTI will break the framework because of heavy reliance on multiple inheritance, dynamic casts and signals. You have been warned.


  • Develop a tool to help dealing with the several different OCL modules and that allows to build tailored dynamic libraries with only the modules used by a certain project.

Code cleanup

Look for the following items:

  • TODO
  • POKE
  • DOC