From bbaafe049d85c4057ed0379273702f7260c62459 Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Tue, 10 Jun 2003 22:12:28 +0000 Subject: [PATCH] Make tag lists more maintainable by using sizeof to determine the array length. b=208846 r=harishd sr=jst git-svn-id: svn://10.0.0.236/trunk@143538 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/htmlparser/src/nsDTDUtils.h | 4 +- mozilla/htmlparser/src/nsElementTable.cpp | 152 +++++++++--------- mozilla/parser/htmlparser/src/nsDTDUtils.h | 4 +- .../parser/htmlparser/src/nsElementTable.cpp | 152 +++++++++--------- 4 files changed, 158 insertions(+), 154 deletions(-) diff --git a/mozilla/htmlparser/src/nsDTDUtils.h b/mozilla/htmlparser/src/nsDTDUtils.h index 2f31eb7fc97..eb230f42e54 100644 --- a/mozilla/htmlparser/src/nsDTDUtils.h +++ b/mozilla/htmlparser/src/nsDTDUtils.h @@ -596,8 +596,8 @@ protected: struct TagList { - PRUint32 mCount; - eHTMLTags mTags[10]; + PRUint32 mCount; + const eHTMLTags *mTags; }; /** diff --git a/mozilla/htmlparser/src/nsElementTable.cpp b/mozilla/htmlparser/src/nsElementTable.cpp index 950a367af91..d717ea7baae 100644 --- a/mozilla/htmlparser/src/nsElementTable.cpp +++ b/mozilla/htmlparser/src/nsElementTable.cpp @@ -50,111 +50,113 @@ Now it's time to list all the html elements all with their capabilities... ******************************************************************************/ +#define DECL_TAG_LIST(name_, list_) \ + static const eHTMLTags name_##list[] = list_; \ + static const TagList name_ = { NS_ARRAY_LENGTH(name_##list), name_##list }; + +#define COMMA , //First, define the set of taglists for tags with special parents... -static const TagList gAParents={1,{eHTMLTag_map}}; -static const TagList gInAddress={1,{eHTMLTag_address}}; -static const TagList gInHead={1,{eHTMLTag_head}}; -static const TagList gInTable={1,{eHTMLTag_table}}; -static const TagList gInHTML={1,{eHTMLTag_html}}; -static const TagList gInBody={1,{eHTMLTag_body}}; -static const TagList gInForm={1,{eHTMLTag_form}}; -static const TagList gInFieldset={1,{eHTMLTag_fieldset}}; -static const TagList gInTR={1,{eHTMLTag_tr}}; -static const TagList gInDL={2,{eHTMLTag_dl,eHTMLTag_body}}; -static const TagList gInFrameset={1,{eHTMLTag_frameset}}; -static const TagList gInNoframes={1,{eHTMLTag_noframes}}; +DECL_TAG_LIST(gAParents,{eHTMLTag_map}) +DECL_TAG_LIST(gInAddress,{eHTMLTag_address}) +DECL_TAG_LIST(gInHead,{eHTMLTag_head}) +DECL_TAG_LIST(gInTable,{eHTMLTag_table}) +DECL_TAG_LIST(gInHTML,{eHTMLTag_html}) +DECL_TAG_LIST(gInBody,{eHTMLTag_body}) +DECL_TAG_LIST(gInForm,{eHTMLTag_form}) +DECL_TAG_LIST(gInFieldset,{eHTMLTag_fieldset}) +DECL_TAG_LIST(gInTR,{eHTMLTag_tr}) +DECL_TAG_LIST(gInDL,{eHTMLTag_dl COMMA eHTMLTag_body}) +DECL_TAG_LIST(gInFrameset,{eHTMLTag_frameset}) +DECL_TAG_LIST(gInNoframes,{eHTMLTag_noframes}) //Removed ADDRESS to solve 24885 -static const TagList gInP={2,{eHTMLTag_span,eHTMLTag_table}}; // added table for bug 43678, removed FORM bug 94269 -static const TagList gOptgroupParents={2,{eHTMLTag_select,eHTMLTag_optgroup}}; -static const TagList gBodyParents={2,{eHTMLTag_html,eHTMLTag_noframes}}; -static const TagList gColParents={2,{eHTMLTag_table,eHTMLTag_colgroup}}; -static const TagList gFramesetParents={2,{eHTMLTag_html,eHTMLTag_frameset}}; -static const TagList gLegendParents={1,{eHTMLTag_fieldset}}; -static const TagList gAreaParent={1,{eHTMLTag_map}}; -static const TagList gParamParents={2,{eHTMLTag_applet,eHTMLTag_object}}; -static const TagList gTRParents={4,{eHTMLTag_tbody,eHTMLTag_tfoot,eHTMLTag_thead,eHTMLTag_table}}; -static const TagList gTREndParents={5,{eHTMLTag_tbody,eHTMLTag_tfoot,eHTMLTag_thead,eHTMLTag_table,eHTMLTag_applet}}; +DECL_TAG_LIST(gInP,{eHTMLTag_span COMMA eHTMLTag_table}) // added table for bug 43678, removed FORM bug 94269 +DECL_TAG_LIST(gOptgroupParents,{eHTMLTag_select COMMA eHTMLTag_optgroup}) +DECL_TAG_LIST(gBodyParents,{eHTMLTag_html COMMA eHTMLTag_noframes}) +DECL_TAG_LIST(gColParents,{eHTMLTag_table COMMA eHTMLTag_colgroup}) +DECL_TAG_LIST(gFramesetParents,{eHTMLTag_html COMMA eHTMLTag_frameset}) +DECL_TAG_LIST(gLegendParents,{eHTMLTag_fieldset}) +DECL_TAG_LIST(gAreaParent,{eHTMLTag_map}) +DECL_TAG_LIST(gParamParents,{eHTMLTag_applet COMMA eHTMLTag_object}) +DECL_TAG_LIST(gTRParents,{eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_thead COMMA eHTMLTag_table}) +DECL_TAG_LIST(gTREndParents,{eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_thead COMMA eHTMLTag_table COMMA eHTMLTag_applet}) //********************************************************************************************* // Next, define the set of taglists for tags with special kids... //********************************************************************************************* -static const TagList gContainsText={4,{eHTMLTag_text,eHTMLTag_newline,eHTMLTag_whitespace,eHTMLTag_entity}}; -static const TagList gUnknownKids={2,{eHTMLTag_html,eHTMLTag_frameset}}; -static const TagList gContainsOpts={3,{eHTMLTag_option,eHTMLTag_optgroup,eHTMLTag_script}}; -static const TagList gContainsParam={1,{eHTMLTag_param}}; -static const TagList gColgroupKids={1,{eHTMLTag_col}}; -static const TagList gAddressKids={1,{eHTMLTag_p}}; -static const TagList gBodyKids={8, {eHTMLTag_dd,eHTMLTag_del,eHTMLTag_dt,eHTMLTag_ins, - eHTMLTag_noscript,eHTMLTag_script,eHTMLTag_li,eHTMLTag_param}}; // Added PARAM for bug 54448 -static const TagList gButtonKids={2,{eHTMLTag_caption,eHTMLTag_legend}}; +DECL_TAG_LIST(gContainsText,{eHTMLTag_text COMMA eHTMLTag_newline COMMA eHTMLTag_whitespace COMMA eHTMLTag_entity}) +DECL_TAG_LIST(gUnknownKids,{eHTMLTag_html COMMA eHTMLTag_frameset}) +DECL_TAG_LIST(gContainsOpts,{eHTMLTag_option COMMA eHTMLTag_optgroup COMMA eHTMLTag_script}) +DECL_TAG_LIST(gContainsParam,{eHTMLTag_param}) +DECL_TAG_LIST(gColgroupKids,{eHTMLTag_col}) +DECL_TAG_LIST(gAddressKids,{eHTMLTag_p}) +DECL_TAG_LIST(gBodyKids,{eHTMLTag_dd COMMA eHTMLTag_del COMMA eHTMLTag_dt COMMA eHTMLTag_ins COMMA eHTMLTag_noscript COMMA eHTMLTag_script COMMA eHTMLTag_li COMMA eHTMLTag_param}) // Added PARAM for bug 54448 +DECL_TAG_LIST(gButtonKids,{eHTMLTag_caption COMMA eHTMLTag_legend}) -static const TagList gDLRootTags={5,{eHTMLTag_body,eHTMLTag_td,eHTMLTag_table,eHTMLTag_applet,eHTMLTag_dd}}; -static const TagList gDLKids={2,{eHTMLTag_dd,eHTMLTag_dt}}; -static const TagList gDTKids={1,{eHTMLTag_dt}}; -static const TagList gFieldsetKids={2,{eHTMLTag_legend,eHTMLTag_text}}; -static const TagList gFontKids={3,{eHTMLTag_legend,eHTMLTag_table,eHTMLTag_text}}; // Added table to fix bug 93365 -static const TagList gFormKids={1,{eHTMLTag_keygen}}; -static const TagList gFramesetKids={3,{eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes}}; +DECL_TAG_LIST(gDLRootTags,{eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_table COMMA eHTMLTag_applet COMMA eHTMLTag_dd}) +DECL_TAG_LIST(gDLKids,{eHTMLTag_dd COMMA eHTMLTag_dt}) +DECL_TAG_LIST(gDTKids,{eHTMLTag_dt}) +DECL_TAG_LIST(gFieldsetKids,{eHTMLTag_legend COMMA eHTMLTag_text}) +DECL_TAG_LIST(gFontKids,{eHTMLTag_legend COMMA eHTMLTag_table COMMA eHTMLTag_text}) // Added table to fix bug 93365 +DECL_TAG_LIST(gFormKids,{eHTMLTag_keygen}) +DECL_TAG_LIST(gFramesetKids,{eHTMLTag_frame COMMA eHTMLTag_frameset COMMA eHTMLTag_noframes}) -static const TagList gHtmlKids={9,{eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_noframes,eHTMLTag_script,eHTMLTag_newline,eHTMLTag_whitespace}}; -static const TagList gHeadKids={8,{eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed}}; +DECL_TAG_LIST(gHtmlKids,{eHTMLTag_body COMMA eHTMLTag_frameset COMMA eHTMLTag_head COMMA eHTMLTag_map COMMA eHTMLTag_noscript COMMA eHTMLTag_noframes COMMA eHTMLTag_script COMMA eHTMLTag_newline COMMA eHTMLTag_whitespace}) +DECL_TAG_LIST(gHeadKids,{eHTMLTag_base COMMA eHTMLTag_bgsound COMMA eHTMLTag_link COMMA eHTMLTag_meta COMMA eHTMLTag_script COMMA eHTMLTag_style COMMA eHTMLTag_title COMMA eHTMLTag_noembed}) -static const TagList gLabelKids={1,{eHTMLTag_span}}; -static const TagList gLIKids={2,{eHTMLTag_ol,eHTMLTag_ul}}; -static const TagList gMapKids={1,{eHTMLTag_area}}; -static const TagList gPreKids={2,{eHTMLTag_hr,eHTMLTag_center}}; //note that CENTER is here for backward compatibility; it's not 4.0 spec. +DECL_TAG_LIST(gLabelKids,{eHTMLTag_span}) +DECL_TAG_LIST(gLIKids,{eHTMLTag_ol COMMA eHTMLTag_ul}) +DECL_TAG_LIST(gMapKids,{eHTMLTag_area}) +DECL_TAG_LIST(gPreKids,{eHTMLTag_hr COMMA eHTMLTag_center}) //note that CENTER is here for backward compatibility; it's not 4.0 spec. -static const TagList gTableKids={9,{eHTMLTag_caption,eHTMLTag_col,eHTMLTag_colgroup,eHTMLTag_form, - eHTMLTag_thead,eHTMLTag_tbody,eHTMLTag_tfoot, - eHTMLTag_map,eHTMLTag_script}};// Removed INPUT - Ref. Bug 20087, 25382 +DECL_TAG_LIST(gTableKids,{eHTMLTag_caption COMMA eHTMLTag_col COMMA eHTMLTag_colgroup COMMA eHTMLTag_form COMMA eHTMLTag_thead COMMA eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_map COMMA eHTMLTag_script})// Removed INPUT - Ref. Bug 20087, 25382 -static const TagList gTableElemKids={7,{eHTMLTag_form,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script,eHTMLTag_td,eHTMLTag_th,eHTMLTag_tr}}; -static const TagList gTRKids={4,{eHTMLTag_td,eHTMLTag_th,eHTMLTag_form,eHTMLTag_script}};// Removed INPUT - Ref. Bug 20087, 25382 | Removed MAP to fix 58942 -static const TagList gTBodyKids={2,{eHTMLTag_tr,eHTMLTag_form}}; // Removed INPUT - Ref. Bug 20087, 25382 -static const TagList gULKids={2,{eHTMLTag_li,eHTMLTag_p}}; +DECL_TAG_LIST(gTableElemKids,{eHTMLTag_form COMMA eHTMLTag_map COMMA eHTMLTag_noscript COMMA eHTMLTag_script COMMA eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_tr}) +DECL_TAG_LIST(gTRKids,{eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_form COMMA eHTMLTag_script})// Removed INPUT - Ref. Bug 20087, 25382 | Removed MAP to fix 58942 +DECL_TAG_LIST(gTBodyKids,{eHTMLTag_tr COMMA eHTMLTag_form}) // Removed INPUT - Ref. Bug 20087, 25382 +DECL_TAG_LIST(gULKids,{eHTMLTag_li COMMA eHTMLTag_p}) //********************************************************************************************* // The following tag lists are used to define common set of root notes for the HTML elements... //********************************************************************************************* -static const TagList gRootTags={5,{eHTMLTag_body,eHTMLTag_td,eHTMLTag_table,eHTMLTag_applet,eHTMLTag_select}}; // Added SELECT to fix bug 98645 -static const TagList gTableRootTags={6,{eHTMLTag_applet,eHTMLTag_body,eHTMLTag_dl,eHTMLTag_ol,eHTMLTag_td,eHTMLTag_th}}; -static const TagList gHTMLRootTags={1,{eHTMLTag_unknown}}; +DECL_TAG_LIST(gRootTags,{eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_table COMMA eHTMLTag_applet COMMA eHTMLTag_select}) // Added SELECT to fix bug 98645 +DECL_TAG_LIST(gTableRootTags,{eHTMLTag_applet COMMA eHTMLTag_body COMMA eHTMLTag_dl COMMA eHTMLTag_ol COMMA eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gHTMLRootTags,{eHTMLTag_unknown}) -static const TagList gLIRootTags={8,{eHTMLTag_ul,eHTMLTag_ol,eHTMLTag_dir,eHTMLTag_menu,eHTMLTag_p,eHTMLTag_body,eHTMLTag_td,eHTMLTag_th}}; +DECL_TAG_LIST(gLIRootTags,{eHTMLTag_ul COMMA eHTMLTag_ol COMMA eHTMLTag_dir COMMA eHTMLTag_menu COMMA eHTMLTag_p COMMA eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_th}) -static const TagList gOLRootTags={5,{eHTMLTag_body,eHTMLTag_li,eHTMLTag_td,eHTMLTag_th,eHTMLTag_select}}; -static const TagList gTDRootTags={6,{eHTMLTag_tr,eHTMLTag_tbody,eHTMLTag_thead,eHTMLTag_tfoot,eHTMLTag_table,eHTMLTag_applet}}; -static const TagList gNoframeRoot={2,{eHTMLTag_body,eHTMLTag_frameset}}; +DECL_TAG_LIST(gOLRootTags,{eHTMLTag_body COMMA eHTMLTag_li COMMA eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_select}) +DECL_TAG_LIST(gTDRootTags,{eHTMLTag_tr COMMA eHTMLTag_tbody COMMA eHTMLTag_thead COMMA eHTMLTag_tfoot COMMA eHTMLTag_table COMMA eHTMLTag_applet}) +DECL_TAG_LIST(gNoframeRoot,{eHTMLTag_body COMMA eHTMLTag_frameset}) //********************************************************************************************* // The following tag lists are used to define the autoclose properties of the html elements... //********************************************************************************************* -static const TagList gBodyAutoClose={1,{eHTMLTag_head}}; -static const TagList gTBodyAutoClose={5,{eHTMLTag_thead,eHTMLTag_tfoot,eHTMLTag_tbody,eHTMLTag_td,eHTMLTag_th}}; // TD|TH inclusion - Bug# 24112 -static const TagList gCaptionAutoClose={1,{eHTMLTag_tbody}}; -static const TagList gLIAutoClose={2,{eHTMLTag_p,eHTMLTag_li}}; -static const TagList gPAutoClose={2,{eHTMLTag_p,eHTMLTag_li}}; -static const TagList gHRAutoClose={1,{eHTMLTag_p}}; -static const TagList gOLAutoClose={2,{eHTMLTag_p,eHTMLTag_ol}}; -static const TagList gDivAutoClose={1,{eHTMLTag_p}}; +DECL_TAG_LIST(gBodyAutoClose,{eHTMLTag_head}) +DECL_TAG_LIST(gTBodyAutoClose,{eHTMLTag_thead COMMA eHTMLTag_tfoot COMMA eHTMLTag_tbody COMMA eHTMLTag_td COMMA eHTMLTag_th}) // TD|TH inclusion - Bug# 24112 +DECL_TAG_LIST(gCaptionAutoClose,{eHTMLTag_tbody}) +DECL_TAG_LIST(gLIAutoClose,{eHTMLTag_p COMMA eHTMLTag_li}) +DECL_TAG_LIST(gPAutoClose,{eHTMLTag_p COMMA eHTMLTag_li}) +DECL_TAG_LIST(gHRAutoClose,{eHTMLTag_p}) +DECL_TAG_LIST(gOLAutoClose,{eHTMLTag_p COMMA eHTMLTag_ol}) +DECL_TAG_LIST(gDivAutoClose,{eHTMLTag_p}) -static const TagList gHeadingTags={6,{eHTMLTag_h1,eHTMLTag_h2,eHTMLTag_h3,eHTMLTag_h4,eHTMLTag_h5,eHTMLTag_h6}}; +DECL_TAG_LIST(gHeadingTags,{eHTMLTag_h1 COMMA eHTMLTag_h2 COMMA eHTMLTag_h3 COMMA eHTMLTag_h4 COMMA eHTMLTag_h5 COMMA eHTMLTag_h6}) -static const TagList gTableCloseTags={6,{eHTMLTag_td,eHTMLTag_tr,eHTMLTag_th,eHTMLTag_tbody,eHTMLTag_thead,eHTMLTag_tfoot}}; -static const TagList gTRCloseTags={3,{eHTMLTag_tr,eHTMLTag_td,eHTMLTag_th}}; -static const TagList gTDCloseTags={2,{eHTMLTag_td,eHTMLTag_th}}; -static const TagList gDTCloseTags={3,{eHTMLTag_p,eHTMLTag_dd,eHTMLTag_dt}}; -static const TagList gULCloseTags={1,{eHTMLTag_li}}; -static const TagList gULAutoClose={2,{eHTMLTag_p,eHTMLTag_ul}}; //fix bug 50261.. +DECL_TAG_LIST(gTableCloseTags,{eHTMLTag_td COMMA eHTMLTag_tr COMMA eHTMLTag_th COMMA eHTMLTag_tbody COMMA eHTMLTag_thead COMMA eHTMLTag_tfoot}) +DECL_TAG_LIST(gTRCloseTags,{eHTMLTag_tr COMMA eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gTDCloseTags,{eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gDTCloseTags,{eHTMLTag_p COMMA eHTMLTag_dd COMMA eHTMLTag_dt}) +DECL_TAG_LIST(gULCloseTags,{eHTMLTag_li}) +DECL_TAG_LIST(gULAutoClose,{eHTMLTag_p COMMA eHTMLTag_ul}) //fix bug 50261.. -static const TagList gExcludableParents={1,{eHTMLTag_pre}}; // Ref Bug 22913 -static const TagList gCaptionExcludableParents={1,{eHTMLTag_td}}; //Ref Bug 26488 +DECL_TAG_LIST(gExcludableParents,{eHTMLTag_pre}) // Ref Bug 22913 +DECL_TAG_LIST(gCaptionExcludableParents,{eHTMLTag_td}) //Ref Bug 26488 //********************************************************************************************* //Lastly, bind tags with their rules, their special parents and special kids. diff --git a/mozilla/parser/htmlparser/src/nsDTDUtils.h b/mozilla/parser/htmlparser/src/nsDTDUtils.h index 2f31eb7fc97..eb230f42e54 100644 --- a/mozilla/parser/htmlparser/src/nsDTDUtils.h +++ b/mozilla/parser/htmlparser/src/nsDTDUtils.h @@ -596,8 +596,8 @@ protected: struct TagList { - PRUint32 mCount; - eHTMLTags mTags[10]; + PRUint32 mCount; + const eHTMLTags *mTags; }; /** diff --git a/mozilla/parser/htmlparser/src/nsElementTable.cpp b/mozilla/parser/htmlparser/src/nsElementTable.cpp index 950a367af91..d717ea7baae 100644 --- a/mozilla/parser/htmlparser/src/nsElementTable.cpp +++ b/mozilla/parser/htmlparser/src/nsElementTable.cpp @@ -50,111 +50,113 @@ Now it's time to list all the html elements all with their capabilities... ******************************************************************************/ +#define DECL_TAG_LIST(name_, list_) \ + static const eHTMLTags name_##list[] = list_; \ + static const TagList name_ = { NS_ARRAY_LENGTH(name_##list), name_##list }; + +#define COMMA , //First, define the set of taglists for tags with special parents... -static const TagList gAParents={1,{eHTMLTag_map}}; -static const TagList gInAddress={1,{eHTMLTag_address}}; -static const TagList gInHead={1,{eHTMLTag_head}}; -static const TagList gInTable={1,{eHTMLTag_table}}; -static const TagList gInHTML={1,{eHTMLTag_html}}; -static const TagList gInBody={1,{eHTMLTag_body}}; -static const TagList gInForm={1,{eHTMLTag_form}}; -static const TagList gInFieldset={1,{eHTMLTag_fieldset}}; -static const TagList gInTR={1,{eHTMLTag_tr}}; -static const TagList gInDL={2,{eHTMLTag_dl,eHTMLTag_body}}; -static const TagList gInFrameset={1,{eHTMLTag_frameset}}; -static const TagList gInNoframes={1,{eHTMLTag_noframes}}; +DECL_TAG_LIST(gAParents,{eHTMLTag_map}) +DECL_TAG_LIST(gInAddress,{eHTMLTag_address}) +DECL_TAG_LIST(gInHead,{eHTMLTag_head}) +DECL_TAG_LIST(gInTable,{eHTMLTag_table}) +DECL_TAG_LIST(gInHTML,{eHTMLTag_html}) +DECL_TAG_LIST(gInBody,{eHTMLTag_body}) +DECL_TAG_LIST(gInForm,{eHTMLTag_form}) +DECL_TAG_LIST(gInFieldset,{eHTMLTag_fieldset}) +DECL_TAG_LIST(gInTR,{eHTMLTag_tr}) +DECL_TAG_LIST(gInDL,{eHTMLTag_dl COMMA eHTMLTag_body}) +DECL_TAG_LIST(gInFrameset,{eHTMLTag_frameset}) +DECL_TAG_LIST(gInNoframes,{eHTMLTag_noframes}) //Removed ADDRESS to solve 24885 -static const TagList gInP={2,{eHTMLTag_span,eHTMLTag_table}}; // added table for bug 43678, removed FORM bug 94269 -static const TagList gOptgroupParents={2,{eHTMLTag_select,eHTMLTag_optgroup}}; -static const TagList gBodyParents={2,{eHTMLTag_html,eHTMLTag_noframes}}; -static const TagList gColParents={2,{eHTMLTag_table,eHTMLTag_colgroup}}; -static const TagList gFramesetParents={2,{eHTMLTag_html,eHTMLTag_frameset}}; -static const TagList gLegendParents={1,{eHTMLTag_fieldset}}; -static const TagList gAreaParent={1,{eHTMLTag_map}}; -static const TagList gParamParents={2,{eHTMLTag_applet,eHTMLTag_object}}; -static const TagList gTRParents={4,{eHTMLTag_tbody,eHTMLTag_tfoot,eHTMLTag_thead,eHTMLTag_table}}; -static const TagList gTREndParents={5,{eHTMLTag_tbody,eHTMLTag_tfoot,eHTMLTag_thead,eHTMLTag_table,eHTMLTag_applet}}; +DECL_TAG_LIST(gInP,{eHTMLTag_span COMMA eHTMLTag_table}) // added table for bug 43678, removed FORM bug 94269 +DECL_TAG_LIST(gOptgroupParents,{eHTMLTag_select COMMA eHTMLTag_optgroup}) +DECL_TAG_LIST(gBodyParents,{eHTMLTag_html COMMA eHTMLTag_noframes}) +DECL_TAG_LIST(gColParents,{eHTMLTag_table COMMA eHTMLTag_colgroup}) +DECL_TAG_LIST(gFramesetParents,{eHTMLTag_html COMMA eHTMLTag_frameset}) +DECL_TAG_LIST(gLegendParents,{eHTMLTag_fieldset}) +DECL_TAG_LIST(gAreaParent,{eHTMLTag_map}) +DECL_TAG_LIST(gParamParents,{eHTMLTag_applet COMMA eHTMLTag_object}) +DECL_TAG_LIST(gTRParents,{eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_thead COMMA eHTMLTag_table}) +DECL_TAG_LIST(gTREndParents,{eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_thead COMMA eHTMLTag_table COMMA eHTMLTag_applet}) //********************************************************************************************* // Next, define the set of taglists for tags with special kids... //********************************************************************************************* -static const TagList gContainsText={4,{eHTMLTag_text,eHTMLTag_newline,eHTMLTag_whitespace,eHTMLTag_entity}}; -static const TagList gUnknownKids={2,{eHTMLTag_html,eHTMLTag_frameset}}; -static const TagList gContainsOpts={3,{eHTMLTag_option,eHTMLTag_optgroup,eHTMLTag_script}}; -static const TagList gContainsParam={1,{eHTMLTag_param}}; -static const TagList gColgroupKids={1,{eHTMLTag_col}}; -static const TagList gAddressKids={1,{eHTMLTag_p}}; -static const TagList gBodyKids={8, {eHTMLTag_dd,eHTMLTag_del,eHTMLTag_dt,eHTMLTag_ins, - eHTMLTag_noscript,eHTMLTag_script,eHTMLTag_li,eHTMLTag_param}}; // Added PARAM for bug 54448 -static const TagList gButtonKids={2,{eHTMLTag_caption,eHTMLTag_legend}}; +DECL_TAG_LIST(gContainsText,{eHTMLTag_text COMMA eHTMLTag_newline COMMA eHTMLTag_whitespace COMMA eHTMLTag_entity}) +DECL_TAG_LIST(gUnknownKids,{eHTMLTag_html COMMA eHTMLTag_frameset}) +DECL_TAG_LIST(gContainsOpts,{eHTMLTag_option COMMA eHTMLTag_optgroup COMMA eHTMLTag_script}) +DECL_TAG_LIST(gContainsParam,{eHTMLTag_param}) +DECL_TAG_LIST(gColgroupKids,{eHTMLTag_col}) +DECL_TAG_LIST(gAddressKids,{eHTMLTag_p}) +DECL_TAG_LIST(gBodyKids,{eHTMLTag_dd COMMA eHTMLTag_del COMMA eHTMLTag_dt COMMA eHTMLTag_ins COMMA eHTMLTag_noscript COMMA eHTMLTag_script COMMA eHTMLTag_li COMMA eHTMLTag_param}) // Added PARAM for bug 54448 +DECL_TAG_LIST(gButtonKids,{eHTMLTag_caption COMMA eHTMLTag_legend}) -static const TagList gDLRootTags={5,{eHTMLTag_body,eHTMLTag_td,eHTMLTag_table,eHTMLTag_applet,eHTMLTag_dd}}; -static const TagList gDLKids={2,{eHTMLTag_dd,eHTMLTag_dt}}; -static const TagList gDTKids={1,{eHTMLTag_dt}}; -static const TagList gFieldsetKids={2,{eHTMLTag_legend,eHTMLTag_text}}; -static const TagList gFontKids={3,{eHTMLTag_legend,eHTMLTag_table,eHTMLTag_text}}; // Added table to fix bug 93365 -static const TagList gFormKids={1,{eHTMLTag_keygen}}; -static const TagList gFramesetKids={3,{eHTMLTag_frame,eHTMLTag_frameset,eHTMLTag_noframes}}; +DECL_TAG_LIST(gDLRootTags,{eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_table COMMA eHTMLTag_applet COMMA eHTMLTag_dd}) +DECL_TAG_LIST(gDLKids,{eHTMLTag_dd COMMA eHTMLTag_dt}) +DECL_TAG_LIST(gDTKids,{eHTMLTag_dt}) +DECL_TAG_LIST(gFieldsetKids,{eHTMLTag_legend COMMA eHTMLTag_text}) +DECL_TAG_LIST(gFontKids,{eHTMLTag_legend COMMA eHTMLTag_table COMMA eHTMLTag_text}) // Added table to fix bug 93365 +DECL_TAG_LIST(gFormKids,{eHTMLTag_keygen}) +DECL_TAG_LIST(gFramesetKids,{eHTMLTag_frame COMMA eHTMLTag_frameset COMMA eHTMLTag_noframes}) -static const TagList gHtmlKids={9,{eHTMLTag_body,eHTMLTag_frameset,eHTMLTag_head,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_noframes,eHTMLTag_script,eHTMLTag_newline,eHTMLTag_whitespace}}; -static const TagList gHeadKids={8,{eHTMLTag_base,eHTMLTag_bgsound,eHTMLTag_link,eHTMLTag_meta,eHTMLTag_script,eHTMLTag_style,eHTMLTag_title,eHTMLTag_noembed}}; +DECL_TAG_LIST(gHtmlKids,{eHTMLTag_body COMMA eHTMLTag_frameset COMMA eHTMLTag_head COMMA eHTMLTag_map COMMA eHTMLTag_noscript COMMA eHTMLTag_noframes COMMA eHTMLTag_script COMMA eHTMLTag_newline COMMA eHTMLTag_whitespace}) +DECL_TAG_LIST(gHeadKids,{eHTMLTag_base COMMA eHTMLTag_bgsound COMMA eHTMLTag_link COMMA eHTMLTag_meta COMMA eHTMLTag_script COMMA eHTMLTag_style COMMA eHTMLTag_title COMMA eHTMLTag_noembed}) -static const TagList gLabelKids={1,{eHTMLTag_span}}; -static const TagList gLIKids={2,{eHTMLTag_ol,eHTMLTag_ul}}; -static const TagList gMapKids={1,{eHTMLTag_area}}; -static const TagList gPreKids={2,{eHTMLTag_hr,eHTMLTag_center}}; //note that CENTER is here for backward compatibility; it's not 4.0 spec. +DECL_TAG_LIST(gLabelKids,{eHTMLTag_span}) +DECL_TAG_LIST(gLIKids,{eHTMLTag_ol COMMA eHTMLTag_ul}) +DECL_TAG_LIST(gMapKids,{eHTMLTag_area}) +DECL_TAG_LIST(gPreKids,{eHTMLTag_hr COMMA eHTMLTag_center}) //note that CENTER is here for backward compatibility; it's not 4.0 spec. -static const TagList gTableKids={9,{eHTMLTag_caption,eHTMLTag_col,eHTMLTag_colgroup,eHTMLTag_form, - eHTMLTag_thead,eHTMLTag_tbody,eHTMLTag_tfoot, - eHTMLTag_map,eHTMLTag_script}};// Removed INPUT - Ref. Bug 20087, 25382 +DECL_TAG_LIST(gTableKids,{eHTMLTag_caption COMMA eHTMLTag_col COMMA eHTMLTag_colgroup COMMA eHTMLTag_form COMMA eHTMLTag_thead COMMA eHTMLTag_tbody COMMA eHTMLTag_tfoot COMMA eHTMLTag_map COMMA eHTMLTag_script})// Removed INPUT - Ref. Bug 20087, 25382 -static const TagList gTableElemKids={7,{eHTMLTag_form,eHTMLTag_map,eHTMLTag_noscript,eHTMLTag_script,eHTMLTag_td,eHTMLTag_th,eHTMLTag_tr}}; -static const TagList gTRKids={4,{eHTMLTag_td,eHTMLTag_th,eHTMLTag_form,eHTMLTag_script}};// Removed INPUT - Ref. Bug 20087, 25382 | Removed MAP to fix 58942 -static const TagList gTBodyKids={2,{eHTMLTag_tr,eHTMLTag_form}}; // Removed INPUT - Ref. Bug 20087, 25382 -static const TagList gULKids={2,{eHTMLTag_li,eHTMLTag_p}}; +DECL_TAG_LIST(gTableElemKids,{eHTMLTag_form COMMA eHTMLTag_map COMMA eHTMLTag_noscript COMMA eHTMLTag_script COMMA eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_tr}) +DECL_TAG_LIST(gTRKids,{eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_form COMMA eHTMLTag_script})// Removed INPUT - Ref. Bug 20087, 25382 | Removed MAP to fix 58942 +DECL_TAG_LIST(gTBodyKids,{eHTMLTag_tr COMMA eHTMLTag_form}) // Removed INPUT - Ref. Bug 20087, 25382 +DECL_TAG_LIST(gULKids,{eHTMLTag_li COMMA eHTMLTag_p}) //********************************************************************************************* // The following tag lists are used to define common set of root notes for the HTML elements... //********************************************************************************************* -static const TagList gRootTags={5,{eHTMLTag_body,eHTMLTag_td,eHTMLTag_table,eHTMLTag_applet,eHTMLTag_select}}; // Added SELECT to fix bug 98645 -static const TagList gTableRootTags={6,{eHTMLTag_applet,eHTMLTag_body,eHTMLTag_dl,eHTMLTag_ol,eHTMLTag_td,eHTMLTag_th}}; -static const TagList gHTMLRootTags={1,{eHTMLTag_unknown}}; +DECL_TAG_LIST(gRootTags,{eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_table COMMA eHTMLTag_applet COMMA eHTMLTag_select}) // Added SELECT to fix bug 98645 +DECL_TAG_LIST(gTableRootTags,{eHTMLTag_applet COMMA eHTMLTag_body COMMA eHTMLTag_dl COMMA eHTMLTag_ol COMMA eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gHTMLRootTags,{eHTMLTag_unknown}) -static const TagList gLIRootTags={8,{eHTMLTag_ul,eHTMLTag_ol,eHTMLTag_dir,eHTMLTag_menu,eHTMLTag_p,eHTMLTag_body,eHTMLTag_td,eHTMLTag_th}}; +DECL_TAG_LIST(gLIRootTags,{eHTMLTag_ul COMMA eHTMLTag_ol COMMA eHTMLTag_dir COMMA eHTMLTag_menu COMMA eHTMLTag_p COMMA eHTMLTag_body COMMA eHTMLTag_td COMMA eHTMLTag_th}) -static const TagList gOLRootTags={5,{eHTMLTag_body,eHTMLTag_li,eHTMLTag_td,eHTMLTag_th,eHTMLTag_select}}; -static const TagList gTDRootTags={6,{eHTMLTag_tr,eHTMLTag_tbody,eHTMLTag_thead,eHTMLTag_tfoot,eHTMLTag_table,eHTMLTag_applet}}; -static const TagList gNoframeRoot={2,{eHTMLTag_body,eHTMLTag_frameset}}; +DECL_TAG_LIST(gOLRootTags,{eHTMLTag_body COMMA eHTMLTag_li COMMA eHTMLTag_td COMMA eHTMLTag_th COMMA eHTMLTag_select}) +DECL_TAG_LIST(gTDRootTags,{eHTMLTag_tr COMMA eHTMLTag_tbody COMMA eHTMLTag_thead COMMA eHTMLTag_tfoot COMMA eHTMLTag_table COMMA eHTMLTag_applet}) +DECL_TAG_LIST(gNoframeRoot,{eHTMLTag_body COMMA eHTMLTag_frameset}) //********************************************************************************************* // The following tag lists are used to define the autoclose properties of the html elements... //********************************************************************************************* -static const TagList gBodyAutoClose={1,{eHTMLTag_head}}; -static const TagList gTBodyAutoClose={5,{eHTMLTag_thead,eHTMLTag_tfoot,eHTMLTag_tbody,eHTMLTag_td,eHTMLTag_th}}; // TD|TH inclusion - Bug# 24112 -static const TagList gCaptionAutoClose={1,{eHTMLTag_tbody}}; -static const TagList gLIAutoClose={2,{eHTMLTag_p,eHTMLTag_li}}; -static const TagList gPAutoClose={2,{eHTMLTag_p,eHTMLTag_li}}; -static const TagList gHRAutoClose={1,{eHTMLTag_p}}; -static const TagList gOLAutoClose={2,{eHTMLTag_p,eHTMLTag_ol}}; -static const TagList gDivAutoClose={1,{eHTMLTag_p}}; +DECL_TAG_LIST(gBodyAutoClose,{eHTMLTag_head}) +DECL_TAG_LIST(gTBodyAutoClose,{eHTMLTag_thead COMMA eHTMLTag_tfoot COMMA eHTMLTag_tbody COMMA eHTMLTag_td COMMA eHTMLTag_th}) // TD|TH inclusion - Bug# 24112 +DECL_TAG_LIST(gCaptionAutoClose,{eHTMLTag_tbody}) +DECL_TAG_LIST(gLIAutoClose,{eHTMLTag_p COMMA eHTMLTag_li}) +DECL_TAG_LIST(gPAutoClose,{eHTMLTag_p COMMA eHTMLTag_li}) +DECL_TAG_LIST(gHRAutoClose,{eHTMLTag_p}) +DECL_TAG_LIST(gOLAutoClose,{eHTMLTag_p COMMA eHTMLTag_ol}) +DECL_TAG_LIST(gDivAutoClose,{eHTMLTag_p}) -static const TagList gHeadingTags={6,{eHTMLTag_h1,eHTMLTag_h2,eHTMLTag_h3,eHTMLTag_h4,eHTMLTag_h5,eHTMLTag_h6}}; +DECL_TAG_LIST(gHeadingTags,{eHTMLTag_h1 COMMA eHTMLTag_h2 COMMA eHTMLTag_h3 COMMA eHTMLTag_h4 COMMA eHTMLTag_h5 COMMA eHTMLTag_h6}) -static const TagList gTableCloseTags={6,{eHTMLTag_td,eHTMLTag_tr,eHTMLTag_th,eHTMLTag_tbody,eHTMLTag_thead,eHTMLTag_tfoot}}; -static const TagList gTRCloseTags={3,{eHTMLTag_tr,eHTMLTag_td,eHTMLTag_th}}; -static const TagList gTDCloseTags={2,{eHTMLTag_td,eHTMLTag_th}}; -static const TagList gDTCloseTags={3,{eHTMLTag_p,eHTMLTag_dd,eHTMLTag_dt}}; -static const TagList gULCloseTags={1,{eHTMLTag_li}}; -static const TagList gULAutoClose={2,{eHTMLTag_p,eHTMLTag_ul}}; //fix bug 50261.. +DECL_TAG_LIST(gTableCloseTags,{eHTMLTag_td COMMA eHTMLTag_tr COMMA eHTMLTag_th COMMA eHTMLTag_tbody COMMA eHTMLTag_thead COMMA eHTMLTag_tfoot}) +DECL_TAG_LIST(gTRCloseTags,{eHTMLTag_tr COMMA eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gTDCloseTags,{eHTMLTag_td COMMA eHTMLTag_th}) +DECL_TAG_LIST(gDTCloseTags,{eHTMLTag_p COMMA eHTMLTag_dd COMMA eHTMLTag_dt}) +DECL_TAG_LIST(gULCloseTags,{eHTMLTag_li}) +DECL_TAG_LIST(gULAutoClose,{eHTMLTag_p COMMA eHTMLTag_ul}) //fix bug 50261.. -static const TagList gExcludableParents={1,{eHTMLTag_pre}}; // Ref Bug 22913 -static const TagList gCaptionExcludableParents={1,{eHTMLTag_td}}; //Ref Bug 26488 +DECL_TAG_LIST(gExcludableParents,{eHTMLTag_pre}) // Ref Bug 22913 +DECL_TAG_LIST(gCaptionExcludableParents,{eHTMLTag_td}) //Ref Bug 26488 //********************************************************************************************* //Lastly, bind tags with their rules, their special parents and special kids.