[aquaskk-changes 396] CVS update: AquaSKK

Back to archive index

t-suw****@users***** t-suw****@users*****
2007年 9月 24日 (月) 20:10:05 JST


Index: AquaSKK/skkserv.cpp
diff -u AquaSKK/skkserv.cpp:1.3.2.7 AquaSKK/skkserv.cpp:1.3.2.8
--- AquaSKK/skkserv.cpp:1.3.2.7	Fri Aug 17 21:47:26 2007
+++ AquaSKK/skkserv.cpp	Mon Sep 24 20:10:04 2007
@@ -1,5 +1,5 @@
 /*
-  $Id: skkserv.cpp,v 1.3.2.7 2007/08/17 12:47:26 t-suwa Exp $
+  $Id: skkserv.cpp,v 1.3.2.8 2007/09/24 11:10:04 t-suwa Exp $
 
   MacOS X implementation of the SKK input method.
 
@@ -94,6 +94,7 @@
         switch(cmd) {
         case '0':		// 切断
             break;
+
 	case '1': {		// 検索
 	    std::string word;
             sock >> word;
@@ -115,23 +116,32 @@
 	    if(result != "//") {
 		std::string candidates;
 		jconv::convert_utf8_to_eucj(result, candidates);
-		sock << "1" << candidates << "\n";
+		sock << '1' << candidates << std::endl;
 	    } else {
-		sock << "4" << word << "\n";
+		sock << '4' << word << ' ';
 	    }
 	    sock.flush();
 	}
             break;
+
         case '2':		// バージョン
-	    sock << "AquaSKKServer (skkserv emulation)" << std::endl;
+	    sock << "AquaSKKServer1.0 ";
             sock.flush();
             break;
+
         case '3':		// ホスト情報
-	    sock << ip_address::getsockname(sock.socket()) << ":0.0.0.0:" << std::endl;
+	    sock << ip_address::getsockname(sock.socket()) << ":0.0.0.0: ";
             sock.flush();
             break;
+
+	case '4':		// サーバー補完
+	    // 今のところ未対応
+	    sock.ignore(0xff, ' ');
+
         default:		// 無効なコマンド
 	    fprintf(stderr, "AquaSKK(skkserv): Unknown command[0x%02x]\n", cmd);
+	    sock << '0';
+            sock.flush();
             break;
 	}
     } while(sock.good() && cmd != '0');
Index: AquaSKK/SKKDictionary.cpp
diff -u AquaSKK/SKKDictionary.cpp:1.12.2.5 AquaSKK/SKKDictionary.cpp:1.12.2.6
--- AquaSKK/SKKDictionary.cpp:1.12.2.5	Sat Feb  3 17:52:48 2007
+++ AquaSKK/SKKDictionary.cpp	Mon Sep 24 20:10:04 2007
@@ -1,5 +1,5 @@
 /*
-  $Id: SKKDictionary.cpp,v 1.12.2.5 2007/02/03 08:52:48 t-suwa Exp $
+  $Id: SKKDictionary.cpp,v 1.12.2.6 2007/09/24 11:10:04 t-suwa Exp $
 
   MacOS X implementation of the SKK input method.
 
@@ -462,7 +462,7 @@
     // 見つかった?
     if(i != okuriAri_.end()) {
 	entry = SKKEntry::ParseOkuriAri(i->first, i->second);
-	okuriAri_.erase(std::remove(okuriAri_.begin(), okuriAri_.end(), *i), okuriAri_.end());
+	okuriAri_.erase(i);
     }
 
     entry.Update(SKKCandidate(kanji), okuri);
@@ -479,7 +479,7 @@
     // 見つかった?
     if(i != okuriNasi_.end()) {
 	entry = SKKEntry::ParseOkuriNasi(i->first, i->second);
-	okuriNasi_.erase(std::remove(okuriNasi_.begin(), okuriNasi_.end(), *i), okuriNasi_.end());
+	okuriNasi_.erase(i);
     }
 
     entry.Update(SKKCandidate(kanji));
@@ -506,7 +506,7 @@
 	*i = SKKPair(entry.Key(), entry.Candidate());
     } else {
 	// このエントリを消してしまう
-	okuriAri_.erase(std::remove(okuriAri_.begin(), okuriAri_.end(), *i), okuriAri_.end());
+	okuriAri_.erase(i);
     }
 
     // 保存する
@@ -530,7 +530,7 @@
 	*i = SKKPair(entry.Key(), entry.Candidate());
     } else {
 	// このエントリを消してしまう
-	okuriNasi_.erase(std::remove(okuriNasi_.begin(), okuriNasi_.end(), *i), okuriNasi_.end());
+	okuriNasi_.erase(i);
     }
 
     // 保存する
Index: AquaSKK/KotoeriDictionary.cpp
diff -u AquaSKK/KotoeriDictionary.cpp:1.3.2.4 AquaSKK/KotoeriDictionary.cpp:1.3.2.5
--- AquaSKK/KotoeriDictionary.cpp:1.3.2.4	Sat Feb  3 17:52:48 2007
+++ AquaSKK/KotoeriDictionary.cpp	Mon Sep 24 20:10:04 2007
@@ -1,10 +1,10 @@
 /*
-  $Id: KotoeriDictionary.cpp,v 1.3.2.4 2007/02/03 08:52:48 t-suwa Exp $
+  $Id: KotoeriDictionary.cpp,v 1.3.2.5 2007/09/24 11:10:04 t-suwa Exp $
 
   MacOS X implementation of the SKK input method.
 
   Copyright (C) 2002 phonohawk
-  Copyright (C) 2005-2006 Tomotaka SUWA <t.suw****@mac*****>
+  Copyright (C) 2005-2007 Tomotaka SUWA <t.suw****@mac*****>
 
   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
@@ -24,10 +24,11 @@
     Directory Maneger対応 2002.09.25 Shin_ichi Abe.
 */
 
-#include <Carbon/Carbon.h>
 #include <iostream>
 #include <vector>
 #include "KotoeriDictionary.h"
+#include "CppCFData.h"
+#include "CppCFString.h"
 
 KotoeriDictionary::KotoeriDictionary() : path_(0), isRegistered_(false), id_(0) {
     // empty
@@ -123,13 +124,13 @@
 	if(status != noErr) break;
 
 	DescType actualType;
-	char dataBuffer[kMaxKanjiLengthInAppleJapaneseDictionary];
+	UInt8 dataBuffer[kMaxKanjiLengthInAppleJapaneseDictionary];
 	Size actualSize;
 
 	// Get one data from AERecord
 	status = AEGetParamPtr(&dataList, 
 			       kDCMJapaneseHyokiTag,
-			       typeUTF8Text,
+			       typeUnicodeText,
 			       &actualType,
 			       dataBuffer,
 			       kMaxKanjiLengthInAppleJapaneseDictionary,
@@ -140,8 +141,12 @@
 
 	if(status != noErr) break;
 
+	CFStringRef entry = CFStringCreateWithBytes(0, dataBuffer, actualSize, kCFStringEncodingUnicode, 0);
+	CppCFString tmp(entry);
+	CFRelease(entry);
+
 	result += '/';
-	result.append(dataBuffer, actualSize);
+	result += tmp.encode().toStdString(kCFStringEncodingUTF8);
     }
     DCMDisposeRecordIterator(iterator);
 
@@ -162,12 +167,13 @@
     // レコードを検索
     OSStatus status;
     DCMFieldTag	dataFieldTagList[] = { kDCMJapaneseHyokiTag };
-    CFStringRef keydata = CFStringCreateWithCString(NULL, key.c_str(), kCFStringEncodingUTF8);
+    CFStringRef keydata = CppCFString(key.c_str(), kCFStringEncodingUTF8).toBigEndianCFString();
+
     status = DCMFindRecords(ref, // Dictionary reference
-			    kDCMJapaneseYomiTag,  // key field tag
-			    CFStringGetLength(keydata) * sizeof(UInt16), // key data length
+			    kDCMJapaneseYomiTag,      // key field tag
+			    CFStringGetLength(keydata) * sizeof(UniChar), // key data length
 			    CFStringGetCharactersPtr(keydata), // key data
-			    kDCMFindMethodExactMatch,  // find method
+			    kDCMFindMethodExactMatch, // find method
 			    1,		      // number of data field
 			    dataFieldTagList, // data field tag list
 			    0, 0,	      // search all records
Index: AquaSKK/KanjiConversionMode.cpp
diff -u AquaSKK/KanjiConversionMode.cpp:1.8.2.6 AquaSKK/KanjiConversionMode.cpp:1.8.2.7
--- AquaSKK/KanjiConversionMode.cpp:1.8.2.6	Thu Aug 16 19:58:18 2007
+++ AquaSKK/KanjiConversionMode.cpp	Mon Sep 24 20:10:04 2007
@@ -1,5 +1,5 @@
 /*
-  $Id: KanjiConversionMode.cpp,v 1.8.2.6 2007/08/16 10:58:18 t-suwa Exp $
+  $Id: KanjiConversionMode.cpp,v 1.8.2.7 2007/09/24 11:10:04 t-suwa Exp $
 
   MacOS X implementation of the SKK input method.
 
@@ -1028,7 +1028,7 @@
 	// かな 仮名 → -かな 仮名
 	// 読みについては全角仮名と半角仮名を平仮名に変換
 	query.append('-').append(HiraganaInputMode::convert(root)).append(SKK_MSG_DELIMITER);
-	query.append(candidates[current_candidate_index]);
+	query.append(candidates[current_candidate_index].encode());
     }
 
     // 鯖に渡す
Index: AquaSKK/ChangeLog
diff -u AquaSKK/ChangeLog:1.33.2.9 AquaSKK/ChangeLog:1.33.2.10
--- AquaSKK/ChangeLog:1.33.2.9	Thu Aug 16 19:58:18 2007
+++ AquaSKK/ChangeLog	Mon Sep 24 20:10:04 2007
@@ -1,3 +1,23 @@
+2007-09-22  Tomotaka SUWA  <t.suw****@mac*****>
+
+	* KotoeriDictionary.cpp: 検索結果を取り出しタイプを
+	typeUnicodeText に統一してコンパイラディレクティブを除去。
+
+2007-09-19  Tomotaka SUWA  <t.suw****@mac*****>
+
+	* BIMInputEvents.cpp (BIMHandleOffsetToPos): セッションハンドルを要
+	求するオーバーロードを廃止。
+
+	* skkserv.cpp: サーバー補完要求時には明示的に無視するように修正。
+
+	* SKKDictionary.cpp: 単語削除時の不要な検索を除去。
+
+	* KotoeriDictionary.cpp: 検索できない不具合を修正。また、検索結果の
+	エンコードを忘れていたため追加。
+
+	* KanjiConversionMode.cpp: 削除対象候補をエンコードし忘れていたため
+	に削除できなかった不具合を修正。
+
 2007-06-15  Tomotaka SUWA  <t.suw****@mac*****>
 
 	* AquaSKK.pbproj/project.pbxproj: Panther でビルドできるように修
Index: AquaSKK/BIMInputEvents.cpp
diff -u AquaSKK/BIMInputEvents.cpp:1.3 AquaSKK/BIMInputEvents.cpp:1.3.2.1
--- AquaSKK/BIMInputEvents.cpp:1.3	Wed Apr 26 22:36:12 2006
+++ AquaSKK/BIMInputEvents.cpp	Mon Sep 24 20:10:04 2007
@@ -1,5 +1,5 @@
 /*
-  $Id: BIMInputEvents.cpp,v 1.3 2006/04/26 13:36:12 t-suwa Exp $
+  $Id: BIMInputEvents.cpp,v 1.3.2.1 2007/09/24 11:10:04 t-suwa Exp $
 
   MacOS X implementation of the SKK input method.
 
@@ -228,10 +228,7 @@
 
 // ƒCƒ“ƒvƒbƒgƒGƒŠƒA‚ÌŠeŽíî•ñ‚𓾂éB
 void BIMHandleOffsetToPos(struct OffsetToPosParams *offsetToPosParams) {
-    BIMHandleOffsetToPos(BIMGetActiveSession(), offsetToPosParams);
-}
-
-void BIMHandleOffsetToPos(BIMSessionHandle inSessionHandle, struct OffsetToPosParams *offsetToPosParams) {
+    BIMSessionHandle inSessionHandle = BIMGetActiveSession();
     OSStatus		status;
     ComponentInstance	componentInstance;
     EventRef		event;


aquaskk-changes メーリングリストの案内
Back to archive index