Index: /trunk/psLib/src/imageops/psImagePixelExtract.c
===================================================================
--- /trunk/psLib/src/imageops/psImagePixelExtract.c	(revision 7119)
+++ /trunk/psLib/src/imageops/psImagePixelExtract.c	(revision 7120)
@@ -8,6 +8,6 @@
  *  @author Robert DeSonia, MHPCC
  *
- *  @version $Revision: 1.19 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2006-05-03 23:16:16 $
+ *  @version $Revision: 1.20 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2006-05-16 01:20:09 $
  *
  *  Copyright 2004-2005 Maui High Performance Computing Center, University of Hawaii
@@ -23,27 +23,8 @@
 #include "psErrorText.h"
 
-#define FUNC_MACRO_VECTOR_STORE_ROW(TYPE) \
-static psVector *vectorStoreRow##TYPE(psVector *vec, const psImage *in, int row) \
-{ \
-    \
-    for (int i = 0; i < in->numCols; i++) \
-    { \
-        vec->data.TYPE[i] = in->data.TYPE[i][row]; \
-    } \
-    return vec; \
-} \
-
-FUNC_MACRO_VECTOR_STORE_ROW(S8)
-FUNC_MACRO_VECTOR_STORE_ROW(S16)
-FUNC_MACRO_VECTOR_STORE_ROW(S32)
-FUNC_MACRO_VECTOR_STORE_ROW(S64)
-FUNC_MACRO_VECTOR_STORE_ROW(U8)
-FUNC_MACRO_VECTOR_STORE_ROW(U16)
-FUNC_MACRO_VECTOR_STORE_ROW(U32)
-FUNC_MACRO_VECTOR_STORE_ROW(U64)
-FUNC_MACRO_VECTOR_STORE_ROW(F32)
-FUNC_MACRO_VECTOR_STORE_ROW(F64)
-FUNC_MACRO_VECTOR_STORE_ROW(C32)
-FUNC_MACRO_VECTOR_STORE_ROW(C64)
+#define VECTOR_STORE_ROW_CASE(TYPE) \
+case PS_TYPE_##TYPE: \
+memcpy(out->data.TYPE, input->data.TYPE[row], input->numCols*sizeof(ps##TYPE)); \
+break;
 
 psVector *psImageRow(psVector *out,
@@ -106,40 +87,16 @@
 
     switch (input->type.type) {
-    case PS_TYPE_S8:
-        out = vectorStoreRowS8(out, input, row);
-        break;
-    case PS_TYPE_S16:
-        out = vectorStoreRowS16(out, input, row);
-        break;
-    case PS_TYPE_S32:
-        out = vectorStoreRowS32(out, input, row);
-        break;
-    case PS_TYPE_S64:
-        out = vectorStoreRowS64(out, input, row);
-        break;
-    case PS_TYPE_U8:
-        out = vectorStoreRowU8(out, input, row);
-        break;
-    case PS_TYPE_U16:
-        out = vectorStoreRowU16(out, input, row);
-        break;
-    case PS_TYPE_U32:
-        out = vectorStoreRowU32(out, input, row);
-        break;
-    case PS_TYPE_U64:
-        out = vectorStoreRowU64(out, input, row);
-        break;
-    case PS_TYPE_F32:
-        out = vectorStoreRowF32(out, input, row);
-        break;
-    case PS_TYPE_F64:
-        out = vectorStoreRowF64(out, input, row);
-        break;
-    case PS_TYPE_C32:
-        out = vectorStoreRowC32(out, input, row);
-        break;
-    case PS_TYPE_C64:
-        out = vectorStoreRowC64(out, input, row);
-        break;
+        VECTOR_STORE_ROW_CASE(S8);
+        VECTOR_STORE_ROW_CASE(S16);
+        VECTOR_STORE_ROW_CASE(S32);
+        VECTOR_STORE_ROW_CASE(S64);
+        VECTOR_STORE_ROW_CASE(U8);
+        VECTOR_STORE_ROW_CASE(U16);
+        VECTOR_STORE_ROW_CASE(U32);
+        VECTOR_STORE_ROW_CASE(U64);
+        VECTOR_STORE_ROW_CASE(F32);
+        VECTOR_STORE_ROW_CASE(F64);
+        VECTOR_STORE_ROW_CASE(C32);
+        VECTOR_STORE_ROW_CASE(C64);
     default:
         psError(PS_ERR_BAD_PARAMETER_TYPE, true,
@@ -152,28 +109,10 @@
 
 
-#define FUNC_MACRO_VECTOR_STORE_COL(TYPE) \
-static psVector *vectorStoreCol##TYPE(psVector *vec, const psImage *in, int col) \
-{ \
-    \
-    for (int i = 0; i < in->numRows; i++) \
-    { \
-        vec->data.TYPE[i] = in->data.TYPE[col][i]; \
-    } \
-    return vec; \
+#define VECTOR_STORE_COL_CASE(TYPE) \
+case PS_TYPE_##TYPE: \
+for (int i = 0; i < in->numRows; i++) { \
+    out->data.TYPE[i] = input->data.TYPE[i][col]; \
 } \
-
-FUNC_MACRO_VECTOR_STORE_COL(S8)
-FUNC_MACRO_VECTOR_STORE_COL(S16)
-FUNC_MACRO_VECTOR_STORE_COL(S32)
-FUNC_MACRO_VECTOR_STORE_COL(S64)
-FUNC_MACRO_VECTOR_STORE_COL(U8)
-FUNC_MACRO_VECTOR_STORE_COL(U16)
-FUNC_MACRO_VECTOR_STORE_COL(U32)
-FUNC_MACRO_VECTOR_STORE_COL(U64)
-FUNC_MACRO_VECTOR_STORE_COL(F32)
-FUNC_MACRO_VECTOR_STORE_COL(F64)
-FUNC_MACRO_VECTOR_STORE_COL(C32)
-FUNC_MACRO_VECTOR_STORE_COL(C64)
-
+break;
 
 psVector *psImageCol(psVector *out,
@@ -236,40 +175,16 @@
 
     switch (input->type.type) {
-    case PS_TYPE_S8:
-        out = vectorStoreColS8(out, input, column);
-        break;
-    case PS_TYPE_S16:
-        out = vectorStoreColS16(out, input, column);
-        break;
-    case PS_TYPE_S32:
-        out = vectorStoreColS32(out, input, column);
-        break;
-    case PS_TYPE_S64:
-        out = vectorStoreColS64(out, input, column);
-        break;
-    case PS_TYPE_U8:
-        out = vectorStoreColU8(out, input, column);
-        break;
-    case PS_TYPE_U16:
-        out = vectorStoreColU16(out, input, column);
-        break;
-    case PS_TYPE_U32:
-        out = vectorStoreColU32(out, input, column);
-        break;
-    case PS_TYPE_U64:
-        out = vectorStoreColU64(out, input, column);
-        break;
-    case PS_TYPE_F32:
-        out = vectorStoreColF32(out, input, column);
-        break;
-    case PS_TYPE_F64:
-        out = vectorStoreColF64(out, input, column);
-        break;
-    case PS_TYPE_C32:
-        out = vectorStoreColC32(out, input, column);
-        break;
-    case PS_TYPE_C64:
-        out = vectorStoreColC64(out, input, column);
-        break;
+        VECTOR_STORE_COL_CASE(S8);
+        VECTOR_STORE_COL_CASE(S16);
+        VECTOR_STORE_COL_CASE(S32);
+        VECTOR_STORE_COL_CASE(S64);
+        VECTOR_STORE_COL_CASE(U8);
+        VECTOR_STORE_COL_CASE(U16);
+        VECTOR_STORE_COL_CASE(U32);
+        VECTOR_STORE_COL_CASE(U64);
+        VECTOR_STORE_COL_CASE(F32);
+        VECTOR_STORE_COL_CASE(F64);
+        VECTOR_STORE_COL_CASE(C32);
+        VECTOR_STORE_COL_CASE(C64);
     default:
         psError(PS_ERR_BAD_PARAMETER_TYPE, true,
