001 /*
002 * To change this template, choose Tools | Templates
003 * and open the template in the editor.
004 */
005 package org.bridj.objc;
006
007 import java.nio.charset.Charset;
008 import java.util.Map;
009 import org.bridj.BridJ;
010 import org.bridj.CRuntime;
011 import org.bridj.Pointer;
012 import static org.bridj.Pointer.*;
013 import org.bridj.Pointer.StringType;
014 import org.bridj.ann.Library;
015 import org.bridj.ann.Ptr;
016
017 @Library("Foundation")
018 @org.bridj.ann.Runtime(CRuntime.class)
019 public class FoundationLibrary {
020 static {
021 BridJ.register();
022 }
023
024 public static final int
025 kCFStringEncodingASCII = 0x0600,
026 kCFStringEncodingUnicode = 0x0100,
027 kCFStringEncodingUTF8 = 0x08000100;
028
029 public static native Pointer<NSString> CFStringCreateWithBytes(Pointer<?> alloc, Pointer<Byte> bytes, @Ptr long numBytes, int encoding, boolean isExternalRepresentation);
030
031
032 public static Pointer<NSString> pointerToNSString(String s) {
033 Pointer p = Pointer.pointerToString(s, StringType.C, Charset.forName("utf-8"));
034 assert p != null;
035 Pointer<NSString> ps = CFStringCreateWithBytes(null, p, p.getValidBytes() - 1 /* remove the trailing NULL */, kCFStringEncodingUTF8, false);
036 assert ps != null;
037 return ps;
038 }
039 }