1c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/* 2c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru********************************************************************** 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* Copyright (C) 2008-2009, International Business Machines 4c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru* Corporation and others. All Rights Reserved. 5c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru********************************************************************** 6c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru* Date Name Description 7c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru* 05/11/2008 Andy Heninger Ported from Java 8c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru********************************************************************** 9c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru*/ 10c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#ifndef BRKTRANS_H 11c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define BRKTRANS_H 12c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 13c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/utypes.h" 14c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 15c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#if !UCONFIG_NO_TRANSLITERATION && !UCONFIG_NO_BREAK_ITERATION 16c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 17c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#include "unicode/translit.h" 18c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 19c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 20c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruU_NAMESPACE_BEGIN 21c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 22c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruclass UVector32; 23c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 24c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/** 25c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * A transliterator that pInserts the specified characters at word breaks. 26c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * To restrict it to particular characters, use a filter. 27c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * TODO: this is an internal class, and only temporary. 28c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Remove it once we have \b notation in Transliterator. 29c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 30c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queruclass BreakTransliterator : public Transliterator { 31c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Querupublic: 32c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 33c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakTransliterator(const UnicodeString &ID, 34c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UnicodeFilter *adoptedFilter, 35c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakIterator *bi, 36c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru const UnicodeString &insertion); 37c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 38c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Constructs a transliterator. 39c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param adoptedFilter the filter for this transliterator. 40c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 41c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakTransliterator(UnicodeFilter* adoptedFilter = 0); 42c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 43c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 44c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Destructor. 45c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 46c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual ~BreakTransliterator(); 47c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 48c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 49c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Copy constructor. 50c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 51c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakTransliterator(const BreakTransliterator&); 52c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 53c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 54c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Transliterator API. 55c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return A copy of the object. 56c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 57c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual Transliterator* clone(void) const; 58c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 59c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual const UnicodeString &getInsertion() const; 60c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 6150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual void setInsertion(const UnicodeString &insertion); 62c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 63c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 64c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Return the break iterator used by this transliterator. 65c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Caution, this is the live break iterator; it must not be used while 66c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * there is any possibility that this transliterator is using it. 67c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 68c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual BreakIterator *getBreakIterator(); 69c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 70c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 71c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 72c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for the actual class. 73c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 74c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual UClassID getDynamicClassID() const; 75c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 76c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 77c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * ICU "poor man's RTTI", returns a UClassID for this class. 78c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 79c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru U_I18N_API static UClassID U_EXPORT2 getStaticClassID(); 80c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 81c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru protected: 82c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 83c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 84c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Implements {@link Transliterator#handleTransliterate}. 85c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param text the buffer holding transliterated and 86c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * untransliterated text 87c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param offset the start and limit of the text, the position 88c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * of the cursor, and the start and limit of transliteration. 89c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param incremental if true, assume more text may be coming after 90c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * pos.contextLimit. Otherwise, assume the text is complete. 91c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 92c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru virtual void handleTransliterate(Replaceable& text, UTransPosition& offset, 93c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UBool isIncremental) const; 94c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 95c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru private: 96c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakIterator *bi; 97c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UnicodeString fInsertion; 98c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UVector32 *boundaries; 99c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UnicodeString sText; // text from handleTransliterate(). 100c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 101c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru static UnicodeString replaceableAsString(Replaceable &r); 102c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 103c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 104c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Assignment operator. 105c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 106c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru BreakTransliterator& operator=(const BreakTransliterator&); 107c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru}; 108c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 109c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste QueruU_NAMESPACE_END 110c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 111c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_TRANSLITERATION */ 112c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 113c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#endif 114