<?xml version="1.0"?>

<!--
	description:

		"Precursor Tasks"

	library: "Gobo Eiffel Ant"
	copyright: "Copyright (c) 2002, Sven Ehrke and others"
	license: "MIT License"
-->

<chapter xmlns="https://www.gobosoft.com/eiffel/gobo/documentation" id="precursor_task">
<chapterinfo>
	<copyright>
		<year>2002-2005</year>
		<holder>Sven Ehrke</holder>
	</copyright>
	<author>
		<firstname>Sven</firstname><surname>Ehrke</surname>
	</author>
	<email>ericb@gobosoft.com</email>
	<date>7 July 2005</date>
</chapterinfo>

	<title>precursor</title>

	<section id="precursor_description">
		<title>Description</title>
		<para>
			Execute precursor of current target.
		</para>
	</section>

	<section id="precursor_parameters">
		<title>Parameters</title>

		<variablelist>
			<varlistentry>
				<term>parent</term>
				<listitem>
					<para><emphasis>Description: </emphasis>Parent for ambiguous cases in relation with multiple inheritance (not supported yet)</para>
				</listitem>
				<listitem>
					<para><emphasis>Domain: </emphasis>valid parent</para>
				</listitem>
				<listitem>
					<para><emphasis>Default: </emphasis>-</para>
				</listitem>
			</varlistentry>
			<varlistentry>
				<term>arguments</term>
				<listitem>
					<para><emphasis>Description: </emphasis>Comma separated list of values to be passed
					as arguments to the target to be called. The number of values must match the number of
					formal arguments of that target. The sequence is important: the first value
					will be used for the first actual parameter, the second as the second and so on. This is
					the so called terse way of argument passing.
					</para>
				</listitem>
				<listitem>
					<para><emphasis>Domain: </emphasis>Comma separated list of values</para>
				</listitem>
				<listitem>
					<para><emphasis>Default: </emphasis>-</para>
				</listitem>
			</varlistentry>
		</variablelist>
	</section>

	<section id="geant_nested_parameters">
		<title>Parameters specified as nested elements</title>

		<variablelist>
			<varlistentry>
				<term>argument</term>
				<listitem>
					<para><emphasis>Description: </emphasis>Element representing a actual argument
					for the target to be called. The name of the matching formal argument is specified
					by the attribute 'name'. The value to be used is specified through the attribute 'value'.
					The names of the arguments and the number of arguments must match the formal ones of
					the target to be called.
					</para>
				</listitem>
				<listitem>
					<para><emphasis>Domain: </emphasis>-</para>
				</listitem>
				<listitem>
					<para><emphasis>Default: </emphasis>-</para>
				</listitem>
			</varlistentry>
		</variablelist>
	</section>

	<section id="precursor_specification">
		<title>RNG Specification</title>

		<programlisting><![CDATA[
  <define name="precursor">
    <element name="precursor">
      <text/>
    </element>
  </define>
]]>
		</programlisting>
	</section>

	<section id="precursor_examples">
		<title>Examples</title>

		<programlisting><![CDATA[
  <precursor/>
]]>
		</programlisting>
	</section>

</chapter>
