/* DEC.H - Interface to decoding procedures. */

/* Copyright (c) 2000, 2001 by Radford M. Neal 
 *
 * Permission is granted for anyone to copy, use, or modify this program 
 * for purposes of research or education, provided this copyright notice 
 * is retained, and note is made of any changes that have been made. 
 *
 * This program is distributed without any warranty, express or implied.
 * As this program was written for research purposes only, it has not been
 * tested to the degree that would be advisable in any important application.
 * All use of this program is entirely at the user's own risk.
 */


/* DECODING METHOD, ITS PARAMETERS, AND OTHER VARIABLES.  The global variables 
   declared here are located in dec.c. */

typedef enum 
{ Enum_block, Enum_bit, Prprp
} decoding_method;

extern decoding_method dec_method; /* Decoding method to use */

extern int table;	/* Trace option, 2 for a table of decoding details */
extern int block_no;	/* Number of current block, from zero */

extern int max_iter;	/* Maximum number of iteratons of decoding to do */
extern char *gen_file;	/* Generator file for Enum_block and Enum_bit */


/* PROCEDURES RELATING TO DECODING METHODS. */

void enum_decode_setup (void);
unsigned enum_decode (double *, char *, double *, int);

void prprp_decode_setup (void);
unsigned prprp_decode 
(mod2sparse *, double *, char *, char *, double *);

void initprp (mod2sparse *, double *, char *, double *);
void iterprp (mod2sparse *, double *, char *, double *);

