aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/poco/Foundation/src/VarHolder.cpp
blob: d45780573290c135723a8872eb5454cfc213e5e8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
// 
// VarHolder.cpp 
// 
// Library: Foundation 
// Package: Core 
// Module:  VarHolder 
// 
// Copyright (c) 2007, Applied Informatics Software Engineering GmbH. 
// and Contributors. 
// 
// SPDX-License-Identifier:	BSL-1.0 
// 
 
 
#include "Poco/Dynamic/VarHolder.h" 
#include "Poco/Dynamic/Var.h" 
#include "Poco/JSONString.h" 
 
 
namespace Poco { 
namespace Dynamic { 
 
 
VarHolder::VarHolder() 
{ 
} 
 
 
VarHolder::~VarHolder() 
{ 
} 
 
 
namespace Impl { 
 
 
void escape(std::string& target, const std::string& source) 
{ 
	target = toJSON(source); 
} 
 
 
bool isJSONString(const Var& any) 
{ 
	return any.type() == typeid(std::string) || 
		any.type() == typeid(char) || 
		any.type() == typeid(char*) || 
		any.type() == typeid(Poco::DateTime) || 
		any.type() == typeid(Poco::LocalDateTime) || 
		any.type() == typeid(Poco::Timestamp); 
} 
 
 
void appendJSONString(std::string& val, const Var& any) 
{ 
	std::string json; 
	escape(json, any.convert<std::string>()); 
	val.append(json); 
} 
 
 
void appendJSONKey(std::string& val, const Var& any) 
{ 
	return appendJSONString(val, any); 
} 
 
 
void appendJSONValue(std::string& val, const Var& any) 
{ 
	if (any.isEmpty()) 
	{ 
		val.append("null"); 
	} 
	else 
	{ 
		bool isStr = isJSONString(any); 
		if (isStr) 
		{ 
			appendJSONString(val, any.convert<std::string>()); 
		} 
		else 
		{ 
			val.append(any.convert<std::string>()); 
		} 
	} 
} 
 
 
} // namespace Impl 
 
 
} } // namespace Poco::Dynamic