Version:
~ [ 1.0 ] ~
1 #ifndef __ATTRS_H__
2 #define __ATTRS_H__
3
4 /* attrs.h -- recognize HTML attributes
5
6 (c) 1998-2003 (W3C) MIT, ERCIM, Keio University
7 See tidy.h for the copyright notice.
8
9 CVS Info :
10
11 $Author: arnaud02 $
12 $Date: 2005/08/24 10:27:43 $
13 $Revision: 1.20 $
14
15 */
16
17 #include "forward.h"
18
19 /* declaration for methods that check attribute values */
20 typedef void (AttrCheck)(TidyDocImpl* doc, Node *node, AttVal *attval);
21
22 struct _Attribute
23 {
24 TidyAttrId id;
25 tmbstr name;
26 unsigned versions;
27 AttrCheck* attrchk;
28
29 struct _Attribute* next;
30 };
31
32
33 /*
34 Anchor/Node linked list
35 */
36
37 struct _Anchor
38 {
39 struct _Anchor *next;
40 Node *node;
41 char *name;
42 };
43
44 typedef struct _Anchor Anchor;
45
46 #ifdef ATTRIBUTE_HASH_LOOKUP
47 #define ATTRIBUTE_HASH_SIZE 178
48 #endif
49
50 struct _TidyAttribImpl
51 {
52 /* anchor/node lookup */
53 Anchor* anchor_list;
54
55 /* Declared literal attributes */
56 Attribute* declared_attr_list;
57
58 #ifdef ATTRIBUTE_HASH_LOOKUP
59 Attribute* hashtab[ATTRIBUTE_HASH_SIZE];
60 #endif
61 };
62
63 typedef struct _TidyAttribImpl TidyAttribImpl;
64
65 #define XHTML_NAMESPACE "http://www.w3.org/1999/xhtml"
66
67
68 /*
69 Bind attribute types to procedures to check values.
70 You can add new procedures for better validation
71 and each procedure has access to the node in which
72 the attribute occurred as well as the attribute name
73 and its value.
74
75 By default, attributes are checked without regard
76 to the element they are found on. You have the choice
77 of making the procedure test which element is involved
78 or in writing methods for each element which controls
79 exactly how the attributes of that element are checked.
80 This latter approach is best for detecting the absence
81 of required attributes.
82 */
83
84 AttrCheck CheckUrl;
85 AttrCheck CheckScript;
86 AttrCheck CheckName;
87 AttrCheck CheckId;
88 AttrCheck CheckAlign;
89 AttrCheck CheckValign;
90 AttrCheck CheckBool;
91 AttrCheck CheckLength;
92 AttrCheck CheckTarget;
93 AttrCheck CheckFsubmit;
94 AttrCheck CheckClear;
95 AttrCheck CheckShape;
96 AttrCheck CheckNumber;
97 AttrCheck CheckScope;
98 AttrCheck CheckColor;
99 AttrCheck CheckVType;
100 AttrCheck CheckScroll;
101 AttrCheck CheckTextDir;
102 AttrCheck CheckLang;
103 AttrCheck CheckType;
104
105 /* public method for finding attribute definition by name */
106 const Attribute* CheckAttribute( TidyDocImpl* doc, Node *node, AttVal *attval );
107
108 const Attribute* FindAttribute( TidyDocImpl* doc, AttVal *attval );
109
110 AttVal* GetAttrByName( Node *node, ctmbstr name );
111
112 AttVal* AddAttribute( TidyDocImpl* doc,
113 Node *node, ctmbstr name, ctmbstr value );
114
115 AttVal* RepairAttrValue(TidyDocImpl* doc, Node* node, ctmbstr name, ctmbstr value);
116
117 Bool IsUrl( TidyDocImpl* doc, ctmbstr attrname );
118
119 Bool IsBool( TidyDocImpl* doc, ctmbstr attrname );
120
121 Bool IsScript( TidyDocImpl* doc, ctmbstr attrname );
122
123 /* may id or name serve as anchor? */
124 Bool IsAnchorElement( TidyDocImpl* doc, Node* node );
125
126 /*
127 In CSS1, selectors can contain only the characters A-Z, 0-9, and
128 Unicode characters 161-255, plus dash (-); they cannot start with
129 a dash or a digit; they can also contain escaped characters and any
130 Unicode character as a numeric code (see next item).
131
132 The backslash followed by at most four hexadecimal digits (0..9A..F)
133 stands for the Unicode character with that number.
134
135 Any character except a hexadecimal digit can be escaped to remove its
136 special meaning, by putting a backslash in front.
137
138 #508936 - CSS class naming for -clean option
139 */
140 Bool IsCSS1Selector( ctmbstr buf );
141
142 Bool IsValidHTMLID(ctmbstr id);
143 Bool IsValidXMLID(ctmbstr id);
144
145 /* removes anchor for specific node */
146 void RemoveAnchorByNode( TidyDocImpl* doc, Node *node );
147
148 /* add new anchor to namespace */
149 Anchor* AddAnchor( TidyDocImpl* doc, ctmbstr name, Node *node );
150
151 /* return node associated with anchor */
152 Node* GetNodeByAnchor( TidyDocImpl* doc, ctmbstr name );
153
154 /* free all anchors */
155 void FreeAnchors( TidyDocImpl* doc );
156
157
158 /* public methods for inititializing/freeing attribute dictionary */
159 void InitAttrs( TidyDocImpl* doc );
160 void FreeAttrTable( TidyDocImpl* doc );
161
162 /*
163 the same attribute name can't be used
164 more than once in each element
165 */
166 void RepairDuplicateAttributes( TidyDocImpl* doc, Node* node );
167
168 Bool IsBoolAttribute( AttVal* attval );
169 Bool attrIsEvent( AttVal* attval );
170
171 AttVal* AttrGetById( Node* node, TidyAttrId id );
172
173 uint NodeAttributeVersions( Node* node, TidyAttrId id );
174
175 /* 0 == TidyAttr_UNKNOWN */
176 #define AttrId(av) ((av) && (av)->dict ? (av)->dict->id : TidyAttr_UNKNOWN)
177 #define AttrIsId(av, atid) ((av) && (av)->dict && ((av)->dict->id == atid))
178
179 #define AttrHasValue(attr) ((attr) && (attr)->value)
180 #define AttrValueIs(attr, val) (AttrHasValue(attr) && \
181 tmbstrcasecmp((attr)->value, val) == 0)
182 #define AttrContains(attr, val) (AttrHasValue(attr) && \
183 tmbsubstr((attr)->value, val) != NULL)
184 #define AttrVersions(attr) ((attr) && (attr)->dict ? (attr)->dict->versions : VERS_PROPRIETARY)
185
186 #define AttrsHaveSameId(a, b) (a && b && a->dict && b->dict && a->dict->id && \
187 b->dict->id && a->dict->id == b->dict->id)
188
189 #define attrIsABBR(av) AttrIsId( av, TidyAttr_ABBR )
190 #define attrIsACCEPT(av) AttrIsId( av, TidyAttr_ACCEPT )
191 #define attrIsACCEPT_CHARSET(av) AttrIsId( av, TidyAttr_ACCEPT_CHARSET )
192 #define attrIsACCESSKEY(av) AttrIsId( av, TidyAttr_ACCESSKEY )
193 #define attrIsACTION(av) AttrIsId( av, TidyAttr_ACTION )
194 #define attrIsADD_DATE(av) AttrIsId( av, TidyAttr_ADD_DATE )
195 #define attrIsALIGN(av) AttrIsId( av, TidyAttr_ALIGN )
196 #define attrIsALINK(av) AttrIsId( av, TidyAttr_ALINK )
197 #define attrIsALT(av) AttrIsId( av, TidyAttr_ALT )
198 #define attrIsARCHIVE(av) AttrIsId( av, TidyAttr_ARCHIVE )
199 #define attrIsAXIS(av) AttrIsId( av, TidyAttr_AXIS )
200 #define attrIsBACKGROUND(av) AttrIsId( av, TidyAttr_BACKGROUND )
201 #define attrIsBGCOLOR(av) AttrIsId( av, TidyAttr_BGCOLOR )
202 #define attrIsBGPROPERTIES(av) AttrIsId( av, TidyAttr_BGPROPERTIES )
203 #define attrIsBORDER(av) AttrIsId( av, TidyAttr_BORDER )
204 #define attrIsBORDERCOLOR(av) AttrIsId( av, TidyAttr_BORDERCOLOR )
205 #define attrIsBOTTOMMARGIN(av) AttrIsId( av, TidyAttr_BOTTOMMARGIN )
206 #define attrIsCELLPADDING(av) AttrIsId( av, TidyAttr_CELLPADDING )
207 #define attrIsCELLSPACING(av) AttrIsId( av, TidyAttr_CELLSPACING )
208 #define attrIsCHAR(av) AttrIsId( av, TidyAttr_CHAR )
209 #define attrIsCHAROFF(av) AttrIsId( av, TidyAttr_CHAROFF )
210 #define attrIsCHARSET(av) AttrIsId( av, TidyAttr_CHARSET )
211 #define attrIsCHECKED(av) AttrIsId( av, TidyAttr_CHECKED )
212 #define attrIsCITE(av) AttrIsId( av, TidyAttr_CITE )
213 #define attrIsCLASS(av) AttrIsId( av, TidyAttr_CLASS )
214 #define attrIsCLASSID(av) AttrIsId( av, TidyAttr_CLASSID )
215 #define attrIsCLEAR(av) AttrIsId( av, TidyAttr_CLEAR )
216 #define attrIsCODE(av) AttrIsId( av, TidyAttr_CODE )
217 #define attrIsCODEBASE(av) AttrIsId( av, TidyAttr_CODEBASE )
218 #define attrIsCODETYPE(av) AttrIsId( av, TidyAttr_CODETYPE )
219 #define attrIsCOLOR(av) AttrIsId( av, TidyAttr_COLOR )
220 #define attrIsCOLS(av) AttrIsId( av, TidyAttr_COLS )
221 #define attrIsCOLSPAN(av) AttrIsId( av, TidyAttr_COLSPAN )
222 #define attrIsCOMPACT(av) AttrIsId( av, TidyAttr_COMPACT )
223 #define attrIsCONTENT(av) AttrIsId( av, TidyAttr_CONTENT )
224 #define attrIsCOORDS(av) AttrIsId( av, TidyAttr_COORDS )
225 #define attrIsDATA(av) AttrIsId( av, TidyAttr_DATA )
226 #define attrIsDATAFLD(av) AttrIsId( av, TidyAttr_DATAFLD )
227 #define attrIsDATAFORMATAS(av) AttrIsId( av, TidyAttr_DATAFORMATAS )
228 #define attrIsDATAPAGESIZE(av) AttrIsId( av, TidyAttr_DATAPAGESIZE )
229 #define attrIsDATASRC(av) AttrIsId( av, TidyAttr_DATASRC )
230 #define attrIsDATETIME(av) AttrIsId( av, TidyAttr_DATETIME )
231 #define attrIsDECLARE(av) AttrIsId( av, TidyAttr_DECLARE )
232 #define attrIsDEFER(av) AttrIsId( av, TidyAttr_DEFER )
233 #define attrIsDIR(av) AttrIsId( av, TidyAttr_DIR )
234 #define attrIsDISABLED(av) AttrIsId( av, TidyAttr_DISABLED )
235 #define attrIsENCODING(av) AttrIsId( av, TidyAttr_ENCODING )
236 #define attrIsENCTYPE(av) AttrIsId( av, TidyAttr_ENCTYPE )
237 #define attrIsFACE(av) AttrIsId( av, TidyAttr_FACE )
238 #define attrIsFOR(av) AttrIsId( av, TidyAttr_FOR )
239 #define attrIsFRAME(av) AttrIsId( av, TidyAttr_FRAME )
240 #define attrIsFRAMEBORDER(av) AttrIsId( av, TidyAttr_FRAMEBORDER )
241 #define attrIsFRAMESPACING(av) AttrIsId( av, TidyAttr_FRAMESPACING )
242 #define attrIsGRIDX(av) AttrIsId( av, TidyAttr_GRIDX )
243 #define attrIsGRIDY(av) AttrIsId( av, TidyAttr_GRIDY )
244 #define attrIsHEADERS(av) AttrIsId( av, TidyAttr_HEADERS )
245 #define attrIsHEIGHT(av) AttrIsId( av, TidyAttr_HEIGHT )
246 #define attrIsHREF(av) AttrIsId( av, TidyAttr_HREF )
247 #define attrIsHREFLANG(av) AttrIsId( av, TidyAttr_HREFLANG )
248 #define attrIsHSPACE(av) AttrIsId( av, TidyAttr_HSPACE )
249 #define attrIsHTTP_EQUIV(av) AttrIsId( av, TidyAttr_HTTP_EQUIV )
250 #define attrIsID(av) AttrIsId( av, TidyAttr_ID )
251 #define attrIsISMAP(av) AttrIsId( av, TidyAttr_ISMAP )
252 #define attrIsLABEL(av) AttrIsId( av, TidyAttr_LABEL )
253 #define attrIsLANG(av) AttrIsId( av, TidyAttr_LANG )
254 #define attrIsLANGUAGE(av) AttrIsId( av, TidyAttr_LANGUAGE )
255 #define attrIsLAST_MODIFIED(av) AttrIsId( av, TidyAttr_LAST_MODIFIED )
256 #define attrIsLAST_VISIT(av) AttrIsId( av, TidyAttr_LAST_VISIT )
257 #define attrIsLEFTMARGIN(av) AttrIsId( av, TidyAttr_LEFTMARGIN )
258 #define attrIsLINK(av) AttrIsId( av, TidyAttr_LINK )
259 #define attrIsLONGDESC(av) AttrIsId( av, TidyAttr_LONGDESC )
260 #define attrIsLOWSRC(av) AttrIsId( av, TidyAttr_LOWSRC )
261 #define attrIsMARGINHEIGHT(av) AttrIsId( av, TidyAttr_MARGINHEIGHT )
262 #define attrIsMARGINWIDTH(av) AttrIsId( av, TidyAttr_MARGINWIDTH )
263 #define attrIsMAXLENGTH(av) AttrIsId( av, TidyAttr_MAXLENGTH )
264 #define attrIsMEDIA(av) AttrIsId( av, TidyAttr_MEDIA )
265 #define attrIsMETHOD(av) AttrIsId( av, TidyAttr_METHOD )
266 #define attrIsMULTIPLE(av) AttrIsId( av, TidyAttr_MULTIPLE )
267 #define attrIsNAME(av) AttrIsId( av, TidyAttr_NAME )
268 #define attrIsNOHREF(av) AttrIsId( av, TidyAttr_NOHREF )
269 #define attrIsNORESIZE(av) AttrIsId( av, TidyAttr_NORESIZE )
270 #define attrIsNOSHADE(av) AttrIsId( av, TidyAttr_NOSHADE )
271 #define attrIsNOWRAP(av) AttrIsId( av, TidyAttr_NOWRAP )
272 #define attrIsOBJECT(av) AttrIsId( av, TidyAttr_OBJECT )
273 #define attrIsOnAFTERUPDATE(av) AttrIsId( av, TidyAttr_OnAFTERUPDATE )
274 #define attrIsOnBEFOREUNLOAD(av) AttrIsId( av, TidyAttr_OnBEFOREUNLOAD )
275 #define attrIsOnBEFOREUPDATE(av) AttrIsId( av, TidyAttr_OnBEFOREUPDATE )
276 #define attrIsOnBLUR(av) AttrIsId( av, TidyAttr_OnBLUR )
277 #define attrIsOnCHANGE(av) AttrIsId( av, TidyAttr_OnCHANGE )
278 #define attrIsOnCLICK(av) AttrIsId( av, TidyAttr_OnCLICK )
279 #define attrIsOnDATAAVAILABLE(av) AttrIsId( av, TidyAttr_OnDATAAVAILABLE )
280 #define attrIsOnDATASETCHANGED(av) AttrIsId( av, TidyAttr_OnDATASETCHANGED )
281 #define attrIsOnDATASETCOMPLETE(av) AttrIsId( av, TidyAttr_OnDATASETCOMPLETE )
282 #define attrIsOnDBLCLICK(av) AttrIsId( av, TidyAttr_OnDBLCLICK )
283 #define attrIsOnERRORUPDATE(av) AttrIsId( av, TidyAttr_OnERRORUPDATE )
284 #define attrIsOnFOCUS(av) AttrIsId( av, TidyAttr_OnFOCUS )
285 #define attrIsOnKEYDOWN(av) AttrIsId( av, TidyAttr_OnKEYDOWN )
286 #define attrIsOnKEYPRESS(av) AttrIsId( av, TidyAttr_OnKEYPRESS )
287 #define attrIsOnKEYUP(av) AttrIsId( av, TidyAttr_OnKEYUP )
288 #define attrIsOnLOAD(av) AttrIsId( av, TidyAttr_OnLOAD )
289 #define attrIsOnMOUSEDOWN(av) AttrIsId( av, TidyAttr_OnMOUSEDOWN )
290 #define attrIsOnMOUSEMOVE(av) AttrIsId( av, TidyAttr_OnMOUSEMOVE )
291 #define attrIsOnMOUSEOUT(av) AttrIsId( av, TidyAttr_OnMOUSEOUT )
292 #define attrIsOnMOUSEOVER(av) AttrIsId( av, TidyAttr_OnMOUSEOVER )
293 #define attrIsOnMOUSEUP(av) AttrIsId( av, TidyAttr_OnMOUSEUP )
294 #define attrIsOnRESET(av) AttrIsId( av, TidyAttr_OnRESET )
295 #define attrIsOnROWENTER(av) AttrIsId( av, TidyAttr_OnROWENTER )
296 #define attrIsOnROWEXIT(av) AttrIsId( av, TidyAttr_OnROWEXIT )
297 #define attrIsOnSELECT(av) AttrIsId( av, TidyAttr_OnSELECT )
298 #define attrIsOnSUBMIT(av) AttrIsId( av, TidyAttr_OnSUBMIT )
299 #define attrIsOnUNLOAD(av) AttrIsId( av, TidyAttr_OnUNLOAD )
300 #define attrIsPROFILE(av) AttrIsId( av, TidyAttr_PROFILE )
301 #define attrIsPROMPT(av) AttrIsId( av, TidyAttr_PROMPT )
302 #define attrIsRBSPAN(av) AttrIsId( av, TidyAttr_RBSPAN )
303 #define attrIsREADONLY(av) AttrIsId( av, TidyAttr_READONLY )
304 #define attrIsREL(av) AttrIsId( av, TidyAttr_REL )
305 #define attrIsREV(av) AttrIsId( av, TidyAttr_REV )
306 #define attrIsRIGHTMARGIN(av) AttrIsId( av, TidyAttr_RIGHTMARGIN )
307 #define attrIsROWS(av) AttrIsId( av, TidyAttr_ROWS )
308 #define attrIsROWSPAN(av) AttrIsId( av, TidyAttr_ROWSPAN )
309 #define attrIsRULES(av) AttrIsId( av, TidyAttr_RULES )
310 #define attrIsSCHEME(av) AttrIsId( av, TidyAttr_SCHEME )
311 #define attrIsSCOPE(av) AttrIsId( av, TidyAttr_SCOPE )
312 #define attrIsSCROLLING(av) AttrIsId( av, TidyAttr_SCROLLING )
313 #define attrIsSELECTED(av) AttrIsId( av, TidyAttr_SELECTED )
314 #define attrIsSHAPE(av) AttrIsId( av, TidyAttr_SHAPE )
315 #define attrIsSHOWGRID(av) AttrIsId( av, TidyAttr_SHOWGRID )
316 #define attrIsSHOWGRIDX(av) AttrIsId( av, TidyAttr_SHOWGRIDX )
317 #define attrIsSHOWGRIDY(av) AttrIsId( av, TidyAttr_SHOWGRIDY )
318 #define attrIsSIZE(av) AttrIsId( av, TidyAttr_SIZE )
319 #define attrIsSPAN(av) AttrIsId( av, TidyAttr_SPAN )
320 #define attrIsSRC(av) AttrIsId( av, TidyAttr_SRC )
321 #define attrIsSTANDBY(av) AttrIsId( av, TidyAttr_STANDBY )
322 #define attrIsSTART(av) AttrIsId( av, TidyAttr_START )
323 #define attrIsSTYLE(av) AttrIsId( av, TidyAttr_STYLE )
324 #define attrIsSUMMARY(av) AttrIsId( av, TidyAttr_SUMMARY )
325 #define attrIsTABINDEX(av) AttrIsId( av, TidyAttr_TABINDEX )
326 #define attrIsTARGET(av) AttrIsId( av, TidyAttr_TARGET )
327 #define attrIsTEXT(av) AttrIsId( av, TidyAttr_TEXT )
328 #define attrIsTITLE(av) AttrIsId( av, TidyAttr_TITLE )
329 #define attrIsTOPMARGIN(av) AttrIsId( av, TidyAttr_TOPMARGIN )
330 #define attrIsTYPE(av) AttrIsId( av, TidyAttr_TYPE )
331 #define attrIsUSEMAP(av) AttrIsId( av, TidyAttr_USEMAP )
332 #define attrIsVALIGN(av) AttrIsId( av, TidyAttr_VALIGN )
333 #define attrIsVALUE(av) AttrIsId( av, TidyAttr_VALUE )
334 #define attrIsVALUETYPE(av) AttrIsId( av, TidyAttr_VALUETYPE )
335 #define attrIsVERSION(av) AttrIsId( av, TidyAttr_VERSION )
336 #define attrIsVLINK(av) AttrIsId( av, TidyAttr_VLINK )
337 #define attrIsVSPACE(av) AttrIsId( av, TidyAttr_VSPACE )
338 #define attrIsWIDTH(av) AttrIsId( av, TidyAttr_WIDTH )
339 #define attrIsWRAP(av) AttrIsId( av, TidyAttr_WRAP )
340 #define attrIsXMLNS(av) AttrIsId( av, TidyAttr_XMLNS )
341 #define attrIsXML_LANG(av) AttrIsId( av, TidyAttr_XML_LANG )
342 #define attrIsXML_SPACE(av) AttrIsId( av, TidyAttr_XML_SPACE )
343
344
345 /* Attribute Retrieval macros
346 */
347 #define attrGetHREF( nod ) AttrGetById( nod, TidyAttr_HREF )
348 #define attrGetSRC( nod ) AttrGetById( nod, TidyAttr_SRC )
349 #define attrGetID( nod ) AttrGetById( nod, TidyAttr_ID )
350 #define attrGetNAME( nod ) AttrGetById( nod, TidyAttr_NAME )
351 #define attrGetSUMMARY( nod ) AttrGetById( nod, TidyAttr_SUMMARY )
352 #define attrGetALT( nod ) AttrGetById( nod, TidyAttr_ALT )
353 #define attrGetLONGDESC( nod ) AttrGetById( nod, TidyAttr_LONGDESC )
354 #define attrGetUSEMAP( nod ) AttrGetById( nod, TidyAttr_USEMAP )
355 #define attrGetISMAP( nod ) AttrGetById( nod, TidyAttr_ISMAP )
356 #define attrGetLANGUAGE( nod ) AttrGetById( nod, TidyAttr_LANGUAGE )
357 #define attrGetTYPE( nod ) AttrGetById( nod, TidyAttr_TYPE )
358 #define attrGetVALUE( nod ) AttrGetById( nod, TidyAttr_VALUE )
359 #define attrGetCONTENT( nod ) AttrGetById( nod, TidyAttr_CONTENT )
360 #define attrGetTITLE( nod ) AttrGetById( nod, TidyAttr_TITLE )
361 #define attrGetXMLNS( nod ) AttrGetById( nod, TidyAttr_XMLNS )
362 #define attrGetDATAFLD( nod ) AttrGetById( nod, TidyAttr_DATAFLD )
363 #define attrGetWIDTH( nod ) AttrGetById( nod, TidyAttr_WIDTH )
364 #define attrGetHEIGHT( nod ) AttrGetById( nod, TidyAttr_HEIGHT )
365 #define attrGetFOR( nod ) AttrGetById( nod, TidyAttr_FOR )
366 #define attrGetSELECTED( nod ) AttrGetById( nod, TidyAttr_SELECTED )
367 #define attrGetCHECKED( nod ) AttrGetById( nod, TidyAttr_CHECKED )
368 #define attrGetLANG( nod ) AttrGetById( nod, TidyAttr_LANG )
369 #define attrGetTARGET( nod ) AttrGetById( nod, TidyAttr_TARGET )
370 #define attrGetHTTP_EQUIV( nod ) AttrGetById( nod, TidyAttr_HTTP_EQUIV )
371 #define attrGetREL( nod ) AttrGetById( nod, TidyAttr_REL )
372
373 #define attrGetOnMOUSEMOVE( nod ) AttrGetById( nod, TidyAttr_OnMOUSEMOVE )
374 #define attrGetOnMOUSEDOWN( nod ) AttrGetById( nod, TidyAttr_OnMOUSEDOWN )
375 #define attrGetOnMOUSEUP( nod ) AttrGetById( nod, TidyAttr_OnMOUSEUP )
376 #define attrGetOnCLICK( nod ) AttrGetById( nod, TidyAttr_OnCLICK )
377 #define attrGetOnMOUSEOVER( nod ) AttrGetById( nod, TidyAttr_OnMOUSEOVER )
378 #define attrGetOnMOUSEOUT( nod ) AttrGetById( nod, TidyAttr_OnMOUSEOUT )
379 #define attrGetOnKEYDOWN( nod ) AttrGetById( nod, TidyAttr_OnKEYDOWN )
380 #define attrGetOnKEYUP( nod ) AttrGetById( nod, TidyAttr_OnKEYUP )
381 #define attrGetOnKEYPRESS( nod ) AttrGetById( nod, TidyAttr_OnKEYPRESS )
382 #define attrGetOnFOCUS( nod ) AttrGetById( nod, TidyAttr_OnFOCUS )
383 #define attrGetOnBLUR( nod ) AttrGetById( nod, TidyAttr_OnBLUR )
384
385 #define attrGetBGCOLOR( nod ) AttrGetById( nod, TidyAttr_BGCOLOR )
386
387 #define attrGetLINK( nod ) AttrGetById( nod, TidyAttr_LINK )
388 #define attrGetALINK( nod ) AttrGetById( nod, TidyAttr_ALINK )
389 #define attrGetVLINK( nod ) AttrGetById( nod, TidyAttr_VLINK )
390
391 #define attrGetTEXT( nod ) AttrGetById( nod, TidyAttr_TEXT )
392 #define attrGetSTYLE( nod ) AttrGetById( nod, TidyAttr_STYLE )
393 #define attrGetABBR( nod ) AttrGetById( nod, TidyAttr_ABBR )
394 #define attrGetCOLSPAN( nod ) AttrGetById( nod, TidyAttr_COLSPAN )
395 #define attrGetFONT( nod ) AttrGetById( nod, TidyAttr_FONT )
396 #define attrGetBASEFONT( nod ) AttrGetById( nod, TidyAttr_BASEFONT )
397 #define attrGetROWSPAN( nod ) AttrGetById( nod, TidyAttr_ROWSPAN )
398
399 #endif /* __ATTRS_H__ */
400
This page was automatically generated by the
LXR engine.
Visit the LXR main site for more
information.