This is Unofficial EPICS BASE Doxygen Site
epics::pvAccess::MonitorElement::Ref Class Reference

#include "monitor.h"

Public Member Functions

 Ref ()
 
 Ref (Monitor &M)
 
 Ref (const Monitor::shared_pointer &M)
 
 ~Ref ()
 
void swap (Ref &o)
 
MonitorElementPtr letGo ()
 
void attach (Monitor &M)
 
void attach (const Monitor::shared_pointer &M)
 
bool next ()
 
void reset ()
 
Refoperator++ ()
 
 operator hidden_bool_type () const
 
MonitorElementoperator-> ()
 
MonitorElementoperator* ()
 
MonitorElementget ()
 
bool operator== (const Ref &o) const
 
bool operator!= (const Ref &o) const
 

Detailed Description

A (single ownership) smart pointer to extract a MonitorElement from a Monitor queue

To fetch a single element

epics::pvAccess::Monitor::shared_pointer mon(....);
if(elem) {
// do something with element
assert(elem->pvStructurePtr->getSubField("foo"));
} else {
// queue was empty
}

To fetch all available elements (c++11)

epics::pvAccess::Monitor::shared_pointer mon(....);
for(auto& elem : *mon) {
assert(elem.pvStructurePtr->getSubField("foo"));
}

To fetch all available elements (c++98)

epics::pvAccess::Monitor::shared_pointer mon(....);
for(epics::pvAccess::MonitorElement::Ref it(mon); it; ++it) {
MonitorElement& elem(*it);
assert(elem.pvStructurePtr->getSubField("foo"));
}

Definition at line 146 of file monitor.h.

Constructor & Destructor Documentation

epics::pvAccess::MonitorElement::Ref::Ref ( )
inline

Definition at line 151 of file monitor.h.

151 :mon(0), elem() {}
epics::pvAccess::MonitorElement::Ref::Ref ( Monitor M)
inline

Definition at line 152 of file monitor.h.

152 :mon(&M), elem(mon->poll()) {}
virtual MonitorElementPtr poll()=0
epics::pvAccess::MonitorElement::Ref::Ref ( const Monitor::shared_pointer &  M)
inline

Definition at line 153 of file monitor.h.

153 :mon(M.get()), elem(mon->poll()) {}
virtual MonitorElementPtr poll()=0
epics::pvAccess::MonitorElement::Ref::~Ref ( )
inline

Definition at line 154 of file monitor.h.

Member Function Documentation

void epics::pvAccess::MonitorElement::Ref::attach ( Monitor M)
inline

Definition at line 172 of file monitor.h.

172  {
173  reset();
174  mon = &M;
175  }
void epics::pvAccess::MonitorElement::Ref::attach ( const Monitor::shared_pointer &  M)
inline

Definition at line 176 of file monitor.h.

176  {
177  reset();
178  mon = M.get();
179  }
MonitorElement* epics::pvAccess::MonitorElement::Ref::get ( )
inline

Definition at line 203 of file monitor.h.

203 { return elem.get(); }
MonitorElementPtr epics::pvAccess::MonitorElement::Ref::letGo ( )
inline

analogous to auto_ptr<>::release() but given a different name to avoid being confused with Monitor::release()

Definition at line 167 of file monitor.h.

167  {
168  MonitorElementPtr ret;
169  elem.swap(ret);
170  return ret;
171  }
std::tr1::shared_ptr< MonitorElement > MonitorElementPtr
Definition: monitor.h:40
bool epics::pvAccess::MonitorElement::Ref::next ( )
inline

Definition at line 180 of file monitor.h.

180  {
181  if(elem) mon->release(elem);
182  elem = mon->poll();
183  return !!elem;
184  }
virtual void release(MonitorElementPtr const &monitorElement)=0
virtual MonitorElementPtr poll()=0
epics::pvAccess::MonitorElement::Ref::operator hidden_bool_type ( ) const
inline

Definition at line 199 of file monitor.h.

199 { return elem.get() ? &mon : 0; }
bool epics::pvAccess::MonitorElement::Ref::operator!= ( const Ref o) const
inline

Definition at line 206 of file monitor.h.

206 { return !(*this==o); }
MonitorElement& epics::pvAccess::MonitorElement::Ref::operator* ( )
inline

Definition at line 202 of file monitor.h.

202 { return *elem; }
Ref& epics::pvAccess::MonitorElement::Ref::operator++ ( )
inline

Definition at line 189 of file monitor.h.

189  {// prefix increment. aka "++(*this)"
190  next();
191  return *this;
192  }
MonitorElement* epics::pvAccess::MonitorElement::Ref::operator-> ( )
inline

Definition at line 201 of file monitor.h.

201 { return elem.get(); }
bool epics::pvAccess::MonitorElement::Ref::operator== ( const Ref o) const
inline

Definition at line 205 of file monitor.h.

205 { return elem==o.elem; }
void epics::pvAccess::MonitorElement::Ref::reset ( )
inline

Definition at line 185 of file monitor.h.

185  {
186  if(elem && mon) mon->release(elem);
187  elem.reset();
188  }
virtual void release(MonitorElementPtr const &monitorElement)=0
void epics::pvAccess::MonitorElement::Ref::swap ( Ref o)
inline

Definition at line 161 of file monitor.h.

161  {
162  std::swap(mon , o.mon);
163  std::swap(elem, o.elem);
164  }
void swap(shared_ptr< T > &a, shared_ptr< T > &b) BOOST_NOEXCEPT
Definition: shared_ptr.hpp:783

The documentation for this class was generated from the following file: