@Nullable public static String stringFromSelector(Pointer selector) { ID id = myFoundationLibrary.NSStringFromSelector(selector); if (id.intValue() > 0) { return toStringViaUTF8(id); } return null; }
@Nullable public static String toStringViaUTF8(ID cfString) { if (cfString.intValue() == 0) return null; int lengthInChars = myFoundationLibrary.CFStringGetLength(cfString); int potentialLengthInBytes = 3 * lengthInChars + 1; // UTF8 fully escaped 16 bit chars, plus nul byte[] buffer = new byte[potentialLengthInBytes]; byte ok = myFoundationLibrary.CFStringGetCString( cfString, buffer, buffer.length, FoundationLibrary.kCFStringEncodingUTF8); if (ok == 0) throw new RuntimeException("Could not convert string"); return Native.toString(buffer); }
public static boolean isPackageAtPath(@NotNull final String path) { final ID workspace = invoke("NSWorkspace", "sharedWorkspace"); final ID result = invoke(workspace, createSelector("isFilePackageAtPath:"), nsString(path)); return result.intValue() == 1; }