.. _c_options: Options ======== A :cpp:type:`Bitwuzla` instance is created from a configuration options :cpp:type:`BitwuzlaOptions` instance. This options instance must be configured before creating the Bitwuzla instance: **after** the Bitwuzla instance is created, configuration options are fixed and **cannot** be changed. Via the C API, **Bitwuzla** distinguishes two kinds of options: Numeric options (including Boolean options) and options with option modes. The kind of an option can be queried via :cpp:func:`bitwuzla_option_is_numeric()`, and :cpp:func:`bitwuzla_option_is_mode()`. Boolean and numeric options are configured via :cpp:func:`bitwuzla_set_option()`, and options with option modes are configured via :cpp:func:`bitwuzla_set_option_mode()`. The configured value of Boolean and numeric options can be queried via :cpp:func:`bitwuzla_get_option()`, and the value of an option with modes can be queried via :cpp:func:`bitwuzla_get_option_mode()`. The option kind is defined via :cpp:enum:`BitwuzlaKind`. A **comprehensive list** of all configurable options is available :doc:`here `. Example ------- The source code for this example can be found at `examples/c/options.c `_. .. literalinclude:: ../../examples/c/options.c :language: c OptionInfo ---------- Bitwuzla offers a compact way to retrieve all information about a configuration option as a :cpp:struct:`BitwuzlaOptionInfo` object via :cpp:func:`bitwuzla_get_option_info()`. This object is created per option and can be queried for any available information, e.g., long and short option names, description, (current, default, minimum and maximum) values for numeric options, and (current, default and available) modes for configuration options with modes.