我有一个C ++嵌入式应用程序,我想创建一个Web界面来对其进行配置。
我的计划是在Cap'nProto中描述配置结构,然后在C ++和Javascript方面使用生成的代码。
一个配置方案如下:
网络应用要求实际配置(Javascript)
本地应用提供实际配置-序列化/写入(C ++)
4和7是棘手的部分,因为据我所知API,我只能反序列化只读的读取器,但是我想稍后对其进行修改和重新序列化。
我的问题如下:
答案 0 :(得分:0)
要回答第二个问题,可以从Reader初始化Builder,例如:
fooBulider.setBar(someBarReader);
或者对于顶级MessageReader / MessageBuilder:
messageBuilder.setRoot<RootType>(messageReader.getRoot<RootType>());
这确实需要一个副本,但是对于您的用例而言,该副本可能没什么大不了的。配置通常不是几GB的文件,也不是性能敏感的。
从理论上讲,还可以创建一个MessageBuilder,它直接从现有消息数据中初始化,然后就地进行修改。但是,对此有一些主要警告。参见:
关于其他两个问题,这完全取决于您。两种方法都有合法的论据,并且确实取决于具体的用例和您的个人喜好。