Skip to content

Commit

Permalink
Interim
Browse files Browse the repository at this point in the history
  • Loading branch information
vigna committed Aug 4, 2021
1 parent 67c0875 commit 3466978
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 41 deletions.
32 changes: 18 additions & 14 deletions drv/Map.drv
Original file line number Diff line number Diff line change
Expand Up @@ -329,15 +329,21 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
}
}

#if KEYS_REFERENCE && VALUES_REFERENCE
@Override
default VALUE_GENERIC_TYPE getOrDefault(final KEY_TYPE key, final VALUE_GENERIC_TYPE defaultValue) {
return Map.super.getOrDefault(key, defaultValue);
}
#endif
//#if KEYS_REFERENCE && VALUES_REFERENCE
// @Override
// default VALUE_GENERIC_TYPE getOrDefault(final KEY_TYPE key, final VALUE_GENERIC_TYPE defaultValue) {
// return FUNCTION.super.getOrDefault(key, defaultValue);
// }
//#endif


#if KEYS_PRIMITIVE || VALUES_PRIMITIVE
//#if KEYS_PRIMITIVE && VALUES_PRIMITIVE
// @Override
// default VALUE_GENERIC_TYPE getOrDefault(final KEY_TYPE key, final VALUE_GENERIC_TYPE defaultValue) {
// return FUNCTION.super.getOrDefault(key, defaultValue);
// }
//#endif


/** Returns the value to which the specified key is mapped, or the {@code defaultValue} if this
* map contains no mapping for the key.
Expand All @@ -350,7 +356,7 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
* @see java.util.Map#getOrDefault(Object, Object)
* @since 8.0.0
*/
@Override
@Override
default VALUE_GENERIC_TYPE getOrDefault(final KEY_TYPE key, final VALUE_GENERIC_TYPE defaultValue) {
final VALUE_GENERIC_TYPE v;
return ((v = GET_VALUE(key)) != defaultReturnValue() || containsKey(key)) ? v : defaultValue;
Expand Down Expand Up @@ -448,7 +454,7 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
* @since 8.0.0
*/

default VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC VALUE_EXTENDS_GENERIC mappingFunction) {
default VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final VALUE_GENERIC_TYPE v = GET_VALUE(key);
if (v != defaultReturnValue() || containsKey(key)) return v;
Expand All @@ -463,7 +469,7 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
* @deprecated Please use {@code computeIfAbsent()} instead.
*/
@Deprecated
default VALUE_GENERIC_TYPE COMPUTE_IF_ABSENT_JDK(final KEY_GENERIC_TYPE key, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC VALUE_EXTENDS_GENERIC mappingFunction) {
default VALUE_GENERIC_TYPE COMPUTE_IF_ABSENT_JDK(final KEY_GENERIC_TYPE key, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
return computeIfAbsent(key, mappingFunction);
}
#endif
Expand Down Expand Up @@ -524,7 +530,7 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
* @since 8.0.0
*/

default VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC VALUE_EXTENDS_GENERIC mappingFunction) {
default VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final VALUE_GENERIC_TYPE v = GET_VALUE(key), drv = defaultReturnValue();
if (v != drv || containsKey(key)) return v;
Expand All @@ -539,7 +545,7 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K
* @deprecated Please use {@code computeIfAbsent()} instead.
*/
@Deprecated
default VALUE_GENERIC_TYPE COMPUTE_IF_ABSENT_PARTIAL(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC VALUE_EXTENDS_GENERIC mappingFunction) {
default VALUE_GENERIC_TYPE COMPUTE_IF_ABSENT_PARTIAL(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
return computeIfAbsent(key, mappingFunction);
}

Expand Down Expand Up @@ -730,8 +736,6 @@ public interface MAP KEY_VALUE_GENERIC extends FUNCTION KEY_VALUE_GENERIC, Map<K

#endif

#endif

#if KEYS_REFERENCE

/**
Expand Down
52 changes: 25 additions & 27 deletions drv/OpenHashMap.drv
Original file line number Diff line number Diff line change
Expand Up @@ -1149,66 +1149,64 @@ public class OPEN_HASH_MAP KEY_VALUE_GENERIC extends ABSTRACT_MAP KEY_VALUE_GENE
return oldValue;
}

#ifdef JDK_PRIMITIVE_FUNCTION

/** {@inheritDoc} */
@Override
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE k, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final java.util.function.Function<? super KEY_GENERIC_CLASS, ? extends VALUE_GENERIC_CLASS> mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final int pos = find(k);
final int pos = find(key);
if (pos >= 0) return value[pos];
final VALUE_GENERIC_TYPE newValue = VALUE_NARROWING(mappingFunction.JDK_PRIMITIVE_FUNCTION_APPLY(k));
insert(-pos -1, k, newValue);

final VALUE_GENERIC_TYPE newValue = mappingFunction.apply(key);
if (newValue == null) return defRetValue;
insert(-pos -1, key, newValue);
return newValue;
}

#endif

#if KEYS_PRIMITIVE && VALUES_PRIMITIVE
#ifdef JDK_PRIMITIVE_FUNCTION

/** {@inheritDoc} */
@Override
public VALUE_GENERIC_TYPE computeIfAbsentNullable(final KEY_GENERIC_TYPE k, final JDK_KEY_TO_GENERIC_FUNCTION<? extends VALUE_GENERIC_CLASS> mappingFunction) {
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE k, final JDK_PRIMITIVE_FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final int pos = find(k);
if (pos >= 0) return value[pos];
final VALUE_GENERIC_CLASS newValue = mappingFunction.apply(k);
if (newValue == null) return defRetValue;
final VALUE_GENERIC_TYPE v = VALUE_CLASS2TYPE(newValue);
insert(-pos - 1, k, v);
return v;
final VALUE_GENERIC_TYPE newValue = VALUE_NARROWING(mappingFunction.JDK_PRIMITIVE_FUNCTION_APPLY(k));
insert(-pos -1, k, newValue);
return newValue;
}

#endif

#if VALUES_REFERENCE
/** {@inheritDoc} */
@Override
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final java.util.function.Function KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final int pos = find(key);
if (pos >= 0) return value[pos];

final VALUE_GENERIC_TYPE newValue = mappingFunction.apply(key);
if (newValue == null) return defRetValue;
if (!mappingFunction.containsKey(key)) return defRetValue;
final VALUE_GENERIC_TYPE newValue = mappingFunction.GET_VALUE(key);
insert(-pos -1, key, newValue);
return newValue;
}
#endif

#if KEYS_PRIMITIVE || VALUES_PRIMITIVE

#if KEYS_PRIMITIVE && VALUES_PRIMITIVE

/** {@inheritDoc} */
@Override
public VALUE_GENERIC_TYPE computeIfAbsent(final KEY_GENERIC_TYPE key, final FUNCTION KEY_SUPER_GENERIC_VALUE_EXTENDS_GENERIC mappingFunction) {
public VALUE_GENERIC_TYPE computeIfAbsentNullable(final KEY_GENERIC_TYPE k, final JDK_KEY_TO_GENERIC_FUNCTION<? extends VALUE_GENERIC_CLASS> mappingFunction) {
java.util.Objects.requireNonNull(mappingFunction);
final int pos = find(key);
final int pos = find(k);
if (pos >= 0) return value[pos];

if (!mappingFunction.containsKey(key)) return defRetValue;
final VALUE_GENERIC_TYPE newValue = mappingFunction.GET_VALUE(key);
insert(-pos -1, key, newValue);
return newValue;
final VALUE_GENERIC_CLASS newValue = mappingFunction.apply(k);
if (newValue == null) return defRetValue;
final VALUE_GENERIC_TYPE v = VALUE_CLASS2TYPE(newValue);
insert(-pos - 1, k, v);
return v;
}

#endif

/** {@inheritDoc} */
Expand Down

0 comments on commit 3466978

Please sign in to comment.