// Author: Roel Aaij 15/08/2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TClass.h"
#include "Riostream.h"
#include "TSystem.h"
#include "TEnv.h"
#include "TGSimpleTableInterface.h"
#include "TGResourcePool.h"
#include "TError.h"

ClassImp(TGSimpleTableInterface)

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGSimpleTableInterface                                               //
//                                                                      //
// TGSimpleTableInterface is a very simple implementation of a          //
// TVirtualTableInterface. This interface provides a TGTable with data  //
// from a two dimensional array of doubles in memory. It is mostly      //
// meant as an example implementation for a TVirtualTableInterface.     //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

//______________________________________________________________________________
TGSimpleTableInterface::TGSimpleTableInterface (Double_t **data, 
                                                UInt_t nrows, UInt_t ncolumns) 
   : TVirtualTableInterface(), fData(data), fNRows(nrows), fNColumns(ncolumns)
{
   // TGSimpleTableInterfac constructor.
}

//______________________________________________________________________________
TGSimpleTableInterface::~TGSimpleTableInterface()
{ 
   // TGSimpleTableInterface destructor.
}

//______________________________________________________________________________
Double_t TGSimpleTableInterface::GetValue(UInt_t row, UInt_t column)
{
   // Return the value of the double in row,column of the data.

   if ((row > fNRows) || (column > fNColumns)) {
      Error("TGSimpleTableInterface","Non existing value requested.");
      return 0;
   } else {
      Double_t temp = fData[row][column];
      return temp;
   }
}

//______________________________________________________________________________
const char *TGSimpleTableInterface::GetValueAsString(UInt_t row, UInt_t column)
{
   // Return the value of the double in row,column of the data as a string.

   // FIXME use template string for string format instead of hardcoded format

   return StrDup(TString::Format("%5.2f", GetValue(row, column)));
}

//______________________________________________________________________________
const char *TGSimpleTableInterface::GetRowHeader(UInt_t row)
{
   // Return a name for the header at row.

   return StrDup(TString::Format("DRow %d", row));
}

//______________________________________________________________________________
const char *TGSimpleTableInterface::GetColumnHeader(UInt_t column)
{
   // Return a name for the header at column.

   return StrDup(TString::Format("DCol %d", column));
}
 TGSimpleTableInterface.cxx:1
 TGSimpleTableInterface.cxx:2
 TGSimpleTableInterface.cxx:3
 TGSimpleTableInterface.cxx:4
 TGSimpleTableInterface.cxx:5
 TGSimpleTableInterface.cxx:6
 TGSimpleTableInterface.cxx:7
 TGSimpleTableInterface.cxx:8
 TGSimpleTableInterface.cxx:9
 TGSimpleTableInterface.cxx:10
 TGSimpleTableInterface.cxx:11
 TGSimpleTableInterface.cxx:12
 TGSimpleTableInterface.cxx:13
 TGSimpleTableInterface.cxx:14
 TGSimpleTableInterface.cxx:15
 TGSimpleTableInterface.cxx:16
 TGSimpleTableInterface.cxx:17
 TGSimpleTableInterface.cxx:18
 TGSimpleTableInterface.cxx:19
 TGSimpleTableInterface.cxx:20
 TGSimpleTableInterface.cxx:21
 TGSimpleTableInterface.cxx:22
 TGSimpleTableInterface.cxx:23
 TGSimpleTableInterface.cxx:24
 TGSimpleTableInterface.cxx:25
 TGSimpleTableInterface.cxx:26
 TGSimpleTableInterface.cxx:27
 TGSimpleTableInterface.cxx:28
 TGSimpleTableInterface.cxx:29
 TGSimpleTableInterface.cxx:30
 TGSimpleTableInterface.cxx:31
 TGSimpleTableInterface.cxx:32
 TGSimpleTableInterface.cxx:33
 TGSimpleTableInterface.cxx:34
 TGSimpleTableInterface.cxx:35
 TGSimpleTableInterface.cxx:36
 TGSimpleTableInterface.cxx:37
 TGSimpleTableInterface.cxx:38
 TGSimpleTableInterface.cxx:39
 TGSimpleTableInterface.cxx:40
 TGSimpleTableInterface.cxx:41
 TGSimpleTableInterface.cxx:42
 TGSimpleTableInterface.cxx:43
 TGSimpleTableInterface.cxx:44
 TGSimpleTableInterface.cxx:45
 TGSimpleTableInterface.cxx:46
 TGSimpleTableInterface.cxx:47
 TGSimpleTableInterface.cxx:48
 TGSimpleTableInterface.cxx:49
 TGSimpleTableInterface.cxx:50
 TGSimpleTableInterface.cxx:51
 TGSimpleTableInterface.cxx:52
 TGSimpleTableInterface.cxx:53
 TGSimpleTableInterface.cxx:54
 TGSimpleTableInterface.cxx:55
 TGSimpleTableInterface.cxx:56
 TGSimpleTableInterface.cxx:57
 TGSimpleTableInterface.cxx:58
 TGSimpleTableInterface.cxx:59
 TGSimpleTableInterface.cxx:60
 TGSimpleTableInterface.cxx:61
 TGSimpleTableInterface.cxx:62
 TGSimpleTableInterface.cxx:63
 TGSimpleTableInterface.cxx:64
 TGSimpleTableInterface.cxx:65
 TGSimpleTableInterface.cxx:66
 TGSimpleTableInterface.cxx:67
 TGSimpleTableInterface.cxx:68
 TGSimpleTableInterface.cxx:69
 TGSimpleTableInterface.cxx:70
 TGSimpleTableInterface.cxx:71
 TGSimpleTableInterface.cxx:72
 TGSimpleTableInterface.cxx:73
 TGSimpleTableInterface.cxx:74
 TGSimpleTableInterface.cxx:75
 TGSimpleTableInterface.cxx:76
 TGSimpleTableInterface.cxx:77
 TGSimpleTableInterface.cxx:78
 TGSimpleTableInterface.cxx:79
 TGSimpleTableInterface.cxx:80
 TGSimpleTableInterface.cxx:81
 TGSimpleTableInterface.cxx:82
 TGSimpleTableInterface.cxx:83
 TGSimpleTableInterface.cxx:84