<?xml version="1.0" encoding="utf-8" standalone="yes"?>

<?xml-stylesheet href="./_c74_ref.xsl" type="text/xsl"?>

<!--This is an automatically generated file. DO NOT EDIT THIS FILE DIRECTLY. Rather, use the _ref.xml files found in the 'edits' folder.-->
<c74object name="select" module="max" category="Control">
	<digest>
		Output bangs based on input matching
	</digest>
	<description>
		Selectively outputs a <m>bang</m> in response to any input which matches its arguments and will output non-matching messages out its right-most outlet.
	</description>
	<!--METADATA-->
	<metadatalist>
		<metadata name="author">
			Cycling '74
		</metadata>
		<metadata name="tag">
			Max
		</metadata>
		<metadata name="tag">
			Control
		</metadata>
	</metadatalist>
	<!--INLETS-->
	<inletlist>
		<inlet id="0" type="INLET_TYPE">
			<digest>
				Number to be Tested
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
		<inlet id="1" type="INLET_TYPE">
			<digest>
				Set Number to Match
			</digest>
			<description>
				TEXT_HERE
			</description>
		</inlet>
	</inletlist>
	<!--OUTLETS-->
	<outletlist>
		<outlet id="0" type="OUTLET_TYPE">
			<digest>
				bang if Input Matches 0
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
		<outlet id="1" type="OUTLET_TYPE">
			<digest>
				Input if Input Doesn't Match
			</digest>
			<description>
				TEXT_HERE
			</description>
		</outlet>
	</outletlist>
	<!--ARGUMENTS-->
	<objarglist>
		<objarg name="selectors" optional="1" type="anything">
			<digest>
				Outlet selectors
			</digest>
			<description>
				The arguments can be a mix of ints, floats, or symbols. The number of arguments determines the number of outlets in addition to the rightmost outlet. If there is no argument, there is only one other outlet, which is assigned the integer number <m>0</m>.
			</description>
		</objarg>
		<objarg name="inlet" optional="0" type="int">
			<digest>
				Alternate input initialization
			</digest>
			<description>
				If there is a single int argument (or if there are no arguments) a second inlet is created on the right. Numbers received in that inlet are stored in place of the argument. If there is more than one argument, or if the only argument is not an <m>int</m>, the right inlet is not created.
			</description>
		</objarg>
	</objarglist>
	<!--MESSAGES-->
	<methodlist>
		<method name="bang">
			<arglist />
			<digest>
				Output a bang on match
			</digest>
			<description>
				Performs the same function as <m>anything</m>. The <m>bang</m> message matches a 'bang' symbol in the arguments.
			</description>
		</method>
		<method name="int">
			<arglist>
				<arg name="input" optional="0" type="int" />
			</arglist>
			<digest>
				Output a bang on match
			</digest>
			<description>
				Performs the same function as <m>anything</m>.				<br />
				<br />
				Note: If an int is listed multiple times as an argument, a <m>bang</m> message will be sent out the leftmost outlet only.
			</description>
		</method>
		<method name="float">
			<arglist>
				<arg name="input" optional="0" type="float" />
			</arglist>
			<digest>
				Output a bang on match
			</digest>
			<description>
				Performs the same function as <m>anything</m>.				<br />
				<br />
				Note: If a float is listed multiple times as an argument, a <m>bang</m> message will be sent out the leftmost outlet only.
			</description>
		</method>
		<method name="list">
			<arglist>
				<arg name="input" type="list" optional="0" />
			</arglist>
			<digest>
				Output a bang on match
			</digest>
			<description>
				Performs the same function as <m>anything</m>.
			</description>
		</method>
		<method name="anything">
			<arglist>
				<arg name="input" optional="0" type="list" />
			</arglist>
			<digest>
				Output a bang on match
			</digest>
			<description>
				All input will be selectively output either as a <m>bang</m> from one of its corresponding outlets if the first element in the list matches the object argument(s) or as it is out the object's right-most outlet.
			</description>
		</method>
		<method name="in1">
			<arglist>
				<arg name="value" optional="0" type="int" />
			</arglist>
			<digest>
				Replace single argument
			</digest>
			<description>
				In right inlet: Replaces the value of the argument. The right inlet exists only if there is a single int argument.
			</description>
		</method>
		<method name="symbol">
			<arglist>
				<arg name="input" optional="0" type="symbol" />
			</arglist>
			<digest>
				Output a bang on match
			</digest>
			<description>
				Performs the same function as <m>anything</m>.
			</description>
		</method>
	</methodlist>
	<!--ATTRIBUTES-->
	<attributelist>
		<attribute name="fuzzy" get="1" set="1" type="atom" size="1">
			<digest>
				Fuzzy floating-point comparison epsilon
			</digest>
			<description>
				When <at>matchfloat</at> is set to 1, the <at>fuzzy</at> attribute allows for fuzzy floating-point comparison. This can be useful when sending a float to <o>select</o> via a <o>dial</o> object, or other similar objects, where a long floating point number is sent. For example, if the number 0.49999999 is sent to <o>select</o> with an argument of 0.5, turning <at>matchfloat</at> on and setting <at>fuzzy</at> to 0.01 will cause the two floats to register as a match.
			</description>
			<attributelist>
				<attribute name="default" get="1" set="1" type="atom" size="1" value="0." />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Fuzzy floating-point comparison epsilon" />
			</attributelist>
		</attribute>
		<attribute name="matchfloat" get="1" set="1" type="int" size="1">
			<digest>
				Match Float Values
			</digest>
			<description>
				When <at>matchfloat</at> is set to 1, the <o>select</o> object performs float comparison. In this mode, the <at>fuzzy</at> attribute can be used to match floats within a specified distance of the given float <ar>selector</ar>. When <at>matchfloat</at> is set to 0, floats are ignored. The old <at>exact</at> attribute is now an alias of <at>matchfloat</at>.
			</description>
			<attributelist>
				<attribute name="introduced" get="1" set="1" type="symbol" size="1" value="8.3.0" />
				<attribute name="label" get="1" set="1" type="symbol" size="1" value="Match Float Values" />
				<attribute name="style" get="1" set="1" type="symbol" size="1" value="onoff" />
			</attributelist>
		</attribute>
	</attributelist>
	<!--EXAMPLE-->
	<examplelist>
		<example img="select.png" caption="Arguments assign names or numbers to the outlets, and a bang is sent when the input matches them" />
	</examplelist>
	<!--SEEALSO-->
	<seealsolist>
		<seealso name="if" />
		<seealso name="match" />
		<seealso name="route" />
		<seealso name="==" />
	</seealsolist>
	<misc name="Output">
		<entry name="bang">
			<description>
				If the number or symbol received in the left inlet is the same as one of the arguments, a <m>bang</m> is sent out the outlet that corresponds to that argument.
			</description>
		</entry>
		<entry name="anything">
			<description>
				If the number or symbol received in the left inlet does not match any of the arguments, it is passed out the rightmost outlet.
			</description>
		</entry>
	</misc>
</c74object>
