00001 // ===================================================================== 00002 // $Id: TSetRunIdCommand.cc,v 1.3 2004/03/07 10:30:28 goiwai Exp $ 00003 // $Name: CLDAQ-1-14-03 $ 00004 // $Log: TSetRunIdCommand.cc,v $ 00005 // Revision 1.3 2004/03/07 10:30:28 goiwai 00006 // ROOTに組みこむためのおまじないマクロを埋めこみました。 00007 // 全てにおいて完全に動作するわけではありません。 00008 // 00009 // Revision 1.2 2003/10/06 17:02:37 goiwai 00010 // *** empty log message *** 00011 // 00012 // Revision 1.1 2003/07/30 18:19:17 goiwai 00013 // TSetRunIdCommandクラスを追加しました. 00014 // これにより,/run/setidコマンドが追加されました. 00015 // 00016 // ===================================================================== 00017 #include "TSetRunIdCommand.hh" 00018 #include "TRunManager.hh" 00019 00020 static const Tstring _name = "/run/setid"; 00021 static const Tstring _desc = "set run ID."; 00022 00023 TSetRunIdCommand::TSetRunIdCommand( TRunManager* manager ) 00024 : TCommand( manager, _name, _desc ) 00025 {;} 00026 00027 TSetRunIdCommand::~TSetRunIdCommand() 00028 {;} 00029 00030 Tvoid TSetRunIdCommand::Execute( const TstringList& arguments ) 00031 { 00032 if ( arguments.empty() ) { 00033 Tcout << theRunManager -> GetRunID() << Tendl; 00034 } else { 00035 Tstring runid = arguments[ 0 ]; 00036 00037 // 012 とか 0x12 とかは面倒なので許可しない 00038 if ( runid.size() != 1 && runid[ 0 ] == '0' ) { 00039 Tcerr << "TSetRunIdCommand::Execute: invalid ID" << Tendl; 00040 return; 00041 } 00042 00043 // 入力が数字かどうかチェック 00044 for ( Tsize_t i = 0; i < runid.size(); i ++ ) { 00045 if ( isdigit( runid[ i ] ) == 0 ) { 00046 // 数字以外を含めばやりなおし 00047 Tcerr << "TSetRunIdCommand::Execute: invalid ID" << Tendl; 00048 return; 00049 } 00050 } 00051 00052 Tint id = strtol( runid.c_str(), 0, 0 ); 00053 theRunManager -> SetRunID( id ); 00054 } 00055 return; 00056 } 00057 00058 #ifdef __CLDAQ_ROOT_DLL 00059 ClassImp(TSetRunIdCommand) 00060 #endif