@ -1795,15 +1795,15 @@ ImU32 ImGui::GetColorU32(ImU32 col)
//-----------------------------------------------------------------------------
// std::lower_bound but without the bullshit
static Im Vector< ImGuiStorage : : Pair > : : iterator LowerBound ( ImVector < ImGuiStorage : : Pair > & data , ImGuiID key )
static Im GuiStorage: : Pair * LowerBound ( ImVector < ImGuiStorage : : Pair > & data , ImGuiID key )
{
Im Vector< ImGuiStorage : : Pair > : : iterator first = data . begin ( ) ;
Im Vector< ImGuiStorage : : Pair > : : iterator last = data . end ( ) ;
Im GuiStorage: : Pair * first = data . Data ;
Im GuiStorage: : Pair * last = data . Data + data . Size ;
size_t count = ( size_t ) ( last - first ) ;
while ( count > 0 )
{
size_t count2 = count > > 1 ;
Im Vector< ImGuiStorage : : Pair > : : iterator mid = first + count2 ;
Im GuiStorage: : Pair * mid = first + count2 ;
if ( mid - > key < key )
{
first = + + mid ;
@ -1836,7 +1836,7 @@ void ImGuiStorage::BuildSortByKey()
int ImGuiStorage : : GetInt ( ImGuiID key , int default_val ) const
{
Im Vector< Pair > : : iterator it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
return default_val ;
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
{
Im Vector< Pair > : : iterator it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
return default_val ;
return it - > val_f ;
@ -1857,7 +1857,7 @@ float ImGuiStorage::GetFloat(ImGuiID key, float default_val) const
void * ImGuiStorage : : GetVoidPtr ( ImGuiID key ) const
{
Im Vector< Pair > : : iterator it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( const_cast < ImVector < ImGuiStorage : : Pair > & > ( Data ) , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
return NULL ;
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.
int * ImGuiStorage : : GetIntRef ( ImGuiID key , int default_val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
it = Data . insert ( it , Pair ( key , default_val ) ) ;
return & it - > val_i ;
@ -1879,7 +1879,7 @@ bool* ImGuiStorage::GetBoolRef(ImGuiID key, bool default_val)
float * ImGuiStorage : : GetFloatRef ( ImGuiID key , float default_val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
it = Data . insert ( it , Pair ( key , default_val ) ) ;
return & it - > val_f ;
@ -1887,7 +1887,7 @@ float* ImGuiStorage::GetFloatRef(ImGuiID key, float default_val)
void * * ImGuiStorage : : GetVoidPtrRef ( ImGuiID key , void * default_val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
it = Data . insert ( it , Pair ( key , default_val ) ) ;
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)
void ImGuiStorage : : SetInt ( ImGuiID key , int val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
{
Data . insert ( it , Pair ( key , val ) ) ;
@ -1912,7 +1912,7 @@ void ImGuiStorage::SetBool(ImGuiID key, bool val)
void ImGuiStorage : : SetFloat ( ImGuiID key , float val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
{
Data . insert ( it , Pair ( key , val ) ) ;
@ -1923,7 +1923,7 @@ void ImGuiStorage::SetFloat(ImGuiID key, float val)
void ImGuiStorage : : SetVoidPtr ( ImGuiID key , void * val )
{
Im Vector< Pair > : : iterator it = LowerBound ( Data , key ) ;
Im GuiStorage: : Pair * it = LowerBound ( Data , key ) ;
if ( it = = Data . end ( ) | | it - > key ! = key )
{
Data . insert ( it , Pair ( key , val ) ) ;