Blame


1 7cf289ca 2004-04-06 devnull
2 cbeb0b26 2006-04-01 devnull /* UTILS */
3 7cf289ca 2004-04-06 devnull typedef struct List List;
4 7cf289ca 2004-04-06 devnull typedef struct Strlist Strlist;
5 7cf289ca 2004-04-06 devnull
6 cbeb0b26 2006-04-01 devnull /* List of integers (and also generic list with next pointer at beginning) */
7 7cf289ca 2004-04-06 devnull struct List
8 7cf289ca 2004-04-06 devnull {
9 7cf289ca 2004-04-06 devnull List* next;
10 7cf289ca 2004-04-06 devnull int val;
11 7cf289ca 2004-04-06 devnull };
12 7cf289ca 2004-04-06 devnull
13 7cf289ca 2004-04-06 devnull struct Strlist
14 7cf289ca 2004-04-06 devnull {
15 7cf289ca 2004-04-06 devnull Strlist* next;
16 7cf289ca 2004-04-06 devnull Rune* val;
17 7cf289ca 2004-04-06 devnull };
18 7cf289ca 2004-04-06 devnull
19 7cf289ca 2004-04-06 devnull extern int _inclass(Rune c, Rune* cl);
20 7cf289ca 2004-04-06 devnull extern int _listlen(List* l);
21 7cf289ca 2004-04-06 devnull extern Rune* _ltoStr(int n);
22 7cf289ca 2004-04-06 devnull extern List* _newlist(int val, List* rest);
23 7cf289ca 2004-04-06 devnull extern Rune* _newstr(int n);
24 7cf289ca 2004-04-06 devnull extern int _prefix(Rune* pre, Rune* s);
25 7cf289ca 2004-04-06 devnull extern List* _revlist(List* l);
26 7cf289ca 2004-04-06 devnull extern void _splitl(Rune* s, int n, Rune* cl, Rune** p1, int* n1, Rune** p2, int* n2);
27 7cf289ca 2004-04-06 devnull extern void _splitr(Rune* s, int n, Rune* cl, Rune** p1, int* n1, Rune** p2, int* n2);
28 7cf289ca 2004-04-06 devnull extern int _splitall(Rune* s, int n, Rune* cl, Rune** strarr, int* lenarr, int alen);
29 7cf289ca 2004-04-06 devnull extern Rune* _Stradd(Rune*s1, Rune* s2, int n);
30 7cf289ca 2004-04-06 devnull extern Rune* _Strclass(Rune* s, Rune* cl);
31 7cf289ca 2004-04-06 devnull extern int _Strcmp(Rune* s1, Rune* s2);
32 7cf289ca 2004-04-06 devnull extern Rune* _Strdup(Rune* s);
33 7cf289ca 2004-04-06 devnull extern Rune* _Strdup2(Rune* s, Rune* t);
34 7cf289ca 2004-04-06 devnull extern int _Streqn(Rune* s1, int n1, Rune* s2);
35 7cf289ca 2004-04-06 devnull extern int _Strlen(Rune* s);
36 7cf289ca 2004-04-06 devnull extern Rune* _Strnclass(Rune* s, Rune* cl, int n);
37 7cf289ca 2004-04-06 devnull extern int _Strncmpci(Rune* s1, int n1, Rune* s2);
38 7cf289ca 2004-04-06 devnull extern Rune* _Strndup(Rune* s, int n);
39 7cf289ca 2004-04-06 devnull extern Rune* _Strnrclass(Rune* s, Rune* cl, int n);
40 7cf289ca 2004-04-06 devnull extern Rune* _Strrclass(Rune* s, Rune* cl);
41 7cf289ca 2004-04-06 devnull extern Rune* _Strsubstr(Rune* s, int start, int stop);
42 7cf289ca 2004-04-06 devnull extern long _Strtol(Rune* s, Rune** eptr, int base);
43 7cf289ca 2004-04-06 devnull extern void _trimwhite(Rune* s, int n, Rune** pans, int* panslen);
44 7cf289ca 2004-04-06 devnull
45 7cf289ca 2004-04-06 devnull extern Rune notwhitespace[];
46 7cf289ca 2004-04-06 devnull extern Rune whitespace[];
47 7cf289ca 2004-04-06 devnull
48 cbeb0b26 2006-04-01 devnull /* STRINTTAB */
49 7cf289ca 2004-04-06 devnull typedef struct StringInt StringInt;
50 7cf289ca 2004-04-06 devnull
51 cbeb0b26 2006-04-01 devnull /* Element of String-Int table (used for keyword lookup) */
52 7cf289ca 2004-04-06 devnull struct StringInt
53 7cf289ca 2004-04-06 devnull {
54 7cf289ca 2004-04-06 devnull Rune* key;
55 7cf289ca 2004-04-06 devnull int val;
56 7cf289ca 2004-04-06 devnull };
57 7cf289ca 2004-04-06 devnull
58 7cf289ca 2004-04-06 devnull extern int _lookup(StringInt* t, int n, Rune* key, int keylen, int* pans);
59 7cf289ca 2004-04-06 devnull extern StringInt* _makestrinttab(Rune** a, int n);
60 7cf289ca 2004-04-06 devnull extern Rune* _revlookup(StringInt* t, int n, int val);
61 7cf289ca 2004-04-06 devnull
62 cbeb0b26 2006-04-01 devnull /* Colors, in html format, not Plan 9 format. (RGB values in bottom 3 bytes) */
63 7cf289ca 2004-04-06 devnull enum {
64 7cf289ca 2004-04-06 devnull White = 0xFFFFFF,
65 7cf289ca 2004-04-06 devnull Black = 0x000000,
66 cbeb0b26 2006-04-01 devnull Blue = 0x0000CC
67 7cf289ca 2004-04-06 devnull };
68 7cf289ca 2004-04-06 devnull
69 cbeb0b26 2006-04-01 devnull /* LEX */
70 7cf289ca 2004-04-06 devnull
71 cbeb0b26 2006-04-01 devnull /* HTML 4.0 tags (plus blink, nobr) */
72 cbeb0b26 2006-04-01 devnull /* sorted in lexical order; used as array indices */
73 7cf289ca 2004-04-06 devnull enum {
74 7cf289ca 2004-04-06 devnull Notfound,
75 7cf289ca 2004-04-06 devnull Comment,
76 7cf289ca 2004-04-06 devnull Ta, Tabbr, Tacronym, Taddress, Tapplet, Tarea,
77 7cf289ca 2004-04-06 devnull Tb, Tbase, Tbasefont, Tbdo, Tbig, Tblink,
78 7cf289ca 2004-04-06 devnull Tblockquote, Tbody, Tbq, Tbr, Tbutton,
79 7cf289ca 2004-04-06 devnull Tcaption, Tcenter, Tcite, Tcode, Tcol, Tcolgroup,
80 7cf289ca 2004-04-06 devnull Tdd, Tdel, Tdfn, Tdir, Tdiv, Tdl, Tdt,
81 7cf289ca 2004-04-06 devnull Tem,
82 7cf289ca 2004-04-06 devnull Tfieldset, Tfont, Tform, Tframe, Tframeset,
83 7cf289ca 2004-04-06 devnull Th1, Th2, Th3, Th4, Th5, Th6,
84 7cf289ca 2004-04-06 devnull Thead, Thr, Thtml,
85 7cf289ca 2004-04-06 devnull Ti, Tiframe, Timg, Tinput, Tins, Tisindex,
86 7cf289ca 2004-04-06 devnull Tkbd,
87 7cf289ca 2004-04-06 devnull Tlabel, Tlegend, Tli, Tlink,
88 7cf289ca 2004-04-06 devnull Tmap, Tmenu, Tmeta,
89 7cf289ca 2004-04-06 devnull Tnobr, Tnoframes, Tnoscript,
90 7cf289ca 2004-04-06 devnull Tobject, Tol, Toptgroup, Toption,
91 7cf289ca 2004-04-06 devnull Tp, Tparam, Tpre,
92 7cf289ca 2004-04-06 devnull Tq,
93 7cf289ca 2004-04-06 devnull Ts, Tsamp, Tscript, Tselect, Tsmall,
94 7cf289ca 2004-04-06 devnull Tspan, Tstrike, Tstrong, Tstyle, Tsub, Tsup,
95 7cf289ca 2004-04-06 devnull Ttable, Ttbody, Ttd, Ttextarea, Ttfoot,
96 7cf289ca 2004-04-06 devnull Tth, Tthead, Ttitle, Ttr, Ttt,
97 7cf289ca 2004-04-06 devnull Tu, Tul,
98 7cf289ca 2004-04-06 devnull Tvar,
99 7cf289ca 2004-04-06 devnull Numtags,
100 7cf289ca 2004-04-06 devnull RBRA = Numtags,
101 7cf289ca 2004-04-06 devnull Data = Numtags+RBRA
102 7cf289ca 2004-04-06 devnull };
103 7cf289ca 2004-04-06 devnull
104 cbeb0b26 2006-04-01 devnull /* HTML 4.0 tag attributes */
105 cbeb0b26 2006-04-01 devnull /* Keep sorted in lexical order */
106 7cf289ca 2004-04-06 devnull enum {
107 7cf289ca 2004-04-06 devnull Aabbr, Aaccept_charset, Aaccess_key, Aaction,
108 7cf289ca 2004-04-06 devnull Aalign, Aalink, Aalt, Aarchive, Aaxis,
109 7cf289ca 2004-04-06 devnull Abackground, Abgcolor, Aborder,
110 7cf289ca 2004-04-06 devnull Acellpadding, Acellspacing, Achar, Acharoff,
111 7cf289ca 2004-04-06 devnull Acharset, Achecked, Acite, Aclass, Aclassid,
112 7cf289ca 2004-04-06 devnull Aclear, Acode, Acodebase, Acodetype, Acolor,
113 7cf289ca 2004-04-06 devnull Acols, Acolspan, Acompact, Acontent, Acoords,
114 7cf289ca 2004-04-06 devnull Adata, Adatetime, Adeclare, Adefer, Adir, Adisabled,
115 7cf289ca 2004-04-06 devnull Aenctype,
116 7cf289ca 2004-04-06 devnull Aface, Afor, Aframe, Aframeborder,
117 7cf289ca 2004-04-06 devnull Aheaders, Aheight, Ahref, Ahreflang, Ahspace, Ahttp_equiv,
118 7cf289ca 2004-04-06 devnull Aid, Aismap,
119 7cf289ca 2004-04-06 devnull Alabel, Alang, Alink, Alongdesc,
120 7cf289ca 2004-04-06 devnull Amarginheight, Amarginwidth, Amaxlength,
121 7cf289ca 2004-04-06 devnull Amedia, Amethod, Amultiple,
122 7cf289ca 2004-04-06 devnull Aname, Anohref, Anoresize, Anoshade, Anowrap,
123 7cf289ca 2004-04-06 devnull Aobject, Aonblur, Aonchange, Aonclick, Aondblclick,
124 7cf289ca 2004-04-06 devnull Aonfocus, Aonkeypress, Aonkeyup, Aonload,
125 7cf289ca 2004-04-06 devnull Aonmousedown, Aonmousemove, Aonmouseout,
126 7cf289ca 2004-04-06 devnull Aonmouseover, Aonmouseup, Aonreset, Aonselect,
127 7cf289ca 2004-04-06 devnull Aonsubmit, Aonunload,
128 7cf289ca 2004-04-06 devnull Aprofile, Aprompt,
129 7cf289ca 2004-04-06 devnull Areadonly, Arel, Arev, Arows, Arowspan, Arules,
130 7cf289ca 2004-04-06 devnull Ascheme, Ascope, Ascrolling, Aselected, Ashape,
131 7cf289ca 2004-04-06 devnull Asize, Aspan, Asrc, Astandby, Astart, Astyle, Asummary,
132 7cf289ca 2004-04-06 devnull Atabindex, Atarget, Atext, Atitle, Atype,
133 7cf289ca 2004-04-06 devnull Ausemap,
134 7cf289ca 2004-04-06 devnull Avalign, Avalue, Avaluetype, Aversion, Avlink, Avspace,
135 7cf289ca 2004-04-06 devnull Awidth,
136 7cf289ca 2004-04-06 devnull Numattrs
137 7cf289ca 2004-04-06 devnull };
138 7cf289ca 2004-04-06 devnull
139 7cf289ca 2004-04-06 devnull struct Attr
140 7cf289ca 2004-04-06 devnull {
141 cbeb0b26 2006-04-01 devnull Attr* next; /* in list of attrs for a token */
142 cbeb0b26 2006-04-01 devnull int attid; /* Aabbr, etc. */
143 7cf289ca 2004-04-06 devnull Rune* value;
144 7cf289ca 2004-04-06 devnull };
145 7cf289ca 2004-04-06 devnull
146 7cf289ca 2004-04-06 devnull struct Token
147 7cf289ca 2004-04-06 devnull {
148 cbeb0b26 2006-04-01 devnull int tag; /* Ta, etc */
149 cbeb0b26 2006-04-01 devnull Rune* text; /* text in Data, attribute text in tag */
150 cbeb0b26 2006-04-01 devnull Attr* attr; /* list of Attrs */
151 cbeb0b26 2006-04-01 devnull int starti; /* index into source buffer of token start */
152 7cf289ca 2004-04-06 devnull };
153 7cf289ca 2004-04-06 devnull
154 7cf289ca 2004-04-06 devnull extern Rune** tagnames;
155 7cf289ca 2004-04-06 devnull extern Rune** attrnames;
156 7cf289ca 2004-04-06 devnull
157 7cf289ca 2004-04-06 devnull extern void _freetokens(Token* tarray, int n);
158 7cf289ca 2004-04-06 devnull extern Token* _gettoks(uchar* data, int datalen, int chset, int mtype, int* plen);
159 7cf289ca 2004-04-06 devnull extern int _tokaval(Token* t, int attid, Rune** pans, int xfer);
160 7cf289ca 2004-04-06 devnull
161 650deb79 2004-04-08 devnull /* #pragma varargck type "T" Token* */
162 7cf289ca 2004-04-06 devnull
163 7cf289ca 2004-04-06 devnull #include "runetab.h"