// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq --rustified-enum ".*"
// bindgen-flags: -- -std=c++11

class A {
    unsigned c;
    struct Segment { int begin, end; };
    union {
        int f;
    } named_union;
    union {
        int d;
    };
};

class B {
    unsigned d;
    struct Segment { int begin, end; };
};


enum class StepSyntax {
    Keyword,                     // step-start and step-end
    FunctionalWithoutKeyword,    // steps(...)
    FunctionalWithStartKeyword,  // steps(..., start)
    FunctionalWithEndKeyword,    // steps(..., end)
};

class C {
    unsigned d;
    union {
        struct {
            float mX1;
            float mY1;
            float mX2;
            float mY2;
        } mFunc;
        struct {
            StepSyntax mStepSyntax;
            unsigned int mSteps;
        };
    };
    // To ensure it doesn't collide
    struct Segment { int begin, end; };
};