61607c2773
X-SVN-Rev: 38848
50 lines
1.7 KiB
C++
50 lines
1.7 KiB
C++
// Copyright (C) 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 &);
|
|
SharedBreakIterator &operator=(const SharedBreakIterator &);
|
|
};
|
|
|
|
U_NAMESPACE_END
|
|
|
|
#endif
|
|
|
|
#endif
|