Здравствуйте, RikkiTikkiTavi, Вы писали:
RTT>Всем привет!
RTT>В качестве класса для описания времени я выбрал boost::posix_time::ptime (дабы продолжить приобщаться к boost).
RTT>Самое простое, видимо, было бы получить внутренее представление ( в виде int64, если я правиль понял ) и сериализовать по его типу. Но не смог найти метод доступа...
почему-то там int32 к сожалению...
RTT>Теперь мне нужно сериализовать его в файл, [bпричем своим сериализатором.[/b]
RTT>Как это сделать?
RTT>Либо, писать какой-то свой сериализатор? как?
что-то я недопонимаю -- у тебя же своя сериализация... вот и делай сам
я делал так:
namespace details {
/// \todo Why \c sec_type is a 32bit size?
struct ptime_saver
{
template <typename Buffer>
static void invoke(Buffer& ob, const boost::posix_time::ptime& t)
{
const boost::posix_time::time_duration::sec_type stamp = (t - TIME_T_EPOCH).total_seconds();
ob << stamp;
}
};
/// \todo Why \c sec_type is a 32bit size?
struct ptime_loader
{
template <typename Buffer>
static void invoke(Buffer& ib, boost::posix_time::ptime& t)
{
boost::posix_time::time_duration::sec_type stamp;
ib >> stamp;
t = boost::posix_time::from_time_t(stamp);
}
};
} // namespace details
/**
* \brief Serialize overload to deal w/ \c boost::posix_time::ptime
*/
template <typename Buffer>
void serialize(Buffer& b, boost::posix_time::ptime& t, const int)
{
boost::mpl::eval_if<
typename Buffer::is_load
, boost::mpl::identity<details::ptime_loader>
, boost::mpl::identity<details::ptime_saver>
>::type::template invoke(b, t);
}