HTML Tidy  5.6.0
The HTACG Tidy HTML Project
tidy-int.h
Go to the documentation of this file.
1 #ifndef __TIDY_INT_H__
2 #define __TIDY_INT_H__
3 
4 /* tidy-int.h -- internal library declarations
5 
6  (c) 1998-2007 (W3C) MIT, ERCIM, Keio University
7  See tidy.h for the copyright notice.
8 
9 */
10 
11 #include "tidy.h"
12 #include "config.h"
13 #include "lexer.h"
14 #include "tags.h"
15 #include "attrs.h"
16 #include "pprint.h"
17 #include "access.h"
18 #include "message.h"
19 
20 #ifndef MAX
21 #define MAX(a,b) (((a) > (b))?(a):(b))
22 #endif
23 #ifndef MIN
24 #define MIN(a,b) (((a) < (b))?(a):(b))
25 #endif
26 
27 /*\
28  * Issue #166 - repeated <main> element
29  * Change the previous on/off uint flag badForm
30  * to a BIT flag to support other than <form>
31  * errors. This could be extended more...
32 \*/
33 #define flg_BadForm 0x00000001
34 #define flg_BadMain 0x00000002
35 
37 {
38  /* The Document Tree (and backing store buffer) */
39  Node root; /* This MUST remain the first declared
40  variable in this structure */
41  Lexer* lexer;
42 
43  /* Config + Markup Declarations */
46  TidyAttribImpl attribs;
47  TidyAccessImpl access;
49 
50  /* The Pretty Print buffer */
52 
53  /* I/O */
54  StreamIn* docIn;
55  StreamOut* docOut;
56  StreamOut* errout;
64 
65  /* Parse + Repair Results */
73 
74  uint badAccess; /* for accessibility errors */
75  uint badLayout; /* for bad style errors */
76  uint badChars; /* for bad char encodings */
77  uint badForm; /* bit field, for badly placed form tags, or other format errors */
78  uint footnotes; /* bit field, for other footnotes, until formalized */
79 
80  Bool HTML5Mode; /* current mode is html5 */
81  Bool xmlDetected; /* true if XML was used/detected */
82 
83  /* Memory allocator */
84  TidyAllocator* allocator;
85 
86  /* Miscellaneous */
87  void* appData;
90 
91 #if PRESERVE_FILE_TIMES
92  struct utimbuf filetimes;
93 #endif
95 };
96 
97 /** The basic struct for communicating a message within LibTidy. All of the
98 ** relevant information pertaining to a message can be retrieved with the
99 ** accessor functions and one of these records.
100 */
102 {
103  TidyDocImpl *tidyDoc; /* document instance this message is attributed to */
104  Node *tidyNode; /* the node reporting the message, if applicable */
105  uint code; /* the message code */
106  int line; /* the line message applies to */
107  int column; /* the column the message applies to */
108  TidyReportLevel level; /* the severity level of the message */
109  Bool allowMessage; /* indicates whether or not a filter rejected a message */
110  Bool muted; /* indicates whether or not a configuration mutes this message */
111 
112  int argcount; /* the number of arguments */
113  struct printfArg* arguments; /* the arguments' values and types */
114 
115  ctmbstr messageKey; /* the message code as a key string */
116 
117  ctmbstr messageFormatDefault; /* the built-in format string */
118  ctmbstr messageFormat; /* the localized format string */
119 
120  tmbstr messageDefault; /* the message, formatted, default language */
121  tmbstr message; /* the message, formatted, localized */
122 
123  tmbstr messagePosDefault; /* the position part, default language */
124  tmbstr messagePos; /* the position part, localized */
125 
126  ctmbstr messagePrefixDefault; /* the prefix part, default language */
127  ctmbstr messagePrefix; /* the prefix part, localized */
128 
129  tmbstr messageOutputDefault; /* the complete string Tidy would output */
130  tmbstr messageOutput; /* the complete string, localized */
131 };
132 
133 
134 #define tidyDocToImpl( tdoc ) ((TidyDocImpl*)(tdoc))
135 #define tidyImplToDoc( doc ) ((TidyDoc)(doc))
136 
137 #define tidyMessageToImpl( tmessage ) ((TidyMessageImpl*)(tmessage))
138 #define tidyImplToMessage( message ) ((TidyMessage)(message))
139 
140 #define tidyNodeToImpl( tnod ) ((Node*)(tnod))
141 #define tidyImplToNode( node ) ((TidyNode)(node))
142 
143 #define tidyAttrToImpl( tattr ) ((AttVal*)(tattr))
144 #define tidyImplToAttr( attval ) ((TidyAttr)(attval))
145 
146 #define tidyOptionToImpl( topt ) ((const TidyOptionImpl*)(topt))
147 #define tidyImplToOption( option ) ((TidyOption)(option))
148 
149 
150 /** Wrappers for easy memory allocation using the document's allocator */
151 #define TidyDocAlloc(doc, size) TidyAlloc((doc)->allocator, size)
152 #define TidyDocRealloc(doc, block, size) TidyRealloc((doc)->allocator, block, size)
153 #define TidyDocFree(doc, block) TidyFree((doc)->allocator, block)
154 #define TidyDocPanic(doc, msg) TidyPanic((doc)->allocator, msg)
155 
156 int TY_(DocParseStream)( TidyDocImpl* impl, StreamIn* in );
157 
158 /*
159  [i_a] generic node tree traversal code; used in several spots.
160 
161  Define your own callback, which returns one of the NodeTraversalSignal values
162  to instruct the tree traversal routine TraverseNodeTree() what to do.
163 
164  Pass custom data to/from the callback using the 'propagate' reference.
165  */
166 typedef enum
167 {
168  ContinueTraversal, /* visit siblings and children */
169  SkipChildren, /* visit siblings of this node; ignore its children */
170  SkipSiblings, /* ignore subsequent siblings of this node; ignore their children; traverse */
171  SkipChildrenAndSiblings, /* visit siblings of this node; ignore its children */
172  VisitParent, /* REVERSE traversal: visit the parent of the current node */
173  ExitTraversal /* terminate traversal on the spot */
175 
176 typedef NodeTraversalSignal NodeTraversalCallBack(TidyDocImpl* doc, Node* node, void *propagate);
177 
178 NodeTraversalSignal TY_(TraverseNodeTree)(TidyDocImpl* doc, Node* node, NodeTraversalCallBack *cb, void *propagate);
179 
180 #endif /* __TIDY_INT_H__ */
uint docErrors
Definition: tidy-int.h:71
uint badForm
Definition: tidy-int.h:77
Definition: tidy-int.h:171
struct printfArg * arguments
Definition: tidy-int.h:113
Bool allowMessage
Definition: tidy-int.h:109
Definition: tidy-int.h:170
TidyReportLevel
Message severity level, used throughout LibTidy to indicate the severity or status of a message...
Definition: tidyenum.h:1375
Bool(TIDY_CALL * TidyConfigCallback)(TidyDoc tdoc, ctmbstr option, ctmbstr value)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:597
TidyPPProgress progressCallback
Definition: tidy-int.h:63
TidyReportCallback reportCallback
Definition: tidy-int.h:58
Bool(TIDY_CALL * TidyReportFilter)(TidyDoc tdoc, TidyReportLevel lvl, uint line, uint col, ctmbstr mssg)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:1221
TidyConfigImpl config
Definition: tidy-int.h:44
Definition: tidy-int.h:173
uint infoMessages
Definition: tidy-int.h:70
TidyConfigCallback pConfigCallback
Definition: tidy-int.h:61
tmbstr message
Definition: tidy-int.h:121
void * appData
Definition: tidy-int.h:87
TidyDocImpl * tidyDoc
Definition: tidy-int.h:103
const tmbchar * ctmbstr
Definition: tidyplatform.h:594
Bool muted
Definition: tidy-int.h:110
uint badAccess
Definition: tidy-int.h:74
StreamOut * errout
Definition: tidy-int.h:56
Read configuration files and manage configuration properties.
Definition: tidy-int.h:36
Bool inputHadBOM
Definition: tidy-int.h:89
int column
Definition: tidy-int.h:107
Maintains a list of messages not to display.
Definition: message.h:194
Bool(TIDY_CALL * TidyMessageCallback)(TidyMessage tmessage)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:1286
ctmbstr messagePrefixDefault
Definition: tidy-int.h:126
TidyPrintImpl pprint
Definition: tidy-int.h:51
tmbstr messagePos
Definition: tidy-int.h:124
tmbstr givenDoctype
Definition: tidy-int.h:94
NodeTraversalSignal NodeTraversalCallBack(TidyDocImpl *doc, Node *node, void *propagate)
Definition: tidy-int.h:176
StreamIn * docIn
Definition: tidy-int.h:54
tmbstr messageOutputDefault
Definition: tidy-int.h:129
ctmbstr messageKey
Definition: tidy-int.h:115
int line
Definition: tidy-int.h:106
The basic struct for communicating a message within LibTidy.
Definition: tidy-int.h:101
Bool
Definition: tidyplatform.h:631
StreamOut * docOut
Definition: tidy-int.h:55
ctmbstr messageFormatDefault
Definition: tidy-int.h:117
Defines HTML Tidy public API implemented by LibTidy.
uint badChars
Definition: tidy-int.h:76
int argcount
Definition: tidy-int.h:112
uint errors
Definition: tidy-int.h:67
uint footnotes
Definition: tidy-int.h:78
TidyMutedMessages muted
Definition: tidy-int.h:48
TidyOptCallback pOptCallback
Definition: tidy-int.h:60
Node root
Definition: tidy-int.h:39
void(TIDY_CALL * TidyConfigChangeCallback)(TidyDoc tdoc, TidyOption option)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:616
TidyReportLevel level
Definition: tidy-int.h:108
tmbchar * tmbstr
Definition: tidyplatform.h:593
Definition: tidy-int.h:172
ctmbstr messagePrefix
Definition: tidy-int.h:127
This type is used to define a structure for keeping track of the values for each option.
Definition: config.h:121
Node * tidyNode
Definition: tidy-int.h:104
tmbstr messagePosDefault
Definition: tidy-int.h:123
unsigned int uint
Definition: tidyplatform.h:554
int parseStatus
Definition: tidy-int.h:72
uint accessErrors
Definition: tidy-int.h:69
This structure consists of the lists of all tags known to Tidy.
Definition: tags.h:109
TidyReportFilter reportFilter
Definition: tidy-int.h:57
Definition: tidy-int.h:169
Bool(TIDY_CALL * TidyOptCallback)(ctmbstr option, ctmbstr value)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:573
Definition: tidy-int.h:168
Bool(TIDY_CALL * TidyReportCallback)(TidyDoc tdoc, TidyReportLevel lvl, uint line, uint col, ctmbstr code, va_list args)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:1260
TidyTagImpl tags
Definition: tidy-int.h:45
Bool xmlDetected
Definition: tidy-int.h:81
Recognize HTML Tags.
TidyAccessImpl access
Definition: tidy-int.h:47
tmbstr messageOutput
Definition: tidy-int.h:130
ctmbstr messageFormat
Definition: tidy-int.h:118
TidyMessageCallback messageCallback
Definition: tidy-int.h:59
#define TY_(str)
Definition: forward.h:23
TidyConfigChangeCallback pConfigChangeCallback
Definition: tidy-int.h:62
Lexer * lexer
Definition: tidy-int.h:41
TidyAllocator * allocator
Definition: tidy-int.h:84
void(TIDY_CALL * TidyPPProgress)(TidyDoc tdoc, uint line, uint col, uint destLine)
This typedef represents the required signature for your provided callback function should you wish to...
Definition: tidy.h:1532
TidyAttribImpl attribs
Definition: tidy-int.h:46
NodeTraversalSignal
Definition: tidy-int.h:166
tmbstr messageDefault
Definition: tidy-int.h:120
uint badLayout
Definition: tidy-int.h:75
uint nClassId
Definition: tidy-int.h:88
uint optionErrors
Definition: tidy-int.h:66
uint code
Definition: tidy-int.h:105
Definition: pprint.h:48
Bool HTML5Mode
Definition: tidy-int.h:80
uint warnings
Definition: tidy-int.h:68