[질문] 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
댓글 달기