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); }
/// <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);
/// <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; }