// © 2016 and later: Unicode, Inc. and others. // License & terms of use: http://www.unicode.org/copyright.html /* ****************************************************************************** * Copyright (C) 2014, International Business Machines * Corporation and others. All Rights Reserved. ****************************************************************************** * sharedbreakiterator.h */ #ifndef __SHARED_BREAKITERATOR_H__ #define __SHARED_BREAKITERATOR_H__ #include "unicode/utypes.h" #include "sharedobject.h" #if !UCONFIG_NO_BREAK_ITERATION U_NAMESPACE_BEGIN class BreakIterator; // SharedBreakIterator encapsulates a shared BreakIterator. Because // BreakIterator has mutable semantics, clients must ensure that all uses // of a particular shared BreakIterator is protected by the same mutex // ensuring that only one thread at a time gets access to that shared // BreakIterator. Clients can accomplish this by creating a mutex for all // uses of break iterator within a particular class. Then objects of that // class may then freely share break iterators among themselves. However, // these shared break iterators must never be exposed outside of that class. class U_I18N_API SharedBreakIterator : public SharedObject { public: SharedBreakIterator(BreakIterator *biToAdopt); virtual ~SharedBreakIterator(); BreakIterator *get() const { return ptr; } BreakIterator *operator->() const { return ptr; } BreakIterator &operator*() const { return *ptr; } private: BreakIterator *ptr; SharedBreakIterator(const SharedBreakIterator &) = delete; SharedBreakIterator &operator=(const SharedBreakIterator &) = delete; }; U_NAMESPACE_END #endif #endif