//****************************************************************************** // RCF - Remote Call Framework // // Copyright (c) 2005 - 2020, Delta V Software. All rights reserved. // http://www.deltavsoft.com // // RCF is distributed under dual licenses - closed source or GPL. // Consult your particular license for conditions of use. // // If you have not purchased a commercial license, you are using RCF // under GPL terms. // // Version: 3.2 // Contact: support deltavsoft.com // //****************************************************************************** #ifndef INCLUDE_SF_BITSET_HPP #define INCLUDE_SF_BITSET_HPP #include #include #include namespace SF { class Archive; class I_BitsetWrapper { public: virtual std::size_t size() = 0; virtual void resize(std::size_t newSize) = 0; virtual void setBit(std::size_t idx, bool newValue) = 0; virtual bool getBit(std::size_t idx) = 0; }; template class BitsetWrapper : public I_BitsetWrapper { public: BitsetWrapper(std::bitset & bits) : mBits(bits) { } virtual std::size_t size() { return mBits.size(); } virtual void resize(std::size_t newSize) { RCF_ASSERT(newSize == N); } virtual void setBit(std::size_t idx, bool newValue) { mBits[idx] = newValue; } virtual bool getBit(std::size_t idx) { return mBits[idx]; } private: std::bitset & mBits; }; RCF_EXPORT void serializeBitset(SF::Archive & ar, I_BitsetWrapper & bits); template void serialize(SF::Archive & ar, std::bitset & bits) { BitsetWrapper wrapper(bits); serializeBitset(ar, wrapper); } } #endif // ! INCLUDE_SF_BITSET_HPP