vString * cxxScopeGetFullNameAsString(void) { vString * ret; if(!g_bScopeNameDirty) { ret = g_szScopeName; g_szScopeName = NULL; g_bScopeNameDirty = true; return ret; } if(g_pScope->iCount < 1) return NULL; if(g_szScopeName) vStringClear(g_szScopeName); else g_szScopeName = vStringNew(); cxxTokenChainJoinInString( g_pScope, g_szScopeName, "::", CXXTokenChainJoinNoTrailingSpaces ); ret = g_szScopeName; g_szScopeName = NULL; return ret; }
const char * cxxScopeGetFullName(void) { if(!g_bScopeNameDirty) return g_szScopeName ? g_szScopeName->buffer : NULL; if(g_pScope->iCount < 1) { g_bScopeNameDirty = false; return NULL; } if(g_szScopeName) vStringClear(g_szScopeName); else g_szScopeName = vStringNew(); cxxTokenChainJoinInString( g_pScope, g_szScopeName, "::", CXXTokenChainJoinNoTrailingSpaces ); g_bScopeNameDirty = false; return g_szScopeName->buffer; }
void cxxTokenAppendToString(vString * s,CXXToken * t) { switch(t->eType) { case CXXTokenTypeParenthesisChain: case CXXTokenTypeSquareParenthesisChain: case CXXTokenTypeBracketChain: case CXXTokenTypeAngleBracketChain: CXX_DEBUG_ASSERT(t->pChain,"This token should have a nested chain!"); cxxTokenChainJoinInString(t->pChain,s,NULL,0); break; default: vStringCat(s,t->pszWord); break; } }
vString * cxxTokenChainJoin( CXXTokenChain * tc, const char * szSeparator, unsigned int uFlags ) { if(!tc) return NULL; if(tc->iCount == 0) return NULL; vString * s = vStringNew(); cxxTokenChainJoinInString(tc,s,szSeparator,uFlags); return s; }