}
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]
}
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 */
#include <string>
#include <vector>
#include <sstream>
+#include "String.h"
#include "Types.h"
#include "PinyinArray.h"
#include "PhraseArray.h"
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:
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 */
};
#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) {
private:
GString *m_string;
};
+#endif
};
#endif