{*
ApiGen 2.8.0 - API documentation generator for PHP 5.3+

Copyright (c) 2010-2011 David Grudl (http://davidgrudl.com)
Copyright (c) 2011-2012 Jaroslav Hanslík (https://github.com/kukulich)
Copyright (c) 2011-2012 Ondřej Nešpor (https://github.com/Andrewsville)

For the full copyright and license information, please view
the file LICENSE.md that was distributed with this source code.
*}
{layout '@layout.latte'}
{var $active = 'function'}

{block #title}{if $function->deprecated}Deprecated {/if}Function {$function->name}{/block}

{block #content}
<div id="content" class="function">
	<h1 n:class="$function->deprecated ? deprecated">Function {$function->shortName}</h1>

	{if $function->valid}

	<div class="description" n:if="$template->longDescription($function)">
	{!$function|longDescription}
	</div>

	<div class="info">
		{if $function->inNamespace()}<b>Namespace:</b> {!$function->namespaceName|namespaceLinks}<br>{/if}
		{if $function->inPackage()}<b>Package:</b> {!$function->packageName|packageLinks}<br>{/if}
		{foreach $template->annotationSort($template->annotationFilter($function->annotations, array('param', 'return', 'throws'))) as $annotation => $values}
			{foreach $values as $value}
				<b>{$annotation|annotationBeautify}{if $value}:{/if}</b>
				{!$value|annotation:$annotation:$function}<br>
			{/foreach}
		{/foreach}
		<b>Located at</b> <a n:tag-if="$config->sourceCode" href="{$function|sourceUrl}" title="Go to source code">{$function->fileName|relativePath}</a><br>
	</div>

	{var $annotations = $function->annotations}

	<table class="summary" id="parameters" n:if="$function->numberOfParameters">
	<caption>Parameters summary</caption>
	<tr n:foreach="$function->parameters as $parameter" id="${$parameter->name}">
		<td class="name"><code>{!$parameter->typeHint|typeLinks:$function}</code></td>
		<td class="value"><code>{block|strip}
			<var>{if $parameter->passedByReference}&amp; {/if}${$parameter->name}</var>{if $parameter->defaultValueAvailable} = {!$parameter->defaultValueDefinition|highlightPHP:$function}{elseif $parameter->unlimited},…{/if}
		{/block}</code></td>
		<td>
			{ifset $annotations['param'][$parameter->position]}{!$annotations['param'][$parameter->position]|description:$parameter}{/ifset}
		</td>
	</tr>
	</table>

	<table class="summary" id="returns" n:if="isset($annotations['return']) && 'void' !== $annotations['return'][0]">
	<caption>Return value summary</caption>
	<tr>
		<td class="name"><code>
			{!$annotations['return'][0]|typeLinks:$function}
		</code></td>
		<td>
			{!$annotations['return'][0]|description:$function}
		</td>
	</tr>
	</table>

	<table class="summary" id="throws" n:ifset="$annotations['throws']">
	<caption>Thrown exceptions summary</caption>
	<tr n:foreach="$annotations['throws'] as $throws">
		<td class="name"><code>
			{!$throws|typeLinks:$function}
		</code></td>
		<td>
			{!$throws|description:$function}
		</td>
	</tr>
	</table>

	{else}
		<div class="invalid">
			<p>
				Documentation of this function could not be generated.
			</p>
			<p>
				Function was originally declared in {$function->fileName|relativePath} and is invalid because of:
			</p>
			<ul>
				<li n:foreach="$function->reasons as $reason">Function was redeclared in {$reason->getSender()->getFileName()|relativePath}.</li>
			</ul>
		</div>
	{/if}
</div>
{/block}
