This commit is contained in:
kipp 1998-07-03 18:40:25 +00:00
Родитель b1fc349927
Коммит c2ebba68ae
4 изменённых файлов: 156 добавлений и 76 удалений

Просмотреть файл

@ -44,7 +44,7 @@ nsHTMLTag NS_TagToEnum(const char* aTagName) {
int middle = (low + high) >> 1;
int result = strcmp(aTagName, tagTable[middle]);
if (result == 0)
return (nsHTMLTag) middle;
return (nsHTMLTag) (middle + 1);
if (result < 0)
high = middle - 1;
else
@ -54,8 +54,44 @@ nsHTMLTag NS_TagToEnum(const char* aTagName) {
}
const char* NS_EnumToTag(nsHTMLTag aTagID) {
if ((unsigned int)aTagID > NS_HTML_TAG_MAX) {
if ((int(aTagID) <= 0) || (int(aTagID) > NS_HTML_TAG_MAX)) {
return 0;
}
return tagTable[(int) aTagID];
return tagTable[int(aTagID) - 1];
}
#ifdef NS_DEBUG
#include <stdio.h>
class nsTestTagTable {
public:
nsTestTagTable() {
const char *tag;
nsHTMLTag id;
// Make sure we can find everything we are supposed to
for (int i = 0; i < NS_HTML_TAG_MAX; i++) {
tag = tagTable[i];
id = NS_TagToEnum(tag);
NS_ASSERTION(id != eHTMLTag_userdefined, "can't find tag id");
const char* check = NS_EnumToTag(id);
NS_ASSERTION(check == tag, "can't map id back to tag");
}
// Make sure we don't find things that aren't there
id = NS_TagToEnum("@");
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
id = NS_TagToEnum("zzzzz");
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
tag = NS_EnumToTag((nsHTMLTag) 0);
NS_ASSERTION(0 == tag, "found enum 0");
tag = NS_EnumToTag((nsHTMLTag) -1);
NS_ASSERTION(0 == tag, "found enum -1");
tag = NS_EnumToTag((nsHTMLTag) (NS_HTML_TAG_MAX + 1));
NS_ASSERTION(0 == tag, "found past max enum");
}
};
nsTestTagTable validateTagTable;
#endif

Просмотреть файл

@ -22,46 +22,50 @@
#define nsHTMLTags_h___
#include "nshtmlpars.h"
enum nsHTMLTag {
eHTMLTag_a=0, eHTMLTag_abbr=1, eHTMLTag_acronym=2, eHTMLTag_address=3,
eHTMLTag_applet=4, eHTMLTag_area=5, eHTMLTag_b=6, eHTMLTag_base=7,
eHTMLTag_basefont=8, eHTMLTag_bdo=9, eHTMLTag_big=10, eHTMLTag_blink=11,
eHTMLTag_blockquote=12, eHTMLTag_body=13, eHTMLTag_br=14,
eHTMLTag_button=15, eHTMLTag_caption=16, eHTMLTag_center=17,
eHTMLTag_cite=18, eHTMLTag_code=19, eHTMLTag_col=20, eHTMLTag_colgroup=21,
eHTMLTag_dd=22, eHTMLTag_del=23, eHTMLTag_dfn=24, eHTMLTag_dir=25,
eHTMLTag_div=26, eHTMLTag_dl=27, eHTMLTag_dt=28, eHTMLTag_em=29,
eHTMLTag_embed=30, eHTMLTag_fieldset=31, eHTMLTag_font=32,
eHTMLTag_form=33, eHTMLTag_frame=34, eHTMLTag_frameset=35, eHTMLTag_h1=36,
eHTMLTag_h2=37, eHTMLTag_h3=38, eHTMLTag_h4=39, eHTMLTag_h5=40,
eHTMLTag_h6=41, eHTMLTag_head=42, eHTMLTag_hr=43, eHTMLTag_html=44,
eHTMLTag_i=45, eHTMLTag_iframe=46, eHTMLTag_ilayer=47, eHTMLTag_img=48,
eHTMLTag_input=49, eHTMLTag_ins=50, eHTMLTag_isindex=51, eHTMLTag_kbd=52,
eHTMLTag_keygen=53, eHTMLTag_label=54, eHTMLTag_layer=55,
eHTMLTag_legend=56, eHTMLTag_li=57, eHTMLTag_link=58, eHTMLTag_listing=59,
eHTMLTag_map=60, eHTMLTag_menu=61, eHTMLTag_meta=62, eHTMLTag_multicol=63,
eHTMLTag_nobr=64, eHTMLTag_noembed=65, eHTMLTag_noframes=66,
eHTMLTag_nolayer=67, eHTMLTag_noscript=68, eHTMLTag_object=69,
eHTMLTag_ol=70, eHTMLTag_optgroup=71, eHTMLTag_option=72, eHTMLTag_p=73,
eHTMLTag_param=74, eHTMLTag_plaintext=75, eHTMLTag_pre=76, eHTMLTag_q=77,
eHTMLTag_s=78, eHTMLTag_samp=79, eHTMLTag_script=80, eHTMLTag_select=81,
eHTMLTag_server=82, eHTMLTag_small=83, eHTMLTag_spacer=84,
eHTMLTag_span=85, eHTMLTag_strike=86, eHTMLTag_strong=87,
eHTMLTag_style=88, eHTMLTag_sub=89, eHTMLTag_sup=90, eHTMLTag_table=91,
eHTMLTag_tbody=92, eHTMLTag_td=93, eHTMLTag_textarea=94, eHTMLTag_tfoot=95,
eHTMLTag_th=96, eHTMLTag_thead=97, eHTMLTag_title=98, eHTMLTag_tr=99,
eHTMLTag_tt=100, eHTMLTag_u=101, eHTMLTag_ul=102, eHTMLTag_var=103,
eHTMLTag_wbr=104, eHTMLTag_xmp=105,
/* this enum must be first and must be zero */
eHTMLTag_unknown=0,
/* begin tag enums */
eHTMLTag_a=1, eHTMLTag_abbr=2, eHTMLTag_acronym=3, eHTMLTag_address=4,
eHTMLTag_applet=5, eHTMLTag_area=6, eHTMLTag_b=7, eHTMLTag_base=8,
eHTMLTag_basefont=9, eHTMLTag_bdo=10, eHTMLTag_big=11, eHTMLTag_blink=12,
eHTMLTag_blockquote=13, eHTMLTag_body=14, eHTMLTag_br=15,
eHTMLTag_button=16, eHTMLTag_caption=17, eHTMLTag_center=18,
eHTMLTag_cite=19, eHTMLTag_code=20, eHTMLTag_col=21, eHTMLTag_colgroup=22,
eHTMLTag_dd=23, eHTMLTag_del=24, eHTMLTag_dfn=25, eHTMLTag_dir=26,
eHTMLTag_div=27, eHTMLTag_dl=28, eHTMLTag_dt=29, eHTMLTag_em=30,
eHTMLTag_embed=31, eHTMLTag_fieldset=32, eHTMLTag_font=33,
eHTMLTag_form=34, eHTMLTag_frame=35, eHTMLTag_frameset=36, eHTMLTag_h1=37,
eHTMLTag_h2=38, eHTMLTag_h3=39, eHTMLTag_h4=40, eHTMLTag_h5=41,
eHTMLTag_h6=42, eHTMLTag_head=43, eHTMLTag_hr=44, eHTMLTag_html=45,
eHTMLTag_i=46, eHTMLTag_iframe=47, eHTMLTag_ilayer=48, eHTMLTag_img=49,
eHTMLTag_input=50, eHTMLTag_ins=51, eHTMLTag_isindex=52, eHTMLTag_kbd=53,
eHTMLTag_keygen=54, eHTMLTag_label=55, eHTMLTag_layer=56,
eHTMLTag_legend=57, eHTMLTag_li=58, eHTMLTag_link=59, eHTMLTag_listing=60,
eHTMLTag_map=61, eHTMLTag_menu=62, eHTMLTag_meta=63, eHTMLTag_multicol=64,
eHTMLTag_nobr=65, eHTMLTag_noembed=66, eHTMLTag_noframes=67,
eHTMLTag_nolayer=68, eHTMLTag_noscript=69, eHTMLTag_object=70,
eHTMLTag_ol=71, eHTMLTag_optgroup=72, eHTMLTag_option=73, eHTMLTag_p=74,
eHTMLTag_param=75, eHTMLTag_plaintext=76, eHTMLTag_pre=77, eHTMLTag_q=78,
eHTMLTag_s=79, eHTMLTag_samp=80, eHTMLTag_script=81, eHTMLTag_select=82,
eHTMLTag_server=83, eHTMLTag_small=84, eHTMLTag_spacer=85,
eHTMLTag_span=86, eHTMLTag_strike=87, eHTMLTag_strong=88,
eHTMLTag_style=89, eHTMLTag_sub=90, eHTMLTag_sup=91, eHTMLTag_table=92,
eHTMLTag_tbody=93, eHTMLTag_td=94, eHTMLTag_textarea=95, eHTMLTag_tfoot=96,
eHTMLTag_th=97, eHTMLTag_thead=98, eHTMLTag_title=99, eHTMLTag_tr=100,
eHTMLTag_tt=101, eHTMLTag_u=102, eHTMLTag_ul=103, eHTMLTag_var=104,
eHTMLTag_wbr=105, eHTMLTag_xmp=106,
/* The remaining enums are not for tags */
eHTMLTag_text=106, eHTMLTag_whitespace=107, eHTMLTag_newline=108,
eHTMLTag_comment=109, eHTMLTag_entity=110, eHTMLTag_userdefined=111,
eHTMLTag_unknown=112, eHTMLTag_secret_h1style=113,
eHTMLTag_secret_h2style=114, eHTMLTag_secret_h3style=115,
eHTMLTag_secret_h4style=116, eHTMLTag_secret_h5style=117,
eHTMLTag_secret_h6style=118
eHTMLTag_text=107, eHTMLTag_whitespace=108, eHTMLTag_newline=109,
eHTMLTag_comment=110, eHTMLTag_entity=111, eHTMLTag_userdefined=112,
eHTMLTag_secret_h1style=113, eHTMLTag_secret_h2style=114,
eHTMLTag_secret_h3style=115, eHTMLTag_secret_h4style=116,
eHTMLTag_secret_h5style=117, eHTMLTag_secret_h6style=118
};
#define NS_HTML_TAG_MAX 106
extern NS_HTMLPARS nsHTMLTag NS_TagToEnum(const char* aTag);
extern NS_HTMLPARS const char* NS_EnumToTag(nsHTMLTag aEnum);
#endif /* nsHTMLTags_h___ */

Просмотреть файл

@ -44,7 +44,7 @@ nsHTMLTag NS_TagToEnum(const char* aTagName) {
int middle = (low + high) >> 1;
int result = strcmp(aTagName, tagTable[middle]);
if (result == 0)
return (nsHTMLTag) middle;
return (nsHTMLTag) (middle + 1);
if (result < 0)
high = middle - 1;
else
@ -54,8 +54,44 @@ nsHTMLTag NS_TagToEnum(const char* aTagName) {
}
const char* NS_EnumToTag(nsHTMLTag aTagID) {
if ((unsigned int)aTagID > NS_HTML_TAG_MAX) {
if ((int(aTagID) <= 0) || (int(aTagID) > NS_HTML_TAG_MAX)) {
return 0;
}
return tagTable[(int) aTagID];
return tagTable[int(aTagID) - 1];
}
#ifdef NS_DEBUG
#include <stdio.h>
class nsTestTagTable {
public:
nsTestTagTable() {
const char *tag;
nsHTMLTag id;
// Make sure we can find everything we are supposed to
for (int i = 0; i < NS_HTML_TAG_MAX; i++) {
tag = tagTable[i];
id = NS_TagToEnum(tag);
NS_ASSERTION(id != eHTMLTag_userdefined, "can't find tag id");
const char* check = NS_EnumToTag(id);
NS_ASSERTION(check == tag, "can't map id back to tag");
}
// Make sure we don't find things that aren't there
id = NS_TagToEnum("@");
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
id = NS_TagToEnum("zzzzz");
NS_ASSERTION(id == eHTMLTag_userdefined, "found @");
tag = NS_EnumToTag((nsHTMLTag) 0);
NS_ASSERTION(0 == tag, "found enum 0");
tag = NS_EnumToTag((nsHTMLTag) -1);
NS_ASSERTION(0 == tag, "found enum -1");
tag = NS_EnumToTag((nsHTMLTag) (NS_HTML_TAG_MAX + 1));
NS_ASSERTION(0 == tag, "found past max enum");
}
};
nsTestTagTable validateTagTable;
#endif

Просмотреть файл

@ -22,46 +22,50 @@
#define nsHTMLTags_h___
#include "nshtmlpars.h"
enum nsHTMLTag {
eHTMLTag_a=0, eHTMLTag_abbr=1, eHTMLTag_acronym=2, eHTMLTag_address=3,
eHTMLTag_applet=4, eHTMLTag_area=5, eHTMLTag_b=6, eHTMLTag_base=7,
eHTMLTag_basefont=8, eHTMLTag_bdo=9, eHTMLTag_big=10, eHTMLTag_blink=11,
eHTMLTag_blockquote=12, eHTMLTag_body=13, eHTMLTag_br=14,
eHTMLTag_button=15, eHTMLTag_caption=16, eHTMLTag_center=17,
eHTMLTag_cite=18, eHTMLTag_code=19, eHTMLTag_col=20, eHTMLTag_colgroup=21,
eHTMLTag_dd=22, eHTMLTag_del=23, eHTMLTag_dfn=24, eHTMLTag_dir=25,
eHTMLTag_div=26, eHTMLTag_dl=27, eHTMLTag_dt=28, eHTMLTag_em=29,
eHTMLTag_embed=30, eHTMLTag_fieldset=31, eHTMLTag_font=32,
eHTMLTag_form=33, eHTMLTag_frame=34, eHTMLTag_frameset=35, eHTMLTag_h1=36,
eHTMLTag_h2=37, eHTMLTag_h3=38, eHTMLTag_h4=39, eHTMLTag_h5=40,
eHTMLTag_h6=41, eHTMLTag_head=42, eHTMLTag_hr=43, eHTMLTag_html=44,
eHTMLTag_i=45, eHTMLTag_iframe=46, eHTMLTag_ilayer=47, eHTMLTag_img=48,
eHTMLTag_input=49, eHTMLTag_ins=50, eHTMLTag_isindex=51, eHTMLTag_kbd=52,
eHTMLTag_keygen=53, eHTMLTag_label=54, eHTMLTag_layer=55,
eHTMLTag_legend=56, eHTMLTag_li=57, eHTMLTag_link=58, eHTMLTag_listing=59,
eHTMLTag_map=60, eHTMLTag_menu=61, eHTMLTag_meta=62, eHTMLTag_multicol=63,
eHTMLTag_nobr=64, eHTMLTag_noembed=65, eHTMLTag_noframes=66,
eHTMLTag_nolayer=67, eHTMLTag_noscript=68, eHTMLTag_object=69,
eHTMLTag_ol=70, eHTMLTag_optgroup=71, eHTMLTag_option=72, eHTMLTag_p=73,
eHTMLTag_param=74, eHTMLTag_plaintext=75, eHTMLTag_pre=76, eHTMLTag_q=77,
eHTMLTag_s=78, eHTMLTag_samp=79, eHTMLTag_script=80, eHTMLTag_select=81,
eHTMLTag_server=82, eHTMLTag_small=83, eHTMLTag_spacer=84,
eHTMLTag_span=85, eHTMLTag_strike=86, eHTMLTag_strong=87,
eHTMLTag_style=88, eHTMLTag_sub=89, eHTMLTag_sup=90, eHTMLTag_table=91,
eHTMLTag_tbody=92, eHTMLTag_td=93, eHTMLTag_textarea=94, eHTMLTag_tfoot=95,
eHTMLTag_th=96, eHTMLTag_thead=97, eHTMLTag_title=98, eHTMLTag_tr=99,
eHTMLTag_tt=100, eHTMLTag_u=101, eHTMLTag_ul=102, eHTMLTag_var=103,
eHTMLTag_wbr=104, eHTMLTag_xmp=105,
/* this enum must be first and must be zero */
eHTMLTag_unknown=0,
/* begin tag enums */
eHTMLTag_a=1, eHTMLTag_abbr=2, eHTMLTag_acronym=3, eHTMLTag_address=4,
eHTMLTag_applet=5, eHTMLTag_area=6, eHTMLTag_b=7, eHTMLTag_base=8,
eHTMLTag_basefont=9, eHTMLTag_bdo=10, eHTMLTag_big=11, eHTMLTag_blink=12,
eHTMLTag_blockquote=13, eHTMLTag_body=14, eHTMLTag_br=15,
eHTMLTag_button=16, eHTMLTag_caption=17, eHTMLTag_center=18,
eHTMLTag_cite=19, eHTMLTag_code=20, eHTMLTag_col=21, eHTMLTag_colgroup=22,
eHTMLTag_dd=23, eHTMLTag_del=24, eHTMLTag_dfn=25, eHTMLTag_dir=26,
eHTMLTag_div=27, eHTMLTag_dl=28, eHTMLTag_dt=29, eHTMLTag_em=30,
eHTMLTag_embed=31, eHTMLTag_fieldset=32, eHTMLTag_font=33,
eHTMLTag_form=34, eHTMLTag_frame=35, eHTMLTag_frameset=36, eHTMLTag_h1=37,
eHTMLTag_h2=38, eHTMLTag_h3=39, eHTMLTag_h4=40, eHTMLTag_h5=41,
eHTMLTag_h6=42, eHTMLTag_head=43, eHTMLTag_hr=44, eHTMLTag_html=45,
eHTMLTag_i=46, eHTMLTag_iframe=47, eHTMLTag_ilayer=48, eHTMLTag_img=49,
eHTMLTag_input=50, eHTMLTag_ins=51, eHTMLTag_isindex=52, eHTMLTag_kbd=53,
eHTMLTag_keygen=54, eHTMLTag_label=55, eHTMLTag_layer=56,
eHTMLTag_legend=57, eHTMLTag_li=58, eHTMLTag_link=59, eHTMLTag_listing=60,
eHTMLTag_map=61, eHTMLTag_menu=62, eHTMLTag_meta=63, eHTMLTag_multicol=64,
eHTMLTag_nobr=65, eHTMLTag_noembed=66, eHTMLTag_noframes=67,
eHTMLTag_nolayer=68, eHTMLTag_noscript=69, eHTMLTag_object=70,
eHTMLTag_ol=71, eHTMLTag_optgroup=72, eHTMLTag_option=73, eHTMLTag_p=74,
eHTMLTag_param=75, eHTMLTag_plaintext=76, eHTMLTag_pre=77, eHTMLTag_q=78,
eHTMLTag_s=79, eHTMLTag_samp=80, eHTMLTag_script=81, eHTMLTag_select=82,
eHTMLTag_server=83, eHTMLTag_small=84, eHTMLTag_spacer=85,
eHTMLTag_span=86, eHTMLTag_strike=87, eHTMLTag_strong=88,
eHTMLTag_style=89, eHTMLTag_sub=90, eHTMLTag_sup=91, eHTMLTag_table=92,
eHTMLTag_tbody=93, eHTMLTag_td=94, eHTMLTag_textarea=95, eHTMLTag_tfoot=96,
eHTMLTag_th=97, eHTMLTag_thead=98, eHTMLTag_title=99, eHTMLTag_tr=100,
eHTMLTag_tt=101, eHTMLTag_u=102, eHTMLTag_ul=103, eHTMLTag_var=104,
eHTMLTag_wbr=105, eHTMLTag_xmp=106,
/* The remaining enums are not for tags */
eHTMLTag_text=106, eHTMLTag_whitespace=107, eHTMLTag_newline=108,
eHTMLTag_comment=109, eHTMLTag_entity=110, eHTMLTag_userdefined=111,
eHTMLTag_unknown=112, eHTMLTag_secret_h1style=113,
eHTMLTag_secret_h2style=114, eHTMLTag_secret_h3style=115,
eHTMLTag_secret_h4style=116, eHTMLTag_secret_h5style=117,
eHTMLTag_secret_h6style=118
eHTMLTag_text=107, eHTMLTag_whitespace=108, eHTMLTag_newline=109,
eHTMLTag_comment=110, eHTMLTag_entity=111, eHTMLTag_userdefined=112,
eHTMLTag_secret_h1style=113, eHTMLTag_secret_h2style=114,
eHTMLTag_secret_h3style=115, eHTMLTag_secret_h4style=116,
eHTMLTag_secret_h5style=117, eHTMLTag_secret_h6style=118
};
#define NS_HTML_TAG_MAX 106
extern NS_HTMLPARS nsHTMLTag NS_TagToEnum(const char* aTag);
extern NS_HTMLPARS const char* NS_EnumToTag(nsHTMLTag aEnum);
#endif /* nsHTMLTags_h___ */