#ifndef INCLUDED_BOBCAT_LC_
#define INCLUDED_BOBCAT_LC_

// This header file was generated by the bobcatlcgen program which is
// distributed with the Bobcat source archive under the directory
// 'bobcat/lc/lcgen'. The binary program itself is probably available as
// /usr/bin/bobcatlcgen.
// The distributed Local Context header allows for the definition and
// declaration of a local context struct having at most 10 fields. If
// more fields are required (e.g., 15), then generate your own local
// context struct header file using the command:
//
//      bobcatlcgen 15 your-header
//
// and #include "your-header" rather than <bobcat/lc> in your sources.

namespace FBB
{

struct Unspecified
{};

template <typename T1, typename T2, typename T3, typename T4, typename T5,
    typename T6, typename T7, typename T8, typename T9, typename T10>
struct LCBase: public LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, Unspecified>
{
    T10 f10;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9
            t9, T10 t10)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, Unspecified>
            (t1, t2, t3, t4, t5, t6, t7, t8, t9),
        f10(t10)
    {}
};

template <typename T1, typename T2, typename T3, typename T4, typename T5,
    typename T6, typename T7, typename T8, typename T9>
struct LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, Unspecified>:
    public LCBase<T1, T2, T3, T4, T5, T6, T7, T8, Unspecified, Unspecified>
{
    T9 f9;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9
            t9)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, T8, Unspecified, Unspecified>
            (t1, t2, t3, t4, t5, t6, t7, t8),
        f9(t9)
    {}
};

template <typename T1, typename T2, typename T3, typename T4, typename T5,
    typename T6, typename T7, typename T8>
struct LCBase<T1, T2, T3, T4, T5, T6, T7, T8, Unspecified, Unspecified>:
    public LCBase<T1, T2, T3, T4, T5, T6, T7, Unspecified, Unspecified,
Unspecified>
{
    T8 f8;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, Unspecified, Unspecified,
            Unspecified>
            (t1, t2, t3, t4, t5, t6, t7),
        f8(t8)
    {}
};

template <typename T1, typename T2, typename T3, typename T4, typename T5,
    typename T6, typename T7>
struct LCBase<T1, T2, T3, T4, T5, T6, T7, Unspecified, Unspecified,
    Unspecified>:
    public LCBase<T1, T2, T3, T4, T5, T6, Unspecified, Unspecified,
            Unspecified, Unspecified>
{
    T7 f7;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
    :
        LCBase<T1, T2, T3, T4, T5, T6, Unspecified, Unspecified, Unspecified,
            Unspecified>
            (t1, t2, t3, t4, t5, t6),
        f7(t7)
    {}
};

template <typename T1, typename T2, typename T3, typename T4, typename T5,
    typename T6>
struct LCBase<T1, T2, T3, T4, T5, T6, Unspecified, Unspecified, Unspecified,
    Unspecified>:
    public LCBase<T1, T2, T3, T4, T5, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified>
{
    T6 f6;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
    :
        LCBase<T1, T2, T3, T4, T5, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified>
            (t1, t2, t3, t4, t5),
        f6(t6)
    {}
};

template <typename T1, typename T2, typename T3, typename T4, typename T5>
struct LCBase<T1, T2, T3, T4, T5, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified>:
    public LCBase<T1, T2, T3, T4, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>
{
    T5 f5;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
    :
        LCBase<T1, T2, T3, T4, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>
            (t1, t2, t3, t4),
        f5(t5)
    {}
};

template <typename T1, typename T2, typename T3, typename T4>
struct LCBase<T1, T2, T3, T4, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>:
    public LCBase<T1, T2, T3, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified, Unspecified>
{
    T4 f4;

    inline LCBase(T1 t1, T2 t2, T3 t3, T4 t4)
    :
        LCBase<T1, T2, T3, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>
            (t1, t2, t3),
        f4(t4)
    {}
};

template <typename T1, typename T2, typename T3>
struct LCBase<T1, T2, T3, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>:
    public LCBase<T1, T2, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified, Unspecified>
{
    T3 f3;

    inline LCBase(T1 t1, T2 t2, T3 t3)
    :
        LCBase<T1, T2, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified, Unspecified>
            (t1, t2),
        f3(t3)
    {}
};

template <typename T1, typename T2>
struct LCBase<T1, T2, Unspecified, Unspecified, Unspecified, Unspecified,
Unspecified, Unspecified, Unspecified, Unspecified>
{
    T1 f1;
    T2 f2;

    inline LCBase(T1 t1, T2 t2)
    :
        f1(t1),
        f2(t2)
    {}
};

template <typename T1, typename T2, typename T3 = Unspecified, typename T4 =
    Unspecified, typename T5 = Unspecified, typename T6 = Unspecified, typename
    T7 = Unspecified, typename T8 = Unspecified, typename T9 = Unspecified,
    typename T10 = Unspecified>
struct LC: public LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>
{
    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9,
            T10 t10)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(t1, t2, t3, t4, t5, t6,
            t7, t8, t9, t10)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, T8, T9, Unspecified>(t1, t2, t3, t4,
            t5, t6, t7, t8, t9)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, T8, Unspecified, Unspecified>(t1,
            t2, t3, t4, t5, t6, t7, t8)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
    :
        LCBase<T1, T2, T3, T4, T5, T6, T7, Unspecified, Unspecified,
            Unspecified>(t1, t2, t3, t4, t5, t6, t7)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
    :
        LCBase<T1, T2, T3, T4, T5, T6, Unspecified, Unspecified, Unspecified,
            Unspecified>(t1, t2, t3, t4, t5, t6)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
    :
        LCBase<T1, T2, T3, T4, T5, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified>(t1, t2, t3, t4, t5)
    {}

    inline LC(T1 t1, T2 t2, T3 t3, T4 t4)
    :
        LCBase<T1, T2, T3, T4, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>(t1, t2, t3, t4)
    {}

    inline LC(T1 t1, T2 t2, T3 t3)
    :
        LCBase<T1, T2, T3, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified>(t1, t2, t3)
    {}

    inline LC(T1 t1, T2 t2)
    :
        LCBase<T1, T2, Unspecified, Unspecified, Unspecified, Unspecified,
            Unspecified, Unspecified, Unspecified, Unspecified>(t1, t2)
    {}

};

} // FBB

#endif
