[Groonga-mysql-commit] mroonga/mroonga [master] Use uchar for encode

Back to archive index

null+****@clear***** null+****@clear*****
2012年 4月 10日 (火) 16:51:59 JST


Kouhei Sutou	2012-04-10 16:51:59 +0900 (Tue, 10 Apr 2012)

  New Revision: 3c5e3c7460447ec290ddaf42e99afedd4d4fa9a0

  Log:
    Use uchar for encode

  Modified files:
    lib/mrn_index_table_name.cpp
    lib/mrn_index_table_name.hpp

  Modified: lib/mrn_index_table_name.cpp (+16 -17)
===================================================================
--- lib/mrn_index_table_name.cpp    2012-04-10 16:46:17 +0900 (577d1d1)
+++ lib/mrn_index_table_name.cpp    2012-04-10 16:51:59 +0900 (e89da73)
@@ -27,12 +27,15 @@ namespace mrn {
                                  const char *mysql_index_name)
     : table_name_(table_name),
       mysql_index_name_(mysql_index_name) {
-    char encoded_mysql_index_name[MRN_MAX_KEY_SIZE];
-    encode(encoded_mysql_index_name,
-           encoded_mysql_index_name + MRN_MAX_KEY_SIZE,
-           mysql_index_name_, mysql_index_name_ + strlen(mysql_index_name_));
+    uchar encoded_mysql_index_name_multibyte[MRN_MAX_KEY_SIZE];
+    const uchar *mysql_index_name_multibyte =
+      reinterpret_cast<const uchar *>(mysql_index_name_);
+    encode(encoded_mysql_index_name_multibyte,
+           encoded_mysql_index_name_multibyte + MRN_MAX_KEY_SIZE,
+           mysql_index_name_multibyte,
+           mysql_index_name_multibyte + strlen(mysql_index_name_));
     snprintf(name_, MRN_MAX_KEY_SIZE,
-             "%s-%s", table_name_, encoded_mysql_index_name);
+             "%s-%s", table_name_, encoded_mysql_index_name_multibyte);
     length_ = strlen(name_);
   }
 
@@ -44,10 +47,10 @@ namespace mrn {
     return length_;
   }
 
-  uint IndexTableName::encode(char *encoded_start,
-                              char *encoded_end,
-                              const char *mysql_string_start,
-                              const char *mysql_string_end) {
+  uint IndexTableName::encode(uchar *encoded_start,
+                              uchar *encoded_end,
+                              const uchar *mysql_string_start,
+                              const uchar *mysql_string_end) {
     MRN_DBUG_ENTER_METHOD();
     int res1, res2;
     my_wc_t wc;
@@ -55,19 +58,15 @@ namespace mrn {
     my_charset_conv_wc_mb wc_mb = my_charset_filename.cset->wc_mb;
     DBUG_PRINT("info", ("mroonga: in=%s", mysql_string_start));
     encoded_end--;
-    char *encoded;
-    const char *mysql_string;
+    uchar *encoded;
+    const uchar *mysql_string;
     for (encoded = encoded_start, mysql_string = mysql_string_start;
          mysql_string < mysql_string_end && encoded < encoded_end;
          mysql_string += res1, encoded += res2)
     {
-      if ((res1 = (*mb_wc)(NULL, &wc,
-                           (uchar *)mysql_string,
-                           (uchar *)mysql_string_end)) > 0)
+      if ((res1 = (*mb_wc)(NULL, &wc, mysql_string, mysql_string_end)) > 0)
       {
-        if ((res2 = (*wc_mb)(NULL, wc,
-                             (uchar *)encoded,
-                             (uchar *)encoded_end)) <= 0)
+        if ((res2 = (*wc_mb)(NULL, wc, encoded, encoded_end)) <= 0)
         {
           break;
         }

  Modified: lib/mrn_index_table_name.hpp (+2 -2)
===================================================================
--- lib/mrn_index_table_name.hpp    2012-04-10 16:46:17 +0900 (ed46108)
+++ lib/mrn_index_table_name.hpp    2012-04-10 16:51:59 +0900 (86a8692)
@@ -35,8 +35,8 @@ namespace mrn {
     char name_[MRN_MAX_KEY_SIZE];
     size_t length_;
 
-    uint encode(char *encoded_start, char *encoded_end,
-                const char *mysql_string_start, const char *mysql_string_end);
+    uint encode(uchar *encoded_start, uchar *encoded_end,
+                const uchar *mysql_string_start, const uchar *mysql_string_end);
   };
 }
 




Groonga-mysql-commit メーリングリストの案内
Back to archive index