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