320x100
// rapidjson/writer.h
template<typename T>
void WriteJsonValue(const char* key, T value);
// WriteJsonValue for const char* values
template<>
void WriteJsonValue(const char* key, const char* value)
{
Key(key);
String(value);
}
// WriteJsonValue for bool values
template<>
void WriteJsonValue(const char* key, bool value) {
Key(key);
Bool(value);
}
// WriteJsonValue for integral types
template<>
void WriteJsonValue(const char* key, char value)
{
Key(key);
Int(value);
}
template<>
void WriteJsonValue(const char* key, unsigned char value)
{
Key(key);
Uint(value);
}
template<>
void WriteJsonValue(const char* key, short value)
{
Key(key);
Int(value);
}
template<>
void WriteJsonValue(const char* key, unsigned short value)
{
Key(key);
Uint(value);
}
template<>
void WriteJsonValue(const char* key, int value)
{
Key(key);
Int(value);
}
template<>
void WriteJsonValue(const char* key, unsigned int value)
{
Key(key);
Uint(value);
}
template<>
void WriteJsonValue(const char* key, __int64 value)
{
Key(key);
Int64(value);
}
template<>
void WriteJsonValue(const char* key, unsigned __int64 value)
{
Key(key);
Uint64(value);
}
template<>
void WriteJsonValue(const char* key, float value)
{
Key(key);
Double(value);
}
// WriteJsonObject function declaration
template<typename... Args>
void WriteJsonObject(Args... args);
// WriteJsonObject variadic template function
template<typename T, typename... Args>
void WriteJsonObject(const char* key, T value, Args... args)
{
WriteJsonValue(key, std::forward<T>(value));
WriteJsonObject(std::forward<Args>(args)...);
}
void WriteJsonObject() {}
// 사용 예시
// example.cpp
rapidjson::StringBuffer sb;
rapidjson::Writer writer(sb);
writer.WriteJsonObject("key", value, "key2", "value");
여기서 좀 더 개선한다면 int64, unsigned int64 타입을 제외하곤 정수형 타입 특화 함수로 통일해도 될 것 같다.
320x100
'프로그래밍 > C,C++' 카테고리의 다른 글
타입에 따른 템플릿 오버로딩 (1) | 2024.01.10 |
---|---|
UTF-8 문자열 관리 (0) | 2023.10.12 |
확인할 수 없는 외부 기호 (0) | 2021.12.30 |
memmove_s 함수 (0) | 2021.12.27 |
C2143 구문 오류: ';'이(가) '*'앞에 없습니다. (0) | 2021.12.20 |