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 + 
"\"";