You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by bh...@apache.org on 2012/01/30 20:22:01 UTC
svn commit: r1237940 - in /uima/uimacpp/trunk/src: cas/arrayfs.cpp
cas/uima/arrayfs.hpp test/src/test_primitivetypes.cpp
Author: bhavani
Date: Mon Jan 30 19:22:00 2012
New Revision: 1237940
URL: http://svn.apache.org/viewvc?rev=1237940&view=rev
Log:
UIMA-2307 uiEnd represents number of elements.
Modified:
uima/uimacpp/trunk/src/cas/arrayfs.cpp
uima/uimacpp/trunk/src/cas/uima/arrayfs.hpp
uima/uimacpp/trunk/src/test/src/test_primitivetypes.cpp
Modified: uima/uimacpp/trunk/src/cas/arrayfs.cpp
URL: http://svn.apache.org/viewvc/uima/uimacpp/trunk/src/cas/arrayfs.cpp?rev=1237940&r1=1237939&r2=1237940&view=diff
==============================================================================
--- uima/uimacpp/trunk/src/cas/arrayfs.cpp (original)
+++ uima/uimacpp/trunk/src/cas/arrayfs.cpp Mon Jan 30 19:22:00 2012
@@ -170,11 +170,11 @@ namespace uima {
T* destArray,
size_t uiDestOffset) const {
checkValidity(UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
- checkArraySize(iv_tyFS, iv_cas->getHeap(), uiEnd - uiStart , UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
+ checkArraySize(iv_tyFS, iv_cas->getHeap(), uiEnd - uiStart - 1 , UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
uima::lowlevel::TyFSType typecode = iv_cas->getHeap()->getType(iv_tyFS);
- T result;
+
size_t srcOffset = uiStart;
- size_t numelements = uiEnd-uiStart+1;
+ size_t numelements = uiEnd-uiStart;
size_t destOffset = uiDestOffset;
if (typecode== uima::internal::gs_tyIntArrayType ||
@@ -205,10 +205,10 @@ namespace uima {
size_t uiEnd,
size_t uiOffset) {
checkValidity(UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
- checkArraySize(iv_tyFS, iv_cas->getHeap(), uiEnd - uiStart, UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
+ checkArraySize(iv_tyFS, iv_cas->getHeap(), uiEnd - uiStart - 1, UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
size_t srcOffset = uiStart;
- size_t numelements = uiEnd-uiStart+1;
+ size_t numelements = uiEnd-uiStart;
size_t destOffset = uiOffset;
checkArraySize(iv_tyFS, iv_cas->getHeap(), destOffset+numelements-1, UIMA_MSG_ID_EXCON_GETTING_FS_FROM_ARRAY);
uima::lowlevel::TyFSType typecode = iv_cas->getHeap()->getType(iv_tyFS);
@@ -242,6 +242,19 @@ namespace uima {
}
template< class T, const uima::lowlevel::TyFSType ARRAY_TYPE >
+ void BasicArrayFS<T, ARRAY_TYPE>::copyToArray(
+ size_t srcOffset, T * destArray, size_t destOffset, size_t length)
+ const {
+ copyToArray(srcOffset, srcOffset + length, destArray, destOffset );
+ }
+
+ // template< class T, const uima::lowlevel::TyFSType ARRAY_TYPE >
+ //void BasicArrayFS<T, ARRAY_TYPE>::copyFromArray(
+ // T const * srcArray, size_t srcOffset, size_t destOffset, size_t length) {
+ //copyFromArray(srcArray, srcOffset, srcOffset + length, destOffset);
+ //}
+
+ template< class T, const uima::lowlevel::TyFSType ARRAY_TYPE >
/*static*/ BasicArrayFS<T, ARRAY_TYPE> BasicArrayFS<T, ARRAY_TYPE>::createArrayFS( CAS & cas, size_t uiSize, bool bIsPermanent) {
assertWithMsg( sizeof(FeatureStructure::TyArrayElement) == sizeof(lowlevel::TyHeapCell), "Port required");
uima::lowlevel::FSHeap & heap = *uima::internal::FSPromoter::getFSHeap(cas);
Modified: uima/uimacpp/trunk/src/cas/uima/arrayfs.hpp
URL: http://svn.apache.org/viewvc/uima/uimacpp/trunk/src/cas/uima/arrayfs.hpp?rev=1237940&r1=1237939&r2=1237940&view=diff
==============================================================================
--- uima/uimacpp/trunk/src/cas/uima/arrayfs.hpp (original)
+++ uima/uimacpp/trunk/src/cas/uima/arrayfs.hpp Mon Jan 30 19:22:00 2012
@@ -199,6 +199,39 @@ namespace uima {
size_t uiEnd,
size_t uiOffset);
+ /**
+ * Copy the contents of the array from <code>start</code> for <code>numelements</code> to the
+ * destination <code>destArray</code> with destination offset <code>destOffset</code>.
+ *
+ * @param srcOffset The index of the first element to copy.
+ * @param dest The array to copy to.
+ * @param destOffset Where to start copying into.
+ * @param numelements The number of elements to copy.
+ * @throws InvalidFSObjectException
+ * @throws FSArrayOutOfBoundsException
+ * If <code>srcOffset < 0</code> or <code>length > size()</code> or
+ * <code>destOffset + length > destArray.length</code>.
+ */
+ void copyToArray(size_t srcOffset, T * destArray, size_t destOffset, size_t numelements) const ;
+
+
+ /**
+ * Copy the contents of an external array into this array.
+ *
+ * @param src The source array.
+ * @param srcOffset Where to start copying in the source array.
+ * @param destOffset Where to start copying to in the destination array.
+ * @param length The number of elements to copy.
+ * @throws InvalidFSObjectException
+ * @throws FSArrayOutOfBoundsException If <code>srcOffset or destOffset < 0</code>
+ * or <code>length > size()</code> or
+ * <code>destOffset + length > size()</code>.
+ *
+ * NOTE: replace copyFromArray with this API to be consistent with the Java API.
+ */
+
+// void copyFromArray(T const * src, size_t srcOffset, size_t destOffset, size_t length) ;
+
/// @if internal
/**
* create a feature structure of type empty list (list length is zero)
Modified: uima/uimacpp/trunk/src/test/src/test_primitivetypes.cpp
URL: http://svn.apache.org/viewvc/uima/uimacpp/trunk/src/test/src/test_primitivetypes.cpp?rev=1237940&r1=1237939&r2=1237940&view=diff
==============================================================================
--- uima/uimacpp/trunk/src/test/src/test_primitivetypes.cpp (original)
+++ uima/uimacpp/trunk/src/test/src/test_primitivetypes.cpp Mon Jan 30 19:22:00 2012
@@ -144,7 +144,7 @@ void createExampleFS(CAS & cas, bool cop
IntArrayFS intArrayFS = cas.createIntArrayFS(NUMBEROF(ints));
if (copyarrays) {
- intArrayFS.copyFromArray(ints,0,NUMBEROF(ints)-1,0);
+ intArrayFS.copyFromArray(ints,0,NUMBEROF(ints),0);
} else {
for (size_t i=0; i< NUMBEROF(ints); ++i) {
intArrayFS.set(i, ints[i]);
@@ -158,7 +158,7 @@ void createExampleFS(CAS & cas, bool cop
FloatArrayFS floatArrayFS = cas.createFloatArrayFS(NUMBEROF(floats));
if (copyarrays) {
- floatArrayFS.copyFromArray(floats,0,NUMBEROF(floats)-1,0);
+ floatArrayFS.copyFromArray(floats,0,NUMBEROF(floats),0);
} else {
for (size_t i=0; i< NUMBEROF(floats); ++i) {
floatArrayFS.set(i, floats[i]);
@@ -167,7 +167,7 @@ void createExampleFS(CAS & cas, bool cop
ByteArrayFS byteArrayFS = cas.createByteArrayFS(NUMBEROF(chars));
if (copyarrays) {
- byteArrayFS.copyFromArray(chars,0,NUMBEROF(chars)-1,0);
+ byteArrayFS.copyFromArray(chars,0,NUMBEROF(chars),0);
} else {
for (size_t i=0; i< NUMBEROF(chars); ++i) {
byteArrayFS.set(i, chars[i]);
@@ -181,7 +181,7 @@ void createExampleFS(CAS & cas, bool cop
bools[i] = val;
}
if (copyarrays) {
- boolArrayFS.copyFromArray(bools,0,NUMBEROF(bools)-1,0);
+ boolArrayFS.copyFromArray(bools,0,NUMBEROF(bools),0);
} else {
for (int i=0; i<BOOLEAN_ARRAY_SIZE; i++) {
boolArrayFS.set(i,bools[i]);
@@ -190,7 +190,7 @@ void createExampleFS(CAS & cas, bool cop
ShortArrayFS shortArrayFS = cas.createShortArrayFS(NUMBEROF(shorts));
if (copyarrays) {
- shortArrayFS.copyFromArray(shorts,0,NUMBEROF(shorts)-1,0);
+ shortArrayFS.copyFromArray(shorts,0,NUMBEROF(shorts),0);
} else {
for (size_t i=0; i< NUMBEROF(shorts); ++i) {
shortArrayFS.set(i, shorts[i]);
@@ -199,7 +199,7 @@ void createExampleFS(CAS & cas, bool cop
LongArrayFS longArrayFS = cas.createLongArrayFS(NUMBEROF(longs));
if (copyarrays) {
- longArrayFS.copyFromArray(longs,0,NUMBEROF(longs)-1,0);
+ longArrayFS.copyFromArray(longs,0,NUMBEROF(longs),0);
} else {
for (size_t i=0; i< NUMBEROF(longs); ++i) {
longArrayFS.set(i, longs[i]);
@@ -208,7 +208,7 @@ void createExampleFS(CAS & cas, bool cop
DoubleArrayFS doubleArrayFS = cas.createDoubleArrayFS(NUMBEROF(doubles));
if (copyarrays) {
- doubleArrayFS.copyFromArray(doubles,0,NUMBEROF(doubles)-1,0);
+ doubleArrayFS.copyFromArray(doubles,0,NUMBEROF(doubles),0);
} else {
for (size_t i=0; i< NUMBEROF(doubles); ++i) {
doubleArrayFS.set(i, doubles[i]);
@@ -327,7 +327,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) { //copy only part of int array
int * destArray = new int[intArrayFS.size()];
- intArrayFS.copyToArray(2,intArrayFS.size()-1,destArray,0);
+// intArrayFS.copyToArray(2,intArrayFS.size(),destArray,0);
+ intArrayFS.copyToArray(2,destArray,0,intArrayFS.size()-2);
for (size_t i=0;i < intArrayFS.size()-2; i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==ints[i+2]);
}
@@ -348,7 +349,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
float * destArray = new float[floatArrayFS.size()];
- floatArrayFS.copyToArray(0,floatArrayFS.size()-1,destArray,0);
+// floatArrayFS.copyToArray(0,floatArrayFS.size(),destArray,0);
+ floatArrayFS.copyToArray(0,destArray,0,floatArrayFS.size());
for (size_t i=0;i < floatArrayFS.size(); i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==floats[i]);
}
@@ -362,7 +364,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
char * destArray = new char[byteArrayFS.size()];
- byteArrayFS.copyToArray(0,byteArrayFS.size()-1,destArray,0);
+ //byteArrayFS.copyToArray(0,byteArrayFS.size(),destArray,0);
+ byteArrayFS.copyToArray(0,destArray,0,byteArrayFS.size());
for (size_t i=0;i < byteArrayFS.size(); i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==chars[i]);
}
@@ -377,7 +380,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
bool * destArray = new bool[boolArrayFS.size()];
- boolArrayFS.copyToArray(0,boolArrayFS.size()-1,destArray,0);
+ //boolArrayFS.copyToArray(0,boolArrayFS.size(),destArray,0);
+ boolArrayFS.copyToArray(0,destArray,0,boolArrayFS.size());
for (size_t i=0;i < boolArrayFS.size(); i++ ) {
val = !val;
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==val);
@@ -392,7 +396,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
short * destArray = new short[shortArrayFS.size()];
- shortArrayFS.copyToArray(0,shortArrayFS.size()-1,destArray,0);
+ //shortArrayFS.copyToArray(0,shortArrayFS.size(),destArray,0);
+ shortArrayFS.copyToArray(0,destArray,0,shortArrayFS.size());
for (size_t i=0;i < shortArrayFS.size(); i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==shorts[i]);
}
@@ -406,7 +411,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
INT64 * destArray = new INT64[longArrayFS.size()];
- longArrayFS.copyToArray(0,longArrayFS.size()-1,destArray,0);
+ //longArrayFS.copyToArray(0,longArrayFS.size(),destArray,0);
+ longArrayFS.copyToArray(0,destArray,0,longArrayFS.size());
for (size_t i=0;i < longArrayFS.size(); i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==longs[i]);
}
@@ -420,7 +426,8 @@ void validateFS(CAS & cas, bool checkcop
}
if (checkcopytoarray) {
double * destArray = new double[doubleArrayFS.size()];
- doubleArrayFS.copyToArray(0,doubleArrayFS.size()-1,destArray,0);
+ //doubleArrayFS.copyToArray(0,doubleArrayFS.size(),destArray,0);
+ doubleArrayFS.copyToArray(0,destArray,0,doubleArrayFS.size());
for (size_t i=0;i < doubleArrayFS.size(); i++ ) {
ASSERT_OR_THROWEXCEPTION( *(destArray+i)==doubles[i]);
}