Replase GString with std::string
authorPeng Huang <shawn.p.huang@gmail.com>
Mon, 28 Dec 2009 10:12:00 +0000 (18:12 +0800)
committerPeng Huang <shawn.p.huang@gmail.com>
Fri, 1 Jan 2010 11:10:08 +0000 (19:10 +0800)
src/Database.cc
src/Database.h
src/String.h

index 7e39a7c..b955134 100644 (file)
@@ -443,7 +443,7 @@ Database::query (const PinyinArray &pinyin,
 }
 
 inline void
-Database::phraseWhereSql (const Phrase & p, MyString & sql)
+Database::phraseWhereSql (const Phrase & p, String & sql)
 {
     sql << " WHERE";
     sql << " s0=" << p.pinyin_id[0][0]
@@ -457,7 +457,7 @@ Database::phraseWhereSql (const Phrase & p, MyString & sql)
 }
 
 inline void
-Database::phraseSql (const Phrase & p, MyString & sql)
+Database::phraseSql (const Phrase & p, String & sql)
 {
     sql << "INSERT OR IGNORE INTO userdb.py_phrase_" << p.len - 1
         << " VALUES(" << 0                  /* user_freq */
index b4b6084..1a5e071 100644 (file)
@@ -6,6 +6,7 @@
 #include <string>
 #include <vector>
 #include <sstream>
+#include "String.h"
 #include "Types.h"
 #include "PinyinArray.h"
 #include "PhraseArray.h"
@@ -57,62 +58,6 @@ private:
     guint m_length;
 };
 
-class MyString : public string {
-public:
-    MyString & printf (const gchar *fmt, ...) {
-        gchar *str;
-        va_list args;
-
-        va_start (args, fmt);
-        str = g_strdup_vprintf (fmt, args);
-        va_end (args);
-
-        assign (str);
-        g_free (str);
-        return *this;
-    }
-
-    MyString & appendPrintf (const gchar *fmt, ...) {
-        gchar *str;
-        va_list args;
-
-        va_start (args, fmt);
-        str = g_strdup_vprintf (fmt, args);
-        va_end (args);
-
-        append (str);
-        g_free (str);
-
-        return *this;
-    }
-
-    MyString & operator<< (gint i) {
-        return appendPrintf ("%d", i);
-    }
-
-    MyString & operator<< (guint i) {
-        return appendPrintf ("%u", i);
-    }
-
-    MyString & operator<< (const gchar ch) {
-        append (1, ch);
-        return *this;
-    }
-
-    MyString & operator<< (const gchar * str) {
-        append (str);
-        return *this;
-    }
-
-    MyString & operator= (const gchar * str) {
-        assign (str);
-        return *this;
-    }
-
-    operator const gchar *(void) {
-        return this->c_str ();
-    }
-};
 
 class Database {
 public:
@@ -139,16 +84,16 @@ private:
     gboolean init (void);
     gboolean initUserDatabase (const gchar *userdb);
     void prefetch (void);
-    void phraseSql (const Phrase & p, MyString & sql);
-    void phraseWhereSql (const Phrase & p, MyString & sql);
+    void phraseSql (const Phrase & p, String & sql);
+    void phraseWhereSql (const Phrase & p, String & sql);
     gboolean executeSQL (const gchar *sql);
 
 private:
 private:
-    sqlite3 *m_db;                  /* sqlite3 database */
-    MyString m_sql;             /* sql stmt */
-    MyString m_buffer;          /* temp buffer */
-    Conditions m_conditions;        /* select conditions */
+    sqlite3 *m_db;              /* sqlite3 database */
+    String m_sql;               /* sql stmt */
+    String m_buffer;            /* temp buffer */
+    Conditions m_conditions;    /* select conditions */
 };
 
 
index 1b3bb12..710f0b8 100644 (file)
 #define __PY_STRING_H_
 #include <glib.h>
 #include <stdarg.h>
-#include "WideString.h"
+#include <string>
+
 
 namespace PY {
 
+class String : public std::string {
+public:
+    String () : std::string () {}
+    String (gint len) : std::string () {}
+    String & printf (const gchar *fmt, ...) {
+        gchar *str;
+        va_list args;
+
+        va_start (args, fmt);
+        str = g_strdup_vprintf (fmt, args);
+        va_end (args);
+
+        assign (str);
+        g_free (str);
+        return *this;
+    }
+
+    String & appendUnichar (gunichar ch) {
+        gchar str[10];
+        g_unichar_to_utf8 (ch, str);
+        append (str);
+        return *this;
+    }
+
+    String & appendPrintf (const gchar *fmt, ...) {
+        gchar *str;
+        va_list args;
+
+        va_start (args, fmt);
+        str = g_strdup_vprintf (fmt, args);
+        va_end (args);
+
+        append (str);
+        g_free (str);
+
+        return *this;
+    }
+
+    String & insert (gint i, gchar ch) {
+        std::string::insert (i, 1, ch);
+        return *this;
+    }
+
+    String & truncate (guint len) {
+        erase(len);
+        return *this;
+    }
+
+    gboolean isEmpty (void) const {
+        return empty ();
+    }
+
+    gsize utf8Length (void) const {
+        return g_utf8_strlen (c_str(), -1);
+    }
+
+    String & operator<< (gint i) {
+        return appendPrintf ("%d", i);
+    }
+
+    String & operator<< (guint i) {
+        return appendPrintf ("%u", i);
+    }
+
+    String & operator<< (const gchar ch) {
+        append (1, ch);
+        return *this;
+    }
+
+    String & operator<< (const gchar * str) {
+        append (str);
+        return *this;
+    }
+
+    String & operator << (const gunichar *wstr) {
+        for (gint i = 0; wstr[i] != 0; i++)
+            operator << (wstr[i]);
+        return *this;
+    }
+
+    String & operator<< (const String &str) {
+        return operator<< ((const gchar *)str);
+    }
+
+    String & operator= (const gchar * str) {
+        assign (str);
+        return *this;
+    }
+
+    operator const gchar *(void) const {
+        return this->c_str ();
+    }
+
+    operator gboolean (void) const {
+        return ! isEmpty ();
+    }
+};
+#if 0
 class String {
 public:
     String (const gchar *init) {
@@ -187,5 +286,6 @@ public:
 private:
     GString *m_string;
 };
+#endif
 };
 #endif