/**
 *  {{ name.upper() }} - Generated CLib %Cantera interface library.
 *
 *  @file {{ name }}.cpp
 *
{% if docstring %}
{% for line in docstring %}
 *  {{ line }}
{% endfor %}
 *
{% endif %}
 *  This file was generated by sourcegen. It will be re-generated by the
 *  %Cantera build process. Do not manually edit.
 *
 *  @warning  This module is an experimental part of the %Cantera API and
 *      may be changed without notice.
 */

// This file is part of Cantera. See License.txt in the top-level directory or
// at https://cantera.org/license.txt for license and copyright information.

#include "clib_utils.h"
#include "cantera_clib/{{ name }}.h"

{% if str_utils %}
#include "cantera/base/stringUtils.h"
{% endif %}
{% for entry in includes %}
#include "{{ entry }}"
{% endfor %}

using namespace Cantera;

//! @cond
//! Cabinet type definitions will be ignored by Doxygen

{% if base %}
// Define Cabinet<{{ base }}> (single-instance object)
typedef Cabinet<{{ base }}> {{ base }}Cabinet;
template<> {{ base }}Cabinet* {{ base }}Cabinet::s_storage = 0;  // initialized here

{% endif %}
{% if other %}
{% for entry in other %}
typedef Cabinet<{{ entry }}> {{ entry }}Cabinet;
template<> {{ entry }}Cabinet* {{ entry }}Cabinet::s_storage;  // initialized elsewhere

{% endfor %}
{% endif %}
//! @endcond

extern "C" {

    {{ implementations | indent(4) }}

} // extern "C"
