// src/backend/serializers_gatekeeper.cc - Copyright 2005, 2006, University // of Padova, dept. of Pure and Applied // Mathematics // // This file is part of SGPEMv2. // // This is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 3 of the License, or // (at your option) any later version. // // SGPEMv2 is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with SGPEMv2. If not, see http://www.gnu.org/licenses/. #include #include // Include full template definition only in implementation files: #include #include #include using std::find; using std::runtime_error; using std::vector; using namespace sgpem; // Explicit template instantiation to allow to export symbols from the DSO. template class sgpem::Singleton; typedef vector::iterator SerializerIterator; vector SerializersGatekeeper::get_registered () const { return _registered; } void SerializersGatekeeper::register_serializer (Serializer *serializer) { assert (serializer != nullptr); SerializerIterator end = _registered.end (); if (find (_registered.begin (), end, serializer) == end) _registered.push_back (serializer); } void SerializersGatekeeper::unregister_serializer (Serializer *serializer) { assert (serializer != nullptr); SerializerIterator end = _registered.end (); SerializerIterator pos = find (_registered.begin (), end, serializer); if (pos != end) { _registered.erase (pos); } } SerializersGatekeeper::SerializersGatekeeper () { }