HTML Tidy  5.8.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 TY_PRIVATE 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 TY_PRIVATE NodeTraversalSignal TY_(TraverseNodeTree)(TidyDocImpl* doc, Node* node, NodeTraversalCallBack *cb, void *propagate);
179 
180 #endif /* __TIDY_INT_H__ */
Read configuration files and manage configuration properties.
#define TY_PRIVATE
Definition: forward.h:29
#define TY_(str)
Definition: forward.h:23
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
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
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
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
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
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
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
This type is used to define a structure for keeping track of the values for each option.
Definition: config.h:122
Maintains a list of messages not to display.
Definition: message.h:194
TidyReportLevel
Message severity level, used throughout LibTidy to indicate the severity or status of a message.
Definition: tidyenum.h:1402
This structure consists of the lists of all tags known to Tidy.
Definition: tags.h:110
Definition: pprint.h:49
Recognize HTML Tags.
TidyPPProgress progressCallback
Definition: tidy-int.h:63
TidyConfigImpl config
Definition: tidy-int.h:44
void * appData
Definition: tidy-int.h:87
ctmbstr messageKey
Definition: tidy-int.h:115
uint badLayout
Definition: tidy-int.h:75
uint code
Definition: tidy-int.h:105
ctmbstr messagePrefixDefault
Definition: tidy-int.h:126
tmbstr messagePos
Definition: tidy-int.h:124
uint badChars
Definition: tidy-int.h:76
ctmbstr messageFormat
Definition: tidy-int.h:118
int line
Definition: tidy-int.h:106
tmbstr messagePosDefault
Definition: tidy-int.h:123
TidyPrintImpl pprint
Definition: tidy-int.h:51
struct printfArg * arguments
Definition: tidy-int.h:113
NodeTraversalSignal
Definition: tidy-int.h:167
@ ContinueTraversal
Definition: tidy-int.h:168
@ SkipChildren
Definition: tidy-int.h:169
@ ExitTraversal
Definition: tidy-int.h:173
@ SkipSiblings
Definition: tidy-int.h:170
@ VisitParent
Definition: tidy-int.h:172
@ SkipChildrenAndSiblings
Definition: tidy-int.h:171
tmbstr message
Definition: tidy-int.h:121
uint badForm
Definition: tidy-int.h:77
uint footnotes
Definition: tidy-int.h:78
Node root
Definition: tidy-int.h:39
int column
Definition: tidy-int.h:107
TidyTagImpl tags
Definition: tidy-int.h:45
TidyAccessImpl access
Definition: tidy-int.h:47
tmbstr messageOutput
Definition: tidy-int.h:130
ctmbstr messagePrefix
Definition: tidy-int.h:127
uint badAccess
Definition: tidy-int.h:74
StreamOut * docOut
Definition: tidy-int.h:55
TidyConfigChangeCallback pConfigChangeCallback
Definition: tidy-int.h:62
tmbstr messageOutputDefault
Definition: tidy-int.h:129
TidyAttribImpl attribs
Definition: tidy-int.h:46
StreamIn * docIn
Definition: tidy-int.h:54
TidyMutedMessages muted
Definition: tidy-int.h:48
StreamOut * errout
Definition: tidy-int.h:56
tmbstr givenDoctype
Definition: tidy-int.h:94
uint docErrors
Definition: tidy-int.h:71
ctmbstr messageFormatDefault
Definition: tidy-int.h:117
TidyDocImpl * tidyDoc
Definition: tidy-int.h:103
TidyAllocator * allocator
Definition: tidy-int.h:84
Bool HTML5Mode
Definition: tidy-int.h:80
uint warnings
Definition: tidy-int.h:68
Bool muted
Definition: tidy-int.h:110
int argcount
Definition: tidy-int.h:112
TidyOptCallback pOptCallback
Definition: tidy-int.h:60
uint nClassId
Definition: tidy-int.h:88
TidyReportLevel level
Definition: tidy-int.h:108
uint accessErrors
Definition: tidy-int.h:69
tmbstr messageDefault
Definition: tidy-int.h:120
NodeTraversalSignal NodeTraversalCallBack(TidyDocImpl *doc, Node *node, void *propagate)
Definition: tidy-int.h:176
TidyReportCallback reportCallback
Definition: tidy-int.h:58
Bool inputHadBOM
Definition: tidy-int.h:89
int parseStatus
Definition: tidy-int.h:72
uint infoMessages
Definition: tidy-int.h:70
TidyMessageCallback messageCallback
Definition: tidy-int.h:59
Bool allowMessage
Definition: tidy-int.h:109
uint errors
Definition: tidy-int.h:67
uint optionErrors
Definition: tidy-int.h:66
Bool xmlDetected
Definition: tidy-int.h:81
Node * tidyNode
Definition: tidy-int.h:104
Lexer * lexer
Definition: tidy-int.h:41
TidyConfigCallback pConfigCallback
Definition: tidy-int.h:61
TidyReportFilter reportFilter
Definition: tidy-int.h:57
Definition: tidy-int.h:37
The basic struct for communicating a message within LibTidy.
Definition: tidy-int.h:102
Defines HTML Tidy public API implemented by LibTidy.
Bool
Definition: tidyplatform.h:647
unsigned int uint
Definition: tidyplatform.h:569
const tmbchar * ctmbstr
Definition: tidyplatform.h:609
tmbchar * tmbstr
Definition: tidyplatform.h:608