Listing 2

// MatDefs.h  
// Martin E. Scolnick   
//
#ifndef _MATDEFS_H
#define _MATDEFS_H

#define self (*this)   
#define firstCol_vi (*curDatP).begin()
#define firstRow_vi (*curDatP).begin()
#define lastCol_vi (*curDatP).end()
#define lastRow_vi (*curDatP).end()

#define startCol_vi(m) (*m.curDatP).begin()
#define startRow_vi(m) (*m.curDatP).begin()
#define endCol_vi(m) (*m.curDatP).end()
#define endRow_vi(m) (*m.curDatP).end()

// CM => Column Matrix
#define CM_rLen dim1    // Row length = nCols
#define CM_cLen dim2    // Column length

// RM => Row Matrix
#define RM_cLen dim1    // Column length = nRows
#define RM_rLen dim2    // Row length

#define TRY try {
#define RETHROW } catch(...){throw;}

#endif // _MATDEFS_H