Internals: LowerBound: Use raw pointer typedefs, we never use iterator anywhere else in the codebase.

Demo: Typo.
C98 fix.
This commit is contained in:
omar 2019-01-08 16:26:45 +01:00
parent 57b1622afc
commit f53cd3ee0f
3 changed files with 15 additions and 15 deletions

View File

@ -1795,15 +1795,15 @@ ImU32 ImGui::GetColorU32(ImU32 col)
//----------------------------------------------------------------------------- //-----------------------------------------------------------------------------
// std::lower_bound but without the bullshit // std::lower_bound but without the bullshit
static ImVector<ImGuiStorage::Pair>::iterator LowerBound(ImVector<ImGuiStorage::Pair>& data, ImGuiID key) static ImGuiStorage::Pair* LowerBound(ImVector<ImGuiStorage::Pair>& data, ImGuiID key)
{ {
ImVector<ImGuiStorage::Pair>::iterator first = data.begin(); ImGuiStorage::Pair* first = data.Data;
ImVector<ImGuiStorage::Pair>::iterator last = data.end(); ImGuiStorage::Pair* last = data.Data + data.Size;
size_t count = (size_t)(last - first); size_t count = (size_t)(last - first);
while (count > 0) while (count > 0)
{ {
size_t count2 = count >> 1; size_t count2 = count >> 1;
ImVector<ImGuiStorage::Pair>::iterator mid = first + count2; ImGuiStorage::Pair* mid = first + count2;
if (mid->key < key) if (mid->key < key)
{ {
first = ++mid; first = ++mid;
@ -1836,7 +1836,7 @@ void ImGuiStorage::BuildSortByKey()
int ImGuiStorage::GetInt(ImGuiID key, int default_val) const int ImGuiStorage::GetInt(ImGuiID key, int default_val) const
{ {
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key); ImGuiStorage::Pair* it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
return default_val; return default_val;
return it->val_i; return it->val_i;
@ -1849,7 +1849,7 @@ bool ImGuiStorage::GetBool(ImGuiID key, bool default_val) const
float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const
{ {
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key); ImGuiStorage::Pair* it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
return default_val; return default_val;
return it->val_f; return it->val_f;
@ -1857,7 +1857,7 @@ float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const
void* ImGuiStorage::GetVoidPtr(ImGuiID key) const void* ImGuiStorage::GetVoidPtr(ImGuiID key) const
{ {
ImVector<Pair>::iterator it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key); ImGuiStorage::Pair* it = LowerBound(const_cast<ImVector<ImGuiStorage::Pair>&>(Data), key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
return NULL; return NULL;
return it->val_p; return it->val_p;
@ -1866,7 +1866,7 @@ void* ImGuiStorage::GetVoidPtr(ImGuiID key) const
// References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer. // References are only valid until a new value is added to the storage. Calling a Set***() function or a Get***Ref() function invalidates the pointer.
int* ImGuiStorage::GetIntRef(ImGuiID key, int default_val) int* ImGuiStorage::GetIntRef(ImGuiID key, int default_val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
it = Data.insert(it, Pair(key, default_val)); it = Data.insert(it, Pair(key, default_val));
return &it->val_i; return &it->val_i;
@ -1879,7 +1879,7 @@ bool* ImGuiStorage::GetBoolRef(ImGuiID key, bool default_val)
float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val) float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
it = Data.insert(it, Pair(key, default_val)); it = Data.insert(it, Pair(key, default_val));
return &it->val_f; return &it->val_f;
@ -1887,7 +1887,7 @@ float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val)
void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val) void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
it = Data.insert(it, Pair(key, default_val)); it = Data.insert(it, Pair(key, default_val));
return &it->val_p; return &it->val_p;
@ -1896,7 +1896,7 @@ void** ImGuiStorage::GetVoidPtrRef(ImGuiID key, void* default_val)
// FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame) // FIXME-OPT: Need a way to reuse the result of lower_bound when doing GetInt()/SetInt() - not too bad because it only happens on explicit interaction (maximum one a frame)
void ImGuiStorage::SetInt(ImGuiID key, int val) void ImGuiStorage::SetInt(ImGuiID key, int val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
{ {
Data.insert(it, Pair(key, val)); Data.insert(it, Pair(key, val));
@ -1912,7 +1912,7 @@ void ImGuiStorage::SetBool(ImGuiID key, bool val)
void ImGuiStorage::SetFloat(ImGuiID key, float val) void ImGuiStorage::SetFloat(ImGuiID key, float val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
{ {
Data.insert(it, Pair(key, val)); Data.insert(it, Pair(key, val));
@ -1923,7 +1923,7 @@ void ImGuiStorage::SetFloat(ImGuiID key, float val)
void ImGuiStorage::SetVoidPtr(ImGuiID key, void* val) void ImGuiStorage::SetVoidPtr(ImGuiID key, void* val)
{ {
ImVector<Pair>::iterator it = LowerBound(Data, key); ImGuiStorage::Pair* it = LowerBound(Data, key);
if (it == Data.end() || it->key != key) if (it == Data.end() || it->key != key)
{ {
Data.insert(it, Pair(key, val)); Data.insert(it, Pair(key, val));

View File

@ -4027,7 +4027,7 @@ void ShowExampleAppDocuments(bool* p_open)
{ {
static ExampleAppDocuments app; static ExampleAppDocuments app;
if (!ImGui::Begin("Examples: Documents", p_open, ImGuiWindowFlags_MenuBar)) if (!ImGui::Begin("Example: Documents", p_open, ImGuiWindowFlags_MenuBar))
{ {
ImGui::End(); ImGui::End();
return; return;

View File

@ -332,7 +332,7 @@ enum ImGuiItemStatusFlags_
enum ImGuiLayoutType_ enum ImGuiLayoutType_
{ {
ImGuiLayoutType_Vertical = 0, ImGuiLayoutType_Vertical = 0,
ImGuiLayoutType_Horizontal = 1, ImGuiLayoutType_Horizontal = 1
}; };
enum ImGuiAxis enum ImGuiAxis