1 #ifndef __JLANG__JLANGTOOLKIT__
2 #define __JLANG__JLANGTOOLKIT__
18 namespace JPP {
using namespace JLANG; }
31 template<
class T,
size_t N>
45 template<
class JFirst_t,
class JSecond_t>
48 return (
void*) &first == (
void*) &second;
62 for (string::const_iterator i = buffer. begin(); i != buffer.end(); ++i) {
68 return !buffer.empty();
79 inline std::string
trim(
const std::string& buffer)
83 string::const_iterator p = buffer. begin();
84 string::const_reverse_iterator q = buffer.rbegin();
86 while (p != q.base() && isspace(*p)) { ++p; }
87 while (p != q.base() && isspace(*q)) { ++q; }
89 return string(p,q.base());
101 inline std::string
trim(
const std::string& buffer,
const char c)
105 string::const_iterator p = buffer. begin();
106 string::const_reverse_iterator q = buffer.rbegin();
108 while (p != q.base() && *p == c) { ++p; }
109 while (p != q.base() && *q == c) { ++q; }
111 return string(p,q.base());
124 inline std::string
replace(
const std::string& input,
const std::string& target,
const std::string& replacement)
128 string buffer = input;
130 for (
size_t i = buffer.find(target); i != string::npos; i = buffer.find(target,i)) {
131 buffer.replace(buffer.begin() + i, buffer.begin() + i + target.length(), replacement);
147 inline std::string
replace(
const std::string& input,
const char target,
const char replacement)
151 string buffer = input;
153 for (string::iterator i = buffer.begin(); i != buffer.end(); ++i) {
171 inline std::string
trim(
const std::string& buffer,
const std::string& target)
175 string::const_iterator p = buffer. begin();
176 string::const_reverse_iterator q = buffer.rbegin();
178 while (p != q.base() && target.find(*p) != string::npos) { ++p; }
179 while (p != q.base() && target.find(*q) != string::npos) { ++q; }
181 return string(p,q.base());
217 istringstream(input) >> value;
229 inline std::string
to_upper(
const std::string& value)
233 string buffer(value);
235 for (string::iterator i = buffer.begin(); i != buffer.end(); ++i) {
249 inline std::string
to_lower(
const std::string& value)
253 string buffer(value);
255 for (string::iterator i = buffer.begin(); i != buffer.end(); ++i) {
273 istringstream is(buffer);
275 return distance(istream_iterator<string>(is), istream_iterator<string>());
287 return (value.size() > 1 && *value.begin() ==
'\'' && *value.rbegin() ==
'\'');
299 return (value.size() > 1 && *value.begin() ==
'\"' && *value.rbegin() ==
'\"');
312 return "\'" + value +
"\'";
327 return "\"" + value +
"\"";