Main Page   Class Hierarchy   Alphabetical List   Data Structures   File List   Data Fields   Globals  

rbbi.h

00001 /*
00002 * Copyright (C) {1999-2001}, International Business Machines Corporation and others. All Rights Reserved.
00003 **********************************************************************
00004 *   Date        Name        Description
00005 *   10/22/99    alan        Creation.
00006 *   11/11/99    rgillam     Complete port from Java.
00007 **********************************************************************
00008 */
00009 
00010 #ifndef RBBI_H
00011 #define RBBI_H
00012 
00013 #include "unicode/utypes.h"
00014 #include "unicode/brkiter.h"
00015 #include "unicode/udata.h"
00016 
00017 U_NAMESPACE_BEGIN
00018 
00019 class RuleBasedBreakIteratorTables;
00020 class BreakIterator;
00021 
00186 class U_COMMON_API RuleBasedBreakIterator : public BreakIterator {
00187 
00188 public:
00192     static const int8_t IGNORE;
00193 
00194 private:
00198     static const int16_t START_STATE;
00199 
00203     static const int16_t STOP_STATE;
00204 
00205 protected:
00209     CharacterIterator* text;
00210 
00214     RuleBasedBreakIteratorTables* tables;
00215 
00216 private:
00220     static const char fgClassID;
00221 /*
00222  * HSYS: To be revisited, once the ctor are made public.
00223  */
00224  protected:
00225     //=======================================================================
00226     // constructors
00227     //=======================================================================
00228 
00229 // This constructor uses the udata interface to create a BreakIterator whose
00230 // internal tables live in a memory-mapped file.  "image" is a pointer to the
00231 // beginning of that file.
00232 RuleBasedBreakIterator(UDataMemory* image);
00233 
00234  public:
00239     RuleBasedBreakIterator(const RuleBasedBreakIterator& that);
00240 
00241     //=======================================================================
00242     // boilerplate
00243     //=======================================================================
00244 
00248     virtual ~RuleBasedBreakIterator();
00249 
00254     RuleBasedBreakIterator& operator=(const RuleBasedBreakIterator& that);
00255 
00260     virtual UBool operator==(const BreakIterator& that) const;
00261 
00266     UBool operator!=(const BreakIterator& that) const;
00267 
00272     virtual BreakIterator* clone(void) const;
00273 
00278     virtual int32_t hashCode(void) const;
00279 
00283     virtual const UnicodeString& getRules(void) const;
00284 
00285     //=======================================================================
00286     // BreakIterator overrides
00287     //=======================================================================
00288 
00296     virtual const CharacterIterator& getText(void) const;
00297 
00298 #ifdef ICU_ENABLE_DEPRECATED_BREAKITERATOR
00299 
00307     virtual CharacterIterator* createText(void) const;
00308 
00318     virtual void setText(const UnicodeString* newText);
00319 #endif
00320 
00327     virtual void adoptText(CharacterIterator* newText);
00328 
00334     virtual void setText(const UnicodeString& newText);
00335 
00341     virtual int32_t first(void);
00342 
00348     virtual int32_t last(void);
00349 
00359     virtual int32_t next(int32_t n);
00360 
00365     virtual int32_t next(void);
00366 
00371     virtual int32_t previous(void);
00372 
00379     virtual int32_t following(int32_t offset);
00380 
00387     virtual int32_t preceding(int32_t offset);
00388 
00396     virtual UBool isBoundary(int32_t offset);
00397 
00402     virtual int32_t current(void) const;
00403 
00414     inline virtual UClassID getDynamicClassID(void) const;
00415 
00426     inline static UClassID getStaticClassID(void);
00427 
00428     virtual BreakIterator *  createBufferClone(void *stackBuffer,
00429                                                int32_t &BufferSize,
00430                                                UErrorCode &status);
00431 #ifdef RBBI_DEBUG
00432     void debugDumpTables() const;
00433 #endif
00434 
00435 
00436 protected:
00437     //=======================================================================
00438     // implementation
00439     //=======================================================================
00447     virtual int32_t handleNext(void);
00448 
00456     virtual int32_t handlePrevious(void);
00457 
00463     virtual void reset(void);
00464 
00465 private:
00466 
00471     RuleBasedBreakIterator(RuleBasedBreakIteratorTables* adoptTables);
00472 
00473     friend class BreakIterator;
00474 
00475 };
00476 
00477 inline UBool RuleBasedBreakIterator::operator!=(const BreakIterator& that) const {
00478     return !operator==(that);
00479 }
00480 
00481 inline UClassID RuleBasedBreakIterator::getDynamicClassID(void) const {
00482     return RuleBasedBreakIterator::getStaticClassID();
00483 }
00484 
00485 inline UClassID RuleBasedBreakIterator::getStaticClassID(void) {
00486     return (UClassID)(&fgClassID);
00487 }
00488 
00489 U_NAMESPACE_END
00490 
00491 #endif

Generated on Mon Mar 4 23:12:32 2002 for ICU 2.0 by doxygen1.2.14 written by Dimitri van Heesch, © 1997-2002