<!-- control-set.mldoc -->

<!DOCTYPE ML-DOC SYSTEM>

<COPYRIGHT OWNER="The Fellowship of SML/NJ" YEAR=2007>
<VERSION VERID="1.0" YEAR=2007 MONTH=5 DAY=16>
<TITLE>The CONTROL_SET signature</TITLE>

<INTERFACE>
<HEAD>The <CD/CONTROL_SET/ signature</HEAD>
<!-- optional SEEALSO; uncomment to use     -->
<!-- <SEEALSO>    -->
<!--   non-empty list of XREFS here   -->
<!-- </SEEALSO>    -->

<PP>
<!-- Some general introductory text -->

<STRUCTURE STRID="ControlSet">
  <OPAQUE>  <SIGBODY SIGID="CONTROL_SET" FILE=CONTROL-SET>
    <SPEC>
      <TYPE><TYPARAM>'a<ID>control<TY>'a Controls.control
    <SPEC>
      <TYPE><TYPARAM>('a,'b)<ID>control_set
    <SPEC>
      <VAL>new<TY>unit -> ('a,'b) control_set
        <COMMENT>
          <PROTOTY>
          new <ARG>()</ARG>
          </PROTOTY>
          <PP>
	  creates a new control set.-
        </COMMENT>
    <SPEC>
      <VAL>member<TY>(('a,'b) control_set * Atom.atom) -> bool
        <COMMENT>
          <PROTOTY>
          member (<ARG>cs</ARG>, <ARG>at</ARG>)
          </PROTOTY>
          <PP>
	  returns <CD>true</CD> if the control set <ARG>cd</ARG> contains a control
	  with the name <ARG>at</ARG>.
        </COMMENT>
    <SPEC>
      <VAL>find<TY>(('a,'b) control_set * Atom.atom) -> {ctl : 'a control, info : 'b} option
        <COMMENT>
          <PROTOTY>
          find (<ARG>cs</ARG>, <ARG>at</ARG>)
          </PROTOTY>
          <PP>
        </COMMENT>
    <SPEC>
      <VAL>insert<TY>(('a,'b) control_set * 'a control * 'b) -> unit
        <COMMENT>
          <PROTOTY>
          insert (<ARG>cs</ARG>, <ARG>co</ARG>, <ARG>a</ARG>)
          </PROTOTY>
          <PP>
        </COMMENT>
    <SPEC>
      <VAL>remove<TY>(('a,'b) control_set * Atom.atom) -> unit
        <COMMENT>
          <PROTOTY>
          remove (<ARG>cs</ARG>, <ARG>at</ARG>)
          </PROTOTY>
          <PP>
        </COMMENT>
    <SPEC>
      <VAL>infoOf<TY>('a,'b) control_set -> 'a control -> 'b option
        <COMMENT>
          <PROTOTY>
          infoOf <ARG>cs</ARG> <ARG>co</ARG>
          </PROTOTY>
          <PP>
        </COMMENT>
    <SPEC>
      <VAL>listControls<TY>('a,'b) control_set -> {ctl : 'a control, info : 'b} list
        <COMMENT>
          <PROTOTY>
          listControls <ARG>cs</ARG>
	  <PROTO>
          listControls' (<ARG>cs</ARG>, <ARG>i</ARG>)
          </PROTOTY>
          <PP>
          list the members; the list is ordered by priority.
	  The listControls' function allows one to specify an obscurity level;
	  controls with equal or higher obscurioty are omitted from the list.
        </COMMENT>
    <SPEC>
      <VAL>app<TY>({ctl : 'a control, info : 'b} -> unit) -> ('a,'b) control_set -> unit
        <COMMENT>
          <PROTOTY>
          app <ARG>f</ARG> <ARG>cs</ARG>
          </PROTOTY>
          <PP>
          apply a function to the controls in a set.
        </COMMENT>
    <SPEC>
      <VAL>stringControls<TY>'a Controls.value_cvt -> ('a,'b) control_set -> (string,'b) control_set
        <COMMENT>
          <PROTOTY>
          stringControls <ARG>vc</ARG> <ARG>cs</ARG>
          </PROTOTY>
          <PP>
          convert the controls in a set to string controls and create a new set for them.
        </COMMENT>
  </SIGBODY>
</STRUCTURE>

</INTERFACE>
