Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
读取/写入Cap和x27中的配置结构;恩普托 我有一个C++嵌入式应用程序,我想创建一个Web界面来配置它。 我的计划是描述CANNPROTO中的配置结构,然后使用C++和JavaScript方面生成的代码。_C++_Capnproto - Fatal编程技术网

读取/写入Cap和x27中的配置结构;恩普托 我有一个C++嵌入式应用程序,我想创建一个Web界面来配置它。 我的计划是描述CANNPROTO中的配置结构,然后使用C++和JavaScript方面生成的代码。

读取/写入Cap和x27中的配置结构;恩普托 我有一个C++嵌入式应用程序,我想创建一个Web界面来配置它。 我的计划是描述CANNPROTO中的配置结构,然后使用C++和JavaScript方面生成的代码。,c++,capnproto,C++,Capnproto,配置场景如下所示: web应用程序要求实际配置(Javascript) 本机应用程序提供实际的配置-序列化/写入(C++) web应用程序在反序列化/读取(Javascript)后显示实际配置 用户可以在web应用程序中修改配置-如何?(Javascript) web应用程序发回新的配置-序列化/写入(Javascript) 本机应用程序在反序列化/读取后使用新配置(C++) 本机应用程序可以修改配置-如何修改?(C++) 4和7是棘手的部分,因为就我对API的理解而言,我只能对只读的读取器进行

配置场景如下所示:

  • web应用程序要求实际配置(Javascript)

  • 本机应用程序提供实际的配置-序列化/写入(C++)

  • web应用程序在反序列化/读取(Javascript)后显示实际配置
  • 用户可以在web应用程序中修改配置-如何?(Javascript)
  • web应用程序发回新的配置-序列化/写入(Javascript)
  • 本机应用程序在反序列化/读取后使用新配置(C++)
  • 本机应用程序可以修改配置-如何修改?(C++)
  • 4和7是棘手的部分,因为就我对API的理解而言,我只能对只读的读取器进行反序列化,但是我希望稍后对其进行修改和重新序列化

    我的问题如下:

    • 所描述的场景是做我想做的事情的最佳方法还是我应该做完全不同的事情
    • 我可以反序列化生成器吗?或者以某种方式将阅读器转换为构建器(无需复制)
    • 是否应该使用生成的C++/JavaScript结构作为配置的直接来源(实际代码CAPNPROTO结构),或者我应该引入“原生”结构来与(实际代码)“原生”结构(序列化/反序列化)CAP'NPROTO结构交互(

    要回答第二个问题,您可以从读取器初始化生成器,如:

    fooBulider.setBar(someBarReader);
    
    或者对于顶级MessageReader/MessageBuilder:

    messageBuilder.setRoot<RootType>(messageReader.getRoot<RootType>());
    
    messageBuilder.setRoot(messageReader.getRoot());
    
    这确实需要一个副本,但对于您的用例来说,该副本可能不是什么大问题。配置文件通常不是千兆字节的文件,也不是对性能敏感的文件

    理论上,也可以创建一个MessageBuilder,直接从现有的消息数据初始化,然后就地修改。然而,这方面有一些主要的警告。见:

    关于你的另外两个问题,这真的取决于你。这两种方式都有合理的论据,这实际上取决于具体的用例和您的个人品味