/** * Returns all (also hidden) Property objects in this shape. * * @param ascending desired order */ @TruffleBoundary @Override public final List<Property> getPropertyListInternal(boolean ascending) { LinkedList<Property> props = new LinkedList<>(); for (Property current : this.propertyMap.reverseOrderValues()) { if (ascending) { props.addFirst(current); } else { props.add(current); } } return props; }
@TruffleBoundary public String toStringLimit(int limit) { StringBuilder sb = new StringBuilder(); sb.append('@'); sb.append(Integer.toHexString(hashCode())); if (!isValid()) { sb.append('!'); } sb.append("{"); for (Iterator<Property> iterator = propertyMap.reverseOrderValues().iterator(); iterator.hasNext();) { Property p = iterator.next(); sb.append(p); if (iterator.hasNext()) { sb.append(", "); } if (sb.length() >= limit) { sb.append("..."); break; } sb.append("\n"); } sb.append("}"); return sb.toString(); }
/** * Get a list of all properties that this Shape stores. * * @return list of properties */ @TruffleBoundary @Override public final List<Property> getPropertyList(Pred<Property> filter) { LinkedList<Property> props = new LinkedList<>(); next: for (Property currentProperty : this.propertyMap.reverseOrderValues()) { if (!currentProperty.isHidden() && filter.test(currentProperty)) { if (currentProperty.getLocation() instanceof DeclaredLocation) { for (Iterator<Property> iter = props.iterator(); iter.hasNext();) { Property other = iter.next(); if (other.isShadow() && other.getKey().equals(currentProperty.getKey())) { iter.remove(); props.addFirst(other); continue next; } } } props.addFirst(currentProperty); } } return props; }
/** * Get a list of all (visible) property names in insertion order. * * @return list of property names */ @TruffleBoundary @Override public final List<Object> getKeyList(Pred<Property> filter) { LinkedList<Object> keys = new LinkedList<>(); for (Property currentProperty : this.propertyMap.reverseOrderValues()) { if (!currentProperty.isHidden() && filter.test(currentProperty) && !currentProperty.isShadow()) { keys.addFirst(currentProperty.getKey()); } } return keys; }