/*
    TCFbEOutputFormatter.h    June 6, 2004.

    Copyright (C) 2003-2005 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 TCFbEOutputFormatterH
#define TCFbEOutputFormatterH
//---------------------------------------------------------------------------
#include <stdio.h>
#include <system.hpp>
#include <SysUtils.hpp>

#include "TCFbEDocfbeCommandLineParser.h"
#include "TCFbEOutputCache.h"
//---------------------------------------------------------------------------
class TCFbEOutputFormatter : public TObject
{
public:
    virtual __fastcall TCFbEOutputFormatter(TCFbEDocfbeCommandLineParser* Parser, TCFbEOutputCache* OutputCache, bool IsVerbose=false);    // コンストラクタ
    __fastcall ~TCFbEOutputFormatter();    // デストラクタ

    virtual AnsiString __fastcall GetOutputString(void);
    virtual void __fastcall SaveOutputStringTo(TFileName FileName);    // OutputString を FileName のファイルに保存する

protected:
    TCFbEDocfbeCommandLineParser*    Parser;
    TCFbEOutputCache*    OutputCache;
    TStringList*    FOutputStringList;
    virtual void __fastcall OutputHeader(void) = 0;    // ヘッダ部分を this->FOutputStringList に追加する．ヘッダが必要でない場合はすぐに return する．
    virtual void __fastcall OutputBody(int TargetRowIndex) = 0;    // ボディ部分を this->FOutputStringList に追加する．

private:

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