| Index: core/fxcrt/include/cfx_string_pool_template.h
|
| diff --git a/core/fxcrt/include/cfx_string_pool_template.h b/core/fxcrt/include/cfx_string_pool_template.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a59d13a61d289c4f2cb4470d202f08c70a3f76f5
|
| --- /dev/null
|
| +++ b/core/fxcrt/include/cfx_string_pool_template.h
|
| @@ -0,0 +1,30 @@
|
| +// Copyright 2016 PDFium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
| +
|
| +#ifndef CORE_FXCRT_INCLUDE_CFX_STRING_POOL_TEMPLATE_H_
|
| +#define CORE_FXCRT_INCLUDE_CFX_STRING_POOL_TEMPLATE_H_
|
| +
|
| +#include <unordered_set>
|
| +
|
| +#include "core/fxcrt/include/fx_string.h"
|
| +
|
| +template <typename StringType>
|
| +class CFX_StringPoolTemplate {
|
| + public:
|
| + StringType Intern(const StringType& str) { return *m_Pool.insert(str).first; }
|
| + void Clear() { m_Pool.clear(); }
|
| +
|
| + private:
|
| + std::unordered_set<StringType> m_Pool;
|
| +};
|
| +
|
| +using CFX_ByteStringPool = CFX_StringPoolTemplate<CFX_ByteString>;
|
| +using CFX_WideStringPool = CFX_StringPoolTemplate<CFX_WideString>;
|
| +
|
| +extern template class CFX_StringPoolTemplate<CFX_ByteString>;
|
| +extern template class CFX_StringPoolTemplate<CFX_WideString>;
|
| +
|
| +#endif // CORE_FXCRT_INCLUDE_CFX_STRING_POOL_TEMPLATE_H_
|
|
|