Author: schor Date: Mon Nov 2 12:19:46 2015 New Revision: 1711942 URL: http://svn.apache.org/viewvc?rev=1711942&view=rev Log: [UIMA-4663] update built-in JCas cover objects for v3
Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyStringList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ShortArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/Sofa.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringArray.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/StringList.java uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/TOP.java Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/BooleanArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.BooleanArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** JCas class model for BooleanArray */ -public final class BooleanArray extends TOP implements BooleanArrayFS { +public final class BooleanArray extends TOP implements CommonPrimitiveArray, BooleanArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover * class or class instance to the corresponding instance of the _Type class @@ -43,13 +45,14 @@ public final class BooleanArray extends return typeIndexID; } + /* local data */ + private final boolean[] theArray; + + // never called. Here to disable default constructor + @SuppressWarnings("unused") private BooleanArray() { - } - - /* Internal - Constructor used by generator */ - public BooleanArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -58,79 +61,79 @@ public final class BooleanArray extends * @param length of array */ public BooleanArray(JCas jcas, int length) { - this(jcas.getLowLevelCas().ll_createBooleanArray(length), jcas.getType(typeIndexID)); + super(jcas); + theArray = new boolean[length]; + } + + /** + * Called by generator + * @param c - + * @param t - + * @param l - + */ + public BooleanArray(TypeImpl t, CASImpl c, int l) { + super(t, c); + theArray = new boolean[l]; } /** * @see org.apache.uima.cas.BooleanArrayFS#get(int) */ public boolean get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getBooleanArrayValue(addr, i); + return theArray[i]; } /** * @see org.apache.uima.cas.BooleanArrayFS#set(int , boolean) */ public void set(int i, boolean v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setBooleanArrayValue(addr, i, v); + theArray[i] = v; + _casView.maybeLogArrayUpdate(this, null, i); } /** * @see org.apache.uima.cas.BooleanArrayFS#copyFromArray(boolean[], int, int, int) */ - public void copyFromArray(boolean[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setBooleanArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(boolean[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.BooleanArrayFS#copyToArray(int, boolean[], int, int) */ - public void copyToArray(int srcOffset, boolean[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getBooleanArrayValue(addr, i + srcOffset); - } + public void copyToArray(int srcPos, boolean[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.BooleanArrayFS#toArray() */ public boolean[] toArray() { - final int size = size(); - boolean[] outArray = new boolean[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** return the size of the array */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.BooleanArrayFS#copyToArray(int, String[], int, int) */ - public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Boolean.toString(jcasType.ll_cas.ll_getBooleanArrayValue(addr, i - + srcOffset)); + dest[i + destPos] = Boolean.toString(theArray[i + srcPos]); } } /** * @see org.apache.uima.cas.BooleanArrayFS#copyFromArray(String[], int, int, int) */ - public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setBooleanArrayValue(addr, i + destOffset, "true".equalsIgnoreCase(src[i - + srcOffset])); + theArray[i + destPos] = Boolean.parseBoolean(src[i + srcPos]); } } @@ -140,4 +143,14 @@ public final class BooleanArray extends copyToArray(0, strArray, 0, size); return strArray; } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + BooleanArray bv = (BooleanArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/ByteArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.ByteArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** JCas class model for ByteArray */ -public final class ByteArray extends TOP implements ByteArrayFS { +public final class ByteArray extends TOP implements CommonPrimitiveArray, ByteArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover * class or class instance to the corresponding instance of the _Type class @@ -43,13 +45,11 @@ public final class ByteArray extends TOP return typeIndexID; } + private final byte[] theArray; // never called. Here to disable default constructor + @SuppressWarnings("unused") private ByteArray() { - } - - /* Internal - Constructor used by generator */ - public ByteArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -58,79 +58,80 @@ public final class ByteArray extends TOP * @param length the length of the array in bytes */ public ByteArray(JCas jcas, int length) { - this(jcas.getLowLevelCas().ll_createByteArray(length), jcas.getType(typeIndexID)); + super(jcas); + theArray = new byte[length]; + } + + /** + * used by generator + * Make a new ByteArray of given size + * @param c - + * @param t - + * @param length the length of the array in bytes + */ + public ByteArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new byte[length]; } /** * @see org.apache.uima.cas.ByteArrayFS#get(int) */ public byte get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getByteArrayValue(addr, i); + return theArray[i]; } /** * @see org.apache.uima.cas.ByteArrayFS#set(int , byte) */ public void set(int i, byte v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setByteArrayValue(addr, i, v); + theArray[i] = v; + _casView.maybeLogArrayUpdate(this, null, i); } /** * @see org.apache.uima.cas.ByteArrayFS#copyFromArray(byte[], int, int, int) */ - public void copyFromArray(byte[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setByteArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(byte[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.ByteArrayFS#copyToArray(int, byte[], int, int) */ - public void copyToArray(int srcOffset, byte[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getByteArrayValue(addr, i + srcOffset); - } - } + public void copyToArray(int srcPos, byte[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); + } /** * @see org.apache.uima.cas.ByteArrayFS#toArray() */ public byte[] toArray() { - final int size = size(); - byte[] outArray = new byte[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** return the size of the array */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.ByteArrayFS#copyToArray(int, String[], int, int) */ - public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Byte.toString(jcasType.ll_cas - .ll_getByteArrayValue(addr, i + srcOffset)); + dest[i + destPos] = Byte.toString(theArray[i + srcPos]); } } /** * @see org.apache.uima.cas.ByteArrayFS#copyFromArray(String[], int, int, int) */ - public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, destPos, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas - .ll_setByteArrayValue(addr, i + destOffset, Byte.parseByte(src[i + srcOffset])); + theArray[i + destPos] = Byte.parseByte(src[i + srcPos]); } } @@ -140,4 +141,19 @@ public final class ByteArray extends TOP copyToArray(0, strArray, 0, size); return strArray; } + + // internal use + public byte[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + ByteArray bv = (ByteArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/DoubleArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.DoubleArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** JCas class model for DoubleArray */ -public final class DoubleArray extends TOP implements DoubleArrayFS { +public final class DoubleArray extends TOP implements CommonPrimitiveArray, DoubleArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover * class or class instance to the corresponding instance of the _Type class @@ -43,13 +45,12 @@ public final class DoubleArray extends T return typeIndexID; } + private final double[] theArray; + // never called. Here to disable default constructor + @SuppressWarnings("unused") private DoubleArray() { - } - - /* Internal - Constructor used by generator */ - public DoubleArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -58,79 +59,80 @@ public final class DoubleArray extends T * @param length the length of the array */ public DoubleArray(JCas jcas, int length) { - this(jcas.getLowLevelCas().ll_createDoubleArray(length), jcas.getType(typeIndexID)); + super(jcas); + theArray = new double[length]; + } + + /** + * used by generator + * Make a new DoubleArray of given size + * @param c - + * @param t - + * @param length the length of the array in bytes + */ + public DoubleArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new double[length]; } /** * @see org.apache.uima.cas.DoubleArrayFS#get(int) */ public double get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getDoubleArrayValue(addr, i); + return theArray[i]; } /** * @see org.apache.uima.cas.DoubleArrayFS#set(int , double) */ public void set(int i, double v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setDoubleArrayValue(addr, i, v); + theArray[i] = v; + _casView.maybeLogArrayUpdate(this, null, i); } /** * @see org.apache.uima.cas.DoubleArrayFS#copyFromArray(double[], int, int, int) */ - public void copyFromArray(double[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setDoubleArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(double[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.DoubleArrayFS#copyToArray(int, double[], int, int) */ - public void copyToArray(int srcOffset, double[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getDoubleArrayValue(addr, i + srcOffset); - } + public void copyToArray(int srcPos, double[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.DoubleArrayFS#toArray() */ public double[] toArray() { - final int size = size(); - double[] outArray = new double[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** return the size of the array */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.DoubleArrayFS#copyToArray(int, String[], int, int) */ - public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Double.toString(jcasType.ll_cas.ll_getDoubleArrayValue(addr, i - + srcOffset)); + dest[i + destPos] = Double.toString(theArray[i + srcPos]); } } /** * @see org.apache.uima.cas.DoubleArrayFS#copyFromArray(String[], int, int, int) */ - public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, destPos, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setDoubleArrayValue(addr, i + destOffset, Double.parseDouble(src[i - + srcOffset])); + theArray[i + destPos] = Double.parseDouble(src[i + srcPos]); } } @@ -140,4 +142,19 @@ public final class DoubleArray extends T copyToArray(0, strArray, 0, size); return strArray; } + + // internal use + public double[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + DoubleArray bv = (DoubleArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFSList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,12 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class EmptyFSList extends FSList { +public class EmptyFSList extends FSList implements EmptyList { public final static int typeIndexID = JCasRegistry.register(EmptyFSList.class); @@ -32,17 +34,26 @@ public class EmptyFSList extends FSList return typeIndexID; } + public final static EmptyFSList singleton = new EmptyFSList(); + // Never called. Disable default constructor protected EmptyFSList() { } - /* Internal - Constructor used by generator */ - public EmptyFSList(int addr, TOP_Type type) { - super(addr, type); - } - public EmptyFSList(JCas jcas) { super(jcas); } + + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public EmptyFSList(TypeImpl t, CASImpl c) { + super(t, c); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyFloatList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,12 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class EmptyFloatList extends FloatList { +public class EmptyFloatList extends FloatList implements EmptyList { public final static int typeIndexID = JCasRegistry.register(EmptyFloatList.class); @@ -32,17 +34,25 @@ public class EmptyFloatList extends Floa return typeIndexID; } + public final static EmptyFloatList singleton = new EmptyFloatList(); + // Never called. Disable default constructor protected EmptyFloatList() { } - /* Internal - Constructor used by generator */ - public EmptyFloatList(int addr, TOP_Type type) { - super(addr, type); - } - public EmptyFloatList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public EmptyFloatList(TypeImpl t, CASImpl c) { + super(t, c); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyIntegerList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,12 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class EmptyIntegerList extends IntegerList { +public class EmptyIntegerList extends IntegerList implements EmptyList { public final static int typeIndexID = JCasRegistry.register(EmptyIntegerList.class); @@ -32,17 +34,25 @@ public class EmptyIntegerList extends In return typeIndexID; } + public final static EmptyIntegerList singleton = new EmptyIntegerList(); + // Never called. Disable default constructor protected EmptyIntegerList() { } - /* Internal - Constructor used by generator */ - public EmptyIntegerList(int addr, TOP_Type type) { - super(addr, type); - } - public EmptyIntegerList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public EmptyIntegerList(TypeImpl t, CASImpl c) { + super(t, c); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/EmptyStringList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,12 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class EmptyStringList extends StringList { +public class EmptyStringList extends StringList implements EmptyList { public final static int typeIndexID = JCasRegistry.register(EmptyStringList.class); @@ -31,18 +33,26 @@ public class EmptyStringList extends Str public int getTypeIndexID() { return typeIndexID; } + + public final static EmptyStringList singleton = new EmptyStringList(); // Never called. Disable default constructor protected EmptyStringList() { } - /* Internal - Constructor used by generator */ - public EmptyStringList(int addr, TOP_Type type) { - super(addr, type); - } - public EmptyStringList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public EmptyStringList(TypeImpl t, CASImpl c) { + super(t, c); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSArray.java Mon Nov 2 12:19:46 2015 @@ -22,12 +22,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.ArrayFS; import org.apache.uima.cas.FeatureStructure; import org.apache.uima.cas.impl.CASImpl; -import org.apache.uima.cas.impl.LowLevelCAS; +import org.apache.uima.cas.impl.FeatureStructureImplC; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** Java Class model for Cas FSArray type */ -public final class FSArray extends TOP implements ArrayFS { +public final class FSArray extends TOP implements CommonArray, ArrayFS { /** * each cover class when loaded sets an index. used in the JCas typeArray to go from the cover @@ -47,13 +48,12 @@ public final class FSArray extends TOP i return typeIndexID; } + private final FeatureStructureImplC[] theArray; + // never called. Here to disable default constructor + @SuppressWarnings("unused") private FSArray() { - } - - /* Internal - Constructor used by generator */ - public FSArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -62,106 +62,90 @@ public final class FSArray extends TOP i * @param length The number of elements in the new array */ public FSArray(JCas jcas, int length) { - this( - /* addr */jcas.getLowLevelCas().ll_createArray(jcas.getType(typeIndexID).casTypeCode, length), - /* type */jcas.getType(typeIndexID)); - - // at this point we can use the jcasType value, as it is set - // can't do this earlier as the very first statement is required by - // JAVA to be the super or alternate constructor call - jcasType.casImpl.checkArrayPreconditions(length); - } - - // /** create a new FSArray of a given size. - // * - // * @param jcas - // * @param length - // */ - // - // public FSArray create(JCas jcas, int length){ - // return new FSArray(jcas, length); - // } + super(jcas); + _casView.validateArraySize(length); + theArray = new FeatureStructureImplC[length]; + } + + /** + * used by generator + * Make a new FSArray of given size + * @param c - + * @param t - + * @param length the length of the array + */ + public FSArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + _casView.validateArraySize(length); + theArray = new FeatureStructureImplC[length]; + } + /** return the indexed value from the corresponding Cas FSArray as a Java Model object. */ public FeatureStructure get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - final LowLevelCAS ll_cas = jcasType.ll_cas; - return ll_cas.ll_getFSForRef(ll_cas.ll_getRefArrayValue(addr, i)); + return theArray[i]; } /** updates the Cas, setting the indexed value with the corresponding Cas FeatureStructure. */ public void set(int i, FeatureStructure v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setRefArrayValue(addr, i, jcasType.ll_cas.ll_getFSRef(v)); + theArray[i] = (FeatureStructureImplC) v; } /** return the size of the array. */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.ArrayFS#copyFromArray(FeatureStructure[], int, int, int) */ - public void copyFromArray(FeatureStructure[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setRefArrayValue(addr, i + destOffset, jcasType.ll_cas.ll_getFSRef(src[i - + srcOffset])); - } + public void copyFromArray(FeatureStructure[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.ArrayFS#copyToArray(int, FeatureStructure[], int, int) */ - public void copyToArray(int srcOffset, FeatureStructure[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefArrayValue( - addr, i + srcOffset)); - } + public void copyToArray(int srcPos, FeatureStructure[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.ArrayFS#toArray() */ public FeatureStructure[] toArray() { - final int size = size(); - FeatureStructure[] outArray = new FeatureStructure[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** * Not supported, will throw UnsupportedOperationException */ - public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { throw new UnsupportedOperationException(); } /** * Copies an array of Feature Structures to an Array of Strings. * The strings are the "toString()" representation of the feature structures, - * which are probably something that looks like FeatureStructure@123456 * - * @param srcOffset + * @param srcPos * The index of the first element to copy. * @param dest * The array to copy to. - * @param destOffset + * @param destPos * Where to start copying into <code>dest</code>. * @param length * The number of elements to copy. * @exception ArrayIndexOutOfBoundsException - * If <code>srcOffset < 0</code> or + * If <code>srcPos < 0</code> or * <code>length > size()</code> or - * <code>destOffset + length > destArray.length</code>. + * <code>destPos + length > destArray.length</code>. */ - public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - CASImpl ll = jcasType.casImpl; - ll.checkArrayBounds(addr, srcOffset, length); + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = ll.ll_getFSForRef(ll.ll_getRefArrayValue(this.addr, i + srcOffset)).toString(); + FeatureStructureImplC fs = theArray[i + srcPos]; + dest[i + destPos] = (fs == null) ? null : fs.toString(); } } @@ -172,4 +156,18 @@ public final class FSArray extends TOP i return strArray; } + // internal use + public FeatureStructureImplC[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + FSArray bv = (FSArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FSList.java Mon Nov 2 12:19:46 2015 @@ -20,55 +20,70 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -import org.apache.uima.jcas.JCasRegistry; -public class FSList extends org.apache.uima.jcas.cas.TOP { - - public final static int typeIndexID = JCasRegistry.register(FSList.class); - - public final static int type = typeIndexID; - - public int getTypeIndexID() { - return typeIndexID; - } +public abstract class FSList extends CommonList { // Never called. protected FSList() {// Disable default constructor } - /* Internal - Constructor used by generator */ - public FSList(int addr, TOP_Type type) { - super(addr, type); - } - public FSList(JCas jcas) { super(jcas); } - public TOP getNthElement(int i) { - if (this instanceof EmptyFSList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, new String[] { "EmptyFSList" }); - throw casEx; - } - if (i < 0) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_NEGATIVE_INDEX, new String[] { Integer.toString(i) }); - throw casEx; - } - int originali = i; - FSList cg = this; - for (;; i--) { - if (cg instanceof EmptyFSList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_PAST_END, new String[] { Integer.toString(originali) }); - throw casEx; - } - NonEmptyFSList c = (NonEmptyFSList) cg; - if (i == 0) - return c.getHead(); - cg = c.getTail(); - } - } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public FSList(TypeImpl t, CASImpl c) { + super(t, c); + } + + public NonEmptyFSList createNonEmptyNode(CommonList tail) { + NonEmptyFSList node = new NonEmptyFSList(this._typeImpl, this._casView); + node.setTail((FSList) tail); + return node; + } + + public NonEmptyFSList createNonEmptyNode() { return createNonEmptyNode(null); } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode() + */ + @Override + public EmptyFSList getEmptyNode() { + return EmptyFSList.singleton; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#get_headAsString() + */ + @Override + public String get_headAsString() { + throw new CASRuntimeException(); // not yet impl +// return ((NonEmptyFSList)this).getHead().toString(); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getTail() + */ + @Override + public CommonList getTail() { + return ((NonEmptyFSList)this).getTail(); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) + */ + @Override + public void setTail(CommonList v) { + ((NonEmptyFSList)this).setTail(v); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.FloatArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** Java Cas model for Cas FloatArray. */ -public final class FloatArray extends TOP implements FloatArrayFS { +public final class FloatArray extends TOP implements CommonPrimitiveArray, FloatArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover @@ -43,17 +45,11 @@ public final class FloatArray extends TO public int getTypeIndexID() { return typeIndexID; } + + private final float[] theArray; private FloatArray() { // never called. Here to disable default constructor - } - - // * There are n creation actions - // * 1 - create via factory.create() a new one - // * 2 - iterator or dereferencing calling generator to create - - /* Internal - Constructor used by generator */ - public FloatArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -62,17 +58,22 @@ public final class FloatArray extends TO * @param length the size of the array */ public FloatArray(JCas jcas, int length) { - this( - /* addr */ - jcas.getLowLevelCas().ll_createArray(jcas.getType(typeIndexID).casTypeCode, length), - /* type */ - jcas.getType(typeIndexID)); - - // at this point we can use the jcasType value, as it is set - // can't do this earlier as the very first statement is required by - // JAVA to be the super or alternate constructor call - jcasType.casImpl.checkArrayPreconditions(length); + super(jcas); + theArray = new float[length]; } + + /** + * used by generator + * Make a new FloatArray of given size + * @param c - + * @param t - + * @param length the length of the array in bytes + */ + public FloatArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new float[length]; + } + // /** // * create a new FloatArray of a given size. @@ -89,8 +90,7 @@ public final class FloatArray extends TO * return the indexed value from the corresponding Cas FloatArray as a float, */ public float get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getFloatArrayValue(addr, i); + return theArray[i]; } /** @@ -102,38 +102,28 @@ public final class FloatArray extends TO * value to set */ public void set(int i, float v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setFloatArrayValue(addr, i, v); + theArray[i] = v; } /** * @see org.apache.uima.cas.FloatArrayFS#copyFromArray(float[], int, int, int) */ - public void copyFromArray(float[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setFloatArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(float[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.FloatArrayFS#copyToArray(int, float[], int, int) */ - public void copyToArray(int srcOffset, float[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getFloatArrayValue(addr, i + srcOffset); - } + public void copyToArray(int srcPos, float[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.ArrayFS#toArray() */ public float[] toArray() { - final int size = size(); - float[] outArray = new float[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** @@ -143,17 +133,16 @@ public final class FloatArray extends TO */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.FloatArrayFS#copyToArray(int, String[], int, int) */ public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + _casView.checkArrayBounds(theArray.length, srcOffset, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Float.toString(jcasType.ll_cas.ll_getFloatArrayValue(addr, i - + srcOffset)); + dest[i + destOffset] = Float.toString(theArray[i + srcOffset]); } } @@ -161,10 +150,9 @@ public final class FloatArray extends TO * @see org.apache.uima.cas.FloatArrayFS#copyFromArray(String[], int, int, int) */ public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + _casView.checkArrayBounds(theArray.length, destOffset, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setFloatArrayValue(addr, i + destOffset, Float.parseFloat(src[i - + srcOffset])); + theArray[i + destOffset] = Float.parseFloat(src[i + srcOffset]); } } @@ -177,4 +165,19 @@ public final class FloatArray extends TO copyToArray(0, strArray, 0, size); return strArray; } + + // internal use only + public float[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + FloatArray bv = (FloatArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/FloatList.java Mon Nov 2 12:19:46 2015 @@ -19,57 +19,74 @@ package org.apache.uima.jcas.cas; -import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -import org.apache.uima.jcas.JCasRegistry; -public class FloatList extends org.apache.uima.jcas.cas.TOP { - - public final static int typeIndexID = JCasRegistry.register(FloatList.class); - - public final static int type = typeIndexID; - - public int getTypeIndexID() { - return typeIndexID; - } +public abstract class FloatList extends CommonList { // Never called. protected FloatList() {// Disable default constructor } - /* Internal - Constructor used by generator */ - public FloatList(int addr, TOP_Type type) { - super(addr, type); - } - public FloatList(JCas jcas) { super(jcas); } - public float getNthElement(int i) { - if (this instanceof EmptyFloatList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, new String[] { "EmptyFloatList" }); - throw casEx; - } - if (i < 0) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_NEGATIVE_INDEX, new String[] {Integer.toString(i)}); - throw casEx; - } - int originali = i; - - FloatList cg = this; - for (;; i--) { - if (cg instanceof EmptyFloatList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_PAST_END, new String[] {Integer.toString(originali)}); - throw casEx; - } - NonEmptyFloatList c = (NonEmptyFloatList) cg; - if (i == 0) - return c.getHead(); - cg = c.getTail(); - } - } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public FloatList(TypeImpl t, CASImpl c) { + super(t, c); + } + + public float getNthElement(int i) { + return ((NonEmptyFloatList) getNonEmptyNthNode(i)).getHead(); + } + + public NonEmptyFloatList createNonEmptyNode(CommonList tail) { + NonEmptyFloatList node = new NonEmptyFloatList(this._typeImpl, this._casView); + node.setTail((FloatList) tail); + return node; + } + + public NonEmptyFloatList createNonEmptyNode() { return createNonEmptyNode(null); } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode() + */ + @Override + public EmptyFloatList getEmptyNode() { + return EmptyFloatList.singleton; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#get_headAsString() + */ + @Override + public String get_headAsString() { + return Float.toString(((NonEmptyFloatList)this).getHead()); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getTail() + */ + @Override + public CommonList getTail() { + return ((NonEmptyFloatList)this).getTail(); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) + */ + @Override + public void setTail(CommonList v) { + ((NonEmptyFloatList)this).setTail(v); // value cast is for checking + + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.IntArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** The Java Class model corresponding to the Cas IntegerArray_JCasImpl type. */ -public final class IntegerArray extends TOP implements IntArrayFS { +public final class IntegerArray extends TOP implements CommonPrimitiveArray, IntArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover * class or class instance to the corresponding instance of the _Type class @@ -42,13 +44,12 @@ public final class IntegerArray extends public int getTypeIndexID() { return typeIndexID; } + + private final int[] theArray; + @SuppressWarnings("unused") private IntegerArray() { // never called. Here to disable default constructor - } - - /* Internal - Constructor used by generator */ - public IntegerArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -57,86 +58,71 @@ public final class IntegerArray extends * @param length The number of elements in the new array */ public IntegerArray(JCas jcas, int length) { - this( - /* addr */jcas.getLowLevelCas().ll_createArray(jcas.getType(typeIndexID).casTypeCode, length), - /* type */jcas.getType(typeIndexID)); - // at this point we can use the jcasType value, as it is set - // can't do this earlier as the very first statement is required by - // JAVA to be the super or alternate constructor call - jcasType.casImpl.checkArrayPreconditions(length); - } - - // /** - // * create a new IntegerArray of a given size. - // * - // * @param jcas - // * @param length - // */ - // - // public IntegerArray create(JCas jcas, int length) { - // return new IntegerArray(jcas, length); - // } + super(jcas); + theArray = new int[length]; + } + + /** + * used by generator + * Make a new IntegerArray of given size + * @param c - + * @param t - + * @param length the length of the array in bytes + */ + public IntegerArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new int[length]; + } /** * return the indexed value from the corresponding Cas IntegerArray_JCasImpl as an int. */ public int get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getIntArrayValue(addr, i); + return theArray[i]; } /** * update the Cas, setting the indexed value to the passed in Java int value. */ public void set(int i, int v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setIntArrayValue(addr, i, v); + theArray[i] = v; + _casView.maybeLogArrayUpdate(this, null, i); } /** * @see org.apache.uima.cas.IntArrayFS#copyFromArray(int[], int, int, int) * */ - public void copyFromArray(int[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setIntArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(int[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.IntArrayFS#copyToArray(int, int[], int, int) */ - public void copyToArray(int srcOffset, int[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getIntArrayValue(addr, i + srcOffset); - } + public void copyToArray(int srcPos, int[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.IntArrayFS#toArray() */ public int[] toArray() { - final int size = size(); - int[] outArray = new int[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** return the size of the array */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.IntArrayFS#copyToArray(int, String[], int, int) */ public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + _casView.checkArrayBounds(theArray.length, srcOffset, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Integer.toString(jcasType.ll_cas.ll_getIntArrayValue(addr, i - + srcOffset)); + dest[i + destOffset] = Integer.toString(theArray[i + srcOffset]); } } @@ -144,10 +130,9 @@ public final class IntegerArray extends * @see org.apache.uima.cas.IntArrayFS#copyFromArray(String[], int, int, int) */ public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + _casView.checkArrayBounds(theArray.length, srcOffset, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setIntArrayValue(addr, i + destOffset, Integer - .parseInt(src[i + srcOffset])); + theArray[i + destOffset] = Integer.parseInt(src[i + srcOffset]); } } @@ -160,4 +145,19 @@ public final class IntegerArray extends copyToArray(0, strArray, 0, size); return strArray; } + + // internal use only + public int[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + IntegerArray bv = (IntegerArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/IntegerList.java Mon Nov 2 12:19:46 2015 @@ -19,56 +19,74 @@ package org.apache.uima.jcas.cas; -import org.apache.uima.cas.CASRuntimeException; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; -import org.apache.uima.jcas.JCasRegistry; -public class IntegerList extends org.apache.uima.jcas.cas.TOP { - - public final static int typeIndexID = JCasRegistry.register(IntegerList.class); - - public final static int type = typeIndexID; - - public int getTypeIndexID() { - return typeIndexID; - } +public abstract class IntegerList extends CommonList { // Never called. protected IntegerList() { // Disable default constructor } - /* Internal - Constructor used by generator */ - public IntegerList(int addr, TOP_Type type) { - super(addr, type); - } - public IntegerList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public IntegerList(TypeImpl t, CASImpl c) { + super(t, c); + } + public int getNthElement(int i) { - if (this instanceof EmptyIntegerList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_ON_EMPTY_LIST, new String[] { "EmptyIntegerList" }); - throw casEx; - } - if (i < 0) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_NEGATIVE_INDEX, new String[] { Integer.toString(i) }); - throw casEx; - } - int originali = i; - IntegerList cg = this; - for (;; i--) { - if (cg instanceof EmptyIntegerList) { - CASRuntimeException casEx = new CASRuntimeException( - CASRuntimeException.JCAS_GET_NTH_PAST_END, new String[] { Integer.toString(originali) }); - throw casEx; - } - NonEmptyIntegerList c = (NonEmptyIntegerList) cg; - if (i == 0) - return c.getHead(); - cg = c.getTail(); - } + return ((NonEmptyIntegerList) getNonEmptyNthNode(i)).getHead(); } + + public NonEmptyIntegerList createNonEmptyNode(CommonList tail) { + NonEmptyIntegerList node = new NonEmptyIntegerList(this._typeImpl, this._casView); + node.setTail((IntegerList) tail); + return node; + } + + public NonEmptyIntegerList createNonEmptyNode() { return createNonEmptyNode(null); } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getEmptyNode() + */ + @Override + public EmptyIntegerList getEmptyNode() { + return EmptyIntegerList.singleton; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#get_headAsString() + */ + @Override + public String get_headAsString() { + return Integer.toString(((NonEmptyIntegerList)this).getHead()); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#getTail() + */ + @Override + public CommonList getTail() { + return ((NonEmptyIntegerList)this).getTail(); + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonList#setTail(org.apache.uima.jcas.cas.CommonList) + */ + @Override + public void setTail(CommonList v) { + ((NonEmptyIntegerList)this).setTail(v); + } + + } Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java?rev=1711942&view=auto ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/JavaObjectArray.java Mon Nov 2 12:19:46 2015 @@ -0,0 +1,169 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.uima.jcas.cas; + +import org.apache.uima.cas.FeatureStructure; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.FeatureStructureImplC; +import org.apache.uima.cas.impl.TypeImpl; +import org.apache.uima.jcas.JCas; +import org.apache.uima.jcas.JCasRegistry; + +/** Java Class model for Cas FSArray type */ +public final class JavaObjectArray extends TOP implements CommonPrimitiveArray { + + /** + * each cover class when loaded sets an index. used in the JCas typeArray to go from the cover + * class or class instance to the corresponding instance of the _Type class + */ + public final static int typeIndexID = JCasRegistry.register(JavaObjectArray.class); + + public final static int type = typeIndexID; + + /** + * used to obtain reference to the _Type instance + * + * @return the type array index + */ + // can't be factored - refs locally defined field + public int getTypeIndexID() { + return typeIndexID; + } + + private final Object[] theArray; + + // never called. Here to disable default constructor + @SuppressWarnings("unused") + private JavaObjectArray() { + theArray = null; + } + + /** + * Make a new FSArray of given size + * @param jcas The JCas + * @param length The number of elements in the new array + */ + public JavaObjectArray(JCas jcas, int length) { + super(jcas); + theArray = new Object[length]; + } + + /** + * used by generator + * Make a new FSArray of given size + * @param c - + * @param t - + * @param length the length of the array + */ + public JavaObjectArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new Object[length]; + } + + + /** return the indexed value from the corresponding Cas FSArray as a Java Model object. */ + public Object get(int i) { + return theArray[i]; + } + + /** updates the Cas, setting the indexed value with the corresponding Cas FeatureStructure. */ + public void set(int i, FeatureStructure v) { + theArray[i] = (FeatureStructureImplC) v; + } + + /** return the size of the array. */ + public int size() { + return theArray.length; + } + + /** + * @see org.apache.uima.cas.ArrayFS#copyFromArray(FeatureStructure[], int, int, int) + */ + public void copyFromArray(FeatureStructure[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); + } + + /** + * @see org.apache.uima.cas.ArrayFS#copyToArray(int, FeatureStructure[], int, int) + */ + public void copyToArray(int srcPos, FeatureStructure[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); + } + + /** + * @see org.apache.uima.cas.ArrayFS#toArray() + */ + public Object[] toArray() { + return theArray.clone(); + } + + /** + * Not supported, will throw UnsupportedOperationException + */ + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { + throw new UnsupportedOperationException(); + } + + /** + * Copies an array of Feature Structures to an Array of Strings. + * The strings are the "toString()" representation of the feature structures, + * + * @param srcPos + * The index of the first element to copy. + * @param dest + * The array to copy to. + * @param destPos + * Where to start copying into <code>dest</code>. + * @param length + * The number of elements to copy. + * @exception ArrayIndexOutOfBoundsException + * If <code>srcPos < 0</code> or + * <code>length > size()</code> or + * <code>destPos + length > destArray.length</code>. + */ + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); + for (int i = 0; i < length; i++) { + dest[i + destPos] = theArray[i + srcPos].toString(); + } + } + + public String[] toStringArray() { + final int size = size(); + String[] strArray = new String[size]; + copyToArray(0, strArray, 0, size); + return strArray; + } + + // internal use + public Object[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + JavaObjectArray bv = (JavaObjectArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + +} Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/LongArray.java Mon Nov 2 12:19:46 2015 @@ -20,11 +20,13 @@ package org.apache.uima.jcas.cas; import org.apache.uima.cas.LongArrayFS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; /** JCas class model for LongArray */ -public final class LongArray extends TOP implements LongArrayFS { +public final class LongArray extends TOP implements CommonPrimitiveArray, LongArrayFS { /** * Each cover class when loaded sets an index. Used in the JCas typeArray to go from the cover * class or class instance to the corresponding instance of the _Type class @@ -43,13 +45,11 @@ public final class LongArray extends TOP return typeIndexID; } + private final long[] theArray; // never called. Here to disable default constructor + @SuppressWarnings("unused") private LongArray() { - } - - /* Internal - Constructor used by generator */ - public LongArray(int addr, TOP_Type type) { - super(addr, type); + theArray = null; } /** @@ -58,79 +58,80 @@ public final class LongArray extends TOP * @param length The number of elements in the new array */ public LongArray(JCas jcas, int length) { - this(jcas.getLowLevelCas().ll_createLongArray(length), jcas.getType(typeIndexID)); + super(jcas); + theArray = new long[length]; } /** + * used by generator + * Make a new LongArray of given size + * @param c - + * @param t - + * @param length the length of the array in bytes + */ + public LongArray(TypeImpl t, CASImpl c, int length) { + super(t, c); + theArray = new long[length]; + } + + /** * @see org.apache.uima.cas.LongArrayFS#get(int) */ public long get(int i) { - jcasType.casImpl.checkArrayBounds(addr, i); - return jcasType.ll_cas.ll_getLongArrayValue(addr, i); + return theArray[i]; } /** * @see org.apache.uima.cas.LongArrayFS#set(int , long) */ public void set(int i, long v) { - jcasType.casImpl.checkArrayBounds(addr, i); - jcasType.ll_cas.ll_setLongArrayValue(addr, i, v); + theArray[i] = v; + _casView.maybeLogArrayUpdate(this, null, i); } /** * @see org.apache.uima.cas.LongArrayFS#copyFromArray(long[], int, int, int) */ - public void copyFromArray(long[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); - for (int i = 0; i < length; i++) { - jcasType.ll_cas.ll_setLongArrayValue(addr, i + destOffset, src[i + srcOffset]); - } + public void copyFromArray(long[] src, int srcPos, int destPos, int length) { + System.arraycopy(src, srcPos, theArray, destPos, length); } /** * @see org.apache.uima.cas.LongArrayFS#copyToArray(int, long[], int, int) */ - public void copyToArray(int srcOffset, long[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); - for (int i = 0; i < length; i++) { - dest[i + destOffset] = jcasType.ll_cas.ll_getLongArrayValue(addr, i + srcOffset); - } + public void copyToArray(int srcPos, long[] dest, int destPos, int length) { + System.arraycopy(theArray, srcPos, dest, destPos, length); } /** * @see org.apache.uima.cas.LongArrayFS#toArray() */ public long[] toArray() { - final int size = size(); - long[] outArray = new long[size]; - copyToArray(0, outArray, 0, size); - return outArray; + return theArray.clone(); } /** return the size of the array */ public int size() { - return jcasType.casImpl.ll_getArraySize(addr); + return theArray.length; } /** * @see org.apache.uima.cas.LongArrayFS#copyToArray(int, String[], int, int) */ - public void copyToArray(int srcOffset, String[] dest, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, srcOffset, length); + public void copyToArray(int srcPos, String[] dest, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, srcPos, length); for (int i = 0; i < length; i++) { - dest[i + destOffset] = Long.toString(jcasType.ll_cas - .ll_getLongArrayValue(addr, i + srcOffset)); + dest[i + destPos] = Long.toString(theArray[i + srcPos]); } } /** * @see org.apache.uima.cas.LongArrayFS#copyFromArray(String[], int, int, int) */ - public void copyFromArray(String[] src, int srcOffset, int destOffset, int length) { - jcasType.casImpl.checkArrayBounds(addr, destOffset, length); + public void copyFromArray(String[] src, int srcPos, int destPos, int length) { + _casView.checkArrayBounds(theArray.length, destPos, length); for (int i = 0; i < length; i++) { - jcasType.ll_cas - .ll_setLongArrayValue(addr, i + destOffset, Long.parseLong(src[i + srcOffset])); + theArray[i + destPos] = Long.parseLong(src[i + srcPos]); } } @@ -140,4 +141,19 @@ public final class LongArray extends TOP copyToArray(0, strArray, 0, size); return strArray; } + + // internal use + public long[] _getTheArray() { + return theArray; + } + + /* (non-Javadoc) + * @see org.apache.uima.jcas.cas.CommonArray#copyValuesFrom(org.apache.uima.jcas.cas.CommonArray) + */ + @Override + public void copyValuesFrom(CommonArray v) { + LongArray bv = (LongArray) v; + System.arraycopy(bv.theArray, 0, theArray, 0, theArray.length); + } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFSList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,14 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class NonEmptyFSList extends FSList { +public class NonEmptyFSList extends FSList implements NonEmptyList { public final static int typeIndexID = JCasRegistry.register(NonEmptyFSList.class); @@ -32,52 +36,69 @@ public class NonEmptyFSList extends FSLi return typeIndexID; } + // Offsets to use in accessing features + // For built-ins, these are static constants + + private final static int head_featCode; + private final static int tail_featCode; + + static { + TypeSystemImpl tsi = TypeSystemImpl.staticTsi; + TypeImpl listType = tsi.getType(CAS.TYPE_NAME_NON_EMPTY_FS_LIST); + + // makes assumption that all uima lists have the same head/tail offsets + head_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_HEAD).getCode(); + tail_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_TAIL).getCode(); + } + + /* local data */ + private TOP _F_head; + private FSList _F_tail; + // Never called. Disable default constructor protected NonEmptyFSList() { } - /* Internal - Constructor used by generator */ - public NonEmptyFSList(int addr, TOP_Type type) { - super(addr, type); - } - public NonEmptyFSList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public NonEmptyFSList(TypeImpl t, CASImpl c) { + super(t, c); + } + // *------------------* // * Feature: head /* getter for head * */ - public org.apache.uima.jcas.cas.TOP getHead() { - if (NonEmptyFSList_Type.featOkTst && ((NonEmptyFSList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyFSList"); - return (org.apache.uima.jcas.cas.TOP) (jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas - .ll_getRefValue(addr, ((NonEmptyFSList_Type) jcasType).casFeatCode_head))); - } + public TOP getHead() { return _F_head; } /* setter for head * */ - public void setHead(org.apache.uima.jcas.cas.TOP v) { - if (NonEmptyFSList_Type.featOkTst && ((NonEmptyFSList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyFSList"); - jcasType.ll_cas.ll_setRefValue(addr, ((NonEmptyFSList_Type) jcasType).casFeatCode_head, - jcasType.ll_cas.ll_getFSRef(v)); + public void setHead(TOP v) { + _F_head = v; + // no corruption check - can't be a key + _casView.maybeLogUpdate(this, head_featCode); } // *------------------* // * Feature: tail /* getter for tail * */ - public FSList getTail() { - if (NonEmptyFSList_Type.featOkTst && ((NonEmptyFSList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyFSList"); - return (FSList) (jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr, - ((NonEmptyFSList_Type) jcasType).casFeatCode_tail))); - } + public FSList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(FSList v) { - if (NonEmptyFSList_Type.featOkTst && ((NonEmptyFSList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyFSList"); - jcasType.ll_cas.ll_setRefValue(addr, ((NonEmptyFSList_Type) jcasType).casFeatCode_tail, - jcasType.ll_cas.ll_getFSRef(v)); + public void setTail(CommonList v) { + _F_tail = (FSList) v; + // no corruption check - can't be a key + _casView.maybeLogUpdate(this, tail_featCode); + } + + public TOP getNthElement(int i) { + return ((NonEmptyFSList)getNonEmptyNthNode(i)).getHead(); } } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyFloatList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,14 @@ package org.apache.uima.jcas.cas; +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class NonEmptyFloatList extends FloatList { +public class NonEmptyFloatList extends FloatList implements NonEmptyList { public final static int typeIndexID = JCasRegistry.register(NonEmptyFloatList.class); @@ -32,55 +36,67 @@ public class NonEmptyFloatList extends F return typeIndexID; } + // Offsets to use in accessing features + // For built-ins, these are static constants + + private final static int head_featCode; + private final static int tail_featCode; + + static { + TypeSystemImpl tsi = TypeSystemImpl.staticTsi; + TypeImpl listType = tsi.getType(CAS.TYPE_NAME_NON_EMPTY_FLOAT_LIST); + + // makes assumption that all uima lists have the same head/tail offsets + head_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_HEAD).getCode(); + tail_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_TAIL).getCode(); + } + + /* local data */ + private float _F_head; + private FloatList _F_tail; + // Never called. Disable default constructor protected NonEmptyFloatList() { } - /* Internal - Constructor used by generator */ - public NonEmptyFloatList(int addr, TOP_Type type) { - super(addr, type); - } - public NonEmptyFloatList(JCas jcas) { super(jcas); } + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public NonEmptyFloatList(TypeImpl t, CASImpl c) { + super(t, c); + } + // *------------------* // * Feature: head /* getter for head * */ - public float getHead() { - if (NonEmptyFloatList_Type.featOkTst - && ((NonEmptyFloatList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyFloatList"); - return jcasType.ll_cas.ll_getFloatValue(addr, - ((NonEmptyFloatList_Type) jcasType).casFeatCode_head); - } + public float getHead() { return _F_head; } /* setter for head * */ public void setHead(float v) { - if (NonEmptyFloatList_Type.featOkTst - && ((NonEmptyFloatList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyFloatList"); - jcasType.ll_cas.ll_setFloatValue(addr, ((NonEmptyFloatList_Type) jcasType).casFeatCode_head, v); + _F_head = v; + // no corruption check - a list element can't be a key + _casView.maybeLogUpdate(this, head_featCode); } // *------------------* // * Feature: tail /* getter for tail * */ - public FloatList getTail() { - if (NonEmptyFloatList_Type.featOkTst - && ((NonEmptyFloatList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyFloatList"); - return (FloatList) (jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr, - ((NonEmptyFloatList_Type) jcasType).casFeatCode_tail))); - } + public FloatList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(FloatList v) { - if (NonEmptyFloatList_Type.featOkTst - && ((NonEmptyFloatList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyFloatList"); - jcasType.ll_cas.ll_setRefValue(addr, ((NonEmptyFloatList_Type) jcasType).casFeatCode_tail, - jcasType.ll_cas.ll_getFSRef(v)); + @Override + public void setTail(CommonList v) { + _F_tail = (FloatList) v; + // no corruption check - can't be a key + _casView.maybeLogUpdate(this, tail_featCode); } + } Modified: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java?rev=1711942&r1=1711941&r2=1711942&view=diff ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java (original) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyIntegerList.java Mon Nov 2 12:19:46 2015 @@ -19,10 +19,16 @@ package org.apache.uima.jcas.cas; +import java.util.List; + +import org.apache.uima.cas.CAS; +import org.apache.uima.cas.impl.CASImpl; +import org.apache.uima.cas.impl.TypeImpl; +import org.apache.uima.cas.impl.TypeSystemImpl; import org.apache.uima.jcas.JCas; import org.apache.uima.jcas.JCasRegistry; -public class NonEmptyIntegerList extends IntegerList { +public class NonEmptyIntegerList extends IntegerList implements NonEmptyList { public final static int typeIndexID = JCasRegistry.register(NonEmptyIntegerList.class); @@ -31,56 +37,73 @@ public class NonEmptyIntegerList extends public int getTypeIndexID() { return typeIndexID; } - + + // Offsets to use in accessing features + // For built-ins, these are static constants + + private final static int head_featCode; + private final static int tail_featCode; + + static { + TypeSystemImpl tsi = TypeSystemImpl.staticTsi; + TypeImpl listType = tsi.getType(CAS.TYPE_NAME_NON_EMPTY_INTEGER_LIST); + + // makes assumption that all uima lists have the same head/tail offsets + head_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_HEAD).getCode(); + tail_featCode = listType.getFeatureByBaseName(CAS.FEATURE_BASE_NAME_TAIL).getCode(); + } + + /* local data */ + private int _F_head; + private IntegerList _F_tail; + // Never called. Disable default constructor protected NonEmptyIntegerList() { } - /* Internal - Constructor used by generator */ - public NonEmptyIntegerList(int addr, TOP_Type type) { - super(addr, type); - } - public NonEmptyIntegerList(JCas jcas) { super(jcas); } + + /** + * used by generator + * Make a new AnnotationBase + * @param c - + * @param t - + */ + + public NonEmptyIntegerList(TypeImpl t, CASImpl c) { + super(t, c); + } + // *------------------* // * Feature: head /* getter for head * */ - public int getHead() { - if (NonEmptyIntegerList_Type.featOkTst - && ((NonEmptyIntegerList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyIntegerList"); - return jcasType.ll_cas.ll_getIntValue(addr, - ((NonEmptyIntegerList_Type) jcasType).casFeatCode_head); - } + public int getHead() { return _F_head; } /* setter for head * */ public void setHead(int v) { - if (NonEmptyIntegerList_Type.featOkTst - && ((NonEmptyIntegerList_Type) jcasType).casFeat_head == null) - this.jcasType.jcas.throwFeatMissing("head", "uima.cas.NonEmptyIntegerList"); - jcasType.ll_cas.ll_setIntValue(addr, ((NonEmptyIntegerList_Type) jcasType).casFeatCode_head, v); + _F_head = v; + // no corruption check - can't be a key + _casView.maybeLogUpdate(this, head_featCode); } - + // *------------------* // * Feature: tail /* getter for tail * */ - public IntegerList getTail() { - if (NonEmptyIntegerList_Type.featOkTst - && ((NonEmptyIntegerList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyIntegerList"); - return (IntegerList) (jcasType.ll_cas.ll_getFSForRef(jcasType.ll_cas.ll_getRefValue(addr, - ((NonEmptyIntegerList_Type) jcasType).casFeatCode_tail))); - } + public IntegerList getTail() { return _F_tail; } /* setter for tail * */ - public void setTail(IntegerList v) { - if (NonEmptyIntegerList_Type.featOkTst - && ((NonEmptyIntegerList_Type) jcasType).casFeat_tail == null) - this.jcasType.jcas.throwFeatMissing("tail", "uima.cas.NonEmptyIntegerList"); - jcasType.ll_cas.ll_setRefValue(addr, ((NonEmptyIntegerList_Type) jcasType).casFeatCode_tail, - jcasType.ll_cas.ll_getFSRef(v)); + public void setTail(CommonList v) { + assert(v instanceof IntegerList); + _F_tail = (IntegerList) v; + // no corruption check - can't be a key + _casView.maybeLogUpdate(this, tail_featCode); + } + + public void setHead(List<String> stringValues, int i) { + setHead(Integer.parseInt(stringValues.get(i))); } + } Added: uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java URL: http://svn.apache.org/viewvc/uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java?rev=1711942&view=auto ============================================================================== --- uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java (added) +++ uima/uimaj/branches/experiment-v3-jcas/uimaj-core/src/main/java/org/apache/uima/jcas/cas/NonEmptyList.java Mon Nov 2 12:19:46 2015 @@ -0,0 +1,27 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.uima.jcas.cas; + +/** + * a marker interface for nonempty lists + */ +public interface NonEmptyList { + CommonList getTail(); +}