https://bugs.kde.org/show_bug.cgi?id=374801

--- Comment #10 from Stephen Kelly <steve...@gmail.com> ---
Here's an updated version of those two files:

    #!/usr/bin/env python

    from __future__ import print_function

    import sys

    from clang import cindex
    from clang.cindex import CursorKind, SourceRange

    my_clang_library = "/usr/lib/x86_64-linux-gnu/libclang-3.8.so"

    my_source = "clang-param-test.h"

    if (len(sys.argv) > 1 and sys.argv[1] == "use14"):
        cxx_standard_flag = ["-std=gnu++14"]
        print("using", cxx_standard_flag)
    else:
        print("using default flag")
        cxx_standard_flag = []

    cindex.Config.set_library_file(my_clang_library)

    index = cindex.Index.create()
    tu = index.parse(my_source, ["-x", "c++"] + cxx_standard_flag)

    for member in tu.cursor.get_children():
        if (member.spelling.startswith("useEnum")):
            for child in member.get_children():
                if child.kind == CursorKind.PARM_DECL:
                    for parameter in child.get_children():
                        if parameter.kind.is_expression():
                            possible_extent =
SourceRange.from_locations(parameter.extent.start, member.extent.end)
                            print(possible_extent)


And the cpp file:


    enum MyFlagType {
        EnumValueOne = 0x01,
        EnumValueTwo = 0x02
    };

    template<typename Enum>
    class FlagsType
    {
    public:
        FlagsType(Enum e) : m_e(e) {}

        operator int() { return m_e; }

    private:
        Enum m_e;

    };

    void useEnum(int foo = 100, FlagsType<MyFlagType> flags = EnumValueOne);

    void useEnum2(int foo = 100, FlagsType<MyFlagType> flags = EnumValueOne);

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to