/*
*******************************************************************************
*
-* Copyright (C) 2002-2005, International Business Machines
+* © 2016 and later: Unicode, Inc. and others.
+* License & terms of use: http://www.unicode.org/copyright.html#License
+*
+*******************************************************************************
+*******************************************************************************
+*
+* Copyright (C) 2002-2011, International Business Machines
* Corporation and others. All Rights Reserved.
*
*******************************************************************************
static UFILE *out;
+using icu::CharacterIterator;
+using icu::StringCharacterIterator;
+using icu::UCharCharacterIterator;
+using icu::UnicodeString;
+
void printUnicodeString(const UnicodeString &s)
{
- u_fprintf(out, "%S", s);
+ u_fprintf(out, "%S", &s);
}
void printUChar(UChar32 ch)
{
if(ch < 127) {
- u_fprintf(out, "%C", (UChar) ch);
+ u_fprintf(out, "%C", (UChar) ch);
} else if (ch == CharacterIterator::DONE) {
- u_fprintf(out, "[CharacterIterator::DONE = 0xFFFF]");
+ u_fprintf(out, "[CharacterIterator::DONE = 0xFFFF]");
} else {
- u_fprintf(out, "[%X]", ch);
+ 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.";
+ "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);
-
+
+ u_fprintf(out, "testText = %s", testChars);
+
if (iter != *test2 ) {
- printf("clone() or equals() failed: Two clones tested unequal\n");
+ u_fprintf(out, "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");
+ u_fprintf(out, "iter.getText() != clone.getText()\n");
}
-
+
u_fprintf(out, "\n");
- // Demonstrates seeking forward using the iterator.
+ // 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)) {
- printf("startIndex() or endIndex() failed\n");
+ u_fprintf(out, "startIndex() or endIndex() failed\n");
}
-
-
+
+
// Testing forward iteration...
do {
if (c == CharacterIterator::DONE && i != u_strlen(testText)) {
- printf("Iterator reached end prematurely");
+ u_fprintf(out, "Iterator reached end prematurely");
}
else if (c != testText[i]) {
- printf("Character mismatch at position %d\n" + i);
+ u_fprintf(out, "Character mismatch at position %d\n" + i);
}
if (iter.current() != c) {
- printf("current() isn't working right");
+ u_fprintf(out, "current() isn't working right");
}
if (iter.getIndex() != i) {
- printf("getIndex() isn't working right\n");
+ 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");
}
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");
+ u_fprintf(out, "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");
+ u_fprintf(out, "getText() failed\n");
}
u_fprintf(out, "Backwards: ");
i--; // already printed out the last char
if (iter.startIndex() != 0 || iter.endIndex() != u_strlen(testText)) {
- printf("startIndex() or endIndex() failed\n");
+ u_fprintf(out, "startIndex() or endIndex() failed\n");
}
-
+
// Testing backward iteration over a range...
do {
if (c == CharacterIterator::DONE) {
- printf("Iterator reached end prematurely\n");
+ u_fprintf(out, "Iterator reached end prematurely\n");
}
else if (c != testText[i]) {
- printf("Character mismatch at position %d\n" + i);
+ u_fprintf(out, "Character mismatch at position %d\n", i);
}
if (iter.current() != c) {
- printf("current() isn't working right\n");
+ u_fprintf(out, "current() isn't working right\n");
}
if (iter.getIndex() != i) {
- printf("getIndex() isn't working right [%d should be %d]\n", 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();
/* Creating and using text boundaries */
int main( void )
{
- UErrorCode status = U_ZERO_ERROR;
+ UErrorCode status = U_ZERO_ERROR;
- out = u_finit(stdout, NULL, NULL);
+ out = u_finit(stdout, NULL, NULL);
- u_fprintf(out, "ICU Iteration Sample Program (C++)\n\n");
-
- Test t;
+ u_fprintf(out, "ICU Iteration Sample Program (C++)\n\n");
- u_fprintf(out, "\n");
- u_fprintf(out, "Test::TestUCharIter()\n");
+ Test t;
+
+ u_fprintf(out, "\n");
+ u_fprintf(out, "Test::TestUCharIter()\n");
- t.TestUChariter();
+ t.TestUChariter();
- u_fprintf(out, "-----\n");
- u_fprintf(out, "Test::TestStringchariter()\n");
+ u_fprintf(out, "-----\n");
+ u_fprintf(out, "Test::TestStringchariter()\n");
- t.TestStringiter();
+ t.TestStringiter();
- u_fprintf(out, "-----\n");
+ u_fprintf(out, "-----\n");
- return 0;
+ return 0;
}