Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

PxxPrintData.h

Go to the documentation of this file.
00001 /*
00002  *  Copyright (c) 2003-2004, University of Amsterdam, The Netherlands.
00003  *  All rights reserved.
00004  *
00005  *  Author(s):
00006  *  Dennis Koelma <koelma@wins.uva.nl>
00007  *  Frank Seinstra <fjseins@wins.uva.nl>
00008  */
00009 
00010 #ifndef __PxxPrintData_h_
00011 #define __PxxPrintData_h_
00012 
00013 
00014 #include "Core/Array/Pattern/ArrayFunc.h"
00015 #include "Core/Array/Pattern/PxSystem.h"
00016 #include "Core/Array/Pattern/PxxStream.h"
00017 
00018 namespace Impala
00019 {
00020 namespace Core
00021 {
00022 namespace Array
00023 {
00024 namespace Pattern
00025 {
00026 
00027 
00028 template<class ArrayT>
00029 void
00030 PxArrayPrintElem(ArrayT* array, typename ArrayT::StorType* ptr)
00031 {
00032     for (int i=0 ; i<array->ElemSize() ; i++) {
00033         if ((i == 0) && (array->ElemSize() > 1))
00034             PX_COUT << "(";
00035         PX_COUT << *ptr++;
00036         if (i+1 < array->ElemSize())
00037             PX_COUT << ",";
00038         if ((i+1 == array->ElemSize()) && (array->ElemSize() > 1))
00039             PX_COUT << ")";
00040     }
00041 }
00042 
00043 
00044 template<class ArrayT>
00045 void
00046 PxPrintData(ArrayT* array, bool printBorder, int bx, int by, int width, int height)
00047 {
00048     typedef typename ArrayT::StorType StorT;
00049 
00050     PX_COUT << "Array Info(1): w = " << CxArrayW(array)
00051                          << ", h = " << CxArrayH(array) << PX_ENDL;
00052     PX_COUT << "Array Info(2): cw  = " << CxArrayCW(array)
00053                          << ", ch  = " << CxArrayCH(array) << PX_ENDL;
00054     PX_COUT << "Array Info(3): bw  = " << CxArrayBW(array)
00055                          << ", bh  = " << CxArrayBH(array) << PX_ENDL;
00056     PX_COUT << "Array Info(4): pb  = " << CxArrayPB(array)
00057                          << ", cpb = " << CxArrayCPB(array)
00058                          << ", cpe = " << CxArrayCPE(array) << PX_ENDL;
00059     PX_COUT << "Array Info(5): sizeofStorT = "
00060                          << sizeof(StorT) << PX_ENDL;
00061 
00062 //  PX_COUT << "Array sizes: cw = " << CxArrayCW(array)
00063 //                     << ", ch = " << CxArrayCH(array)
00064 //                     << ", bw = " << CxArrayBW(array)
00065 //                     << ", bh = " << CxArrayBH(array) << PX_ENDL;
00066 
00067     StorT* sPtr = (printBorder) ? CxArrayPB(array, bx, by) 
00068                                 : CxArrayCPB(array, bx, by);
00069     for (int y=0 ; y<height ; y++) {
00070         PX_COUT << "  Y = " << y << " :- ";
00071         for (int x=0 ; x<width ; x++) {
00072             int off = CxArrayInc(array, x, y);
00073             StorT* p = sPtr + off;
00074             PxArrayPrintElem(array, p);
00075             PX_COUT << ", ";
00076         }
00077         PX_COUT << PX_ENDL;
00078     }
00079 }
00080 
00081 
00082 /**********************************************************************/
00083 
00084 
00085 template<class ArrayT>
00086 void
00087 PxArrayPrintElemOnCPU(ArrayT* array, typename ArrayT::StorType* ptr, int cpu)
00088 {
00089     for (int i=0 ; i<array->ElemSize() ; i++) {
00090         if ((i == 0) && (array->ElemSize() > 1))
00091             PX_COUT_ON(cpu) << "(";
00092         PX_COUT_ON(cpu) << *ptr++;
00093         if (i+1 < array->ElemSize())
00094             PX_COUT_ON(cpu) << ",";
00095         if ((i+1 == array->ElemSize()) && (array->ElemSize() > 1))
00096             PX_COUT_ON(cpu) << ")";
00097     }
00098 }
00099 
00100 
00101 template<class ArrayT>
00102 void
00103 PxPrintDataOnCPU(ArrayT* array, bool printBorder, int bx, int by, int width, int height, int cpu)
00104 {
00105     typedef typename ArrayT::StorType StorT;
00106 
00107     PX_COUT_ON(cpu) << "Array sizes (" << cpu << "): cw = "
00108                     << CxArrayCW(array) << ", ch = "
00109                     << CxArrayCH(array) << ", bw = "
00110                     << CxArrayBW(array) << ", bh = "
00111                     << CxArrayBH(array) << PX_ENDL;
00112     StorT* sPtr = (printBorder) ? CxArrayPB(array, bx, by) 
00113                                 : CxArrayCPB(array, bx, by);
00114     for (int y=0 ; y<height ; y++) {
00115         PX_COUT_ON(cpu) << "  Y = " << y << " :- ";
00116         for (int x=0 ; x<width ; x++) {
00117             int off = CxArrayInc(array, x, y);
00118             StorT* p = sPtr + off;
00119             PxArrayPrintElemOnCPU(array, p, cpu);
00120             PX_COUT_ON(cpu) << ", ";
00121         }
00122         PX_COUT_ON(cpu) << PX_ENDL;
00123     }
00124 }
00125 
00126 
00127 /**********************************************************************/
00128 
00129 
00130 template<class ArrayT>
00131 void
00132 PxArrayPrintElemOnAll(ArrayT* array, typename ArrayT::StorType* ptr)
00133 {
00134     for (int i=0 ; i<array->ElemSize() ; i++) {
00135         if ((i == 0) && (array->ElemSize() > 1))
00136             PX_COUT_ON_ALL << "(";
00137         PX_COUT_ON_ALL << *ptr++;
00138         if (i+1 < array->ElemSize())
00139             PX_COUT_ON_ALL << ",";
00140         if ((i+1 == array->ElemSize()) && (array->ElemSize() > 1))
00141             PX_COUT_ON_ALL << ")";
00142     }
00143 }
00144 
00145 
00146 template<class ArrayT>
00147 void
00148 PxPrintDataOnAll(ArrayT* array, bool printBorder, int bx, int by, int width, int height)
00149 {
00150     typedef typename ArrayT::StorType StorT;
00151 
00152     PX_COUT_ON_ALL << "Array sizes (" << PxMyCPU() << "): cw = "
00153                    << CxArrayCW(array) << ", ch = "
00154                    << CxArrayCH(array) << ", bw = "
00155                    << CxArrayBW(array) << ", bh = "
00156                    << CxArrayBH(array) << PX_ENDL;
00157     StorT* sPtr = (printBorder) ? CxArrayPB(array, bx, by) 
00158                                 : CxArrayCPB(array, bx, by);
00159     for (int y=0 ; y<height ; y++) {
00160         PX_COUT_ON_ALL << "  Y = " << y << " :- ";
00161         for (int x=0 ; x<width ; x++) {
00162             int off = CxArrayInc(array, x, y);
00163             StorT* p = sPtr + off;
00164             PxArrayPrintElemOnAll(array, p);
00165             PX_COUT_ON_ALL << ", ";
00166         }
00167         PX_COUT_ON_ALL << PX_ENDL;
00168     }
00169 }
00170 
00171 
00172 /**********************************************************************/
00173 
00174 
00175 template<class ArrayT>
00176 inline void
00177 PxPrintData(ArrayT* array, bool printBorder)
00178 {
00179     int width = (printBorder) ? CxArrayW(array) : CxArrayCW(array);
00180     int height = (printBorder) ? CxArrayH(array) : CxArrayCH(array);
00181     PxPrintData(array, printBorder, 0, 0, width, height);
00182 }
00183 
00184 
00185 template<class ArrayT>
00186 inline void
00187 PxPrintDataOnCPU(ArrayT* array, bool printBorder, int cpu)
00188 {
00189     int width = (printBorder) ? CxArrayW(array) : CxArrayCW(array);
00190     int height = (printBorder) ? CxArrayH(array) : CxArrayCH(array);
00191     PxPrintDataOnCPU(array, printBorder, 0, 0, width, height, cpu);
00192 }
00193 
00194 
00195 template<class ArrayT>
00196 inline void
00197 PxPrintDataOnAll(ArrayT* array, bool printBorder)
00198 {
00199     int width = (printBorder) ? CxArrayW(array) : CxArrayCW(array);
00200     int height = (printBorder) ? CxArrayH(array) : CxArrayCH(array);
00201     PxPrintDataOnAll(array, printBorder, 0, 0, width, height);
00202 }
00203 
00204 
00205 } // namespace Pattern
00206 } // namespace Array
00207 } // namespace Core
00208 } // namespace Impala
00209 
00210 #endif /* __PxxPrintData_h_ */

Generated on Fri Mar 19 09:30:52 2010 for ImpalaSrc by  doxygen 1.5.1