blob: 6ca7cc7ae10baababe06e7751d6c6f994c8eb940 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE section PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN"
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
<section id="bbv2.reference.modules.type">
<title>type</title>
<indexterm>
<primary>type</primary>
<secondary>module</secondary>
</indexterm>
<para>
Deals with target type declaration and defines target class which supports
typed targets.
</para>
<orderedlist>
<listitem id="bbv2.reference.modules.type.register">
<indexterm zone="bbv2.reference.modules.type.register">
<primary>register</primary>
<secondary>type</secondary>
</indexterm>
<code language="jam">rule register ( type : suffixes * : base-type ? )</code>
<para>
Registers a target type, possible derived from a
<code language="jam">base-type</code>. Providing a list
of suffixes here is a shortcut for separately calling the
<link linkend="bbv2.reference.modules.type.register-suffixes">register-suffixes</link>
rule with the given suffixes and the
<link linkend="bbv2.reference.modules.type.set-generated-target-suffix">set-generated-target-suffix</link>
rule with the first given suffix.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.register-suffixes">
<indexterm zone="bbv2.reference.modules.type.register-suffixes">
<primary>register-suffixes</primary>
</indexterm>
<code language="jam">rule register-suffixes ( suffixes + : type )</code>
<para>
Specifies that files with suffix from <code language="jam">suffixes</code>
be recognized as targets of type <code language="jam">type</code>.
Issues an error if a different type is already specified for any
of the suffixes.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.registered">
<indexterm zone="bbv2.reference.modules.type.registered">
<primary>registered</primary>
</indexterm>
<code language="jam">rule registered ( type )</code>
<para>Returns true iff type has been registered.</para>
</listitem>
<listitem id="bbv2.reference.modules.type.validate">
<indexterm zone="bbv2.reference.modules.type.validate">
<primary>validate</primary>
</indexterm>
<code language="jam">rule validate ( type )</code>
<para>Issues an error if <code lang="jam">type</code> is unknown.</para>
</listitem>
<listitem id="bbv2.reference.modules.type.set-scanner">
<indexterm zone="bbv2.reference.modules.type.set-scanner">
<primary>set-scanner</primary>
</indexterm>
<code language="jam">rule set-scanner ( type : scanner )</code>
<para>Sets a scanner class that will be used for this type.</para>
</listitem>
<listitem id="bbv2.reference.modules.type.get-scanner">
<indexterm zone="bbv2.reference.modules.type.get-scanner">
<primary>get-scanner</primary>
</indexterm>
<code language="jam">rule get-scanner ( type : property-set )</code>
<para>
Returns a scanner instance appropriate to <code language="jam">type</code>
and <code language="jam">property-set</code>.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.base">
<indexterm zone="bbv2.reference.modules.type.base">
<primary>base</primary>
</indexterm>
<code language="jam">rule base ( type )</code>
<para>
Returns a base type for the given type or nothing in case the given
type is not derived.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.all-bases">
<indexterm zone="bbv2.reference.modules.type.all-bases">
<primary>all-bases</primary>
</indexterm>
<code language="jam">rule all-bases ( type )</code>
<para>
Returns the given type and all of its base types in order of
their distance from type.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.all-derived">
<indexterm zone="bbv2.reference.modules.type.all-derived">
<primary>all-derived</primary>
</indexterm>
<code language="jam">rule all-derived ( type )</code>
<para>
Returns the given type and all of its derived types in order
of their distance from type.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.is-derived">
<indexterm zone="bbv2.reference.modules.type.is-derived">
<primary>is-derived</primary>
</indexterm>
<code language="jam">rule is-derived ( type base )</code>
<para>
Returns true if <code language="jam">type</code> is equal to
<code language="jam">base</code> or has <code language="jam">base</code>
as its direct or indirect base.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.set-generated-target-suffix">
<indexterm zone="bbv2.reference.modules.type.set-generated-target-suffix">
<primary>set-generated-target-suffix</primary>
</indexterm>
<code language="jam">rule set-generated-target-suffix ( type : properties * : suffix )</code>
<para>
Sets a file suffix to be used when generating a target of <code language="jam">type</code> with the
specified properties. Can be called with no properties if no suffix has
already been specified for the <code language="jam">type</code>. The <code language="jam">suffix</code> parameter can be an empty
string (<code language="jam">""</code>) to indicate that no suffix should be used.
</para>
<para>
Note that this does not cause files with <code language="jam">suffix</code>
to be automatically recognized as being of <code language="jam">type</code>.
Two different types can use the same suffix for their generated files
but only one type can be auto-detected for a file with that suffix.
User should explicitly specify which one using the
<link linkend="bbv2.reference.modules.type.register-suffixes">register-suffixes</link>
rule.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.change-generated-target-suffix">
<indexterm zone="bbv2.reference.modules.type.change-generated-target-suffix">
<primary>change-generated-target-suffix</primary>
</indexterm>
<code language="jam">rule change-generated-target-suffix ( type : properties * : suffix )</code>
<para>
Change the suffix previously registered for this type/properties
combination. If suffix is not yet specified, sets it.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.generated-target-suffix">
<indexterm zone="bbv2.reference.modules.type.generated-target-suffix">
<primary>generated-target-suffix</primary>
</indexterm>
<code language="jam">rule generated-target-suffix ( type : property-set )</code>
<para>
Returns the suffix used when generating a file of
<code language="jam">type</code> with the given properties.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.set-generated-target-prefix">
<indexterm zone="bbv2.reference.modules.type.set-generated-target-prefix">
<primary>set-generated-target-prefix</primary>
</indexterm>
<code language="jam">rule set-generated-target-prefix ( type : properties * : prefix )</code>
<para>
Sets a target prefix that should be used when generating targets of
<code language="jam">type</code> with the specified properties. Can
be called with empty properties if no prefix for
<code language="jam">type</code> has been specified yet.
</para>
<para>
The <code language="jam">prefix</code> parameter can be empty string
(<code language="jam">""</code>) to indicate that no prefix
should be used.
</para>
<para>
Usage example: library names use the <code language="jam">"lib"</code>
prefix on unix.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.change-generated-target-prefix">
<indexterm zone="bbv2.reference.modules.type.change-generated-target-prefix">
<primary>change-generated-target-prefix</primary>
</indexterm>
<code language="jam">rule change-generated-target-prefix ( type : properties * : prefix )</code>
<para>
Change the prefix previously registered for this type/properties
combination. If prefix is not yet specified, sets it.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.generated-target-prefix">
<indexterm zone="bbv2.reference.modules.type.generated-target-prefix">
<primary>generated-target-prefix</primary>
</indexterm>
<code language="jam">rule generated-target-prefix ( type : property-set )</code>
<para>
Returns the prefix used when generating a file of
<code language="jam">type</code> with the given properties.
</para>
</listitem>
<listitem id="bbv2.reference.modules.type.type">
<indexterm zone="bbv2.reference.modules.type.type">
<primary>type</primary>
<secondary>rule</secondary>
</indexterm>
<code language="jam">rule type ( filename )</code>
<para>
Returns file type given its name. If there are several
dots in filename, tries each suffix. E.g. for name of
"file.so.1.2" suffixes "2", "1", and "so" will be tried.
</para>
</listitem>
</orderedlist>
</section>