00001 // ===================================================================== 00002 // $Id: TAnalysisStatusTable.cc,v 1.4 2004/03/07 10:30:27 goiwai Exp $ 00003 // $Name: CLDAQ-1-14-03 $ 00004 // $Log: TAnalysisStatusTable.cc,v $ 00005 // Revision 1.4 2004/03/07 10:30:27 goiwai 00006 // ROOTに組みこむためのおまじないマクロを埋めこみました。 00007 // 全てにおいて完全に動作するわけではありません。 00008 // 00009 // Revision 1.3 2003/10/06 17:02:36 goiwai 00010 // *** empty log message *** 00011 // 00012 // Revision 1.2 2003/07/30 16:17:10 goiwai 00013 // ファイルにコミットログをつけることにしました. 00014 // 00015 // ===================================================================== 00016 #include "TAnalysisStatusTable.hh" 00017 00018 TAnalysisStatusTable::TAnalysisStatusTable() 00019 : TAnalysisStatusList() 00020 { 00021 Clear(); 00022 } 00023 00024 TAnalysisStatusTable::~TAnalysisStatusTable() 00025 {;} 00026 00027 Tostream& operator<<( Tostream& tos, const TAnalysisStatusTable& right ) 00028 { 00029 Tint nstatus = (Tint)right.size(); 00030 for ( Tint i = 0; i < nstatus; i ++ ) { 00031 tos << right[ i ]; 00032 if ( i != nstatus - 1 ) 00033 tos << Tendl; 00034 } 00035 tos << Tflush; 00036 return tos; 00037 } 00038 00039 Tvoid TAnalysisStatusTable::AddAnalysisStatus( const TAnalysisStatus& status ) 00040 { 00041 Tstring id = status.GetID(); 00042 Tint position = FindAnalysisStatus( id ); 00043 if ( position == tNotFound ) { 00044 push_back( status ); 00045 } else { 00046 Tstring head = "TAnalysisStatusTable::AddAnalysisStatus: "; 00047 Tcerr << head << "table already has a this status, " << status << Tendl; 00048 } 00049 return; 00050 } 00051 00052 Tvoid TAnalysisStatusTable::RemoveAnalysisStatus( const Tstring& id ) 00053 { 00054 Tint position = FindAnalysisStatus( id ); 00055 if ( position != tNotFound ) { 00056 erase( begin() + position ); 00057 } else { 00058 Tstring head = "TAnalysisStatusTable::RemoveAnalysisStatus: "; 00059 Tcerr << head << id << " doesn't not found in this table." << Tendl; 00060 } 00061 return; 00062 } 00063 00064 Tint TAnalysisStatusTable::FindAnalysisStatus( const Tstring& id ) const 00065 { 00066 Tint position = tNotFound; 00067 for ( Tint i = 0; i < (Tint)size(); i ++ ) { 00068 if ( ( (*this)[ i ] ).GetID() == id ) { 00069 position = i; 00070 break; 00071 } 00072 } 00073 return position; 00074 } 00075 00076 Tvoid TAnalysisStatusTable::Clear() 00077 { 00078 clear(); 00079 return; 00080 } 00081 00082 Tstatus_t TAnalysisStatusTable::GetStatus( const Tstring& id ) const 00083 { 00084 Tint position = FindAnalysisStatus( id ); 00085 if ( position == tNotFound ) 00086 return tStatusUnknown; 00087 return ( (*this)[ position ] ).GetStatus(); 00088 } 00089 00090 Tvoid TAnalysisStatusTable::SetStatus( const Tstring& id, Tstatus_t status ) 00091 { 00092 Tint position = FindAnalysisStatus( id ); 00093 if ( position != tNotFound ) { 00094 ( (*this)[ position ] ).SetStatus( status ); 00095 } else { 00096 Tstring head = "TAnalysisStatusTable::SetStatus: "; 00097 Tcerr << head << id << " doesn't not found in this table." << Tendl; 00098 } 00099 return; 00100 } 00101 00102 Tobject_t TAnalysisStatusTable::GetObjectType( const Tstring& id ) const 00103 { 00104 Tint position = FindAnalysisStatus( id ); 00105 if ( position == tNotFound ) 00106 return tObjectUnknown; 00107 return ( (*this)[ position ] ).GetObjectType(); 00108 } 00109 00110 Tstring TAnalysisStatusTable::GetID( const Tstring& id ) const 00111 { 00112 Tint position = FindAnalysisStatus( id ); 00113 if ( position == tNotFound ) 00114 return ""; 00115 return ( (*this)[ position ] ).GetID(); 00116 } 00117 00118 Tstring TAnalysisStatusTable::GetDrawableObjectID( const Tstring& id ) const 00119 { 00120 Tint position = FindAnalysisStatus( id ); 00121 if ( position == tNotFound ) 00122 return ""; 00123 return ( (*this)[ position ] ).GetDrawableObjectID(); 00124 } 00125 00126 Tstring TAnalysisStatusTable::GetCanvasID( const Tstring& id ) const 00127 { 00128 Tint position = FindAnalysisStatus( id ); 00129 if ( position == tNotFound ) 00130 return ""; 00131 return ( (*this)[ position ] ).GetCanvasID(); 00132 } 00133 00134 Tbool TAnalysisStatusTable::HasStatus( const Tstring& id ) const 00135 { 00136 Tint position = FindAnalysisStatus( id ); 00137 if ( position == tNotFound ) 00138 return Tfalse; 00139 return Ttrue; 00140 } 00141 00142 Tthread_t* TAnalysisStatusTable::GetThreadID( const Tstring& id ) 00143 { 00144 Tint position = FindAnalysisStatus( id ); 00145 if ( position == tNotFound ) 00146 return 0; 00147 return ( (*this)[ position ] ).GetThreadID(); 00148 } 00149 00150 Tvoid TAnalysisStatusTable::SetThreadID( const Tstring& id, Tthread_t thread ) 00151 { 00152 Tint position = FindAnalysisStatus( id ); 00153 if ( position == tNotFound ) { 00154 Tstring head = "TAnalysisStatusTable::SetThreadID: "; 00155 Tcerr << head << id << " doesn't not found in this table." << Tendl; 00156 } else { 00157 ( (*this)[ position ] ).SetThreadID( thread ); 00158 } 00159 return; 00160 } 00161 00162 #ifdef __CLDAQ_ROOT_DLL 00163 ClassImp(TAnalysisStatusTable) 00164 #endif