Chapter 1. Introduction to Inti

Inti is a collection of shared libraries written in C++, designed to meet common needs encountered by application developers on UNIX-like systems such as Linux. The largest Inti module provides a C++ interface for the GTK+ GUI toolkit, but Inti also contains a "base" module suitable for nongraphical applications. The base module contains general-purpose features, including internationalization support, a main loop abstraction, and text-processing utility functions.

Inti is intended to be a commercial-quality package. This means that backward compatibility is taken very seriously, and experimental or immature interfaces will typically not be included in the library.

The Inti libraries are licensed under the GNU Lesser General Public License, which is the same license used for GTK+ and the GNU C Library.

Relatively little of Inti's functionality is implemented in Inti directly; instead, most of the functionality of the library resides in C libraries such as GTK+. Inti provides an attractive, easy-to-learn C++ interface for the original libraries it depends on.

Basic Application Support

This section gives an overview of the nongraphical utility interfaces in the base Inti library, which is required by all other Inti modules. It also describes the standard C++ library and the UNIX interfaces that Inti builds on.

Standard C++ Library

The GNU C++ compiler comes with the standard C++ library (also known as simply "libstdc++"), which contains the Standard Template Library (STL). The GNU implementation of the STL is based on the SGI implementation; it has extensive online documentation. Of course, there are also dozens of books available about the standard C++ library.

This manual doesn't document standard C++ features, since those are part of the language, not part of Inti. However Inti does make use of many standard C++ features and depends on their existence. You should be familiar with the C++ language in order to understand Inti.

UNIX Interfaces

Inti itself is not very UNIX-specific (it could be ported to Windows fairly easily, though probably the Cygwin environment would be required because Visual C++ has fairly limited C++ standards support compared to the GNU compiler).

However, anyone writing a full-blown application will almost certainly need to use some UNIX interfaces, if the application is for UNIX platforms. You can find reference documentation online in the form of the Single UNIX specification.

Main Loop

The main loop abstraction (in inti/main.h) dramatically simplifies writing any long-running application, such as a daemon or a graphical user interface. The main loop can significantly reduce application complexity by hiding low-level details such as the select() and poll() system calls. Also, in many instances the main loop allows you to avoid using threads, and threads can be a major source of bugs and code complexity.