@Override public int computeHash() { NodeValue[] nodes = nodes(); RelationshipValue[] relationships = relationships(); int result = nodes[0].hashCode(); for ( int i = 1; i < nodes.length; i++ ) { result += 31 * (result + relationships[i - 1].hashCode()); result += 31 * (result + nodes[i].hashCode()); } return result; }
public static ListValue list( Object... objects ) { AnyValue[] values = new AnyValue[objects.length]; for ( int i = 0; i < objects.length; i++ ) { values[i] = toAnyValue( objects[i] ); } return VirtualValues.list( values ); }
@Override public void onMetadata( String key, AnyValue value ) { metadata.add( key, value ); }
@Override public int size() { return map.size() + updatedKeys.length; } }
public static VirtualValue map( Object... keyOrVal ) { assert keyOrVal.length % 2 == 0; String[] keys = new String[keyOrVal.length / 2]; AnyValue[] values = new AnyValue[keyOrVal.length / 2]; for ( int i = 0; i < keyOrVal.length; i += 2 ) { keys[i / 2] = (String) keyOrVal[i]; values[i / 2] = toAnyValue( keyOrVal[i + 1] ); } return VirtualValues.map( keys, values ); }
@Override public Iterable<Node> nodes() { return asList( value.nodes(), DefaultValueMapper.this::mapNode ); }
@Override public boolean hasNext() { return count < size(); }
@Override public boolean containsKey( String key ) { return map.containsKey( key ); }
@Override public int hashCode() { return metadata.hashCode(); }
private void clearState() { error = null; ignored = false; metadata.clear(); }
@Override public Iterator<AnyValue> iterator() { return new FilteredIterator(); }
ArrayListValue( AnyValue[] values ) { assert values != null; assert !containsNull( values ); this.values = values; }
public ListValue append( AnyValue...values ) { if ( values.length == 0 ) { return this; } return new AppendList( this, values ); }
@Override public void addMetadata( String key, AnyValue value ) { meta.add( key, value ); } } );
@Override public Iterable<Node> reverseNodes() { return asReverseList( value.nodes(), DefaultValueMapper.this::mapNode ); }
ListSlice( ListValue inner, int from, int to ) { assert from >= 0; assert to <= inner.size(); assert from <= to; this.inner = inner; this.from = from; this.to = to; }