MCPcopy Create free account
hub / github.com/cinder/Cinder / GetOrAddByKey

Method GetOrAddByKey

include/imgui/imgui_internal.h:764–764  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

762 T* GetByIndex(ImPoolIdx n) { return &Buf[n]; }
763 ImPoolIdx GetIndex(const T* p) const { IM_ASSERT(p >= Buf.Data && p < Buf.Data + Buf.Size); return (ImPoolIdx)(p - Buf.Data); }
764 T* GetOrAddByKey(ImGuiID key) { int* p_idx = Map.GetIntRef(key, -1); if (*p_idx != -1) return &Buf[*p_idx]; *p_idx = FreeIdx; return Add(); }
765 bool Contains(const T* p) const { return (p >= Buf.Data && p < Buf.Data + Buf.Size); }
766 void Clear() { for (int n = 0; n < Map.Data.Size; n++) { int idx = Map.Data[n].val_i; if (idx != -1) Buf[idx].~T(); } Map.Clear(); Buf.clear(); FreeIdx = AliveCount = 0; }
767 T* Add() { int idx = FreeIdx; if (idx == Buf.Size) { Buf.resize(Buf.Size + 1); FreeIdx++; } else { FreeIdx = *(int*)&Buf[idx]; } IM_PLACEMENT_NEW(&Buf[idx]) T(); AliveCount++; return &Buf[idx]; }

Callers 3

BeginTableExMethod · 0.80
BeginMultiSelectMethod · 0.80
BeginTabBarMethod · 0.80

Calls 2

AddFunction · 0.85
GetIntRefMethod · 0.80

Tested by

no test coverage detected