10Duke Enterprise C++ SDK
Toggle main menu visibility
Loading...
Searching...
No Matches
PCTEncoder.h
1
#ifndef TENDUKE_UTL_PCTENCODER_H
2
#define TENDUKE_UTL_PCTENCODER_H
3
4
#include <iomanip>
5
#include <sstream>
6
7
namespace
tenduke
{
namespace
utl
{
8
11
class
PCTEncoder
12
{
13
public
:
14
virtual
~PCTEncoder() =
default
;
15
16
explicit
PCTEncoder()
17
: result(), cleanStreamState(
nullptr
)
18
{
19
cleanStreamState.copyfmt(result);
20
}
21
22
virtual
std::string encode(
const
std::string &value)
23
{
24
for
(
const
auto
c : value) {
25
if
(shouldEncode(c)) {
26
pctEncode(c);
27
}
28
else
{
29
result << c;
30
}
31
}
32
return
result.str();
33
}
34
protected
:
35
virtual
bool
shouldEncode(
char
c)
36
{
37
return
true
;
38
}
39
40
virtual
void
pctEncode(
char
c)
41
{
42
result <<
'%'
43
<< std::hex
44
<< std::uppercase
45
<< std::setw(2)
46
<< std::setfill(
'0'
)
47
<<
static_cast<
int
>
(
static_cast<
unsigned
char
>
(c));
48
49
result.copyfmt(cleanStreamState);
50
}
51
52
std::ostringstream result;
53
private
:
54
std::ios cleanStreamState;
55
};
56
57
}}
58
59
#endif
//TENDUKE_UTL_PCTENCODER_H
tenduke::utl
Utilities.
Definition
Base64Decoder.h:10
tenduke
Root for classes, functions and globals of 10Duke C++ Client.
Definition
APIRequest.h:4
core
core
src
utl
PCTEncoder.h
Generated by
1.17.0