Exemplo n.º 1
0
static void initPhpEntry (tagEntryInfo *const e, const tokenInfo *const token,
						  const phpKind kind, const accessType access)
{
	int parentKind = -1;
	const char *rootsep;

	vStringClear (FullScope);

	if (vStringLength (CurrentNamesapce) > 0)
	{
		parentKind = K_NAMESPACE;
		rootsep = scopeSeparatorFor (PhpKinds + parentKind,
					     KIND_NULL);
		vStringCatS (FullScope, rootsep);
		vStringCat (FullScope, CurrentNamesapce);

	}

	initTagEntry (e, vStringValue (token->string), &(PhpKinds[kind]));

	e->lineNumber	= token->lineNumber;
	e->filePosition	= token->filePosition;

	if (access != ACCESS_UNDEFINED)
		e->extensionFields.access = accessToString (access);
	if (vStringLength (token->scope) > 0)
	{
		parentKind = token->parentKind;

		if (vStringLength (FullScope) > 0)
		{
			const char* sep;

			sep = phpScopeSeparatorFor (parentKind,
						    K_NAMESPACE);
			vStringCatS (FullScope, sep);
		}
		else
		{
			rootsep = scopeSeparatorFor (PhpKinds + parentKind,
						     KIND_NULL);
			vStringCatS (FullScope, rootsep);
		}
		vStringCat (FullScope, token->scope);
	}
	if (vStringLength (FullScope) > 0)
	{
		Assert (parentKind >= 0);

		vStringTerminate (FullScope);
		e->extensionFields.scopeKind = &(PhpKinds[parentKind]);
		e->extensionFields.scopeName = vStringValue (FullScope);
	}
}
Exemplo n.º 2
0
Arquivo: php.c Projeto: qzhuyan/ctags
static const char *phpScopeSeparatorFor (int phpKind,
					 int phpUpperScopeKind)
{
	char letter;

	letter = PhpKinds[phpUpperScopeKind].letter;
	return scopeSeparatorFor (&(PhpKinds[phpKind]), letter);
}
Exemplo n.º 3
0
static const char *phpScopeSeparatorFor (int kind, int upperScopeKind)
{
	return scopeSeparatorFor (getInputLanguage(), kind, upperScopeKind);
}