+++ /dev/null
-////////////////////////////////////////////////////////////////////////////////\r
-\r
-// Author: Andy Rushton\r
-// Copyright: (c) Southampton University 1999-2004\r
-// (c) Andy Rushton 2004-2009\r
-// License: BSD License, see ../docs/license.html\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-#include "persistent_vector.hpp"\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r
-// specialisation for a vector of bool which has a different implementation to a vector of anything else\r
-\r
-void stlplus::dump_vector_bool(stlplus::dump_context& context, const std::vector<bool>& data)\r
- throw(stlplus::persistent_dump_failed)\r
-{\r
- stlplus::dump_unsigned(context,data.size());\r
- unsigned size = data.size();\r
- unsigned bytes = ((size + 7) / 8);\r
- for (unsigned b = 0; b < bytes; b++)\r
- {\r
- unsigned char byte = 0;\r
- unsigned char mask = 1;\r
- for (unsigned e = 0; e < 8; e++)\r
- {\r
- unsigned i = b*8 + e;\r
- if (i >= size) break;\r
- if (data[i]) byte |= mask;\r
- mask <<= 1;\r
- }\r
- context.put(byte);\r
- }\r
-}\r
-\r
-void stlplus::restore_vector_bool(stlplus::restore_context& context, std::vector<bool>& data)\r
- throw(stlplus::persistent_restore_failed)\r
-{\r
- unsigned size = 0;\r
- stlplus::restore_unsigned(context,size);\r
- data.resize(size);\r
- unsigned bytes = ((size + 7) / 8);\r
- for (unsigned b = 0; b < bytes; b++)\r
- {\r
- unsigned char byte = context.get();\r
- unsigned char mask = 1;\r
- for (unsigned e = 0; e < 8; e++)\r
- {\r
- unsigned i = b*8 + e;\r
- if (i >= size) break;\r
- data[i] = ((byte & mask) != 0);\r
- mask <<= 1;\r
- }\r
- }\r
-}\r
-\r
-////////////////////////////////////////////////////////////////////////////////\r