42#define TSEGROUP_LASTUSED_RESET_VALUE 10000
76 return (a.
id ==
b.id) && (a.
type ==
b.type) && (a.
nr ==
b.nr);
90 std::unique_ptr<TreeHash> tree_hash{
new TreeHash()};
91 tree_hash->fill_treehash(treestore);
109 for (
auto &group : elem_groups_.values()) {
111 group->lastused_reset_count = 0;
117 elem_groups_.clear();
118 fill_treehash(treestore);
123 std::unique_ptr<TseGroup> &group = elem_groups_.lookup_or_add_cb(
125 group->add_element(elem);
130 TseGroup *group = lookup_group(elem);
144 const auto *group = elem_groups_.lookup_ptr(key);
151TseGroup *TreeHash::lookup_group(
const TreeStoreElem &elem)
const
153 return lookup_group(TreeStoreElemKey(elem));
156TseGroup *TreeHash::lookup_group(
const short type,
const short nr,
ID *
id)
const
158 TreeStoreElemKey key(
id, type, nr);
162 return lookup_group(key);
167 TseGroup *group = lookup_group(type, nr,
id);
177 for (
int i = 0;
i <
size;
i++, offset++) {
180 if (offset >=
size) {
190 if (!group->
elems[offset]->used) {
192 return group->
elems[offset];
200 const TseGroup *group = lookup_group(type, nr,
id);
201 return group ? group->
elems[0] :
nullptr;
void BLI_mempool_iternew(BLI_mempool *pool, BLI_mempool_iter *iter) ATTR_NONNULL()
void * BLI_mempool_iterstep(BLI_mempool_iter *iter) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void rebuild_from_treestore(BLI_mempool &treestore)
TreeStoreElem * lookup_unused(short type, short nr, ID *id) const
TreeStoreElem * lookup_any(short type, short nr, ID *id) const
static std::unique_ptr< TreeHash > create_from_treestore(BLI_mempool &treestore)
void add_element(TreeStoreElem &elem)
void remove_element(TreeStoreElem &elem)
TreeStoreElemKey(const TreeStoreElem &elem)
void remove_element(TreeStoreElem &elem)
blender::Vector< TreeStoreElem * > elems
void add_element(TreeStoreElem &elem)
bool operator==(const TreeStoreElemKey &a, const TreeStoreElemKey &b)
uint64_t get_default_hash(const T &v, const Args &...args)
#define TSEGROUP_LASTUSED_RESET_VALUE