00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef KERNEL_SELECTSTATEMENT_H
00011 #define KERNEL_SELECTSTATEMENT_H
00012
00013
00014 #include <string>
00015
00016
00017 #include "GaudiKernel/ISelectStatement.h"
00018
00046 class SelectStatement : virtual public ISelectStatement {
00047 public:
00049 explicit SelectStatement(const std::string& s, long typ)
00050 : m_select(s), m_refCount(0), m_isActive(false), m_type(typ)
00051 {
00052 }
00054 explicit SelectStatement(const std::string& s)
00055 : m_select(s), m_refCount(0), m_isActive(false), m_type(STRING)
00056 {
00057 }
00059 explicit SelectStatement()
00060 : m_refCount(0), m_isActive(false), m_type(FUNCTION)
00061 {
00062 }
00064 virtual ~SelectStatement() {
00065 }
00067 virtual unsigned long addRef() {
00068 return ++m_refCount;
00069 }
00071 virtual unsigned long release() {
00072 long cnt = --m_refCount;
00073 if ( cnt <= 0 ) {
00074 delete this;
00075 }
00076 return cnt;
00077 }
00079 virtual StatusCode queryInterface(const InterfaceID& riid, void** ppvInterface) {
00080 if ( riid == IID_IInterface ) {
00081 *ppvInterface = (IInterface*)this;
00082 }
00083 if ( riid == IID_ISelectStatement ) {
00084 *ppvInterface = (ISelectStatement*)this;
00085 }
00086 else {
00087 *ppvInterface = 0;
00088 return NO_INTERFACE;
00089 }
00090 addRef();
00091 return StatusCode::SUCCESS;
00092 }
00094 long type() const {
00095 return m_type;
00096 }
00098 const std::string& criteria() const {
00099 return m_select;
00100 }
00102 void setCriteria(const std::string& crit) {
00103 m_select = crit;
00104 (m_select.length() > 0) ? m_type |= STRING : m_type &= ~STRING;
00105 }
00107 void setActive(bool flag = true) {
00108 m_isActive = flag;
00109 }
00111 bool isActive() const {
00112 return m_isActive;
00113 }
00115 virtual bool operator()(void* ) {
00116 return true;
00117 }
00118 protected:
00120 std::string m_select;
00122 long m_refCount;
00124 bool m_isActive;
00126 long m_type;
00127 };
00128 #endif // KERNEL_SELECTSTATEMENT_H