⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 impl.h

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 H
字号:
// UTILStypedef struct List List;typedef struct Strlist Strlist;// List of integers (and also generic list with next pointer at beginning)struct List{	List*	next;	int	val;};struct Strlist{	Strlist*	next;	Rune*	val;};extern int		_inclass(Rune c, Rune* cl);extern int		_listlen(List* l);extern Rune*	_ltoStr(int n);extern List*	_newlist(int val, List* rest);extern Rune*	_newstr(int n);extern int		_prefix(Rune* pre, Rune* s);extern List*	_revlist(List* l);extern void	_splitl(Rune* s, int n, Rune* cl, Rune** p1, int* n1, Rune** p2, int* n2);extern void	_splitr(Rune* s, int n, Rune* cl, Rune** p1, int* n1, Rune** p2, int* n2);extern int		_splitall(Rune* s, int n, Rune* cl, Rune** strarr, int* lenarr, int alen);extern Rune*	_Stradd(Rune*s1, Rune* s2, int n);extern Rune*	_Strclass(Rune* s, Rune* cl);extern int		_Strcmp(Rune* s1, Rune* s2);extern Rune*	_Strdup(Rune* s);extern Rune*	_Strdup2(Rune* s, Rune* t);extern int		_Streqn(Rune* s1, int n1, Rune* s2);extern int		_Strlen(Rune* s);extern Rune*	_Strnclass(Rune* s, Rune* cl, int n);extern int		_Strncmpci(Rune* s1, int n1, Rune* s2);extern Rune*	_Strndup(Rune* s, int n);extern Rune*	_Strnrclass(Rune* s, Rune* cl, int n);extern Rune*	_Strrclass(Rune* s, Rune* cl);extern Rune*	_Strsubstr(Rune* s, int start, int stop);extern long	_Strtol(Rune* s, Rune** eptr, int base);extern void	_trimwhite(Rune* s, int n, Rune** pans, int* panslen);extern Rune*	notwhitespace;extern Rune*	whitespace;// STRINTTABtypedef struct StringInt StringInt;// Element of String-Int table (used for keyword lookup)struct StringInt{	Rune*	key;	int		val;};extern int			_lookup(StringInt* t, int n, Rune* key, int keylen, int* pans);extern StringInt*	_makestrinttab(Rune** a, int n);extern Rune*		_revlookup(StringInt* t, int n, int val);// Colors, in html format, not Plan 9 format.  (RGB values in bottom 3 bytes)enum {	White = 0xFFFFFF,	Black = 0x000000,	Blue = 0x0000CC,};// LEX// HTML 4.0 tags (plus blink, nobr)// sorted in lexical order; used as array indicesenum {	Notfound,	Comment,	Ta, Tabbr, Tacronym, Taddress, Tapplet, Tarea,	Tb, Tbase, Tbasefont, Tbdo, Tbig, Tblink,	Tblockquote, Tbody, Tbq, Tbr, Tbutton,	Tcaption, Tcenter, Tcite, Tcode, Tcol, Tcolgroup,	Tdd, Tdel, Tdfn, Tdir, Tdiv, Tdl, Tdt,	Tem,	Tfieldset, Tfont, Tform, Tframe, Tframeset,	Th1, Th2, Th3, Th4, Th5, Th6,	Thead, Thr, Thtml,	Ti, Tiframe, Timg, Tinput, Tins, Tisindex,	Tkbd,	Tlabel, Tlegend, Tli, Tlink,	Tmap, Tmenu, Tmeta,	Tnobr, Tnoframes, Tnoscript,	Tobject, Tol, Toptgroup, Toption,	Tp, Tparam, Tpre,	Tq,	Ts, Tsamp, Tscript, Tselect, Tsmall,	Tspan, Tstrike, Tstrong, Tstyle, Tsub, Tsup,	Ttable, Ttbody, Ttd, Ttextarea, Ttfoot,	Tth, Tthead, Ttitle, Ttr, Ttt,	Tu, Tul,	Tvar,	Numtags,	RBRA = Numtags,	Data = Numtags+RBRA};// HTML 4.0 tag attributes// Keep sorted in lexical orderenum {	Aabbr, Aaccept_charset, Aaccess_key, Aaction,	Aalign, Aalink, Aalt, Aarchive, Aaxis,	Abackground, Abgcolor, Aborder,	Acellpadding, Acellspacing, Achar, Acharoff,	Acharset, Achecked, Acite, Aclass, Aclassid,	Aclear, Acode, Acodebase, Acodetype, Acolor,	Acols, Acolspan, Acompact, Acontent, Acoords,	Adata, Adatetime, Adeclare, Adefer, Adir, Adisabled,	Aenctype,	Aface, Afor, Aframe, Aframeborder,	Aheaders, Aheight, Ahref, Ahreflang, Ahspace, Ahttp_equiv,	Aid, Aismap,	Alabel, Alang, Alink, Alongdesc,	Amarginheight, Amarginwidth, Amaxlength,	Amedia, Amethod, Amultiple,	Aname, Anohref, Anoresize, Anoshade, Anowrap,	Aobject, Aonblur, Aonchange, Aonclick, Aondblclick,	Aonfocus, Aonkeypress, Aonkeyup, Aonload,	Aonmousedown, Aonmousemove, Aonmouseout,	Aonmouseover, Aonmouseup, Aonreset, Aonselect,	Aonsubmit, Aonunload,	Aprofile, Aprompt,	Areadonly, Arel, Arev, Arows, Arowspan, Arules,	Ascheme, Ascope, Ascrolling, Aselected, Ashape,	Asize, Aspan, Asrc, Astandby, Astart, Astyle, Asummary,	Atabindex, Atarget, Atext, Atitle, Atype,	Ausemap,	Avalign, Avalue, Avaluetype, Aversion, Avlink, Avspace,	Awidth,	Numattrs};struct Attr{	Attr*		next;		// in list of attrs for a token	int		attid;		// Aabbr, etc.	Rune*	value;};struct Token{	int		tag;		// Ta, etc	Rune*	text;		// text in Data, attribute text in tag	Attr*		attr;		// list of Attrs	int		starti;	// index into source buffer of token start};extern Rune*	tagnames[];extern Rune*	attrnames[];extern void	_freetokens(Token* tarray, int n);extern Token*	_gettoks(uchar* data, int datalen, int chset, int mtype, int* plen);extern int		_tokaval(Token* t, int attid, Rune** pans, int xfer);#pragma varargck	type "T"	Token*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -