From afa17f8f4faa7e55584aae2ed9a86c7b14e4dc1b Mon Sep 17 00:00:00 2001 From: Michael Davidsaver Date: Wed, 9 Feb 2011 20:29:08 -0500 Subject: [PATCH] CDRMonitor: print to streams --- pvDataApp/misc/CDRMonitor.cpp | 40 ++++++++++++++++++++++++++++++++++- pvDataApp/misc/CDRMonitor.h | 9 +++++++- 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/pvDataApp/misc/CDRMonitor.cpp b/pvDataApp/misc/CDRMonitor.cpp index 0e6364b..f6a30cf 100644 --- a/pvDataApp/misc/CDRMonitor.cpp +++ b/pvDataApp/misc/CDRMonitor.cpp @@ -67,6 +67,15 @@ CDRMonitor::show(FILE *fd) } } +void +CDRMonitor::show(std::ostream& out) const +{ + for(CDRNode *cur=first(); !!cur; cur=cur->next()) + { + cur->show(out); + } +} + void CDRNode::show(FILE *fd) { @@ -86,6 +95,23 @@ CDRNode::show(FILE *fd) fprintf(fd,"\n"); } +void +CDRNode::show(std::ostream& out) const +{ + Lock x(&guard); + if(!current.cons && !current.dtys && !current.refs) + return; + out<node=new CDRNode(inst->name); } -}} +}} // namespace epics::pvData + +std::ostream& operator<<(std::ostream& out,const epics::pvData::CDRMonitor& mon) +{ + mon.show(out); + return out; +} + +std::ostream& operator<<(std::ostream& out,const epics::pvData::CDRNode& node) +{ + node.show(out); + return out; +} diff --git a/pvDataApp/misc/CDRMonitor.h b/pvDataApp/misc/CDRMonitor.h index 7f11b4b..6ccfa67 100644 --- a/pvDataApp/misc/CDRMonitor.h +++ b/pvDataApp/misc/CDRMonitor.h @@ -6,6 +6,7 @@ */ #ifndef CDRMONITOR_H #define CDRMONITOR_H +#include #include #include #include @@ -46,9 +47,10 @@ public: CDRCount current(); //!< current global count - CDRNode* first(){return firstNode;} + CDRNode* first() const{return firstNode;} void show(FILE*); + void show(std::ostream&) const; private: // Private ctor for singleton CDRMonitor(); @@ -77,6 +79,7 @@ public: CDRCount get() const{Lock x(&guard); return current;} void show(FILE*); + void show(std::ostream&) const; private: const String nodeName; CDRCount current; @@ -130,4 +133,8 @@ static CDRNodeInstance NAME ## _node={0,EPICS_THREAD_ONCE_INIT,#NAME} #endif }} + +std::ostream& operator<<(std::ostream&,const epics::pvData::CDRMonitor&); +std::ostream& operator<<(std::ostream&,const epics::pvData::CDRNode&); + #endif /* CDRMONITOR_H */