From 356217eff7416606ebbcf739dbd999ba6b2db299 Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Sat, 8 Aug 2015 18:47:42 -0700 Subject: Improvements to Cba data-structure. --- src/misc/vec/vecStr.h | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) (limited to 'src/misc/vec/vecStr.h') diff --git a/src/misc/vec/vecStr.h b/src/misc/vec/vecStr.h index 63be43d5..04cd5da8 100644 --- a/src/misc/vec/vecStr.h +++ b/src/misc/vec/vecStr.h @@ -283,6 +283,10 @@ static inline char * Vec_StrArray( Vec_Str_t * p ) { return p->pArray; } +static inline char * Vec_StrLimit( Vec_Str_t * p ) +{ + return p->pArray + p->nSize; +} /**Function************************************************************* @@ -299,6 +303,10 @@ static inline int Vec_StrSize( Vec_Str_t * p ) { return p->nSize; } +static inline void Vec_StrSetSize( Vec_Str_t * p, int nSize ) +{ + p->nSize = nSize; +} /**Function************************************************************* @@ -668,6 +676,39 @@ static inline void Vec_StrPrintStr( Vec_Str_t * p, const char * pStr ) Vec_StrPush( p, pStr[i] ); } + +/**Function************************************************************* + + Synopsis [] + + Description [] + + SideEffects [] + + SeeAlso [] + +***********************************************************************/ +#ifdef WIN32 +#define vsnprintf _vsnprintf +#endif + +static inline char * Vec_StrPrintF( Vec_Str_t * p, const char * format, ... ) +{ + int nAdded, nSize = 1000; + va_list args; va_start( args, format ); + Vec_StrGrow( p, Vec_StrSize(p) + nSize ); + nAdded = vsnprintf( Vec_StrLimit(p), nSize, format, args ); + if ( nAdded > nSize ) + { + Vec_StrGrow( p, Vec_StrSize(p) + nAdded + nSize ); + nSize = vsnprintf( Vec_StrLimit(p), nAdded, format, args ); + assert( nSize == nAdded ); + } + p->nSize += nAdded; + va_end( args ); + return Vec_StrLimit(p) - nAdded; +} + /**Function************************************************************* Synopsis [Appends the string to the char vector.] -- cgit v1.2.3