#ifndef _foldertP_h_
#define _foldertP_h_

#include "assert.h"
#include "foldert.h"
#include "folder.h"

#ifndef FOLDER_DEBUG
#define FOLDER_DEBUG 0
#endif

#if (FOLDER_DEBUG == 0)
#define AlFolder_debug(str)
#else
#define AlFolder_debug(str) printf("%s\n", str)
#endif            /* end of  #if (FOLDER_DEBUG == 0)  */

struct AlFolderType_struct
 { char *name;               /* name of the folder type */
   VOIDP_FUNCPTR create_from_file;  /* function to create type specific data */
   VOIDP_FUNCPTR create_from_stdin; /* function to create type specific data */
   NORET_FUNCPTR next_msg;       /* function that returns next msg in folder */
   BOOL_FUNCPTR  remove_msg; /* func. that removes current msg from folder   */
   BOOL_FUNCPTR  add_msg;    /* func. that adds current msg from folder      */
   NORET_FUNCPTR print_self; /* function to print the folder type's data out */
   NORET_FUNCPTR destroy;    /* function to destroy the type specific data   */
   VOIDP         data;       /* data used by the type to create instances    */

 };

 Registry AlFolderTypeRegistry = NULL;

#endif        /* end of ifndef _foldertP_h_ :: DO NOT WRITE BELOW THIS LINE. */
