Lib:Architecture/Base Layer

From GNUpdf
Jump to: navigation, search


This page contain a description of the architecture of the base layer in the GNU PDF Library.

Base Layer Architecture

base layer architecture

The base layer of the GNU PDF Library provide system-independent access to several facilities.

The implemented facilities are organized into modules. Each module export an API to be used by the client application or other layers of the library. Some modules make use of the facilities implemented in other modules (such as allocation or error functions).

Memory Allocation Module
This module provides system-independent memory allocation/deallocation.
Basic Types Module
This module provides a system-independent implementation of basic data types such as signed and unsigned integers, constants, etc.
Hash Module
This module provides an implementation of associative tables using several hashing algorithms.
List Module
This module provides an implementation of dynamic lists and vectors.
Stream Module
This module provides system-independent and device-independent homogeneous access to filesystem files and memory buffers.The streams are buffered and support filtering for both read and write operations.
Floating Point Arithmetic Module
This module provides system-independent floating point real numbers and several related facilities such as matrix and points manipulations, interpolation routines, real to string and string to real conversion and rounding.
Text Module
This module provides access to a text abstraction as an encoded sequence of characters. Several text encodings are supported and conversion functions to change the encoding of a text are provided.
Time Module
This module provides facilities to manipulate calendar dates, time arithmetic and time spans.
Filesystem Module
This module provides facilities to access filesystem objects (files, directories, file permissions, etc) in a system-independent way.
Error Module
This module provides facilities to manage error types, error signaling, error descriptions, etc.
Crypt Module
This module provides de/encryption facilities.

Modules Dependencies

Some modules depends on the availability of another module. So the implementation of certain modules should be deferred until the implementation of another module becomes available (we are not using stubs in the development).

Here is the dependency graph for the modules pertaining to the Base Layer of the library.

Dependency graph for base layer modules
Personal tools