
/* Format Types */
/* -------------*/

/* types that output text */
#define FT_COMP		1	/* the text of a component */
#define FT_COMPF	2	/* comp text, filled */
#define FT_LIT		3	/* literal text */
#define FT_LITF		4	/* literal text, filled */
#define FT_LIT_FORCE	5	/* literal text, force output */
#define FT_CHAR		6	/* a single ascii character */
#define FT_NUM		7	/* "value" as decimal number */
#define FT_NUMF		8	/* "value" as filled dec number */
#define FT_STR		9	/* "str" as text */
#define FT_STRF		10	/* "str" as text, filled */
#define FT_STRFW	11	/* "str" as text, filled, width in "value" */
#define FT_PUTADDR	12	/* split and print address line */

/* types that modify the "str" or "value" registers */
#define FT_LS_COMP	13	/* set "str" to component text */
#define FT_LS_LIT	14	/* set "str" to literal text */
#define FT_LS_TRIM	15	/* trim trailing white space from "str" */
#define FT_LV_COMP	16	/* set "value" to comp (as dec. num) */
#define FT_LV_COMPFLAG	17	/* set "value" to comp flag word */
#define FT_LV_LIT	18	/* set "value" to literal num */
#define FT_LV_DAT	19	/* set "value" to dat[n] */
#define FT_LV_STRLEN	20	/* set "value" to length of "str" */
#define FT_LV_PLUS_L	21	/* set "value" += literal */
#define FT_LV_MINUS_L	22	/* set "value" -= literal */
#define FT_LV_DIVIDE_L	23	/* set "value" to value / literal */
#define FT_LV_CHAR_LEFT	24	/* set "value" to char left in output */

#define FT_LS_MONTH	25	/* set "str" to tws month */
#define FT_LS_LMONTH	26	/* set "str" to long tws month */
#define FT_LS_ZONE	27	/* set "str" to tws timezone */
#define FT_LS_DAY	28	/* set "str" to tws weekday */
#define FT_LS_WEEKDAY	29	/* set "str" to long tws weekday */
#define FT_LS_822DATE	30	/* set "str" to 822 date str */
#define FT_LS_PRETTY	31	/* set "str" to pretty (?) date str */
#define FT_LV_SEC	32	/* set "value" to tws second */
#define FT_LV_MIN	33	/* set "value" to tws minute */
#define FT_LV_HOUR	34	/* set "value" to tws hour */
#define FT_LV_MDAY	35	/* set "value" to tws day of month */
#define FT_LV_MON	36	/* set "value" to tws month */
#define FT_LV_YEAR	37	/* set "value" to tws year */
#define FT_LV_YDAY	38	/* set "value" to tws day of year */
#define FT_LV_WDAY	39	/* set "value" to tws weekday */
#define FT_LV_ZONE	40	/* set "value" to tws timezone */
#define FT_LV_CLOCK	41	/* set "value" to tws clock */
#define FT_LV_RCLOCK	42	/* set "value" to now - tws clock */
#define FT_LV_DAYF	43	/* set "value" to tws day flag */
#define FT_LV_DST	44	/* set "value" to tws daylight savings flag */
#define FT_LV_ZONEF	45	/* set "value" to tws timezone flag */

#define FT_LS_PERS	46	/* set "str" to person part of addr */
#define FT_LS_MBOX	47	/* set "str" to mbox part of addr */
#define FT_LS_HOST	48	/* set "str" to host part of addr */
#define FT_LS_PATH	49	/* set "str" to route part of addr */
#define FT_LS_GNAME	50	/* set "str" to group part of addr */
#define FT_LS_NOTE	51	/* set "str" to comment part of addr */
#define FT_LS_822ADDR	52	/* set "str" to 822 format addr */
#define FT_LS_FRIENDLY	53	/* set "str" to "friendly" format addr */
#define FT_LV_HOSTTYPE	54	/* set "value" to addr host type */
#define FT_LV_INGRPF	55	/* set "value" to addr in-group flag */
#define FT_LV_NOHOSTF	56	/* set "value" to addr no-host flag */

/* Date Coercion */
#define FT_LOCALDATE	57	/* Coerce date to local timezone */
#define FT_GMTDATE	58	/* Coerce date to gmt */

/* pre-format processing */
#define FT_PARSEDATE	59	/* parse comp into a date (tws) struct */
#define FT_PARSEADDR	60	/* parse comp into a mailaddr struct */
#define FT_FORMATADDR	61	/* let external routine format addr */
#define FT_MYMBOX	62	/* do "mymbox" test on comp */

/* misc. */
#define FT_ADDTOSEQ	63	/* add current msg to a sequence */

/* conditionals & control flow (must be last) */
#define FT_SAVESTR	64	/* save current str reg */
#define FT_DONE		65	/* stop formatting */
#define FT_NOP		66	/* nop */
#define FT_GOTO		67	/* (relative) goto */
#define FT_IF_S_NULL	68	/* test if "str" null */
#define FT_IF_S		69	/* test if "str" non-null */
#define FT_IF_V_EQ	70	/* test if "value" = literal */
#define FT_IF_V_NE	71	/* test if "value" != literal */
#define FT_IF_V_GT	72	/* test if "value" > literal */
#define FT_IF_MATCH	73	/* test if "str" contains literal */
#define FT_IF_AMATCH	74	/* test if "str" starts with literal */
#define FT_S_NULL	75	/* V = 1 if "str" null */
#define FT_S_NONNULL	76	/* V = 1 if "str" non-null */
#define FT_V_EQ		77	/* V = 1 if "value" = literal */
#define FT_V_NE		78	/* V = 1 if "value" != literal */
#define FT_V_GT		79	/* V = 1 if "value" > literal */
#define FT_V_MATCH	80	/* V = 1 if "str" contains literal */
#define FT_V_AMATCH	81	/* V = 1 if "str" starts with literal */

#define IF_FUNCS FT_S_NULL	/* start of "if" functions */
