예제 #1
0
        public static CXErrorCode Create(CXIndex index, string astFileName, out CXTranslationUnit translationUnit)
        {
            using var marshaledAstFileName = new MarshaledString(astFileName);

            fixed(CXTranslationUnit *pTranslationUnit = &translationUnit)
            {
                return(clang.createTranslationUnit2(index, marshaledAstFileName, (CXTranslationUnitImpl **)pTranslationUnit));
            }
        }
예제 #2
0
        public static CXTranslationUnit Parse(CXIndex index, string sourceFileName, ReadOnlySpan <string> commandLineArgs, ReadOnlySpan <CXUnsavedFile> unsavedFiles, CXTranslationUnit_Flags options)
        {
            using var marshaledSourceFileName  = new MarshaledString(sourceFileName);
            using var marshaledCommandLineArgs = new MarshaledStringArray(commandLineArgs);

            fixed(CXUnsavedFile *pUnsavedFiles = unsavedFiles)
            {
                var pCommandLineArgs = stackalloc sbyte *[commandLineArgs.Length];

                marshaledCommandLineArgs.Fill(pCommandLineArgs);
                return(clang.parseTranslationUnit(index, marshaledSourceFileName, pCommandLineArgs, commandLineArgs.Length, pUnsavedFiles, (uint)unsavedFiles.Length, (uint)options));
            }
        }
예제 #3
0
 public static CXIndexAction Create(CXIndex index) => (CXIndexAction)clang.IndexAction_create(index);
예제 #4
0
 public static CXTranslationUnit Create(CXIndex index, string astFileName)
 {
     using var marshaledAstFileName = new MarshaledString(astFileName);
     return(clang.createTranslationUnit(index, marshaledAstFileName));
 }