index2D.cpp

Go to the documentation of this file.
00001 
00015 #include <dlrNumeric/index2D.h>
00016 
00017 namespace dlr {
00018 
00019   namespace numeric {
00020     
00021     Index2D operator+(const Index2D& index0, const Index2D& index1)
00022     {
00023       return Index2D(index0.getRow() + index1.getRow(),
00024                      index0.getColumn() + index1.getColumn());
00025     }
00026 
00027   
00028     Index2D operator-(const Index2D& index0, const Index2D& index1)
00029     {
00030       return Index2D(index0.getRow() - index1.getRow(),
00031                      index0.getColumn() - index1.getColumn());
00032     }
00033 
00034   
00035     Index2D operator*(const Index2D& index0, const Index2D& index1)
00036     {
00037       return Index2D(index0.getRow() * index1.getRow(),
00038                      index0.getColumn() * index1.getColumn());
00039     }
00040 
00041   
00042     Index2D operator/(const Index2D& index0, const Index2D& index1)
00043     {
00044       return Index2D(index0.getRow() / index1.getRow(),
00045                      index0.getColumn() / index1.getColumn());
00046     }
00047 
00048   
00049     Index2D operator+(const Index2D& index0, int scalar)
00050     {
00051       return Index2D(index0.getRow() + scalar,
00052                      index0.getColumn() + scalar);
00053     }
00054 
00055   
00056     Index2D operator-(const Index2D& index0, int scalar)
00057     {
00058       return Index2D(index0.getRow() - scalar,
00059                      index0.getColumn() - scalar);
00060     }
00061 
00062   
00063     Index2D operator*(const Index2D& index0, int scalar)
00064     {
00065       return Index2D(index0.getRow() * scalar,
00066                      index0.getColumn() * scalar);
00067     }
00068 
00069   
00070     Index2D operator/(const Index2D& index0, int scalar)
00071     {
00072       return Index2D(index0.getRow() / scalar,
00073                      index0.getColumn() / scalar);
00074     }
00075 
00076   
00077     bool
00078     operator==(const Index2D& index0, const Index2D& index1)
00079     {
00080       return((index0.getRow() == index1.getRow()) &&
00081              (index0.getColumn() == index1.getColumn()));
00082     }
00083 
00084   
00085     bool
00086     operator!=(const Index2D& index0, const Index2D& index1)
00087     {
00088       return(!operator==(index0, index1));
00089     }
00090 
00091   
00092     std::ostream&
00093     operator<<(std::ostream& stream, const Index2D& index0)
00094     {
00095       stream << "Index2D(" << index0.getRow() << ", "
00096              << index0.getColumn() << ")";
00097       return stream;
00098     }
00099 
00100   
00101     std::istream&
00102     operator>>(std::istream& stream, Index2D& index0)
00103     {
00104       const char intro[] = "Index2D(";
00105       const char intermission[] = ",";
00106       const char outro[] = ")";
00107       int row, column;
00108       char inChar;
00109       size_t index;
00110 
00111       for(index = 0; index < strlen(intro); ++index) {
00112         inChar = 0;
00113         stream >> inChar;
00114         if(inChar != intro[index]) {
00115           stream.clear(std::ios_base::failbit);
00116           return stream;
00117         }
00118       }
00119       stream >> row;
00120       for(index = 0; index < strlen(intermission); ++index) {
00121         inChar = 0;
00122         stream >> inChar;
00123         if(inChar != intermission[index]) {
00124           stream.clear(std::ios_base::failbit);
00125           return stream;
00126         }
00127       }
00128       stream >> column;
00129       for(index = 0; index < strlen(outro); ++index) {
00130         inChar = 0;
00131         stream >> inChar;
00132         if(inChar != outro[index]) {
00133           stream.clear(std::ios_base::failbit);
00134           return stream;
00135         }
00136       }
00137       if(stream) {
00138         index0.setValue(row, column);
00139       }
00140       return stream;
00141     }
00142 
00143   } // namespace numeric
00144 
00145 } // namespace dlr

Generated on Mon Jul 9 20:34:03 2007 for dlrLibs Utility Libraries by  doxygen 1.5.2