public static string[] GetPROJAuxDbPaths() { /* %typemap(csout) char** CSL */ IntPtr cPtr = OsrPINVOKE.GetPROJAuxDbPaths(); IntPtr objPtr; int count = 0; if (cPtr != IntPtr.Zero) { while (Marshal.ReadIntPtr(cPtr, count * IntPtr.Size) != IntPtr.Zero) { ++count; } } string[] ret = new string[count]; if (count > 0) { for (int cx = 0; cx < count; cx++) { objPtr = System.Runtime.InteropServices.Marshal.ReadIntPtr(cPtr, cx * System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr))); ret[cx] = (objPtr == IntPtr.Zero) ? null : System.Runtime.InteropServices.Marshal.PtrToStringAnsi(objPtr); } } if (cPtr != IntPtr.Zero) { OsrPINVOKE.StringListDestroy(cPtr); } if (OsrPINVOKE.SWIGPendingException.Pending) { throw OsrPINVOKE.SWIGPendingException.Retrieve(); } return(ret); }