Annotation of libwww/Library/src/HTPlain.c, revision 2.6

2.1       timbl       1: /*             Plain text object               HTWrite.c
                      2: **             =================
                      3: **
                      4: **     This version of the stream object just writes to a socket.
                      5: **     The socket is assumed open and left open.
                      6: **
                      7: **     Bugs:
                      8: **             strings written must be less than buffer size.
                      9: */
                     10: #include "HTPlain.h"
                     11: 
                     12: #define BUFFER_SIZE 4096;      /* Tradeoff */
                     13: 
                     14: #include "HTUtils.h"
                     15: #include "HText.h"
                     16: #include "HTStyle.h"
                     17: 
                     18: extern HTStyleSheet * styleSheet;
                     19: 
                     20: 
                     21: 
                     22: /*             HTML Object
                     23: **             -----------
                     24: */
                     25: 
                     26: struct _HTStream {
                     27:        CONST HTStreamClass *   isa;
                     28: 
                     29:        HText *                 text;
                     30: };
                     31: 
                     32: /*     Write the buffer out to the socket
                     33: **     ----------------------------------
                     34: */
                     35: 
                     36: 
                     37: /*_________________________________________________________________________
                     38: **
                     39: **                     A C T I O N     R O U T I N E S
                     40: */
                     41: 
                     42: /*     Character handling
                     43: **     ------------------
                     44: */
                     45: 
2.2       timbl      46: PRIVATE void HTPlain_put_character ARGS2(HTStream *, me, char, c)
2.1       timbl      47: {
2.2       timbl      48:     HText_appendCharacter(me->text, c);
2.1       timbl      49: }
                     50: 
                     51: 
                     52: 
                     53: /*     String handling
                     54: **     ---------------
                     55: **
                     56: */
2.2       timbl      57: PRIVATE void HTPlain_put_string ARGS2(HTStream *, me, CONST char*, s)
2.1       timbl      58: {
2.2       timbl      59:     HText_appendText(me->text, s);
2.1       timbl      60: }
                     61: 
                     62: 
2.2       timbl      63: PRIVATE void HTPlain_write ARGS3(HTStream *, me, CONST char*, s, int, l)
2.1       timbl      64: {
                     65:     CONST char* p;
                     66:     CONST char* e = s+l;
2.4       timbl      67:     for (p=s; p<e; p++) HText_appendCharacter(me->text, *p);
2.1       timbl      68: }
                     69: 
                     70: 
                     71: 
                     72: /*     Free an HTML object
                     73: **     -------------------
                     74: **
                     75: **     Note that the SGML parsing context is freed, but the created object is not,
                     76: **     as it takes on an existence of its own unless explicitly freed.
                     77: */
2.2       timbl      78: PRIVATE void HTPlain_free ARGS1(HTStream *, me)
2.1       timbl      79: {
2.2       timbl      80:     free(me);
2.1       timbl      81: }
                     82: 
                     83: /*     End writing
                     84: */
                     85: 
2.5       timbl      86: PRIVATE void HTPlain_abort ARGS2(HTStream *, me, HTError, e)
2.1       timbl      87: {
2.5       timbl      88:     HTPlain_free(me);
2.1       timbl      89: }
                     90: 
                     91: 
                     92: 
                     93: /*             Structured Object Class
                     94: **             -----------------------
                     95: */
                     96: PUBLIC CONST HTStreamClass HTPlain =
                     97: {              
                     98:        "SocketWriter",
                     99:        HTPlain_free,
2.5       timbl     100:        HTPlain_abort,
2.1       timbl     101:        HTPlain_put_character,  HTPlain_put_string, HTPlain_write,
                    102: }; 
                    103: 
                    104: 
                    105: /*             New object
                    106: **             ----------
                    107: */
2.6     ! timbl     108: PUBLIC HTStream* HTPlainPresent ARGS5(
        !           109:        HTRequest *,            request,
        !           110:        void *,                 param,
        !           111:        HTFormat,               input_format,
        !           112:        HTFormat,               output_format,
        !           113:        HTStream *,             output_stream)
2.1       timbl     114: {
                    115: 
2.3       timbl     116:     HTStream* me = (HTStream*)malloc(sizeof(*me));
2.2       timbl     117:     if (me == NULL) outofmem(__FILE__, "HTPlain_new");
                    118:     me->isa = &HTPlain;       
                    119: 
2.6     ! timbl     120:     me->text = HText_new(request->anchor);
2.2       timbl     121:     HText_setStyle(me->text, HTStyleNamed(styleSheet, "Example"));
                    122:     HText_beginAppend(me->text);
2.1       timbl     123: 
2.2       timbl     124:     return (HTStream*) me;
2.1       timbl     125: }
                    126: 
                    127: 

Webmaster