MCPcopy Create free account
hub / github.com/Vector35/binaryninja-api / ViewSpecificStateForId

Function ViewSpecificStateForId

view/kernelcache/core/KernelCache.cpp:106–136  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

104namespace {
105
106 std::shared_ptr<KernelCache::ViewSpecificState> ViewSpecificStateForId(
107 uint64_t viewIdentifier, bool insertIfNeeded = true)
108 {
109 static std::mutex viewSpecificStateMutex;
110 static std::unordered_map<uint64_t, std::weak_ptr<KernelCache::ViewSpecificState>> viewSpecificState;
111
112 std::lock_guard lock(viewSpecificStateMutex);
113
114 if (auto it = viewSpecificState.find(viewIdentifier); it != viewSpecificState.end())
115 {
116 if (auto statePtr = it->second.lock())
117 return statePtr;
118 }
119
120 if (!insertIfNeeded)
121 return nullptr;
122
123 auto statePtr = std::make_shared<KernelCache::ViewSpecificState>();
124 viewSpecificState[viewIdentifier] = statePtr;
125
126 // Prune entries for any views that are no longer in use.
127 for (auto it = viewSpecificState.begin(); it != viewSpecificState.end();)
128 {
129 if (it->second.expired())
130 it = viewSpecificState.erase(it);
131 else
132 ++it;
133 }
134
135 return statePtr;
136 }
137
138 std::shared_ptr<KernelCache::ViewSpecificState> ViewSpecificStateForView(Ref<BinaryNinja::BinaryView> view)
139 {

Callers 2

ViewSpecificStateForViewFunction · 0.85
BNKCViewGetLoadProgressFunction · 0.85

Calls 5

findMethod · 0.80
eraseMethod · 0.80
endMethod · 0.45
lockMethod · 0.45
beginMethod · 0.45

Tested by

no test coverage detected