Index: pjproject/main/pjlib/include/pj++/string.hpp
===================================================================
--- pjproject/main/pjlib/include/pj++/string.hpp	(revision 29)
+++ pjproject/main/pjlib/include/pj++/string.hpp	(revision 36)
@@ -1,4 +1,3 @@
 /* $Id$
- *
  */
 #ifndef __PJPP_STRING_H__
@@ -7,54 +6,89 @@
 #include <pj/string.h>
 #include <pj++/pool.hpp>
-
-class PJ_String : public pj_str_t
+#include <pj/assert.h>
+
+//
+// String wrapper class for pj_str_t.
+//
+class Pj_String : public pj_str_t
 {
 public:
-    PJ_String() 
+    //
+    // Default constructor.
+    //
+    Pj_String() 
     { 
-	pj_assert(sizeof(PJ_String) == sizeof(pj_str_t));
-	ptr=NULL; slen=0; 
-    }
-
-    explicit PJ_String(char *str) 
+	pj_assert(sizeof(Pj_String) == sizeof(pj_str_t));
+	ptr=NULL; 
+        slen=0; 
+    }
+
+    //
+    // Construct the buffer from a char*.
+    //
+    explicit Pj_String(char *str) 
     { 
 	set(str);
     }
 
-    PJ_String(PJ_Pool *pool, const char *src)
+    //
+    // Construct from a const char*.
+    //
+    Pj_String(Pj_Pool *pool, const char *src)
     {
 	set(pool, src);
     }
 
-    explicit PJ_String(pj_str_t *s)
+    //
+    // Construct from pj_str_t*.
+    //
+    explicit Pj_String(pj_str_t *s)
     {
 	set(s);
     }
 
-    PJ_String(PJ_Pool *pool, const pj_str_t *s)
+    //
+    // Construct by copying from const pj_str_t*.
+    //
+    Pj_String(Pj_Pool *pool, const pj_str_t *s)
     {
 	set(pool, s);
     }
 
-    explicit PJ_String(PJ_String &rhs)
+    //
+    // Construct from another Pj_String
+    //
+    explicit Pj_String(Pj_String &rhs)
     {
 	set(rhs);
     }
 
-    PJ_String(PJ_Pool *pool, const PJ_String &rhs)
+    //
+    // Construct by copying from Pj_String
+    //
+    Pj_String(Pj_Pool *pool, const Pj_String &rhs)
     {
 	set(pool, rhs);
     }
 
-    PJ_String(char *str, pj_size_t len)
+    //
+    // Construct from a char* and a length.
+    //
+    Pj_String(char *str, pj_size_t len)
     {
 	set(str, len);
     }
 
-    PJ_String(char *begin, char *end)
+    //
+    // Construct from pair of pointer.
+    //
+    Pj_String(char *begin, char *end)
     {
 	pj_strset3(this, begin, end);
     }
 
+    //
+    // Get the length of the string.
+    //
     pj_size_t length() const
     {
@@ -62,4 +96,7 @@
     }
 
+    //
+    // Get the length of the string.
+    //
     pj_size_t size() const
     {
@@ -67,4 +104,7 @@
     }
 
+    //
+    // Get the string buffer.
+    //
     const char *buf() const
     {
@@ -72,4 +112,7 @@
     }
 
+    //
+    // Initialize buffer from char*.
+    //
     void set(char *str)
     {
@@ -77,9 +120,15 @@
     }
 
-    void set(PJ_Pool *pool, const char *s)
+    //
+    // Initialize by copying from a const char*.
+    //
+    void set(Pj_Pool *pool, const char *s)
     {
 	pj_strdup2(pool->pool_(), this, s);
     }
 
+    //
+    // Initialize from pj_str_t*.
+    //
     void set(pj_str_t *s)
     {
@@ -87,9 +136,15 @@
     }
 
-    void set(PJ_Pool *pool, const pj_str_t *s)
+    //
+    // Initialize by copying from const pj_str_t*.
+    //
+    void set(Pj_Pool *pool, const pj_str_t *s)
     {
 	pj_strdup(pool->pool_(), this, s);
     }
 
+    //
+    // Initialize from char* and length.
+    //
     void set(char *str, pj_size_t len)
     {
@@ -97,4 +152,7 @@
     }
 
+    //
+    // Initialize from pair of pointers.
+    //
     void set(char *begin, char *end)
     {
@@ -102,19 +160,31 @@
     }
 
-    void set(PJ_String &rhs)
+    //
+    // Initialize from other Pj_String.
+    //
+    void set(Pj_String &rhs)
     {
 	pj_strassign(this, &rhs);
     }
 
-    void set(PJ_Pool *pool, const PJ_String *s)
+    //
+    // Initialize by copying from a Pj_String*.
+    //
+    void set(Pj_Pool *pool, const Pj_String *s)
     {
 	pj_strdup(pool->pool_(), this, s);
     }
 
-    void set(PJ_Pool *pool, const PJ_String &s)
+    //
+    // Initialize by copying from other Pj_String.
+    //
+    void set(Pj_Pool *pool, const Pj_String &s)
     {
 	pj_strdup(pool->pool_(), this, &s);
     }
 
+    //
+    // Copy the contents of other string.
+    //
     void strcpy(const pj_str_t *s)
     {
@@ -122,9 +192,15 @@
     }
 
-    void strcpy(const PJ_String &rhs)
+    //
+    // Copy the contents of other string.
+    //
+    void strcpy(const Pj_String &rhs)
     {
 	pj_strcpy(this, &rhs);
     }
 
+    //
+    // Copy the contents of other string.
+    //
     void strcpy(const char *s)
     {
@@ -132,4 +208,7 @@
     }
 
+    //
+    // Compare string.
+    //
     int strcmp(const char *s) const
     {
@@ -137,4 +216,7 @@
     }
 
+    //
+    // Compare string.
+    //
     int strcmp(const pj_str_t *s) const
     {
@@ -142,9 +224,15 @@
     }
 
-    int strcmp(const PJ_String &rhs) const
+    //
+    // Compare string.
+    //
+    int strcmp(const Pj_String &rhs) const
     {
 	return pj_strcmp(this, &rhs);
     }
 
+    //
+    // Compare string.
+    //
     int strncmp(const char *s, pj_size_t len) const
     {
@@ -152,4 +240,7 @@
     }
 
+    //
+    // Compare string.
+    //
     int strncmp(const pj_str_t *s, pj_size_t len) const
     {
@@ -157,9 +248,15 @@
     }
 
-    int strncmp(const PJ_String &rhs, pj_size_t len) const
+    //
+    // Compare string.
+    //
+    int strncmp(const Pj_String &rhs, pj_size_t len) const
     {
 	return pj_strncmp(this, &rhs, len);
     }
 
+    //
+    // Compare string.
+    //
     int stricmp(const char *s) const
     {
@@ -167,4 +264,7 @@
     }
 
+    //
+    // Compare string.
+    //
     int stricmp(const pj_str_t *s) const
     {
@@ -172,9 +272,15 @@
     }
 
-    int stricmp(const PJ_String &rhs) const
+    //
+    // Compare string.
+    //
+    int stricmp(const Pj_String &rhs) const
     {
 	return stricmp(&rhs);
     }
 
+    //
+    // Compare string.
+    //
     int strnicmp(const char *s, pj_size_t len) const
     {
@@ -182,4 +288,7 @@
     }
 
+    //
+    // Compare string.
+    //
     int strnicmp(const pj_str_t *s, pj_size_t len) const
     {
@@ -187,9 +296,15 @@
     }
 
-    int strnicmp(const PJ_String &rhs, pj_size_t len) const
+    //
+    // Compare string.
+    //
+    int strnicmp(const Pj_String &rhs, pj_size_t len) const
     {
 	return strnicmp(&rhs, len);
     }
 
+    //
+    // Compare contents for equality.
+    //
     bool operator==(const char *s) const
     {
@@ -197,4 +312,7 @@
     }
 
+    //
+    // Compare contents for equality.
+    //
     bool operator==(const pj_str_t *s) const
     {
@@ -202,9 +320,15 @@
     }
 
-    bool operator==(const PJ_String &rhs) const
+    //
+    // Compare contents for equality.
+    //
+    bool operator==(const Pj_String &rhs) const
     {
 	return pj_strcmp(this, &rhs) == 0;
     }
 
+    //
+    // Find a character in the string.
+    //
     char *strchr(int chr)
     {
@@ -212,4 +336,7 @@
     }
 
+    //
+    // Find a character in the string.
+    //
     char *find(int chr)
     {
@@ -217,9 +344,15 @@
     }
 
-    void strcat(const PJ_String &rhs)
+    //
+    // Concatenate string.
+    //
+    void strcat(const Pj_String &rhs)
     {
 	pj_strcat(this, &rhs);
     }
 
+    //
+    // Left trim.
+    //
     void ltrim()
     {
@@ -227,4 +360,7 @@
     }
 
+    //
+    // Right trim.
+    //
     void rtrim()
     {
@@ -232,4 +368,7 @@
     }
 
+    //
+    // Left and right trim.
+    //
     void trim()
     {
@@ -237,12 +376,32 @@
     }
 
-    unsigned long toul() const
+    //
+    // Convert to unsigned long.
+    //
+    unsigned long to_ulong() const
     {
 	return pj_strtoul(this);
     }
 
+    //
+    // Convert from unsigned long.
+    //
+    void from_ulong(unsigned long value)
+    {
+        slen = pj_utoa(value, ptr);
+    }
+
+    //
+    // Convert from unsigned long with padding.
+    //
+    void from_ulong_with_pad(unsigned long value, int min_dig=0, int pad=' ')
+    {
+        slen = pj_utoa_pad(value, ptr, min_dig, pad);
+    }
+
+
 private:
-    //PJ_String(const PJ_String &rhs) {}
-    void operator=(const PJ_String &rhs) { pj_assert(false); }
+    //Pj_String(const Pj_String &rhs) {}
+    void operator=(const Pj_String &rhs) { pj_assert(false); }
 };
 
