Warning, /sdk/codevis/thirdparty/soci/docs/structure.md is written in an unsupported language. File is not indexed.

0001 # Structure
0002 
0003 The picture below presents the structure of the library, together with its clients and servers.
0004 The boxes filled with cyan represent components that are part of the library distribution.
0005 
0006 ![Structure Chart](images/structure.png)
0007 
0008 The SOCI library is extensible in the following ways:
0009 
0010 * More backends can be added to target various database servers.
0011 * More interfaces can be defined on top of common backend interface.
0012 * Other languages can use the [simple interface](interfaces.md), which was designed specifically for the "C" calling convention to ensure easy binding.
0013 
0014 The core part of the library and the backend interface definition are placed
0015 in the `core` directory of the library distribution. The `soci-backend.h` file
0016 is an internal abstract interface to the actual backends, which are needed to
0017 perform operations on the given database server. Normally, the C++ client
0018 program needs to interface with the `soci.h` header and the header(s) relevant
0019 to the given backend(s) (for example, `soci-oracle.h`), although with dynamic
0020 backend loading this can be avoided. It is possible for the same program to use
0021 many backends at the same time.
0022 
0023 Everything in SOCI is declared in the namespace `soci`. All code examples
0024 presented in this documentation assume that your code begins with something like:
0025 
0026 ```cpp
0027 #include <soci/soci.h>
0028 // other includes if necessary
0029 
0030 using namespace soci;
0031 
0032 // ...
0033 ```
0034 
0035 Note: In simple programs, `#include` for the relevant backend is needed only
0036 in the file where the `session` object is created with explicit name of
0037 the backend factory. The example program on the [previous page](index.md)
0038 shows the appropriate `#include` directive for the Oracle backend.
0039 It is also possible to name backends at run-time as part of the connection
0040 string, in which case no backend-specific `#include` directive is necessary.