@MarshalsPointer public static long toNative(String o, long flags) { if (o == null) { return 0L; } try (CFString s = new CFString(o)) { // retainCount is now 1 s.retain(); // Make sure the retainCount is 1 when we exit this try block // retainCount is now 2 return s.getHandle(); // retainCount is 1 after the return } } @AfterBridgeCall
@Override public String toString() { int len = (int) length(); if (len == 0) { return EMPTY_STRING; } char[] chars = new char[len]; getCharacters(getHandle(), new CFRange(0, len), VM.getArrayValuesAddress(chars)); return VM.newStringNoCopy(chars, 0, len); }
@MarshalsPointer public static long toNative(String o, long flags) { if (o == null) { return 0L; } try (CFString s = new CFString(o)) { // retainCount is now 1 s.retain(); // Make sure the retainCount is 1 when we exit this try block // retainCount is now 2 return s.getHandle(); // retainCount is 1 after the return } } @AfterBridgeCall
@MarshalsPointer public static long toNative(String o, long flags) { if (o == null) { return 0L; } try (CFString s = new CFString(o)) { // retainCount is now 1 s.retain(); // Make sure the retainCount is 1 when we exit this try block // retainCount is now 2 return s.getHandle(); // retainCount is 1 after the return } } @AfterBridgeCall
@Override public String toString() { int len = (int) length(); if (len == 0) { return EMPTY_STRING; } char[] chars = new char[len]; getCharacters(getHandle(), new CFRange(0, len), VM.getArrayValuesAddress(chars)); return VM.newStringNoCopy(chars, 0, len); }
@Override public String toString() { int len = (int) length(); if (len == 0) { return EMPTY_STRING; } char[] chars = new char[len]; getCharacters(getHandle(), new CFRange(0, len), VM.getArrayValuesAddress(chars)); return VM.newStringNoCopy(chars, 0, len); }