Panda3D
dtool
src
dtoolutil
string_utils.I
Go to the documentation of this file.
1
/**
2
* PANDA 3D SOFTWARE
3
* Copyright (c) Carnegie Mellon University. All rights reserved.
4
*
5
* All use of this software is subject to the terms of the revised BSD
6
* license. You should have received a copy of this license along
7
* with this source code in a file named "LICENSE."
8
*
9
* @file string_utils.I
10
* @author drose
11
* @date 2000-07-14
12
*/
13
14
template
<
class
Thing>
15
INLINE std::string
16
format_string(
const
Thing &thing) {
17
std::ostringstream str;
18
str << thing;
19
return
str.str();
20
}
21
22
INLINE std::string
23
format_string(
const
std::string &value) {
24
return
value;
25
}
26
27
INLINE std::string
28
format_string(
bool
value) {
29
return
std::string(value ?
"true"
:
"false"
);
30
}
31
32
INLINE std::string
33
format_string(
float
value) {
34
char
buffer[32];
35
pdtoa((
double
)value, buffer);
36
return
std::string(buffer);
37
}
38
39
INLINE std::string
40
format_string(
double
value) {
41
char
buffer[32];
42
pdtoa(value, buffer);
43
return
std::string(buffer);
44
}
45
46
INLINE std::string
47
format_string(
unsigned
int
value) {
48
char
buffer[11];
49
char
*p = buffer + 10;
50
*p = 0;
51
do
{
52
*--p =
'0'
+ (value % 10);
53
value /= 10;
54
}
while
(value > 0);
55
56
return
std::string(p);
57
}
58
59
INLINE std::string
60
format_string(
int
value) {
61
char
buffer[12];
62
char
*p = buffer + 11;
63
*p = 0;
64
65
if
(value < 0) {
66
unsigned
int
posv = (
unsigned
int)-value;
67
do
{
68
*--p =
'0'
+ (posv % 10);
69
posv /= 10;
70
}
while
(posv > 0);
71
*--p =
'-'
;
72
}
else
{
73
do
{
74
*--p =
'0'
+ (value % 10);
75
value /= 10;
76
}
while
(value > 0);
77
}
78
79
return
std::string(p);
80
}
81
82
INLINE std::string
83
format_string(int64_t value) {
84
char
buffer[21];
85
char
*p = buffer + 20;
86
*p = 0;
87
88
if
(value < 0) {
89
uint64_t posv = (uint64_t)-value;
90
do
{
91
*--p =
'0'
+ (posv % 10);
92
posv /= 10;
93
}
while
(posv > 0);
94
*--p =
'-'
;
95
}
else
{
96
do
{
97
*--p =
'0'
+ (value % 10);
98
value /= 10;
99
}
while
(value > 0);
100
}
101
102
return
std::string(p);
103
}
Generated on Wed Jan 23 2019 21:39:50 for Panda3D by
1.8.15