从XML生成C ++代码

时间:2017-03-07 18:34:30

标签: c++ xml code-generation

我希望能够在XML中指定客户端服务器协议中不同数据包的布局,并在编译时(或之前)解析XML并生成C ++代码以解析定义的布局。 / p>

示例:

<layout>
    <opcode id=1>
        <field type=uint32 label="itemId" />
        <field type=uint8 label="count" />
        <field type=strlen32 label="name" />
    </opcode>
</layout>

错误的XML不能承受,并且'strlen32'意味着一个32位长度为内容添加前缀的字符串,在处理时会产生以下处理程序:

void Handle_Opcode1(Packet &packet, std::function<...> emitter)
{
    std::uint32_t itemId = packet.Read<std::uint32_t>();
    std::uint8_t count = packet.Read<std::uint8_t>();
    std::uint32_t nameLen = packet.Read<std::uint32_t>();
    std::vector<char> name(static_cast<std::size_t>(nameLen));
    packet.Read(&name[0], name.size());

    emitter(itemId, count, name);
}

我不确切地知道我希望发射器如何以通用的方式工作,但我认为这超出了这个问题的范围。目前我只是在寻找有关C ++代码生成的建议。有没有现成的工具呢?

0 个答案:

没有答案