--- /dev/null
+<HTML>
+<BODY>
+<PRE>
+ <STRONG>form_fieldtype</STRONG> - define validation-field types
+
+
+</PRE>
+<H2>SYNOPSIS</H2><PRE>
+ <STRONG>#include</STRONG> <STRONG><form.h></STRONG>
+ FIELDTYPE *new_fieldtype(
+ bool (* const field_check)(FIELD *, const void *),
+ bool (* const char_check)(int, const void *));
+ int free_fieldtype(FIELDTYPE *fieldtype);
+ int set_fieldtype_arg(
+ FIELDTYPE *fieldtype,
+ void *(* const make_arg)(va_list *),
+ void *(* const copy_arg)(const void *),
+ void (* const free_arg)(void *));
+ int set_fieldtype_choice(
+ FIELDTYPE *fieldtype
+ bool (* const next_choice)(FIELD *, const void *),
+ bool (* const prev_choice)(FIELD *, const void *));
+ FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
+ FIELDTYPE *type2);
+
+
+</PRE>
+<H2>DESCRIPTION</H2><PRE>
+ The function <STRONG>new_fieldtype</STRONG> creates a new field type usable
+ for data validation. You supply it with <EM>field</EM><STRONG>_</STRONG><EM>check</EM>, a
+ predicate to check the validity of an entered data string
+ whenever the user attempt to leave a field. The (FIELD *)
+ argument is passed in so the validation predicate can see
+ the field's buffer, sizes and other attributes; the second
+ argument is an argument-block structure, about which more
+ below.
+
+ You also supply <STRONG>new_fieldtype</STRONG> with <EM>char</EM><STRONG>_</STRONG><EM>check</EM>, a function
+ to validate input characters as they are entered; it will
+ be passed the character to be checked and a pointer to an
+ argument-block structure.
+
+ The function <STRONG>free_fieldtype</STRONG> frees the space allocated for
+ a given validation type.
+
+ The function <STRONG>set_fieldtype</STRONG> associates three storage-man-
+ agement functions with a field type. The <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> function
+ is automatically applied to the list of arguments you give
+ <STRONG>set_field_type</STRONG> when attaching validation to a field; its
+ job is to bundle these into an allocated argument-block
+ object which can later be passed to validation predicated.
+ The other two hook arguments should copy and free argu-
+ ment-block structures. They will be used by the forms-
+ driver code. You must supply the <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> function, the
+ other two are optional, you may supply NULL for them. In
+ this case it is assumed, that <EM>mak</EM><STRONG>_</STRONG><EM>arg</EM> doesn't allocate
+ memory but simply loads the argument into a single scalar
+ value.
+
+ form an ordered set, and provide the forms user with a way
+ to move through the set. The <STRONG>set_fieldtype_choice</STRONG> func-
+ tion allows forms programmers to define successor and pre-
+ decessor functions for the field type. These functions
+ take the field pointer and an argument-block structure as
+ arguments.
+
+
+</PRE>
+<H2>RETURN VALUE</H2><PRE>
+ The pointer-valued routines return NULL on error.
+
+ The integer-valued routines return one of the following
+ codes on error:
+
+ <STRONG>E_OK</STRONG> The routine succeeded.
+
+ <STRONG>E_SYSTEM_ERROR</STRONG>
+ System error occurred (see <STRONG>errno</STRONG>).
+
+ <STRONG>E_BAD_ARGUMENT</STRONG>
+ Routine detected an incorrect or out-of-range argu-
+ ment.
+
+ <STRONG>E_CONNECTED</STRONG>
+ The field is already connected to a form.
+
+
+</PRE>
+<H2>SEE ALSO</H2><PRE>
+ <STRONG><A HREF="ncurses.3x.html">curses(3X)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3X)</A></STRONG>.
+
+
+</PRE>
+<H2>NOTES</H2><PRE>
+ The header file <STRONG><form.h></STRONG> automatically includes the header
+ file <STRONG><curses.h></STRONG>.
+
+ All of the <STRONG>(char</STRONG> <STRONG>*)</STRONG> arguments of these functions should
+ actually be <STRONG>(void</STRONG> <STRONG>*)</STRONG>. The type has been left uncorrected
+ for strict compatibility with System V.
+
+
+</PRE>
+<H2>PORTABILITY</H2><PRE>
+ These routines emulate the System V forms library. They
+ were not supported on Version 7 or BSD versions.
+
+
+</PRE>
+<H2>AUTHORS</H2><PRE>
+ Juergen Pfeifer. Manual pages and adaptation for new
+ curses by Eric S. Raymond.
+
+
+
+
+
+
+
+
+
+</PRE>
+</BODY>
+</HTML>