Subsections
   
  * 4.1 The C++ Library
  * 4.2 The C Library Interface
  * 4.3 Notes About Thread Safety

---------------------------------------------------------------------------

4. Library Interface

4.1 The C++ Library

The new C++ library makes heavy use of modern C++ features and the STL.
Documentation should be completed soon. For right now please see the header
files installed with the distribution (usually under /usr/local/include/
aspell/). For examples of how to use the C++ please see the source for the
aspell utility (located under src/aspell.cc)

4.2 The C Library Interface

I am also providing a C interface so that C programmers can use my library
without a lot of hassle. Unfortunately because my actually library is C++
code there are several cravats to linking C to C++ code according to the
C++FAQ Lite:

  * Your must use your C++ compiler when compiling main() (e.g., for static
    initialization)
  * Your C++ compiler should direct the linking process (e.g., so it can
    get its special libraries)
  * Your C and C++ compilers probably need to come from same vendor and
    have compatible versions (e.g., so they have the same calling
    conventions)

However depending on the compiler and/or linker you are using you may be
able to get away with not doing one or more of these things. Your mileage
may vary.

Unfortunately due to a major rewrite of the C++ library the C library is
currently unavailable. I hope to have it back in a release or two.

4.3 Notes About Thread Safety

Read-only Aspell methods and functions should be thread safe as long as
exceptions, new, delete, delete[], and STL allocators are thread safe. To
the best of my knowledge gcc and egcs meet these requirements. It is up to
the programmer to make sure multiple threads do not do thing such as change
the dictionaries and add or delete items from the personal or session
dictionaries.

---------------------------------------------------------------------------

