Clingo
Loading...
Searching...
No Matches
string.hh
1
#pragma once
2
3
#include <cassert>
4
#include <string_view>
5
6
namespace
CppClingo::Util {
7
8
void
quote(std::string_view in,
auto
out) {
9
for
(
auto
c : in) {
10
switch
(c) {
11
case
'\n'
: {
12
*out++ =
'\\'
;
13
*out++ =
'n'
;
14
break
;
15
}
16
case
'\t'
: {
17
*out++ =
'\\'
;
18
*out++ =
't'
;
19
break
;
20
}
21
case
'\\'
: {
22
*out++ =
'\\'
;
23
*out++ =
'\\'
;
24
break
;
25
}
26
case
'"'
: {
27
*out++ =
'\\'
;
28
*out++ =
'"'
;
29
break
;
30
}
31
default
: {
32
*out++ = c;
33
break
;
34
}
35
}
36
}
37
}
38
void
unquote(std::string_view in,
auto
out) {
39
bool
slash =
false
;
40
for
(
auto
c : in) {
41
if
(slash) {
42
switch
(c) {
43
case
'n'
: {
44
*out++ =
'\n'
;
45
break
;
46
}
47
case
't'
: {
48
*out++ =
'\t'
;
49
break
;
50
}
51
case
'\\'
: {
52
*out++ =
'\\'
;
53
break
;
54
}
55
case
'"'
: {
56
*out++ =
'"'
;
57
break
;
58
}
59
default
: {
60
assert(
false
);
61
break
;
62
}
63
}
64
slash =
false
;
65
}
else
if
(c ==
'\\'
) {
66
slash =
true
;
67
}
else
{
68
*out++ = c;
69
}
70
}
71
}
72
73
}
// namespace CppClingo::Util
clingo
util
string.hh
Generated by
1.9.8