19 #define epicsExportSharedSymbols 32 namespace epics {
namespace pvDatabase {
40 static bool firstTime =
true;
44 PVArrayPlugin::create();
45 PVTimestampPlugin::create();
46 PVDeadbandPlugin::create();
48 return pvDatabaseMaster;
51 PVDatabase::PVDatabase()
53 if(
DEBUG_LEVEL>0) cout <<
"PVDatabase::PVDatabase()\n";
56 PVDatabase::~PVDatabase()
58 if(
DEBUG_LEVEL>0) cout <<
"PVDatabase::~PVDatabase()\n";
65 void PVDatabase::unlock() {
72 PVRecordMap::iterator iter = recordMap.find(recordName);
73 if(iter!=recordMap.end()) {
74 return (*iter).second;
81 if(record->getTraceLevel()>0) {
82 cout <<
"PVDatabase::addRecord " << record->getRecordName() << endl;
85 string recordName = record->getRecordName();
86 PVRecordMap::iterator iter = recordMap.find(recordName);
87 if(iter!=recordMap.end()) {
91 recordMap.insert(PVRecordMap::value_type(recordName,record));
98 string recordName = record->getRecordName();
99 PVRecordMap::iterator iter = recordMap.find(recordName);
100 if(iter!=recordMap.end()) {
102 recordMap.erase(iter);
103 return pvRecord->shared_from_this();
110 if(record->getTraceLevel()>0) {
111 cout <<
"PVDatabase::removeRecord " << record->getRecordName() << endl;
115 if(pvRecord.use_count()!=0) {
116 pvRecord.lock()->unlistenClients();
128 size_t len = recordMap.size();
130 PVRecordMap::iterator iter;
132 for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
133 names[i++] = (*iter).first;
136 pvStringArray->replace(temp);
137 return pvStringArray;
A holder for a contiguous piece of memory.
shared_ptr< T > static_pointer_cast(shared_ptr< U > const &r) BOOST_NOEXCEPT
TODO only here because of the Lockable.
std::tr1::shared_ptr< PVStringArray > PVStringArrayPtr
std::tr1::shared_ptr< PVDatabase > PVDatabasePtr
template class for all extensions of PVArray.
The interface for a database of PVRecords.
std::tr1::shared_ptr< PVRecord > PVRecordPtr
std::tr1::weak_ptr< PVRecord > PVRecordWPtr
FORCE_INLINE const PVDataCreatePtr & getPVDataCreate()