User configuration

A number of macros is provided for user configuration. Defining or undefining such macros triggers variations in some library functionality.

Under a Linux/Unix system, they are (un)set by `configure`; run

./configure --help

for a list of corresponding command-line options.

Under a Windows system, they must be (un)defined by editing the file <ql/userconfig.hpp> and commenting or uncommenting the relevant lines.

Such macros include:

#define QL_ERROR_FUNCTIONS

If defined, function information is added to the error messages thrown by the library. Undefined by default.

#define QL_ERROR_LINES

If defined, file and line information is added to the error messages thrown by the library. Undefined by default.

#define QL_ENABLE_TRACING

If enabled, tracing messages might be emitted by the library depending on run-time settings. Enabling this option can degrade performance. Undefined by default.

#define QL_NEGATIVE_RATES

If defined, negative yield rates are allowed in a few places where they are currently forbidden. It is still not clear whether this is safe. Undefined by default.

#define QL_EXTRA_SAFETY_CHECKS

If defined, extra run-time checks are added to a few functions. This can prevent their inlining and degrade performance. Undefined by default.

#define QL_USE_INDEXED_COUPON

If defined, indexed coupons (see the documentation) are used in floating legs. If undefined (the default), par coupons are used.

#define QL_ENABLE_SESSIONS

If defined, singletons will return different instances for different sessions. You will have to provide and link with the library a sessionId() function in namespace QuantLib, returning a different session id for each session.