8#ifndef OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H
9#define OPENSUBDIV3_BFR_SURFACE_FACTORY_CACHE_H
11#include "../version.h"
13#include "../bfr/irregularPatchType.h"
19namespace OPENSUBDIV_VERSION {
55 typedef std::uint64_t KeyType;
56 typedef internal::IrregularPatchSharedPtr DataType;
61 size_t Size()
const {
return _map.size(); }
66 virtual DataType Find(KeyType
const & key)
const;
67 virtual DataType Add(KeyType
const & key, DataType
const & data);
72 DataType find(KeyType
const & key)
const;
73 DataType add(KeyType
const & key, DataType
const & data);
77 typedef std::map<KeyType, DataType> MapType;
99template <
class MUTEX_TYPE,
class READ_LOCK_GUARD_TYPE,
100 class WRITE_LOCK_GUARD_TYPE>
111 DataType Find(KeyType
const & key)
const override {
112 READ_LOCK_GUARD_TYPE lockGuard(_mutex);
116 DataType Add(KeyType
const & key, DataType
const & data)
override {
117 WRITE_LOCK_GUARD_TYPE lockGuard(_mutex);
118 return add(key, data);
123 MUTEX_TYPE
mutable _mutex;
129using namespace OPENSUBDIV_VERSION;
Base class providing initialization of a Surface for each face of a mesh.
Container used internally by SurfaceFactory to store reusable information.
virtual ~SurfaceFactoryCache()
SurfaceFactoryCache(SurfaceFactoryCache const &)=delete
SurfaceFactoryCache & operator=(SurfaceFactoryCache const &)=delete
Template for declaring thread-safe subclasses of SurfaceFactoryCache.
SurfaceFactoryCacheThreaded()
~SurfaceFactoryCacheThreaded() override=default