/*                                         W3C Reference Library libwww MIME MULTIPART STREAM
                             MIME MULTIPART STREAM DEFINITION
                                             
 */
/*
**      (c) COPYRIGHT MIT 1995.
**      Please first read the full copyright statement in the file COPYRIGH.
*/
/*

   This module is a part of the W3C Reference Library.
   
 */
#ifndef HTMULPAR_H
#define HTMULPAR_H

#include "HTStream.h"
#include "HTList.h"
/*

   The MIME multipart stream is used to parse MIME multipart messages. It works a bit like
   a structured stream in that it has some methods to begin and end MIME body just as a
   structured stream has methods for beginning and ending tags.
   
   The HTMultipart streamis a subclass of a Generic Stream Object. As always, we don't
   have classes in basic C so we have to do this by hand!
   
 */
typedef struct _HTMultipart HTMultipart;

typedef struct _HTMultipartClass {

    char * name;

    int (*flush)        (HTMultipart *  me);

    int (*_free)        (HTMultipart *  me);

    int (*abort)        (HTMultipart *  me, HTList * errorlist);

    int (*put_character)(HTMultipart *  me, char ch);

    int (*put_string)   (HTMultipart *  me, const char * str);

    int (*put_block)    (HTMultipart *  me, const char * str, int len);
/*

   See the Generic Stream Definition for an explanation of these methods. Note that they
   all have a HTMultipartobject a the parameter, not a generic stream. This is to avoid
   incompatible pointerwarnings
   
 */
    int (*begin_part)   (HTMultipart *  me, const char * boundary);

    int (*end_part)     (HTMultipart *  me);

    int (*preamble)     (HTMultipart *  me, const char * pre);

    int (*epilogue)     (HTMultipart *  me, const char * epi);
                
} HTMultipartClass;

#endif
/*

   
   ___________________________________
   
                           @(#) $Id: HTMulpar.html,v 2.4 1996/04/12 17:47:59 frystyk Exp $
                                                                                          
    */
