/** * Gets the native size of type of reference * * @param runtime The current runtime. * @return The size of the native type this reference points to */ public int nativeSize(Runtime runtime) { return runtime.addressSize(); } }
public static ArrayIO getArrayIO(Runtime runtime) { if (runtime.byteOrder().equals(ByteOrder.BIG_ENDIAN)) { return runtime.addressSize() == 8 ? BE64ArrayIO.INSTANCE : BE32ArrayIO.INSTANCE; } else { return runtime.addressSize() == 8 ? LE64ArrayIO.INSTANCE : LE32ArrayIO.INSTANCE; } }
public java.lang.String[] getMembers() { List<java.lang.String> lst = new ArrayList<java.lang.String>(); jnr.ffi.Pointer ptr = layout.gr_mem.get(memory); Pointer member; int ptrSize = runtime.addressSize(); for (int i = 0; (member = ptr.getPointer(i)) != null; i += ptrSize) { lst.add(member.getString(0)); } return lst.toArray(new java.lang.String[lst.size()]); }
public java.lang.String[] getMembers() { List<java.lang.String> lst = new ArrayList<java.lang.String>(); jnr.ffi.Pointer ptr = layout.gr_mem.get(memory); Pointer member; int ptrSize = runtime.addressSize(); for (int i = 0; (member = ptr.getPointer(i)) != null; i += ptrSize) { lst.add(member.getString(0)); } return lst.toArray(new java.lang.String[lst.size()]); }
public java.lang.String[] getMembers() { List<java.lang.String> lst = new ArrayList<java.lang.String>(); jnr.ffi.Pointer ptr = layout.gr_mem.get(memory); Pointer member; int ptrSize = runtime.addressSize(); for (int i = 0; (member = ptr.getPointer(i)) != null; i += ptrSize) { lst.add(member.getString(0)); } return lst.toArray(new java.lang.String[lst.size()]); }
void put(int idx, CharSequence str) { if (str == null) { memory.putAddress(idx * getRuntime().addressSize(), 0L); } else { ByteBuffer buf = charset.encode(CharBuffer.wrap(str)); Pointer ptr = Memory.allocateDirect(getRuntime(), buf.remaining() + 4, true); ptr.put(0, buf.array(), 0, buf.remaining()); stringMemory.add(idx, ptr); memory.putPointer(idx * getRuntime().addressSize(), ptr); } }
public void putPointer(long offset, Pointer value) { checkBounds(size, offset, getRuntime().addressSize()); io.putPointer(base + offset, value); } @Override
@Override public void putAddress(long offset, long value) { checkBounds(size, offset, getRuntime().addressSize()); io.putAddress(base + offset, value); }
@Override public void putAddress(long offset, Address value) { checkBounds(size, offset, getRuntime().addressSize()); io.putAddress(base + offset, value); }
@Override public long getAddress(long offset) { checkBounds(size, offset, getRuntime().addressSize()); return io.getAddress(base + offset); }
@Override public void putAddress(long offset, long value) { checkBounds(size, offset, getRuntime().addressSize()); io.putAddress(base + offset, value); }
public void putAddress(long offset, long value) { if (getRuntime().addressSize() == 4) { putInt(offset, (int) value); } else { putLongLong(offset, value); } }
public void putPointer(long offset, Pointer value) { checkBounds(size, offset, getRuntime().addressSize()); io.putPointer(base + offset, value); } @Override
String get(int idx) { Pointer ptr = memory.getPointer(idx * getRuntime().addressSize()); return ptr != null ? ptr.getString(0) : null; }
public Pointer getPointer(long offset, long size) { checkBounds(this.size, base + offset, getRuntime().addressSize()); return io.getPointer(base + offset, size); }
String get(int idx) { Pointer ptr = memory.getPointer(idx * getRuntime().addressSize()); return ptr != null ? ptr.getString(0) : null; }
public synchronized Protocol getProtocolByName(String name) { UnixProtoent protoent = new UnixProtoent(runtime); Pointer result = Memory.allocateDirect(runtime, runtime.addressSize()); if (lib.getprotobyname_r(name, protoent, buf, new NativeLong(BUFLEN), result) == 0) { return result.getPointer(0) != null ? protocolFromNative(protoent) : null; } throw new RuntimeException("getprotobyname_r failed"); }
public synchronized Service getServiceByName(String name, String proto) { UnixServent servent = new UnixServent(runtime); Pointer result = Memory.allocateDirect(runtime, runtime.addressSize()); if (lib.getservbyname_r(name, proto, servent, buf, new NativeLong(BUFLEN), result) == 0) { return result.getPointer(0) != null ? serviceFromNative(servent) : null; } throw new RuntimeException("getservbyname_r failed"); }
public void putAddress(long offset, Address value) { if (getRuntime().addressSize() == 4) { putInt(offset, value.intValue()); } else { putLongLong(offset, value.longValue()); } }
public synchronized Service getServiceByPort(Integer port, String proto) { UnixServent servent = new UnixServent(runtime); Pointer result = Memory.allocateDirect(runtime, runtime.addressSize()); if (lib.getservbyport_r(htons(port), proto, servent, buf, new NativeLong(BUFLEN), result) == 0) { return result.getPointer(0) != null ? serviceFromNative(servent) : null; } throw new RuntimeException("getservbyport_r failed"); }