SIT/templates/cpp/serializer.template

68 lines
1.6 KiB
Plaintext
Raw Normal View History

2026-01-29 09:22:54 +00:00
{# 序列化器模板 #}
{% if part == 'header' %}
#pragma once
#include <vector>
#include <cstdint>
/**
* 序列化器
* 将{{ target_message.full_name }}消息序列化为字节流
*/
class Serializer {
public:
Serializer();
// 序列化
std::vector<uint8_t> serialize(
const {{ target_message.system_name }}{{ target_message.message_type }}& message);
private:
{% if serialization.value == 'json' %}
// JSON序列化
std::string serializeJson(
const {{ target_message.system_name }}{{ target_message.message_type }}& message);
{% endif %}
};
{% else %}
#include "serializer.h"
#include <sstream>
{% if serialization.value == 'json' %}
#include <nlohmann/json.hpp>
using json = nlohmann::json;
{% endif %}
Serializer::Serializer() {
}
std::vector<uint8_t> Serializer::serialize(
const {{ target_message.system_name }}{{ target_message.message_type }}& message) {
{% if serialization.value == 'json' %}
std::string json_str = serializeJson(message);
return std::vector<uint8_t>(json_str.begin(), json_str.end());
{% else %}
// 默认二进制序列化
std::vector<uint8_t> buffer;
// TODO: 实现二进制序列化逻辑
return buffer;
{% endif %}
}
{% if serialization.value == 'json' %}
std::string Serializer::serializeJson(
const {{ target_message.system_name }}{{ target_message.message_type }}& message) {
json j;
{% for field in target_message.fields %}
j["{{ field.name }}"] = message.{{ field.name }};
{% endfor %}
return j.dump();
}
{% endif %}
{% endif %}