1 #ifndef __JDB_JSELECTOR__ 
    2 #define __JDB_JSELECTOR__ 
   13 #include "dbclient/KM3NeTDBClient.h" 
   26   using KM3NeT::DB::Selector;
 
   32   static const Selector::RelOp* 
const OPERAND[] = 
 
   34       &Selector::RelOp::Equal,
 
   35       &Selector::RelOp::Different,
 
   36       &Selector::RelOp::Less,
 
   37       &Selector::RelOp::LessEqual,
 
   38       &Selector::RelOp::Greater,
 
   39       &Selector::RelOp::GreaterEqual
 
   55   inline const Selector::RelOp& 
getOperand(
const int index)
 
   75     static const char EOL = 
';';    
 
   93     JSelector(
const std::string& key, 
const T value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
   95       add(key, value, operand);
 
  106     template<
class JClass_t, 
class JType_t>
 
  107     JSelector(JType_t JClass_t::*data_member, 
const JType_t value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
  109       add(data_member, value, operand);
 
  120     template<
class JClass_t>
 
  121     JSelector(std::string JClass_t::*data_member, 
const std::string value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
  123       add(data_member, value, operand);
 
  137       copy(selection.begin(), selection.end(), back_inserter(*
this));
 
  152     JSelector& 
add(
const std::string& key, 
const T value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
  160       push_back(Selector(key.c_str(), os.str().c_str(), operand));
 
  174     template<
class JClass_t, 
class JType_t>
 
  175     inline JSelector& 
add(JType_t JClass_t::*data_member, 
const JType_t value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
  189     template<
class JClass_t>
 
  190     inline JSelector& 
add(std::string JClass_t::*data_member, 
const std::string& value, 
const Selector::RelOp& operand = Selector::RelOp::Equal) 
 
  216         string::size_type pos = buffer.find(
getOperand(i).Render());
 
  218         if (pos != string::npos && (operand == -1 || 
getOperand(i).Render().length() > 
getOperand(operand).Render().length())) {
 
  225         string::size_type pos = buffer.find(
getOperand(operand).Render());
 
  227         selector.push_back(Selector(
JPP::trim(buffer.substr(0, pos)).c_str(),
 
  233         in.setstate(ios::badbit);
 
  249       for (const_iterator i = selector.begin(); i != selector.end(); ++i) {
 
  250         out << i->Name << i->RelationalOperator.Render()  << i->Value << 
JSelector::EOL << std::endl;