Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce boost dependency in OnlineDB/EcalCondDB #30449

Merged
merged 1 commit into from Jul 7, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
10 changes: 7 additions & 3 deletions OnlineDB/EcalCondDB/interface/LMFUnique.h
Expand Up @@ -5,10 +5,14 @@
Giovanni.Organtini@roma1.infn.it 2010
*/

#include <stdexcept>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <list>
#include <map>
#include <boost/ptr_container/ptr_list.hpp>
#include <memory>
#include <stdexcept>

#include "OnlineDB/EcalCondDB/interface/Tm.h"
#include "OnlineDB/EcalCondDB/interface/IUniqueDBObject.h"
#include "OnlineDB/Oracle/interface/Oracle.h"
Expand Down Expand Up @@ -70,7 +74,7 @@ class LMFUnique : public IUniqueDBObject {
inline void debug() { m_debug = 1; }
inline void nodebug() { m_debug = 0; }

virtual boost::ptr_list<LMFUnique> fetchAll() const noexcept(false);
virtual std::list<std::unique_ptr<LMFUnique>> fetchAll() const noexcept(false);

virtual bool operator<(const LMFUnique &r) { return (m_ID < r.m_ID); }
virtual bool operator<=(const LMFUnique &r) { return (m_ID <= r.m_ID); }
Expand Down
15 changes: 10 additions & 5 deletions OnlineDB/EcalCondDB/src/LMFColor.cc
Expand Up @@ -96,14 +96,19 @@ void LMFColor::getParameters(ResultSet *rset) {
setString("lname", rset->getString(3));
}

template <typename T, typename U>
inline T &unique_static_cast(U &i) {
return *(static_cast<T *>(i.get()));
}

bool LMFColor::isValid() {
boost::ptr_list<LMFUnique> listOfValidColors = fetchAll();
boost::ptr_list<LMFUnique>::const_iterator i = listOfValidColors.begin();
boost::ptr_list<LMFUnique>::const_iterator e = listOfValidColors.end();
auto listOfValidColors = fetchAll();
auto i = listOfValidColors.begin();
auto e = listOfValidColors.end();
bool ret = false;
while (i != e) {
const LMFColor *c = static_cast<const LMFColor *>(&(*i));
if (c->getShortName() == getShortName()) {
const LMFColor &c = unique_static_cast<const LMFColor>(*i);
if (c.getShortName() == getShortName()) {
ret = true;
i = e;
}
Expand Down
39 changes: 21 additions & 18 deletions OnlineDB/EcalCondDB/src/LMFDefFabric.cc
Expand Up @@ -144,6 +144,11 @@ LMFRunTag LMFDefFabric::getRunTagFromID(int id) const {

int LMFDefFabric::getRunTagID(std::string tag, int version) const { return getRunTag(tag, version).getID(); }

template <typename T, typename U>
inline T &unique_static_cast(U &i) {
return *(static_cast<T *>(i.get()));
}

void LMFDefFabric::initialize() noexcept(false) {
_lmfColors.clear();
_lmfTrigTypes.clear();
Expand All @@ -152,60 +157,58 @@ void LMFDefFabric::initialize() noexcept(false) {
_lmfSeqVersions.clear();
_lmfCorrVersions.clear();
if ((m_env != nullptr) && (m_conn != nullptr)) {
boost::ptr_list<LMFUnique> listOfObjects;
boost::ptr_list<LMFUnique>::const_iterator i;
boost::ptr_list<LMFUnique>::const_iterator e;
listOfObjects = LMFColor(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
auto listOfObjects = LMFColor(m_env, m_conn).fetchAll();
auto i = listOfObjects.begin();
auto e = listOfObjects.end();

while (i != e) {
const LMFColor *c = static_cast<const LMFColor *>(&(*i));
_lmfColors.push_back(*c);
const LMFColor &c = unique_static_cast<const LMFColor>(*i);
_lmfColors.push_back(c);
i++;
}
listOfObjects.clear();
listOfObjects = LMFTrigType(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
while (i != e) {
const LMFTrigType *c = static_cast<const LMFTrigType *>(&(*i));
_lmfTrigTypes.push_back(*c);
const LMFTrigType &c = unique_static_cast<const LMFTrigType>(*i);
_lmfTrigTypes.push_back(c);
i++;
}
listOfObjects.clear();
listOfObjects = LMFRunTag(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
while (i != e) {
const LMFRunTag *c = static_cast<const LMFRunTag *>(&(*i));
_lmfRunTags.push_back(*c);
const LMFRunTag &c = unique_static_cast<const LMFRunTag>(*i);
_lmfRunTags.push_back(c);
i++;
}
listOfObjects.clear();
listOfObjects = LMFPrimVers(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
while (i != e) {
const LMFPrimVers *c = static_cast<const LMFPrimVers *>(&(*i));
_lmfPrimVersions.push_back(*c);
const LMFPrimVers &c = unique_static_cast<const LMFPrimVers>(*i);
_lmfPrimVersions.push_back(c);
i++;
}
listOfObjects.clear();
listOfObjects = LMFCorrVers(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
while (i != e) {
const LMFCorrVers *c = static_cast<const LMFCorrVers *>(&(*i));
_lmfCorrVersions.push_back(*c);
const LMFCorrVers &c = unique_static_cast<const LMFCorrVers>(*i);
_lmfCorrVersions.push_back(c);
i++;
}
listOfObjects.clear();
listOfObjects = LMFSeqVers(m_env, m_conn).fetchAll();
i = listOfObjects.begin();
e = listOfObjects.end();
while (i != e) {
const LMFSeqVers *c = static_cast<const LMFSeqVers *>(&(*i));
_lmfSeqVersions.push_back(*c);
const LMFSeqVers &c = unique_static_cast<const LMFSeqVers>(*i);
_lmfSeqVersions.push_back(c);
i++;
}
listOfObjects.clear();
Expand Down
8 changes: 4 additions & 4 deletions OnlineDB/EcalCondDB/src/LMFUnique.cc
Expand Up @@ -58,11 +58,11 @@ void LMFUnique::attach(std::string name, LMFUnique* u) {
}
}

boost::ptr_list<LMFUnique> LMFUnique::fetchAll() const noexcept(false) {
std::list<std::unique_ptr<LMFUnique>> LMFUnique::fetchAll() const noexcept(false) {
/*
Returns a list of pointers to DB objects
*/
boost::ptr_list<LMFUnique> l;
std::list<std::unique_ptr<LMFUnique>> l;
this->checkConnection();

try {
Expand All @@ -84,8 +84,8 @@ boost::ptr_list<LMFUnique> LMFUnique::fetchAll() const noexcept(false) {
o->dump();
}
try {
l.push_back(o);
} catch (boost::bad_pointer& e) {
l.emplace_back(o);
} catch (std::exception& e) {
throw(std::runtime_error(m_className + "::fetchAll: " + e.what()));
}
}
Expand Down
9 changes: 3 additions & 6 deletions OnlineDB/EcalCondDB/test/TestLMF2010-write.cpp
Expand Up @@ -117,13 +117,10 @@ class CondDBApp {
cout << "Does not exists" << endl;
}
// we can just get the tags from the DB
boost::ptr_list<LMFUnique> listOfTags = lmfruntag.fetchAll();
boost::ptr_list<LMFUnique>::iterator itag = listOfTags.begin();
boost::ptr_list<LMFUnique>::iterator etag = listOfTags.end();
auto listOfTags = lmfruntag.fetchAll();
cout << "Found " << listOfTags.size() << " tags" << endl;
while (itag != etag) {
itag->dump();
itag++;
for (auto &tag : listOfTags) {
tag->dump();
}
// we can also get the tags from the fabric
lmfruntag = fabric.getRunTag("gen", 3);
Expand Down