X-Git-Url: https://git.saurik.com/apple/icu.git/blobdiff_plain/374ca955a76ecab1204ca8bfa63ff9238d998416..ef6cf650f4a75c3f97de06b51fa104f2069b9ea2:/icuSources/samples/citer/citer.cpp?ds=sidebyside diff --git a/icuSources/samples/citer/citer.cpp b/icuSources/samples/citer/citer.cpp index 7561e74d..a4a408bd 100644 --- a/icuSources/samples/citer/citer.cpp +++ b/icuSources/samples/citer/citer.cpp @@ -1,8 +1,8 @@ /* ******************************************************************************* * -* Copyright (C) 2002-2003, International Business Machines -* Corporation and others. All Rights Reserved. +* Copyright (C) 2002-2011, International Business Machines +* Corporation and others. All Rights Reserved. * ******************************************************************************* */ @@ -11,173 +11,185 @@ #include "unicode/schriter.h" #include "unicode/ustring.h" #include -#include #include +#include #include -void printUnicodeString(const UnicodeString &s) { - char charBuf[1000]; - s.extract(0, s.length(), charBuf, sizeof(charBuf)-1, 0); - charBuf[sizeof(charBuf)-1] = 0; - cout << charBuf; +static UFILE *out; + +void printUnicodeString(const UnicodeString &s) +{ + u_fprintf(out, "%S", &s); } -void printUChar(UChar32 ch) { - char charBuf[1000]; - charBuf[sizeof(charBuf)-1] = 0; - if(ch < 127) { - cout << (char) ch; - } else if (ch == CharacterIterator::DONE) { - cout << "[CharacterIterator::DONE = 0xFFFF]"; - } else { - cout << "[" << ch << "]"; - } +void printUChar(UChar32 ch) +{ + if(ch < 127) { + u_fprintf(out, "%C", (UChar) ch); + } else if (ch == CharacterIterator::DONE) { + u_fprintf(out, "[CharacterIterator::DONE = 0xFFFF]"); + } else { + u_fprintf(out, "[%X]", ch); + } } class Test { public: - void TestUChariter(); - void TestStringiter(); + void TestUChariter(); + void TestStringiter(); }; void Test::TestUChariter() { - const char testChars[] = "Now is the time for all good men to come " - "to the aid of their country."; - - UnicodeString testString(testChars,""); - const UChar *testText = testString.getTerminatedBuffer(); - - UCharCharacterIterator iter(testText, u_strlen(testText)); - UCharCharacterIterator* test2 = (UCharCharacterIterator*)iter.clone(); - - cout << "testText = " << testChars; - - if (iter != *test2 ) { - printf("clone() or equals() failed: Two clones tested unequal\n"); - } - - UnicodeString result1, result2; - // getting and comparing the text within the iterators - iter.getText(result1); - test2->getText(result2); - if (result1 != result2) { - printf("iter.getText() != clone.getText()\n"); - } - - cout << endl; - // Demonstrates seeking forward using the iterator. - cout << "Forward = "; - - UChar c = iter.first(); - printUChar(c); // The first char - int32_t i = 0; - - if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) { - printf("startIndex() or endIndex() failed\n"); - } - - - // Testing forward iteration... - do { - if (c == CharacterIterator::DONE && i != u_strlen(testText)) { - printf("Iterator reached end prematurely"); - } - else if (c != testText[i]) { - printf("Character mismatch at position %d\n" + i); - } - if (iter.current() != c) { - printf("current() isn't working right"); - } - if (iter.getIndex() != i) { - printf("getIndex() isn't working right\n"); + const char testChars[] = "Now is the time for all good men to come " + "to the aid of their country."; + + UnicodeString testString(testChars,""); + const UChar *testText = testString.getTerminatedBuffer(); + + UCharCharacterIterator iter(testText, u_strlen(testText)); + UCharCharacterIterator* test2 = (UCharCharacterIterator*)iter.clone(); + + u_fprintf(out, "testText = %s", testChars); + + if (iter != *test2 ) { + u_fprintf(out, "clone() or equals() failed: Two clones tested unequal\n"); } - if (c != CharacterIterator::DONE) { - c = iter.next(); - i++; + + UnicodeString result1, result2; + // getting and comparing the text within the iterators + iter.getText(result1); + test2->getText(result2); + if (result1 != result2) { + u_fprintf(out, "iter.getText() != clone.getText()\n"); + } + + u_fprintf(out, "\n"); + + // Demonstrates seeking forward using the iterator. + u_fprintf(out, "Forward = "); + + UChar c = iter.first(); + printUChar(c); // The first char + int32_t i = 0; + + if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) { + u_fprintf(out, "startIndex() or endIndex() failed\n"); } - - cout << "|"; - printUChar(c); - - } while (c != CharacterIterator::DONE); - - delete test2; - cout << endl; + + + // Testing forward iteration... + do { + if (c == CharacterIterator::DONE && i != u_strlen(testText)) { + u_fprintf(out, "Iterator reached end prematurely"); + } + else if (c != testText[i]) { + u_fprintf(out, "Character mismatch at position %d\n" + i); + } + if (iter.current() != c) { + u_fprintf(out, "current() isn't working right"); + } + if (iter.getIndex() != i) { + u_fprintf(out, "getIndex() isn't working right\n"); + } + if (c != CharacterIterator::DONE) { + c = iter.next(); + i++; + } + + u_fprintf(out, "|"); + printUChar(c); + + } while (c != CharacterIterator::DONE); + + delete test2; + u_fprintf(out, "\n"); } void Test::TestStringiter() { - const char testChars[] = "Now is the time for all good men to come " - "to the aid of their country."; - - UnicodeString testString(testChars,""); - const UChar *testText = testString.getTerminatedBuffer(); - - StringCharacterIterator iter(testText, u_strlen(testText)); - StringCharacterIterator* test2 = (StringCharacterIterator*)iter.clone(); - - if (iter != *test2 ) { - printf("clone() or equals() failed: Two clones tested unequal\n"); - } - - UnicodeString result1, result2; - // getting and comparing the text within the iterators - iter.getText(result1); - test2->getText(result2); - if (result1 != result2) { - printf("getText() failed\n"); - } - - cout << "Backwards: "; - UChar c = iter.last(); - printUChar(c); - int32_t i = iter.endIndex(); - i--; // already printed out the last char - if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) { - printf("startIndex() or endIndex() failed\n"); - } - - // Testing backward iteration over a range... - do { - if (c == CharacterIterator::DONE) { - printf("Iterator reached end prematurely\n"); - } - else if (c != testText[i]) { - printf("Character mismatch at position %d\n" + i); - } - if (iter.current() != c) { - printf("current() isn't working right\n"); - } - if (iter.getIndex() != i) { - printf("getIndex() isn't working right [%d should be %d]\n", iter.getIndex(), i); + const char testChars[] = "Now is the time for all good men to come " + "to the aid of their country."; + + UnicodeString testString(testChars,""); + const UChar *testText = testString.getTerminatedBuffer(); + + StringCharacterIterator iter(testText, u_strlen(testText)); + StringCharacterIterator* test2 = (StringCharacterIterator*)iter.clone(); + + if (iter != *test2 ) { + u_fprintf(out, "clone() or equals() failed: Two clones tested unequal\n"); } - if (c != CharacterIterator::DONE) { - c = iter.previous(); - i--; + + UnicodeString result1, result2; + // getting and comparing the text within the iterators + iter.getText(result1); + test2->getText(result2); + if (result1 != result2) { + u_fprintf(out, "getText() failed\n"); } - cout << "|"; + + u_fprintf(out, "Backwards: "); + + UChar c = iter.last(); + int32_t i = iter.endIndex(); + printUChar(c); - } while (c != CharacterIterator::DONE); + i--; // already printed out the last char + + if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) { + u_fprintf(out, "startIndex() or endIndex() failed\n"); + } - cout << endl; - delete test2; + // Testing backward iteration over a range... + do { + if (c == CharacterIterator::DONE) { + u_fprintf(out, "Iterator reached end prematurely\n"); + } + else if (c != testText[i]) { + u_fprintf(out, "Character mismatch at position %d\n", i); + } + if (iter.current() != c) { + u_fprintf(out, "current() isn't working right\n"); + } + if (iter.getIndex() != i) { + u_fprintf(out, "getIndex() isn't working right [%d should be %d]\n", iter.getIndex(), i); + } + if (c != CharacterIterator::DONE) { + c = iter.previous(); + i--; + } + + u_fprintf(out, "|"); + printUChar(c); + } while (c != CharacterIterator::DONE); + + u_fprintf(out, "\n"); + delete test2; } /* Creating and using text boundaries */ int main( void ) { - cout << "ICU Iterator Sample Program (C++)\n\n"; - - Test t; - - cout << endl; - cout << "Test::TestUCharIter()" << endl; - t.TestUChariter(); - cout << "-----" << endl; - cout << "Test::TestStringchariter()" << endl; - t.TestStringiter(); - cout << "-----" << endl; - - return 0; + UErrorCode status = U_ZERO_ERROR; + + out = u_finit(stdout, NULL, NULL); + + u_fprintf(out, "ICU Iteration Sample Program (C++)\n\n"); + + Test t; + + u_fprintf(out, "\n"); + u_fprintf(out, "Test::TestUCharIter()\n"); + + t.TestUChariter(); + + u_fprintf(out, "-----\n"); + u_fprintf(out, "Test::TestStringchariter()\n"); + + t.TestStringiter(); + + u_fprintf(out, "-----\n"); + + return 0; }