MCPcopy Create free account
hub / github.com/MegEngine/MegEngine / do_pop

Method do_pop

src/core/impl/utils/metahelper.cpp:37–53  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35}
36
37int UserDataContainer::do_pop(Typeinfo* type) {
38 auto iter = m_storage.find(type);
39 if (iter == m_storage.end())
40 return 0;
41 auto&& vec = iter->second;
42 mgb_assert(!vec.empty());
43 // use aliasing constructor to avoid deleter call
44 std::shared_ptr<UserData> ptr(
45 std::shared_ptr<UserData>{}, static_cast<UserData*>(vec.back()));
46 auto nr = m_refkeeper.erase(ptr);
47 mgb_assert(nr);
48 vec.pop_back();
49 if (vec.empty()) {
50 m_storage.erase(iter);
51 }
52 return 1;
53}
54
55void CleanupCallback::add(Callback callback) {
56 m_callbacks.emplace_back(std::move(callback));

Callers

nothing calls this directly

Calls 6

backMethod · 0.80
findMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45
eraseMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected