#include "helpers/basic_inner_types.idl"

struct StructShort
{
    short var_short;
};

struct StructUnsignedShort
{
    unsigned short var_ushort;
};

struct StructLong
{
    long var_long;
};

struct StructUnsignedLong
{
    unsigned long var_ulong;
};

struct StructLongLong
{
    long long var_longlong;
};

struct StructUnsignedLongLong
{
    unsigned long long var_ulonglong;
};

struct StructFloat
{
    float var_float;
};

struct StructDouble
{
    double var_double;
};

struct StructLongDouble
{
    long double var_longdouble;
};

struct StructBoolean
{
    boolean var_boolean;
};

struct StructOctet
{
    octet var_octet;
};

struct StructChar8
{
    char var_char8;
};

struct StructChar16
{
    wchar var_char16;
};

struct StructString
{
    string var_string;
};

struct StructWString
{
    wstring var_wstring;
};

struct StructBoundedString
{
    Inner_alias_bounded_string_helper var_bounded_string;
};

struct StructBoundedWString
{
    Inner_alias_bounded_wstring_helper var_bounded_wstring;
};

struct StructEnum
{
    InnerEnumHelper var_enum;
};

struct StructBitMask
{
    InnerBitMaskHelper var_bitmask;
};

struct StructAlias
{
    InnerAliasHelper var_alias;
};

struct StructShortArray
{
    short var_array_short[10];
};

struct StructSequence
{
    sequence<long> var_sequence;
};

struct StructMap
{
    map<long, long> var_map;
};

struct StructUnion
{
    InnerUnionHelper var_union;
};

struct StructStructure
{
    InnerStructureHelper var_structure;
};

struct StructBitset
{
    InnerBitsetHelper var_bitset;
};

struct StructEmpty
{
};

struct Structures
{
    StructShort var_StructShort;
    StructUnsignedShort var_StructUnsignedShort;
    StructLong var_StructLong;
    StructUnsignedLong var_StructUnsignedLong;
    StructLongLong var_StructLongLong;
    StructUnsignedLongLong var_StructUnsignedLongLong;
    StructFloat var_StructFloat;
    StructDouble var_StructDouble;
    StructLongDouble var_StructLongDouble;
    StructBoolean var_StructBoolean;
    StructOctet var_StructOctet;
    StructChar8 var_StructChar8;
    StructChar16 var_StructChar16;
    StructString var_StructString;
    StructWString var_StructWString;
    StructBoundedString var_StructBoundedString;
    StructBoundedWString var_StructBoundedWString;
    StructEnum var_StructEnum;
    StructBitMask var_StructBitMask;
    StructAlias var_StructAlias;
    StructShortArray var_StructShortArray;
    StructSequence var_StructSequence;
    StructMap var_StructMap;
    StructUnion var_StructUnion;
    StructStructure var_StructStructure;
    StructBitset var_StructBitset;
    StructEmpty var_StructEmpty;
};

module testing_1
{
    struct foo
    {
        long a;
        long b;
    };
};

module testing_2
{
    struct foo
    {
        boolean d;
    };
};

struct bar
{
    double e;
};

struct root1
{
    testing_1::foo foo_struct;
    float c;
};

struct root2
{
    testing_2::foo foo_struct;
    bar bar_struct;
};

struct root
{
    root1 var_root1;
    root2 var_root2;
};
