MCPcopy Create free account
hub / github.com/java-native-access/jna / setValue

Method setValue

src/com/sun/jna/Pointer.java:847–899  ·  view source on GitHub ↗
(long offset, Object value, Class<?> type)

Source from the content-addressed store, hash-verified

845 //////////////////////////////////////////////////////////////////////////
846
847 void setValue(long offset, Object value, Class<?> type) {
848
849 // Set the value at the offset according to its type
850 if (type == boolean.class || type == Boolean.class) {
851 setInt(offset, Boolean.TRUE.equals(value) ? -1 : 0);
852 } else if (type == byte.class || type == Byte.class) {
853 setByte(offset, value == null ? 0 : ((Byte)value).byteValue());
854 } else if (type == short.class || type == Short.class) {
855 setShort(offset, value == null ? 0 : ((Short)value).shortValue());
856 } else if (type == char.class || type == Character.class) {
857 setChar(offset, value == null ? 0 : ((Character)value).charValue());
858 } else if (type == int.class || type == Integer.class) {
859 setInt(offset, value == null ? 0 : ((Integer)value).intValue());
860 } else if (type == long.class || type == Long.class) {
861 setLong(offset, value == null ? 0 : ((Long)value).longValue());
862 } else if (type == float.class || type == Float.class) {
863 setFloat(offset, value == null ? 0f : ((Float)value).floatValue());
864 } else if (type == double.class || type == Double.class) {
865 setDouble(offset, value == null ? 0.0 : ((Double)value).doubleValue());
866 } else if (type == Pointer.class) {
867 setPointer(offset, (Pointer)value);
868 } else if (type == String.class) {
869 setPointer(offset, (Pointer)value);
870 } else if (type == WString.class) {
871 setPointer(offset, (Pointer)value);
872 } else if (Structure.class.isAssignableFrom(type)) {
873 Structure s = (Structure)value;
874 if (Structure.ByReference.class.isAssignableFrom(type)) {
875 setPointer(offset, s == null ? null : s.getPointer());
876 if (s != null) {
877 s.autoWrite();
878 }
879 }
880 else {
881 s.useMemory(this, (int)offset, true);
882 s.write();
883 }
884 } else if (Callback.class.isAssignableFrom(type)) {
885 setPointer(offset, CallbackReference.getFunctionPointer((Callback)value));
886 } else if (Platform.HAS_BUFFERS && Buffer.class.isAssignableFrom(type)) {
887 Pointer p = value == null ? null
888 : Native.getDirectBufferPointer((Buffer)value);
889 setPointer(offset, p);
890 } else if (NativeMapped.class.isAssignableFrom(type)) {
891 NativeMappedConverter tc = NativeMappedConverter.getInstance(type);
892 Class<?> nativeType = tc.nativeType();
893 setValue(offset, tc.toNative(value, new ToNativeContext()), nativeType);
894 } else if (type.isArray()) {
895 writeArray(offset, value, type.getComponentType());
896 } else {
897 throw new IllegalArgumentException("Writing " + type + " to memory is not supported");
898 }
899 }
900
901 /** Write memory starting at offset from the array with element type cls. */
902 private void writeArray(long offset, Object value, Class<?> cls) {

Callers 1

writeArrayMethod · 0.95

Calls 15

setIntMethod · 0.95
setByteMethod · 0.95
setShortMethod · 0.95
setCharMethod · 0.95
setLongMethod · 0.95
setFloatMethod · 0.95
setDoubleMethod · 0.95
setPointerMethod · 0.95
getPointerMethod · 0.95
autoWriteMethod · 0.95
useMemoryMethod · 0.95
writeMethod · 0.95

Tested by

no test coverage detected