// 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 const * ) ;	// 同上，ファイル名つき
  void err_eof () ;		// データファイルエラー
  void err_eof ( char const * ) ;	// 同上，データファイル名付き

  void err_eof ( bool & , char const * ) ;
  				// 同上，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 const * ) ;	// ファイル名を与え、エラー表示させる

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

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

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

  int getdouble ( FILE * , char const * , double & ) ;
  int getdouble ( FILE * , double & ) ;		// 倍精度実数型変数を得る

  int gettwodbls ( FILE * , char const * , double & , double & ) ;
  int gettwodbls
  ( FILE * , double & , double & ) ;		// 同・二つ得る

  int getthreedbls ( FILE * , char const * , double & , double & , double & ) ;
  int getthreedbls
  ( FILE * , double & , double & , double & ) ;	// 同・三つ得る

  int getint ( FILE * , char const * , int & ) ;
  int getint ( FILE * , int & ) ;		// 整数型変数を得る

  int gettwoints ( FILE * , char const * , int & , int & ) ;
  int gettwoints ( FILE * , int & , int & ) ;		// 同・二つ得る
} ;


#endif /* ! ___READDATA_HH */
