コード例 #1
0
ファイル: cxx_token_chain.c プロジェクト: pjkack/ctags
void cxxTokenChainCondense(CXXTokenChain * tc,unsigned int uFlags)
{
	if(!tc)
		return;
	if(tc->iCount <= 1)
		return;

	CXXToken * pCondensed = cxxTokenCreate();

	pCondensed->eType = CXXTokenTypeUnknown;
	pCondensed->iLineNumber = tc->pHead->iLineNumber;
	pCondensed->oFilePosition = tc->pHead->oFilePosition;

	while(tc->iCount > 0)
	{
		CXXToken * t = cxxTokenChainTakeFirst(tc);

		cxxTokenAppendToString(pCondensed->pszWord,t);

		if(
				(!(uFlags & CXXTokenChainCondenseNoTrailingSpaces)) &&
				t->bFollowedBySpace
			)
			vStringPut (pCondensed->pszWord, ' ');

		pCondensed->bFollowedBySpace = t->bFollowedBySpace;
		cxxTokenDestroy(t);
	}

	cxxTokenChainAppend(tc,pCondensed);
}
コード例 #2
0
ファイル: cxx_token.c プロジェクト: Dev0Null/ctags
void cxxTokenAPIDone(void)
{
	CXXToken * t;

	while((t = cxxTokenChainTakeFirst(g_pTokenPool)))
		cxxTokenForceDestroy(t);

	cxxTokenChainDestroy(g_pTokenPool);
}
コード例 #3
0
ファイル: cxx_token_chain.c プロジェクト: pjkack/ctags
void cxxTokenChainClear(CXXTokenChain * tc)
{
	CXXToken * t;

	if(!tc)
		return;

	if(tc->iCount < 1)
		return;

	while((t = cxxTokenChainTakeFirst(tc)))
		cxxTokenDestroy(t);


	Assert(tc->iCount == 0);
	Assert(tc->pHead == NULL);
	Assert(tc->pTail == NULL);
}
コード例 #4
0
ファイル: cxx_token_chain.c プロジェクト: pjkack/ctags
void cxxTokenChainTake(CXXTokenChain * tc,CXXToken * t)
{
	if(!tc)
		return;
	if(!tc->pHead)
		return;

	/*
	Debug with this:

	CXXToken * t2 = tc->pHead;
	while(t2 && (t2 != t))
		t2 = t2->pNext;

	Assert(t2);
	*/

	if(t == tc->pHead)
	{
		cxxTokenChainTakeFirst(tc);
		return;
	}

	if(t == tc->pTail)
	{
		cxxTokenChainTakeLast(tc);
		return;
	}

	// in the middle

	CXXToken * n = t->pNext;
	CXXToken * p = t->pPrev;

	n->pPrev = p;
	p->pNext = n;

	tc->iCount--;

	Assert(tc->iCount > 1);
}
コード例 #5
0
ファイル: cxx_token.c プロジェクト: Dev0Null/ctags
CXXToken * cxxTokenCreate(void)
{
	CXXToken * t;

	if(g_pTokenPool->iCount > 0)
	{
		t = cxxTokenChainTakeFirst(g_pTokenPool);
		CXX_DEBUG_ASSERT(t->pszWord,"The string shouldn't have been destroyed");
	} else {
		t = xMalloc(sizeof(CXXToken),CXXToken);
		// we almost always want a string, and since this token
		// is being reused..well.. we always want it
		t->pszWord = vStringNew();
	}

	t->bFollowedBySpace = FALSE;

	t->pChain = NULL;
	t->pNext = NULL;
	t->pPrev = NULL;

	return t;
}