#ifndef _BYTE_MASK_H_INCLUDED_
#define _BYTE_MASK_H_INCLUDED_

/*++
/* NAME
/*	byte_mask 3h
/* SUMMARY
/*	map names to bit mask
/* SYNOPSIS
/*	#include <byte_mask.h>
/* DESCRIPTION
/* .nf

 /*
  * Utility library.
  */
#include <vstring.h>

 /*
  * External interface.
  */
typedef struct {
    int     byte_val;
    int     mask;
} BYTE_MASK;

#define BYTE_MASK_FATAL		(1<<0)
#define BYTE_MASK_ANY_CASE	(1<<1)
#define BYTE_MASK_RETURN	(1<<2)
#define BYTE_MASK_WARN		(1<<6)
#define BYTE_MASK_IGNORE	(1<<7)

#define BYTE_MASK_REQUIRED \
    (BYTE_MASK_FATAL | BYTE_MASK_RETURN | BYTE_MASK_WARN | BYTE_MASK_IGNORE)
#define STR_BYTE_MASK_REQUIRED	(BYTE_MASK_REQUIRED)

#define BYTE_MASK_NONE		0
#define BYTE_MASK_DEFAULT	(BYTE_MASK_FATAL)

#define byte_mask(tag, table, str) \
	byte_mask_opt((tag), (table), (str), BYTE_MASK_DEFAULT)
#define str_byte_mask(tag, table, mask) \
	str_byte_mask_opt(((VSTRING *) 0), (tag), (table), (mask), BYTE_MASK_DEFAULT)

extern int byte_mask_opt(const char *, const BYTE_MASK *, const char *, int);
extern const char *str_byte_mask_opt(VSTRING *, const char *, const BYTE_MASK *, int, int);

/* LICENSE
/* .ad
/* .fi
/*	The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/*	Wietse Venema
/*	IBM T.J. Watson Research
/*	P.O. Box 704
/*	Yorktown Heights, NY 10598, USA
/*
/*	Wietse Venema
/*	Google, Inc.
/*	111 8th Avenue
/*	New York, NY 10011, USA
/*--*/

#endif
