/*
    TCFbEColumnColumnCachedTable.h    November 29, 2004.

    Copyright (C) 2003-2004 CFbE Research Group,
    Software Engineering Laboratory,
    Graduate School of Information Science,
    Nara Institute of Science and Technology,
    All rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2, (at your option) or
    any later version.

    This program is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with GNU Emacs; see the file COPYING.  If not, write to the
    Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    Boston, MA 02111-1307, USA.
*/
//---------------------------------------------------------------------------
#ifndef TCFbEColumnColumnCachedTableH
#define TCFbEColumnColumnCachedTableH
//---------------------------------------------------------------------------
// #include "Maprof.h"

#include "TCFbECell.h"
#include "TCFbEToolkit.h"
#include "TCFbECachedTable.h"
//---------------------------------------------------------------------------
// 行×行キャッシュ，条件インデックスは列方向
class TCFbEColumnColumnCachedTable : public TCFbECachedTable
{
public:
    // アクセサメソッド
    virtual double __fastcall GetValueByIndex(int TargetColumnIndex1, int TargetColumnIndex2) {
        return TCFbECachedTable::GetValueByIndex(TargetColumnIndex1, TargetColumnIndex2);
    }

    virtual bool __fastcall GetEnabledByIndex(int TargetColumnIndex1, int TargetColumnIndex2) {
        return TCFbECachedTable::GetEnabledByIndex(TargetColumnIndex1, TargetColumnIndex2);
    }

    virtual void __fastcall SetValueByIndex(int TargetColumnIndex1, int TargetColumnIndex2, double Value) {
        TCFbECachedTable::SetValueByIndex(TargetColumnIndex1, TargetColumnIndex2, Value);
    }

    virtual void __fastcall UnableElementByIndex(int TargetColumnIndex1, int TargetColumnIndex2) {
        TCFbECachedTable::UnableElementByIndex(TargetColumnIndex1, TargetColumnIndex2);
    }

    virtual __fastcall TCFbEColumnColumnCachedTable(void);    // コンストラクタ（空キャッシュを作成
    virtual __fastcall TCFbEColumnColumnCachedTable(TStringList* RowLabelList, TStringList* ColumnLabelList);    // 指定された行列を備えた空テーブルを作成
    __fastcall ~TCFbEColumnColumnCachedTable();    // デストラクタ

    virtual void __fastcall ParentCellIsUpdated(int RowIndex, int ColumnIndex); // 親キャッシュのセルが更新された
    virtual int __fastcall  ParentAddRow(const char* RowLabel);          // 親キャッシュの行が追加された
    virtual int __fastcall  ParentAddColumn(const char* ColumnLabel);    // 親キャッシュの列が追加された
    virtual void __fastcall ParentDeleteRowByIndex(int TargetRowIndex); // 親キャッシュの行が削除された
    virtual void __fastcall ParentDeleteColumnByIndex(int TargetColumnIndex);   // 親キャッシュの列が削除された
    
protected:
    virtual TCFbECachedTable* __fastcall CreateClone(void);             // 自分自身のクローンを作成する
    virtual TCFbECachedTable* __fastcall CreateRotatedClone(void);      // 自分自身の行と列が入れ替わったクローンを作成する

private:

};
//---------------------------------------------------------------------------
#endif
