@ -1366,25 +1366,27 @@ struct ImGuiTextFilter
int CountGrep ;
} ;
// Helper: Text buffer for logging/accumulating text
// Helper: Growable text buffer for logging/accumulating text
// (this could be called 'ImGuiTextBuilder' / 'ImGuiStringBuilder')
struct ImGuiTextBuffer
{
ImVector < char > Buf ;
ImGuiTextBuffer ( ) { Buf . push_back ( 0 ) ; }
inline char operator [ ] ( int i ) { return Buf . Data [ i ] ; }
const char * begin ( ) const { return & Buf . front ( ) ; }
const char * end ( ) const { return & Buf . back ( ) ; } // Buf is zero-terminated, so end() will point on the zero-terminator
int size ( ) const { return Buf . Size - 1 ; }
bool empty ( ) { return Buf . Size < = 1 ; }
void clear ( ) { Buf . clear ( ) ; Buf . push_back ( 0 ) ; }
void reserve ( int capacity ) { Buf . reserve ( capacity ) ; }
const char * c_str ( ) const { return Buf . Data ; }
static char EmptyString [ 1 ] ;
ImGuiTextBuffer ( ) { }
inline char operator [ ] ( int i ) { IM_ASSERT ( Buf . Data ! = NULL ) ; return Buf . Data [ i ] ; }
const char * begin ( ) const { return Buf . Data ? & Buf . front ( ) : EmptyString ; }
const char * end ( ) const { return Buf . Data ? & Buf . back ( ) : EmptyString ; } // Buf is zero-terminated, so end() will point on the zero-terminator
int size ( ) const { return Buf . Data ? Buf . Size - 1 : 0 ; }
bool empty ( ) { return Buf . Size < = 1 ; }
void clear ( ) { Buf . clear ( ) ; }
void reserve ( int capacity ) { Buf . reserve ( capacity ) ; }
const char * c_str ( ) const { return Buf . Data ? Buf . Data : EmptyString ; }
IMGUI_API void appendf ( const char * fmt , . . . ) IM_FMTARGS ( 2 ) ;
IMGUI_API void appendfv ( const char * fmt , va_list args ) IM_FMTLIST ( 2 ) ;
} ;
// Helper: key->v alue storage
// Helper: Key->V alue storage
// Typically you don't have to worry about this since a storage is held within each Window.
// We use it to e.g. store collapse state for a tree (Int 0/1)
// This is optimized for efficient lookup (dichotomy into a contiguous buffer) and rare insertion (typically tied to user interactions aka max once a frame)