home *** CD-ROM | disk | FTP | other *** search
- /*
- *****************************************************************************************
- * *
- * COPYRIGHT: *
- * (C) Copyright Taligent, Inc., 1996 *
- * (C) Copyright International Business Machines Corporation, 1998-1999 *
- * Licensed Material - Program-Property of IBM - All Rights Reserved. *
- * US Government Users Restricted Rights - Use, duplication, or disclosure *
- * restricted by GSA ADP Schedule Contract with IBM Corp. *
- * *
- *****************************************************************************************
- */
-
- #include "ubrk.h"
-
- #include "brkiter.h"
- #include "uloc.h"
- #include "ustring.h"
- #include "uchriter.h"
-
- U_CAPI UBreakIterator*
- ubrk_open(UBreakIteratorType type,
- const char *locale,
- const UChar *text,
- int32_t textLength,
- UErrorCode *status)
- {
- if(U_FAILURE(*status)) return 0;
-
- BreakIterator *result = 0;
-
- switch(type) {
-
- case UBRK_CHARACTER:
- result = BreakIterator::createCharacterInstance(Locale().init(locale));
- break;
-
- case UBRK_WORD:
- result = BreakIterator::createWordInstance(Locale().init(locale));
- break;
-
- case UBRK_LINE:
- result = BreakIterator::createLineInstance(Locale().init(locale));
- break;
-
- case UBRK_SENTENCE:
- result = BreakIterator::createSentenceInstance(Locale().init(locale));
- break;
- }
-
- // check for allocation error
- if(result == 0) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- return 0;
- }
-
- int32_t textLen = (textLength == -1 ? u_strlen(text) : textLength);
- UCharCharacterIterator *iter = 0;
- iter = new UCharCharacterIterator(text, textLen);
- if(iter == 0) {
- *status = U_MEMORY_ALLOCATION_ERROR;
- delete result;
- return 0;
- }
- result->adoptText(iter);
-
- return (UBreakIterator*)result;
- }
-
- U_CAPI UBreakIterator*
- ubrk_openRules(const UChar *rules,
- int32_t rulesLength,
- const UChar *text,
- int32_t textLength,
- UErrorCode *status)
- {
- if(U_FAILURE(*status)) return 0;
-
- return 0;
- }
-
- U_CAPI void
- ubrk_close(UBreakIterator *bi)
- {
- delete (BreakIterator*) bi;
- }
-
- U_CAPI UTextOffset
- ubrk_current(const UBreakIterator *bi)
- {
- return ((BreakIterator*)bi)->current();
- }
-
- U_CAPI UTextOffset
- ubrk_next(UBreakIterator *bi)
- {
- return ((BreakIterator*)bi)->next();
- }
-
- U_CAPI UTextOffset
- ubrk_previous(UBreakIterator *bi)
- {
- return ((BreakIterator*)bi)->previous();
- }
-
- U_CAPI UTextOffset
- ubrk_first(UBreakIterator *bi)
- {
- return ((BreakIterator*)bi)->first();
- }
-
- U_CAPI UTextOffset
- ubrk_last(UBreakIterator *bi)
- {
- return ((BreakIterator*)bi)->last();
- }
-
- U_CAPI UTextOffset
- ubrk_preceding(UBreakIterator *bi,
- UTextOffset offset)
- {
- return ((BreakIterator*)bi)->preceding(offset);
- }
-
- U_CAPI UTextOffset
- ubrk_following(UBreakIterator *bi,
- UTextOffset offset)
- {
- return ((BreakIterator*)bi)->following(offset);
- }
-
- U_CAPI const char*
- ubrk_getAvailable(int32_t index)
- {
- return uloc_getAvailable(index);
- }
-
- U_CAPI int32_t
- ubrk_countAvailable()
- {
- return uloc_countAvailable();
- }
-