Mac binaries
[jabaws.git] / website / archive / binaries / mac / src / clustalw / src / general / SquareMat.h
diff --git a/website/archive/binaries/mac/src/clustalw/src/general/SquareMat.h b/website/archive/binaries/mac/src/clustalw/src/general/SquareMat.h
new file mode 100644 (file)
index 0000000..3e43293
--- /dev/null
@@ -0,0 +1,106 @@
+
+/**
+ * Author: Mark Larkin
+ * 
+ * Copyright (c) 2007 Des Higgins, Julie Thompson and Toby Gibson.  
+ */
+#include<iostream>
+#include <vector>
+#include <iomanip>
+namespace clustalw
+{
+using namespace std;
+
+template <class T>
+class SquareMat
+{
+public:
+   SquareMat():m_dimRow(0), m_dimCol(0){;}
+   SquareMat(int size) 
+   {
+       m_dimRow = size;
+       m_dimCol = size;
+       for (int i=0; i < size; i++)
+       {
+           vector<T> x(size);
+           int y = x.size();
+           m_2DVector.push_back(x);
+       }
+   }
+   void SetAt(int nRow, int nCol, const T& value)
+   {
+       m_2DVector[nRow][nCol] = value;
+   }
+   T GetAt(int nRow, int nCol) 
+   {
+       return m_2DVector[nRow][nCol];
+   }
+   void GrowRow(int newSize) 
+   {
+       if (newSize <= m_dimRow)
+           return;
+       m_dimRow = newSize;
+       for(int i = 0 ; i < newSize - m_dimCol; i++)   
+       {
+           vector<T> x(m_dimRow);
+           m_2DVector.push_back(x);
+       }
+   }
+   void GrowCol(int newSize) 
+   {
+       if(newSize <= m_dimCol)
+           return;
+       m_dimCol = newSize;
+       for (int i=0; i <m_dimRow; i++)
+           m_2DVector[i].resize(newSize);
+   }
+   
+   void ResizeRect(int size)
+   {
+       GrowRow(size);
+       GrowCol(size);
+   }
+
+   int getSize()
+   {
+       return m_dimRow;
+   }
+
+   void clearArray()
+   {
+       int size = m_2DVector.size();
+       for(int i = 0; i < size; i++)
+       {
+           m_2DVector[i].clear();
+       }
+       m_2DVector.clear();
+       m_dimRow = 0;
+       m_dimCol = 0;
+       
+   }
+         
+   void printArray()
+   {
+       for(int row=0; row < m_dimRow; row++)
+       {
+           for(int col=0; col < m_dimCol; col++)
+           {
+               cout << setprecision(20) << " "<< m_2DVector[row][col];  
+           }
+           cout<<"\n";
+       }
+   }
+   
+   vector<T>& operator[](int x)    
+   {
+       return m_2DVector[x];
+   }
+   
+private:
+   vector< vector <T> > m_2DVector;
+   unsigned int m_dimRow;
+   unsigned int m_dimCol;
+};
+
+}
+