package org.objectstyle.wolips.goodies.core.mac.jna;
import com.sun.jna.Callback;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.Structure;
public interface CoreFoundation extends Library {
public interface CFAllocationReleaseCallaback extends Callback {
void callback(Pointer info);
}
public interface CFAllocationRetainCallback extends Callback {
void callback(Pointer info);
}
public interface CFAllocatorCopyDescriptionCallBack extends Callback {
void callback(Pointer info);
}
public class CFAllocatorRef extends Structure {
// empty
}
public class CFArrayCallBacks extends Structure {
public int version;
public CFArrayRetainCallBack retain;
public CFArrayReleaseCallBack release;
public CFArrayCopyDescriptionCallBack copyDescription;
public CFArrayEqualCallBack equal;
}
public interface CFArrayCopyDescriptionCallBack {
public void callback(Pointer value);
}
public interface CFArrayEqualCallBack {
public void callback(Pointer value1, Pointer value2);
}
public class CFArrayRef extends Structure {
// empty
}
public interface CFArrayReleaseCallBack {
public void callback(Pointer value);
}
public interface CFArrayRetainCallBack {
public void callback(Pointer value);
}
public static final int kCFStringEncodingUTF8 = 0x08000100;
public static final int kCFRunLoopRunFinished = 1;
public static final int kCFRunLoopRunStopped = 2;
public static final int kCFRunLoopRunTimedOut = 3;
public static final int kCFRunLoopRunHandledSource = 4;
Pointer CFArrayCreate(Pointer allocator, Pointer[] values, int numValues, CFArrayCallBacks callBacks);
public Pointer CFArrayCreate(Pointer[] values);
public Pointer CFArrayCreate(String[] stringVals);
public Pointer CFRetain(Pointer pointer);
public Pointer CFRunLoopGetCurrent();
public Pointer CFRunLoopGetMain();
public void CFRunLoopRun();
public int CFRunLoopRunInMode(Pointer mode, double interval, boolean returnAfterSourceHandled);
public void CFRunLoopStop(Pointer pointer);
Pointer CFStringCreateWithCString(Pointer allocator, String string, int encoding);
public Pointer CFStringCreateWithCString(String string);
public String getLastError();
public String strerror(int errnum);
public static class CoreFoundationWrapper implements CoreFoundation {
private static final CoreFoundation coreFoundation = (CoreFoundation) Native.loadLibrary("CoreFoundation", CoreFoundation.class);
private static final CoreFoundationWrapper wrapper = new CoreFoundationWrapper();
public static CoreFoundationWrapper defaultInstance() {
return wrapper;
}
private CoreFoundationWrapper() {
}
public Pointer CFArrayCreate(Pointer allocator, Pointer[] values, int numValues, CFArrayCallBacks callBacks) {
return coreFoundation.CFArrayCreate(allocator, values, numValues, callBacks);
}
public Pointer CFArrayCreate(Pointer[] values) {
return coreFoundation.CFArrayCreate(null, values, values.length, null);
}
public Pointer CFArrayCreate(String[] stringVals) {
Pointer[] values = new Pointer[stringVals.length];
for (int i = 0; i < stringVals.length; i++) {
values[i] = CFStringCreateWithCString(stringVals[i]);
}
return CFArrayCreate(values);
}
public Pointer CFRetain(Pointer pointer) {
return coreFoundation.CFRetain(pointer);
}
public Pointer CFRunLoopGetCurrent() {
return coreFoundation.CFRunLoopGetCurrent();
}
public Pointer CFRunLoopGetMain() {
return coreFoundation.CFRunLoopGetMain();
}
public void CFRunLoopRun() {
coreFoundation.CFRunLoopRun();
}
public int CFRunLoopRunInMode(Pointer mode, double interval, boolean returnAfterSourceHandled) {
return coreFoundation.CFRunLoopRunInMode(mode, interval, returnAfterSourceHandled);
}
public void CFRunLoopStop(Pointer pointer) {
coreFoundation.CFRunLoopStop(pointer);
}
public Pointer CFStringCreateWithCString(Pointer allocator, String string, int encoding) {
return coreFoundation.CFStringCreateWithCString(allocator, string, encoding);
}
public Pointer CFStringCreateWithCString(String string) {
return CFStringCreateWithCString(null, string, kCFStringEncodingUTF8);
}
public String getLastError() {
return strerror(Native.getLastError());
}
public String strerror(int errnum) {
return coreFoundation.strerror(errnum);
}
}
}