12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // © 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
|