// This may look like C code, but it is really -*- C++ -*-
// RTSS --- Railway Total System Simulator
// (c) TAKAGI Ryo (at Prof. SONE's Laboratory, the Univ. of Tokyo.)
// readdata.hh --- header file that defines class readdata
// $Id: readdata.hh,v 2.4 1994/12/27 12:03:47 rt Exp $

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>

#include "globvar.hh"

#ifndef ___READDATA_HH
#define ___READDATA_HH		// こうしておくと2度インクルードしても大丈夫！

class readdata {		// データリード用の基本関数と変数

  public:
    void err_access(); 		// データファイルアクセスエラー
    void err_access(char*);	// 同上，ファイル名つき
    void err_eof();		// データファイルエラー
    void err_eof(char*);	// 同上，データファイル名付き
    void err_eof(bool&, char*);	// 同上，bool = true のときエラー
				// bool = false なら true に変更

    void setsw(bool&);		// コマンドを呼んだら bool をセット
				// bool がセットされていたら err_eof()

    int comm_out		// コメントアウト
    (FILE*, bool = true);	// bool false : EOF 発見時も停止せず

    int getcommand		// コマンド名（文字列）を得る
    (FILE*, bool = true);	// bool false : EOF 発見時も停止せず

    int getcommand		// コマンド名（文字列）を得る
    (FILE*, char*);		// ファイル名を与え、エラー表示させる

    commandvalue getcommandvalue	// コマンド名を enum で得る
    (FILE*, char*);		// ファイル名を与え、エラー表示させる

    void getcommandvalue	// commandvalue に示したコマンド名を得る
    (FILE*, char*, commandvalue);	// それ以外 error

    bool cmpcommand(char*);	// コマンド文字列を比較
    bool cmpcommand(char*, char*);
	// 同上、違ったら (false) 二つめがファイル名 (true) 違うという
    bool cmpcommand(FILE*, char*, char*, bool = false);
	// 同上、getcommandもする。bool = true では違ったら false を返す

    int getdouble(FILE*, char*, double&);
    int getdouble(FILE*, double&);	// 倍精度実数型変数を得る
    int gettwodbls(FILE*, char*, double&, double&);
    int gettwodbls
    (FILE*, double&, double&);		// 同・二つ得る
    int getthreedbls(FILE*, char*, double&, double&, double&);
    int getthreedbls
    (FILE*, double&, double&, double&);	// 同・三つ得る
    int getint(FILE*, char*, int&);
    int getint(FILE*, int&);		// 整数型変数を得る
    int gettwoints(FILE*, char*, int&, int&);
    int gettwoints(FILE*, int&, int&);		// 同・二つ得る
};

#endif /* ! ___READDATA_HH */
