internal static string Unwrap(this CXString s)
        {
            // Normal marshalling causes double free crash at mono runtime. So I manually process marshaling here.
            var p = clang_getCString(s);

            if (p == IntPtr.Zero)
            {
                return(null);
            }
            int x = 0;

            unsafe {
                byte *ptr = (byte *)p;
                while (ptr [x] != 0)
                {
                    x++;
                }
                var e = System.Text.Encoding.Default;
                var l = e.GetCharCount(ptr, x);
                if (l == 0)
                {
                    return(string.Empty);
                }
                char *buf = stackalloc char [l];
                e.GetChars(ptr, x, buf, l);
                return(new string (buf, 0, l));
            }
        }
 internal static extern CXString clang_getDiagnosticOption(CXDiagnostic diag, out CXString disable);
 internal static extern CXDiagnosticSet clang_loadDiagnostics(string file, out LoadDiagError error, out CXString errorString);
Beispiel #4
0
 internal static extern void clang_getPresumedLocation(CXSourceLocation location, out CXString filename, out uint line, out uint column);
 internal static extern void    clang_remap_getFilenames(CXRemapping _, uint index, out CXString original, out CXString transformed);
 internal static extern int clang_getCursorPlatformAvailability(CXCursor cursor, out int always_deprecated,
                                                                out CXString deprecated_message, out int always_unavailable, out CXString unavailable_message,
                                                                ref IntPtr availability, int availability_size); // CXPlatformAvailability*
Beispiel #7
0
 internal static extern CXString        clang_constructUSR_ObjCProperty(string property, CXString classUSR);
Beispiel #8
0
 internal static extern CXString        clang_constructUSR_ObjCMethod(string name, uint isInstanceMethod, CXString classUSR);
Beispiel #9
0
 internal static extern CXString        clang_constructUSR_ObjCIvar(string name, CXString classUSR);
Beispiel #10
0
 internal static extern uint clang_Cursor_isExternalSymbol(CXCursor C, out CXString language, out CXString definedIn, out uint isGenerated);
 internal static extern void clang_disposeString(CXString @string);
 internal static extern IntPtr clang_getCString(CXString @string);