public static CXDiagnosticSet Load(string file, out CXLoadDiag_Error error, out CXString errorString) { using var marshaledFile = new MarshaledString(file); fixed(CXLoadDiag_Error *pError = &error) fixed(CXString * pErrorString = &errorString) { return((CXDiagnosticSet)clang.loadDiagnostics(marshaledFile, pError, pErrorString)); } }
public static extern CXDiagnosticSet loadDiagnostics([MarshalAs(UnmanagedType.LPStr)] string @file, out CXLoadDiag_Error @error, out CXString @errorString);
/// <summary> /// The TryLoadDiagnostics /// </summary> /// <param name="fileName">The fileName<see cref="string"/></param> /// <param name="diagnosticSet">The diagnosticSet<see cref="DiagnosticSet"/></param> /// <param name="error">The error<see cref="CXLoadDiag_Error"/></param> /// <returns>The <see cref="bool"/></returns> public static bool TryLoadDiagnostics(string fileName, out DiagnosticSet diagnosticSet, out CXLoadDiag_Error error) { error = CXLoadDiag_Error.CXLoadDiag_None; CXString cXString; diagnosticSet = null; IntPtr diagnostic = clang.clang_loadDiagnostics(fileName, out error, out cXString); if (diagnostic == IntPtr.Zero) { return(false); } diagnosticSet = new DiagnosticSet(diagnostic); return(true); }