/// <summary>
        /// Builds an overload candidate for parameter hinting.
        /// </summary>
        /// <returns>Overload candidate which contains return type, function name.</returns>
        /// <param name="resultItem">Result item. resultItem.CursorKind must be CXCursorKind.OverloadCandidate. </param>
        OverloadCandidate GetOverloadCandidate(CXCompletionResult resultItem)
        {
            var  completionString   = new CXCompletionString(resultItem.CompletionString);
            uint completionchunknum = clang.getNumCompletionChunks(completionString.Pointer);

            string ret        = String.Empty;
            string nam        = String.Empty;
            var    parameters = new List <string> ();

            for (uint j = 0; j < completionchunknum; j++)
            {
                switch (clang.getCompletionChunkKind(completionString.Pointer, j))
                {
                case CXCompletionChunkKind.ResultType:
                    ret = clang.getCompletionChunkText(completionString.Pointer, j).ToString();
                    break;

                case CXCompletionChunkKind.Text:
                    nam = clang.getCompletionChunkText(completionString.Pointer, j).ToString();
                    break;

                case CXCompletionChunkKind.CurrentParameter:
                case CXCompletionChunkKind.Placeholder:
                    parameters.Add(clang.getCompletionChunkText(completionString.Pointer, j).ToString());
                    break;
                }
            }
            return(new OverloadCandidate(ret, nam, parameters));
        }
        // modified code of Michael Hutchinson from https://github.com/mhutch/cbinding/pull/1#discussion_r34485216
        IEnumerable <ClangCompletionUnit> GetCompletionUnits(CXCompletionResult resultItem, Regex operatorFilter, bool fieldOrMethodMode)
        {
            var  completionString   = new CXCompletionString(resultItem.CompletionString);
            uint completionchunknum = clang.getNumCompletionChunks(completionString.Pointer);

            for (uint j = 0; j < completionchunknum; j++)
            {
                if (clang.getCompletionChunkKind(completionString.Pointer, j) != CXCompletionChunkKind.TypedText)
                {
                    continue;
                }
                switch (resultItem.CursorKind)
                {
                case CXCursorKind.Destructor:
                case CXCursorKind.UnaryOperator:
                case CXCursorKind.BinaryOperator:
                case CXCursorKind.CompoundAssignOperator:
                    continue;
                }
                if (fieldOrMethodMode)
                {
                    switch (resultItem.CursorKind)
                    {
                    case CXCursorKind.ClassDecl:
                    case CXCursorKind.StructDecl:
                        continue;
                    }
                }
                string realstring = clang.getCompletionChunkText(completionString.Pointer, j).ToString();
                if (operatorFilter.IsMatch(realstring))
                {
                    continue;
                }
                uint priority = clang.getCompletionPriority(completionString.Pointer);
                yield return(new ClangCompletionUnit(resultItem, realstring, priority));
            }
        }
Exemplo n.º 3
0
 internal static extern CXString clang_getCompletionParent(CXCompletionString completion_string, CXCursorKindPtr kind);
Exemplo n.º 4
0
 internal static extern CXString clang_getCompletionAnnotation(CXCompletionString completion_string, uint annotation_number);
Exemplo n.º 5
0
 internal static extern uint clang_getCompletionNumAnnotations(CXCompletionString completion_string);
Exemplo n.º 6
0
 internal static extern AvailabilityKind clang_getCompletionAvailability(CXCompletionString completion_string);
Exemplo n.º 7
0
 internal static extern CXString clang_getCompletionChunkText(CXCompletionString cs, uint chunkNumber);
Exemplo n.º 8
0
 internal static extern uint clang_getNumCompletionChunks(CXCompletionString completion_string);
Exemplo n.º 9
0
 internal unsafe static extern CXString clang_getCompletionParent(CXCompletionString cs, out CursorKind kind);
Exemplo n.º 10
0
 internal static extern CXString clang_getCompletionAnnotation(CXCompletionString cs, uint annotationNumber);
Exemplo n.º 11
0
 internal static extern uint clang_getCompletionNumAnnotations(CXCompletionString cs);
Exemplo n.º 12
0
 internal static extern  AvailabilityKind clang_getCompletionAvailability(CXCompletionString cs);
Exemplo n.º 13
0
 internal static extern uint clang_getCompletionPriority(CXCompletionString cs);
Exemplo n.º 14
0
 internal static extern uint clang_getNumCompletionChunks(CXCompletionString cs);
Exemplo n.º 15
0
 internal static extern CXCompletionString clang_getCompletionChunkCompletionString(CXCompletionString cs, uint chunk_number);
Exemplo n.º 16
0
 internal static extern CXString clang_getCompletionBriefComment(CXCompletionString completion_string);
Exemplo n.º 17
0
 internal static extern CXCompletionString clang_getCompletionChunkCompletionString(CXCompletionString completion_string, uint chunk_number);
Exemplo n.º 18
0
 internal static extern CXString clang_getCompletionBriefComment(CXCompletionString cs);
Exemplo n.º 19
0
 internal static extern uint clang_getCompletionPriority(CXCompletionString completion_string);
Exemplo n.º 20
0
 internal static extern ChunkKind clang_getCompletionChunkKind(CXCompletionString cs, uint chunkNumber);