Changeset 15381
- Timestamp:
- 09/26/20 07:32:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/abcl/src/org/armedbear/lisp/Java.java
r15353 r15381 729 729 Object value = v.javaInstance(); 730 730 int index = ((Integer)args[args.length - 1].javaInstance()).intValue(); 731 if (value instanceof java.lang.Number 732 && a.getClass().getComponentType().equals(Byte.TYPE)) { 733 Array.setByte(a, index, ((java.lang.Number)value).byteValue()); 731 if (value instanceof java.lang.Number) { 732 Class type = a.getClass().getComponentType(); 733 Number number = (java.lang.Number)value; 734 if (type.equals(Byte.TYPE)) { 735 Array.setByte(a, index, number.byteValue()); 736 } else if (type.equals(Short.TYPE)) { 737 Array.setShort(a, index, number.shortValue()); 738 } else if (type.equals(Character.TYPE)) { 739 Array.setChar(a, index, (char)number.intValue()); // FIXME: value out of range 740 } else if (type.equals(Integer.TYPE)) { 741 Array.setInt(a, index, number.intValue()); 742 } else if (type.equals(Long.TYPE)) { 743 Array.setLong(a, index, number.longValue()); 744 } else if (type.equals(Float.TYPE)) { 745 Array.setFloat(a, index, number.floatValue()); 746 } else if (type.equals(Double.TYPE)) { 747 Array.setDouble(a, index, number.doubleValue()); 748 } else if (type.equals(Boolean.TYPE)) { 749 Array.setBoolean(a, index, number.equals(0) ? false : true); 750 } else { 751 Array.set(a, index, value); 752 } 734 753 } else { 735 754 Array.set(a, index, value);
Note: See TracChangeset
for help on using the changeset viewer.