/*
    TCFbEDataLoader.h    June 6, 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 TCFbEDataLoaderH
#define TCFbEDataLoaderH
//---------------------------------------------------------------------------
#include <stdio.h>

#include "TCFbECommandLineParser.h"
#include "TCFbEDataSet.h"
//---------------------------------------------------------------------------
// トレーニングデータの性質を表す列挙型
enum TTargetColumnType { tmtTooSparsity=-1, tmtEmpty=0, tmtPredictable=1 };
// tmtEmpty:        データが存在しない
// tmtPredictable:    予測可能なメトリクス
// tmtTooSparsity:    予測不可能なメトリクス（NeighborsSize よりもトレーニングデータが少ない
//---------------------------------------------------------------------------
class TCFbEDataLoader : public TObject
{
public:
    virtual __fastcall TCFbEDataLoader(TCFbECommandLineParser* Parser, bool IsVerbose=false);    // コンストラクタ
    __fastcall ~TCFbEDataLoader();    // デストラクタ

    TCFbEDataSet*    LearningData;
    TCFbEDataSet*    EstimatingData;

    int    ErrorCode;    // エラーコード（エラーがない場合は 0
    AnsiString    ErrorParameter;    // エラーパラメータ

protected:
    virtual TTargetColumnType __fastcall TargetColumnCheck(AnsiString TargetColumnLabel, const int NeighborsSize);
    virtual void __fastcall AdoptData(TCFbEDataSet* BaseDataSet, TCFbEDataSet*& AdoptedDataSet);    // AdoptedDataSet を BaseDataSet に合わせて適合させる
    virtual bool __fastcall CompareStringList(TStrings* StringList0, TStrings* StringList1) ;    // StringList0 と StringList1 を比較する

private:

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