Annotation of libwww/Library/src/HTStruct.html, revision 2.1

2.1     ! frystyk     1: <HTML>
        !             2: <HEAD>
        !             3: <TITLE>Structured Stream Definition</TITLE>
        !             4: </HEAD>
        !             5: <BODY>
        !             6: 
        !             7: <H1>Structured Stream Definition</H1>
        !             8: 
        !             9: <PRE>
        !            10: /*
        !            11: **     (c) COPYRIGHT CERN 1994.
        !            12: **     Please first read the full copyright statement in the file COPYRIGH.
        !            13: */
        !            14: </PRE>
        !            15: 
        !            16: This module is a part of the <A
        !            17: HREF="http://www.w3.org/hypertext/WWW/Library/User/Guide/Guide.html">
        !            18: Library of Common Code</A>.
        !            19: 
        !            20: <PRE>
        !            21: #ifndef HTSTRUCT_H
        !            22: #define HTSTRUCT_H
        !            23: 
        !            24: #include "HTStream.h"
        !            25: </PRE>
        !            26: 
        !            27: A structured object is something which can reasonably be represented
        !            28: in for eaxmple SGML.  I'll rephrase that.  A structured object is am
        !            29: ordered tree-structured arrangement of data which is representable as
        !            30: text. An example is the SGML parser which outputs to a
        !            31: <CODE>Structured Object</CODE>. A Structured object can output its
        !            32: contents to another <CODE>Structured Object</CODE>. It's a kind of
        !            33: typed stream. The architecure is largely Dan Conolly's. Elements and
        !            34: entities are passed to the sob by number, implying a knowledge of the
        !            35: DTD.<P>
        !            36: 
        !            37: The <CODE>Streuctured Stream</CODE> is a subclass of a <A
        !            38: HREF="HTStream.html">Generic Stream Object</A>. As always, we don't
        !            39: have classes in basic C so we have to do this by hand! <P>
        !            40: 
        !            41: <B>NOTE:</B> The <CODE>put_block</CODE> method was <CODE>write</CODE>,
        !            42: but this upset systems which had macros for <CODE>write()</CODE>. See
        !            43: the <A HREF="HTStream.html">Generic Stream Definition</A> for valid
        !            44: return codes.<P>
        !            45: 
        !            46: <PRE>
        !            47: typedef struct _HTStructured HTStructured;
        !            48: 
        !            49: typedef struct _HTStructuredClass {
        !            50: 
        !            51:     char * name;
        !            52: 
        !            53:     int (*flush)               PARAMS((HTStructured *  me));
        !            54: 
        !            55:     int (*_free)               PARAMS((HTStructured *  me));
        !            56: 
        !            57:     int (*abort)               PARAMS((HTStructured *  me, HTError e));
        !            58: 
        !            59:     int (*put_character)       PARAMS((HTStructured *  me,
        !            60:                                        char            ch));
        !            61: 
        !            62:     int (*put_string)          PARAMS((HTStructured *  me,
        !            63:                                        CONST char *    str));
        !            64: 
        !            65:     int (*put_block)           PARAMS((HTStructured *  me,
        !            66:                                        CONST char *    str,
        !            67:                                        int             len));
        !            68: </PRE>
        !            69: 
        !            70: See the <A HREF="HTStream.html">Generic Stream Definition</A> for an
        !            71: explanation of these methods. Note that they all have a
        !            72: <CODE>HTStructured</CODE> object a the parameter, not a generic
        !            73: stream. This is to avoid <EM>incompatible pointer</EM> warnings
        !            74: 
        !            75: <PRE>
        !            76:     void (*start_element)      PARAMS((HTStructured *  me,
        !            77:                                        int             element_number,
        !            78:                                        CONST BOOL *    attribute_present,
        !            79:                                        CONST char **   attribute_value));
        !            80: 
        !            81:     void (*end_element)                PARAMS((HTStructured *  me,
        !            82:                                        int             element_number));
        !            83: 
        !            84:     void (*put_entity)         PARAMS((HTStructured *  me,
        !            85:                                        int             entity_number));
        !            86:                
        !            87: } HTStructuredClass;
        !            88: 
        !            89: #endif
        !            90: </PRE>
        !            91: End of Structured Stream definition
        !            92: </BODY>
        !            93: </HTML>

Webmaster