10#ifndef TEUCHOS_TWODARRAY_HPP 
   11#define TEUCHOS_TWODARRAY_HPP 
   57    _data(
Array<
T>(numCols*numRows, value)),
 
 
   64    _numRows(0),_numCols(0),_data(
Array<
T>()),_symmetrical(
false){}
 
 
   97    return _data[(
i*_numCols)+
j];
 
 
  102    return _data[(
i*_numCols)+
j];
 
 
  112  inline bool isEmpty(){
 
  113    return _numRows == 0 &&
 
 
  231template<
class T> 
inline 
  233  return _data.view(_numCols*
i, _numCols);
 
 
  236template<
class T> 
inline 
  238  return _data.view(_numCols*
i, _numCols);
 
 
  275    array.getDataArray().toString();
 
 
  291  size_t numRows, numCols;
 
  298  if(curPos != std::string::npos){
 
  308    "Error: You've specified an TwoDArray as having the dimensions of " 
  309    << numRows << 
"x" << numCols << 
". This means you should have " <<
 
  310    (numRows*numCols) << 
" entries specified in your array. However you " 
  311    "only specified " << 
array.size() << 
" entries." 
 
  332template<
class T> 
inline 
  333std::ostream& operator<<(std::ostream& os, 
const TwoDArray<T>& array){
 
  334  return os << TwoDArray<T>::toString(array);
 
  338namespace TwoDDetails {
 
  349bool symmetricCompare(
const TwoDArray<T> &a1, 
const TwoDArray<T> &a2 ){
 
  350  if(a1.getNumRows() != a2.getNumRows() ||
 
  351    a1.getNumRows() != a2.getNumRows())
 
  357    for(ST i=0;i<a1.getNumRows(); ++i){
 
  358      for(ST j=0;j<a1.getNumCols()-a1.getNumRows()+i; ++j){
 
  359        if(a1(i,j) != a2(i,j)){
 
  386bool operator==( 
const TwoDArray<T> &a1, 
const TwoDArray<T> &a2 ){
 
  387  if(a1.isSymmetrical() != a2.isSymmetrical()){
 
  390  if(a1.isSymmetrical()){
 
  391    return TwoDDetails::symmetricCompare(a1,a2);
 
  394    return a1.getDataArray() == a2.getDataArray() &&
 
  395    a1.getNumRows() == a2.getNumRows() &&
 
  396    a1.getNumCols() == a2.getNumCols();
 
  411  return "TwoDArray(*)";
 
 
  418  static std::string name(){
 
  419    std::string 
formatString = getTwoDArrayTypeNameTraitsFormat();
 
 
Templated array class derived from the STL std::vector.
 
Replacement for std::vector that is compatible with the Teuchos Memory Management classes.
 
Smart reference counting pointer class for automatic garbage collection.
 
A thin wrapper around the Array class which causes it to be interpreted as a 2D Array.
 
void resizeRows(size_type numberOfRows)
Changes the number of rows in the matrix.
 
const T & operator()(size_type i, size_type j) const
Returns the element located at i,j.
 
size_type getNumCols() const
returns the number of columns in the TwoDArray.
 
static const std::string & getDimensionsDelimiter()
returns the string used as the dimension dilimeter when convering the TwoDArray to a string.
 
T & operator()(size_type i, size_type j)
Returns the element located at i,j.
 
void resizeCols(size_type numberOfCols)
Changes the number of rows in the matrix.
 
void clear()
delets all the entries from the TwoDArray
 
size_type getNumRows() const
returns the number of rows in the TwoDArray.
 
std::string getTwoDArrayTypeNameTraitsFormat()
Get the format that is used for the specialization of the TypeName traits class for TwoDArray.
 
static const std::string & getMetaSeperator()
returns the string used to seperate meta information from actual data information when converting a T...
 
TwoDArray()
Constructs an empty TwoDArray.
 
static TwoDArray< T > fromString(const std::string &string)
Converts a valid string to it's corresponding TwoDArray.
 
const Array< T > & getDataArray() const
Returns the 1D array that is backing this TwoDArray.
 
bool isSymmetrical() const
A simple flag indicating whether or not this TwoDArray should be interpurted as symmetrical.
 
void setSymmetrical(bool symmetrical)
Sets whether or not the the TwoDArray should be interpurted as symetric.
 
static std::string toString(const TwoDArray< T > array)
Converts a given TwoDArray to a valid string representation.
 
TwoDArray(size_type numRows, size_type numCols, T value=T())
Constructs a TwoDArray with the given number of rows and columns with each entry being populated with...
 
ArrayView< T > operator[](size_type i)
Returns an ArrayView containing the contents of row i.
 
Default traits class that just returns typeid(T).name().
 
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Macro for throwing an exception with breakpointing to ease debugging.
 
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...