示例#1
0
    string GetDefaultParameter(CXCursor handle)
    {
        string result = null;

        handle.VisitChildren((cursor, parent, client_data) =>
        {
            if (cursor.kind == CXCursorKind.CXCursor_CXXBoolLiteralExpr ||
                cursor.kind == CXCursorKind.CXCursor_IntegerLiteral ||
                cursor.kind == CXCursorKind.CXCursor_FloatingLiteral ||
                cursor.kind == CXCursorKind.CXCursor_CompoundLiteralExpr ||
                cursor.kind == CXCursorKind.CXCursor_FirstExpr ||
                cursor.kind == CXCursorKind.CXCursor_BinaryOperator)
            {
                CXSourceRange range = clang.getCursorExtent(cursor);
                CXToken *tokens     = null;
                uint numTokens      = 0;
                clang.tokenize(cursor.TranslationUnit, range, &tokens, &numTokens);

                for (int i = 0; i < numTokens; ++i)
                {
                    result += clang.getTokenSpelling(cursor.TranslationUnit, tokens[i]).ToString();
                }

                clang.disposeTokens(cursor.TranslationUnit, tokens, numTokens);
                return(CXChildVisitResult.CXChildVisit_Break);
            }
            return(CXChildVisitResult.CXChildVisit_Continue);
        }, new CXClientData());

        return(result);
    }
示例#2
0
        /// <summary>
        /// The Tokenize
        /// </summary>
        /// <param name="sourceRange">The sourceRange<see cref="SourceRange"/></param>
        /// <returns>The <see cref="TokenList"/></returns>
        public unsafe ClangList <Token> Tokenize(SourceRange sourceRange)
        {
            CXToken *pToken     = null;
            uint     tokenCount = 0;

            clang.clang_tokenize(this.m_value, (CXSourceRange)sourceRange.Value, out pToken, out tokenCount);
            return(new TokenList(this, pToken, (int)tokenCount));
        }
 public static extern void clang_annotateTokens(
     CXTranslationUnitImpl *TU,
     CXToken *Tokens,
     uint NumTokens,
     CXCursor *Cursors);
 public static extern void clang_disposeTokens(
     CXTranslationUnitImpl *TU,
     CXToken *Tokens,
     uint NumTokens);
示例#5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TokenList"/> class.
 /// </summary>
 /// <param name="translationUnit">The translationUnit<see cref="TranslationUnit"/></param>
 /// <param name="pTokens">The pTokens<see cref="CXToken*"/></param>
 /// <param name="tokensCount">The tokensCount<see cref="int"/></param>
 internal unsafe TokenList(TranslationUnit translationUnit, CXToken *pTokens, int tokensCount)
 {
     this._translationUnit = translationUnit;
     this.m_value          = pTokens;
     this._tokensCount     = tokensCount;
 }