[질문] dillo 소스 분석 하신분?
글쓴이: bosub / 작성시간: 토, 2006/01/21 - 11:38오전
Dillo-0-8-5 소스를 보게 되면
HTML.c 소스에서
static const TagInfo Tags[] 구조체 배열이 있습니다.
struct _TagInfo{ gchar *name; unsigned char Flags; gchar EndTag; guchar TagLevel; TagOpenFunct open; TagCloseFunct close; }; static const TagInfo Tags[] = { {"b", B8(010101),'R',2, Html_tag_open_b, Html_tag_close_default}, /* basefont 010001 */ /* bdo 010101 */ {"body", B8(011110),'O',7, Html_tag_open_body, Html_tag_close_body}, {"br", B8(010001),'F',0, Html_tag_open_br, Html_tag_close_default}, {"button", B8(011101),'R',2, Html_tag_open_button, Html_tag_close_default}, /* caption */ {"center", B8(011110),'R',2, Html_tag_open_center, Html_tag_close_div}, /* col 010010 'F' */ /* colgroup */ {"dd", B8(011110),'O',1, Html_tag_open_dd, Html_tag_close_par}, {"del", B8(011101),'R',2, Html_tag_open_strike, Html_tag_close_default}, {"dfn", B8(010101),'R',2, Html_tag_open_dfn, Html_tag_close_default}, /* dir 011010 */ /* todo: complete <div> support! */ {"div", B8(011110),'R',2, Html_tag_open_div, Html_tag_close_div}, /* fieldset */ {"font", B8(010101),'R',2, Html_tag_open_font, Html_tag_close_default}, {"form", B8(011110),'R',2, Html_tag_open_form, Html_tag_close_form}, {"frame", B8(010010),'F',0, Html_tag_open_frame, Html_tag_close_default}, {"frameset", B8(011110),'R',2,Html_tag_open_frameset, Html_tag_close_default}, {"h1", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h2", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h3", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h4", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h5", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"h6", B8(010110),'R',2, Html_tag_open_h, Html_tag_close_h}, {"head", B8(101101),'O',1, Html_tag_open_head, Html_tag_close_head}, {"hr", B8(010010),'F',0, Html_tag_open_hr, Html_tag_close_default}, {"html", B8(001110),'O',8, Html_tag_open_html, Html_tag_close_html}, {"i", B8(010101),'R',2, Html_tag_open_i, Html_tag_close_default}, {"iframe", B8(011110),'R',2, Html_tag_open_frame, Html_tag_close_default}, {"img", B8(010001),'F',0, Html_tag_open_img, Html_tag_close_default}, {"input", B8(010001),'F',0, Html_tag_open_input, Html_tag_close_default}, /* menu 1010 -- todo: not exactly 1010, it can contain LI and inline */ {"meta", B8(100001),'F',0, Html_tag_open_meta, Html_tag_close_default}, /* optgroup */ {"p", B8(010110),'O',1, Html_tag_open_p, Html_tag_close_par}, /* param 010001 'F' */ {"pre", B8(010110),'R',2, Html_tag_open_pre, Html_tag_close_pre}, /* q 010101 */ {"script", B8(111001),'R',2, Html_tag_open_script, Html_tag_close_script}, {"select", B8(011001),'R',2, Html_tag_open_select, Html_tag_close_select}, /* span 0101 */ {"strike", B8(010101),'R',2, Html_tag_open_strike, Html_tag_close_default}, {"strong", B8(010101),'R',2, Html_tag_open_strong, Html_tag_close_default}, {"style", B8(100101),'R',2, Html_tag_open_style, Html_tag_close_style}, {"sub", B8(010101),'R',2, Html_tag_open_sub, Html_tag_close_default}, {"sup", B8(010101),'R',2, Html_tag_open_sup, Html_tag_close_default}, {"table", B8(011010),'R',5, Html_tag_open_table, Html_tag_close_div}, /* tbody */ {"td", B8(011110),'O',3, Html_tag_open_td, Html_tag_close_default}, {"textarea", B8(010101),'R',2,Html_tag_open_textarea,Html_tag_close_textarea}, /* tfoot */ {"th", B8(011110),'O',1, Html_tag_open_th, Html_tag_close_default}, /* thead */ {"title", B8(100101),'R',2, Html_tag_open_title, Html_tag_close_title}, {"tr", B8(011010),'O',4, Html_tag_open_tr, Html_tag_close_default}, {"tt", B8(010101),'R',2, Html_tag_open_tt, Html_tag_close_default}, {"u", B8(010101),'R',2, Html_tag_open_u, Html_tag_close_default}, {"ul", B8(011010),'R',2, Html_tag_open_ul, Html_tag_close_par}, {"var", B8(010101),'R',2, Html_tag_open_var, Html_tag_close_default} };
여기서
* {"address", B8(010110), ...} * |||||`- inline element * ||||`-- block element * |||`--- inline container * ||`---- block container * |`----- body element * `------ head element
구조체 flags 필드의 의미는 무엇인가요?
inline element, block element, inline container, block container
Forums:
http://bbs.kldp.org/viewtopic.php?p=3202
http://bbs.kldp.org/viewtopic.php?p=320228#320228
댓글 달기