问题标签 [cereal]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
398 浏览

c++11 - 如何序列化 std::chrono::minutes

如何用谷物或一般情况下序列化 std::chrono::minutes?

我试过这个

但在 Visual Studio 2015 中出现错误

理想情况下,我想以可移植的方式进行序列化和反序列化。

我想我通过包含 grain/types/chrono.hpp 并更改为

0 投票
3 回答
2893 浏览

c++ - 如何使用谷物序列化枚举类型?

例如

我想用谷物序列化类型

输出看起来像

或者

0 投票
1 回答
1599 浏览

c++ - 谷物嵌套对象

我应该如何继续序列化嵌套对象?

例子:

主要思想是有类似的东西

顺便说一句,我可以问第二个问题。我可以从这样的 json 中再次获得 A 对象吗?谢谢各位=)

0 投票
1 回答
2092 浏览

c++ - 使用 Cereal 序列化库中的模板化多态类型

我有一个模板化的基类:

以及从它派生的模板类:

它在另一个序列化类中使用:

这段代码和使用它的代码被编译成一个静态库

根据我对谷物文档的理解,我需要添加

等将使用的每种类型,在每个类的头文件中

这编译。但有一个运行时错误

试图保存未注册的多态类型 (B)。在调用 CEREAL_REGISTER_TYPE 之前,请确保您的类型已向 CEREAL_REGISTER_TYPE 注册,并且您正在使用的存档已包含(并已向 CEREAL_REGISTER_ARCHIVE 注册)。如果您的类型已经注册并且您仍然看到此错误,您可能需要使用 CEREAL_REGISTER_DYNAMIC_INIT。

从文档中我认为我需要CEREAL_FORCE_DYNAMIC_INIT(libname)在标题和CEREAL_REGISTER_DYNAMIC_INITCPP 文件中添加,但没有 cpp 文件。或者一个合适的 CPP 文件来放置它。

正如预期的那样,添加CEREAL_REGISTER_POLYMORPHIC_RELATION没有任何区别,因为B's 的序列化函数正在调用基类Acereal::base_class 有没有办法使用 Cereal 序列化模板类?

0 投票
0 回答
193 浏览

c++ - 使用谷物序列化犰狳矩阵

我正在尝试使用 Cereal 库实现犰狳矩阵序列化。所以这里有样品。不幸的是,我不能使用 Boost。到目前为止,我得到了这个。mat_extra_meat.hpp 里面

0 投票
1 回答
780 浏览

c++ - 谷物 + 犰狳 + json 序列化

有没有人有基于谷物的犰狳矩阵序列化为 JSON 的示例?下面的二进制序列化似乎正在工作。

mat_extra_meat.hpp 里面

用这个测试:

0 投票
0 回答
417 浏览

c++ - 嵌入式序列化 - 使用没有 RTTI 的谷物?

我想在嵌入式系统中使用 Cereal 1.2.1,所以我不能使用 RTTI,因为它会增加很多代码大小。我不得不放弃对 typeid 的支持。有没有办法在没有 RTTI 的情况下使用谷物?我序列化的结构不是多态的,只是一些数字和数字数组的容器。

如果有帮助,我正在使用 gcc 5.4.1。

谢谢。

0 投票
1 回答
1125 浏览

c++ - 我怎么知道 Cereal 的二进制输出的大小?

我正在尝试通过 TCP 链接传输 Cereal 的序列化结果(二进制存档)。对于接收方来说,第一件事是决定恢复消息对象需要多少字节(至少),但似乎没有办法获得这些信息。

具有所有原始类型成员的结构的序列化结果似乎与结构大小的结果一样大。对此有任何保证吗?我很担心,因为如果由便携式二进制存档序列化,结果会大 1 个字节。我知道这是为了记录字节序,但是接收方怎么知道呢?我想出的唯一安全方法是序列化消息并从输出流中获取大小。对于接收方来说,这看起来并不那么优雅。

0 投票
2 回答
1956 浏览

c++ - 谷物和 Boost 序列化是否使用零拷贝?

我对几种序列化协议进行了一些性能比较,包括 FlatBuffers、Cap'n Proto、Boost 序列化和谷物。所有的测试都是用 C++ 编写的。

我知道 FlatBuffers 和 Cap'n Proto 使用零拷贝。使用零拷贝,序列化时间为空,但序列化对象的大小更大。

我认为谷物和 Boost 序列化没有使用零拷贝。但是,序列化时间(对于 int 和 double)几乎为零,并且序列化对象的大小几乎与 Cap'n Proto 或 Flatbuffers 相同。我在他们的文档中没有找到任何关于零拷贝的信息。

谷物和 Boost 序列化是否也使用零拷贝?

0 投票
3 回答
6232 浏览

c++ - 如何在编译时检测类型是否为 shared_ptr

我想获得一种模板化的方式来查找类型是否为 shared_ptr 并且基于此我想要对函数进行新的专业化。

示例主要功能是,

如果 t.value 是 shared_ptr 那么我想要一个不同的函数专业化。我在下面尝试过,

但这似乎不起作用。这些是 c++11 谷物库的一部分。我正在尝试自定义。