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 &lt; 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 &lt; 
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]);
        }


Reply via email to