• R/O
  • SSH
  • HTTPS

qrobosdk: コミット


コミットメタ情報

リビジョン1797 (tree)
日時2010-04-22 12:23:51
作者satofumi

ログメッセージ

add Utf8::substr()

変更サマリ

差分

--- trunk/libs/input/TestUtf8.cpp (revision 1796)
+++ trunk/libs/input/TestUtf8.cpp (revision 1797)
@@ -107,7 +107,6 @@
107107 }
108108
109109
110-#if 0
111110 void TestUtf8::substrTest(void)
112111 {
113112 Utf8 actual = Utf8("あいう");
@@ -122,10 +121,9 @@
122121 actual = Utf8("あいう");
123122 CPPUNIT_ASSERT_EQUAL(string("う"), string(actual.substr(2, 3).c_str()));
124123
125- actual = Utf8("う");
126- CPPUNIT_ASSERT_EQUAL(string("あいう"), string(actual.substr(0, -1).c_str()));
124+ actual = Utf8("aiう");
125+ CPPUNIT_ASSERT_EQUAL(string("う"), string(actual.substr(2, 1).c_str()));
127126
128- actual = Utf8("あいう");
129- CPPUNIT_ASSERT_EQUAL(string("あい"), string(actual.substr(0, -2).c_str()));
127+ actual = Utf8("あiう");
128+ CPPUNIT_ASSERT_EQUAL(string("iう"), string(actual.substr(1, 2).c_str()));
130129 }
131-#endif
--- trunk/libs/input/Utf8.cpp (revision 1796)
+++ trunk/libs/input/Utf8.cpp (revision 1797)
@@ -148,12 +148,13 @@
148148
149149 Utf8 Utf8::substr(size_t first_index, size_t n)
150150 {
151- (void)first_index;
152- (void)n;
151+ // 指定された文字の位置から指定されたサイズだけ文字を格納していく
152+ size_t raw_first_index = pimpl->index_[first_index];
153+ size_t raw_last_index = min(first_index + n, pimpl->index_.size());
154+ raw_last_index = pimpl->index_[raw_last_index];
153155
154- // !!!
155-
156- return Utf8("");
156+ return Utf8(pimpl->utf8_text_.substr(raw_first_index,
157+ raw_last_index - raw_first_index));
157158 }
158159
159160
@@ -163,16 +164,3 @@
163164 pimpl->index_.pop_back();
164165 }
165166 }
166-
167-
168-#if 0
169-Utf8& Utf8::substr(size_t first, size_t last)
170-{
171- (void)first;
172- (void)last;
173-
174- // !!!
175-
176- return *this;
177-}
178-#endif
--- trunk/libs/input/TestUtf8.h (revision 1796)
+++ trunk/libs/input/TestUtf8.h (revision 1797)
@@ -23,7 +23,7 @@
2323 CPPUNIT_TEST(chTest);
2424 CPPUNIT_TEST(c_strTest);
2525 CPPUNIT_TEST(pop_backTest);
26- //CPPUNIT_TEST(substrTest);
26+ CPPUNIT_TEST(substrTest);
2727 CPPUNIT_TEST_SUITE_END();
2828
2929 public:
@@ -32,7 +32,7 @@
3232 void chTest(void);
3333 void c_strTest(void);
3434 void pop_backTest(void);
35- //void substrTest(void);
35+ void substrTest(void);
3636 };
3737
3838 #endif /* !TEST_UTF8_H */
旧リポジトリブラウザで表示