File: HTML.h

package info (click to toggle)
cern-httpd 3.0A-1
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 5,392 kB
  • ctags: 6,554
  • sloc: ansic: 37,902; makefile: 1,746; perl: 535; csh: 167; sh: 143
file content (216 lines) | stat: -rw-r--r-- 5,672 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/*                                                     HTML to rich text converter for libwww
                         THE HTML TO STYLED TEXT OBJECT CONVERTER
                                             
   This interprets the HTML semantics and some HTMLPlus.
   
   Part of libwww . Implemented by HTML.c
   
 */
#ifndef HTML_H
#define HTML_H

#include "HTUtils.h"
#include "HTFormat.h"
#include "HTAnchor.h"
#include "HTMLPDTD.h"

#define DTD HTMLP_dtd

#ifdef SHORT_NAMES
#define HTMLPresentation        HTMLPren
#define HTMLPresent             HTMLPres
#endif

extern CONST HTStructuredClass HTMLPresentation;
/*

HTML_new: A structured stream to parse HTML

   When this routine is called, the request structure may contain a childAnchor value.  In
   that case it is the responsability of this module to select the anchor.
   
   
   
 */
extern HTStructured* HTML_new PARAMS((HTRequest * request,
                                        void *   param,
                                        HTFormat input_format,
                                        HTFormat output_format,
                                        HTStream * output_stream));

/*

  REOPEN
  
   Reopening an existing HTML object allows it to be retained (for example by the styled
   text object) after the structured stream has been closed.  To be actually deleted, the
   HTML object must be closed once more times than it has been reopened.
   
 */

extern void HTML_reopen PARAMS((HTStructured * me));
/*

Converters

   These are the converters implemented in this module:
   
 */

#ifndef pyramid
extern HTConverter HTMLToPlain, HTMLToC, HTMLPresent, HTMLToTeX;
#endif
/*

Selecting internal character set representations

 */
typedef enum _HTMLCharacterSet {
        HTML_ISO_LATIN1,
        HTML_NEXT_CHARS,
        HTML_PC_CP950
} HTMLCharacterSet;

extern void HTMLUseCharacterSet PARAMS((HTMLCharacterSet i));

/*

Record error message as a hypertext object

   The error message should be marked as an error so that it can be reloaded later. This
   implementation just throws up an error message and leaves the document unloaded.
   
  ON ENTRY,
  
  sink                    is a stream to the output device if any
                         
  number                  is the HTTP error number
                         
  message                 is the human readable message.
                         
  ON EXIT,
  
   a return code like HT_LOADED if object exists else < 0
   
 */
PUBLIC int HTLoadError PARAMS((
        HTRequest *     req,
        int             number,
        CONST char *    message));


/*

White Space Treatment

   There is a small number of different ways of treating white space in SGML, in mapping
   from a text object to HTML. These have to be programmed it seems.
   
 */

/*
In text object  \n\n            \n      tab     \n\n\t
--------------  -------------   -----   -----   -------
in Address,
Blockquote,
Normal,

                
        -               NORMAL
H1-6:           close+open
        -               HEADING
Glossary

                                                GLOSSARY
List,
Menu

                        -

        LIST
Dir

                                        DIR
Pre etc         \n\n            \n      \t              PRE

*/

typedef enum _white_space_treatment {
        WS_NORMAL,
        WS_HEADING,
        WS_GLOSSARY,
        WS_LIST,
        WS_DIR,
        WS_PRE
} white_space_treatment;

/*

Nesting State

   These elements form tree with an item for each nesting state: that is, each unique
   combination of nested elements which has a specific style.
   
 */

typedef struct _HTNesting {
    void *                      style;  /* HTStyle *: Platform dependent */
    white_space_treatment       wst;
    struct _HTNesting *         parent;
    int                         element_number;
    int                         item_number;    /* only for ordered lists */
    int                         list_level;     /* how deep nested */
    HTList *                    children;
    BOOL                        paragraph_break;
    int                         magic;
    BOOL                        object_gens_HTML; /* we don't generate HTML */
} HTNesting;


/*

Nesting functions

   These functions were new with HTML2.c.  They allow the tree of SGML nesting states to
   be manipulated, and SGML regenerated from the style sequence.
   
 */


extern void HTRegenInit NOPARAMS;

extern void HTRegenCharacter PARAMS((
        char                    c,
        HTNesting *             nesting,
        HTStructured *          target));

extern  void HTNestingChange PARAMS((
        HTStructured*   s,
        HTNesting*              old,
        HTNesting *             new,
        HTChildAnchor *         info,
        CONST char *            aName));

extern HTNesting * HTMLCommonality PARAMS((
        HTNesting *     s1,
        HTNesting *     s2));

extern HTNesting * HTNestElement PARAMS((HTNesting * p, int ele));
extern /* HTStyle * */ void * HTStyleForNesting PARAMS((HTNesting * n));

extern HTNesting* HTMLAncestor PARAMS((HTNesting * old, int depth));
extern HTNesting* CopyBranch PARAMS((HTNesting * old, HTNesting * new, int depth));
extern HTNesting * HTInsertLevel PARAMS((HTNesting * old,
                int     element_number,
                int     level));
extern HTNesting * HTDeleteLevel PARAMS((HTNesting * old,
                int     level));
extern int HTMLElementNumber PARAMS((HTNesting * s));
extern int HTMLLevel PARAMS(( HTNesting * s));
extern HTNesting* HTMLAncestor PARAMS((HTNesting * old, int depth));

#endif          /* end HTML_H */

/*

   end */