You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by sc...@apache.org on 2018/07/17 21:22:38 UTC
svn commit: r1836134 -
/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/
Author: schor
Date: Tue Jul 17 21:22:38 2018
New Revision: 1836134
URL: http://svn.apache.org/viewvc?rev=1836134&view=rev
Log:
[UIMA-5833][UIMA-5835]
Modified:
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java
uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_backwards.java Tue Jul 17 21:22:38 2018
@@ -140,4 +140,23 @@ class FsIterator_backwards<T extends Fea
return it.getComparator();
}
+ @Override
+ public int size() {
+ return it.size();
+ }
+
+ @Override
+ public FeatureStructure[] getArray() {
+ FeatureStructure[] a = it.getArray();
+ int len = a.length;
+ int len2 = len >> 1;
+ int len1 = len - 1;
+ for (int i = 0, i2 = len1; i < len2; i++, i2--) {
+ FeatureStructure t = a[i];
+ a[i] = a[i2];
+ a[i2] = t;
+ }
+ return a;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_bag.java Tue Jul 17 21:22:38 2018
@@ -184,6 +184,13 @@ class FsIterator_bag<T extends FeatureSt
public Comparator<TOP> getComparator() {
return null; // not used for bag
}
+
+ @Override
+ public FeatureStructure[] getArray() {
+ TOP[] a = new TOP[size()];
+ bag.copyToArray(a, 0);
+ return a;
+ }
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_limited.java Tue Jul 17 21:22:38 2018
@@ -135,4 +135,20 @@ class FsIterator_limited<T extends Featu
return iterator.getComparator();
}
+ @Override
+ public int size() {
+ return Math.min(limit, iterator.size());
+ }
+
+ @Override
+ public FeatureStructure[] getArray() {
+ FeatureStructure[] a = iterator.getArray();
+ if (a.length > limit) {
+ FeatureStructure[] a2 = new FeatureStructure[limit];
+ System.arraycopy(a, 0, a2, 0, limit);
+ return a2;
+ }
+ return a;
+ }
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_multiple_indexes.java Tue Jul 17 21:22:38 2018
@@ -191,6 +191,18 @@ public abstract class FsIterator_multipl
? main_idx
: ((LowLevelIterator<T>)allIterators[0]).ll_getIndex());
}
-
+ @Override
+ public FeatureStructure[] getArray() {
+ FeatureStructure[] a = new FeatureStructure[size()];
+ int destPos = 0;
+ for (LowLevelIterator<T> it : nonEmptyIterators) {
+ FeatureStructure[] p = it.getArray();
+ System.arraycopy(p, 0, a, destPos, p.length);
+ destPos += p.length;
+ }
+ return a;
+ }
+
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_set_sorted2.java Tue Jul 17 21:22:38 2018
@@ -299,6 +299,13 @@ class FsIterator_set_sorted2<T extends F
return this.ll_getIndex().isSorted();
}
+ @Override
+ public FeatureStructure[] getArray() {
+ TOP[] a = new TOP[size()];
+ this.ofsa.copyToArray(a, 0);
+ return a;
+ }
+
// @Override
// protected int getModificationCountFromIndex() {
// return ofsa.getModificationCount();
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/FsIterator_subtypes_snapshot.java Tue Jul 17 21:22:38 2018
@@ -259,6 +259,12 @@ public class FsIterator_subtypes_snapsho
@Override
public Comparator<TOP> getComparator() {
return comparatorMaybeNoTypeWithoutId;
+ }
+
+
+ @Override
+ public FeatureStructure[] getArray() {
+ return snapshot;
}
-
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator.java Tue Jul 17 21:22:38 2018
@@ -25,7 +25,6 @@ import java.util.NoSuchElementException;
import org.apache.uima.UIMAFramework;
import org.apache.uima.cas.FSIterator;
import org.apache.uima.cas.FeatureStructure;
-import org.apache.uima.internal.util.Misc;
import org.apache.uima.jcas.cas.TOP;
/**
@@ -161,7 +160,7 @@ public interface LowLevelIterator<T exte
/**
* an empty iterator
*/
- static final LowLevelIterator<FeatureStructure> FS_ITERATOR_LOW_LEVEL_EMPTY = new LowLevelIterator_empty();
+ static final LowLevelIterator<FeatureStructure> FS_ITERATOR_LOW_LEVEL_EMPTY = new LowLevelIterator_empty<FeatureStructure>();
/**
* Internal use constants
@@ -172,4 +171,13 @@ public interface LowLevelIterator<T exte
* @return false if this iterator is over an unordered collection or set or bag
*/
default boolean isMoveToSupported() { return false; }
+
+ /**
+ * @return an array representing the collection of items the iterator would return
+ */
+ default FeatureStructure[] getArray() {
+ throw new UnsupportedOperationException();
+ }
+
+
}
Modified: uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java
URL: http://svn.apache.org/viewvc/uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java?rev=1836134&r1=1836133&r2=1836134&view=diff
==============================================================================
--- uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java (original)
+++ uima/uv3/uimaj-v3/trunk/uimaj-core/src/main/java/org/apache/uima/cas/impl/LowLevelIterator_empty.java Tue Jul 17 21:22:38 2018
@@ -29,6 +29,8 @@ import org.apache.uima.jcas.cas.TOP;
* An empty Low-level FS iterator
*/
public class LowLevelIterator_empty<T extends FeatureStructure> implements LowLevelIterator<T> {
+
+ private final static FeatureStructure[] EMPTY_ARRAY = new FeatureStructure[0];
@Override
public boolean isValid() { return false; }
@@ -59,4 +61,6 @@ public class LowLevelIterator_empty<T ex
public boolean maybeReinitIterator() { return false; }
@Override
public Comparator<TOP> getComparator() { return null; }
+ @Override
+ public FeatureStructure[] getArray() { return EMPTY_ARRAY; }
}