Use HTML for Holyc files as well
This commit is contained in:
parent
f2549e8d64
commit
152be33191
48
Copy.HC
48
Copy.HC
@ -4,11 +4,7 @@ U8 *FilenameToURL(U8 *filename, I64 line)
|
||||
{
|
||||
filename[StrLen(filename) - 2] = NULL;
|
||||
|
||||
U8 *htmlext = "";
|
||||
if (StrMatch(".DD", filename))
|
||||
htmlext = ".HTML";
|
||||
|
||||
return MStrPrint("/Wb%s%s#l%d", filename + 2, htmlext, line);
|
||||
return MStrPrint("/Wb%s.HTML#l%d", filename + 2, line);
|
||||
}
|
||||
|
||||
U8 *LinkCvt(U8 *link_st)
|
||||
@ -56,7 +52,7 @@ CDirEntry *start_entry = FilesFind(
|
||||
CDirEntry *entry = start_entry;
|
||||
|
||||
U8 *html_header =
|
||||
"<!DOCTYPEhtml>\n"
|
||||
"<!DOCTYPE html>\n"
|
||||
"<html lang=\"en\">\n"
|
||||
"<head>\n"
|
||||
"<meta charset=\"UTF-8\">\n"
|
||||
@ -73,34 +69,26 @@ Del("C:/Home/Src", FALSE, TRUE);
|
||||
|
||||
do {
|
||||
|
||||
U8 *new_name = MAlloc(2 * StrLen(entry->full_name));
|
||||
U8 *new_name = MAlloc(2 *StrLen(entry->full_name));
|
||||
StrPrint(new_name, "/Home/Src%s", entry->full_name + 2);
|
||||
|
||||
if (StrMatch(".DD", entry->full_name)) {
|
||||
FileExtRem(new_name);
|
||||
CatPrint(new_name, ".DD.HTML");
|
||||
} else {
|
||||
new_name[StrLen(new_name) - 2] = NULL;
|
||||
}
|
||||
new_name[StrLen(new_name) - 2] = NULL;
|
||||
CatPrint(new_name, ".HTML");
|
||||
|
||||
if (StrMatch(".DD", entry->full_name)) {
|
||||
ToHtml(
|
||||
entry->full_name,
|
||||
new_name,
|
||||
html_header,
|
||||
body_header,
|
||||
NULL,
|
||||
NULL,
|
||||
80,
|
||||
TRUE,
|
||||
&LinkCvt,
|
||||
);
|
||||
ToHtml(
|
||||
entry->full_name,
|
||||
new_name,
|
||||
html_header,
|
||||
body_header,
|
||||
NULL,
|
||||
NULL,
|
||||
80,
|
||||
TRUE,
|
||||
&LinkCvt,
|
||||
);
|
||||
|
||||
Print("%s -> %s\n", entry->full_name, new_name);
|
||||
|
||||
Print("%s -> %s\n", entry->full_name, new_name);
|
||||
} else {
|
||||
Copy(entry->full_name, new_name);
|
||||
}
|
||||
|
||||
} while (entry = entry->next);
|
||||
|
||||
DirTreeDel(start_entry);
|
||||
|
||||
@ -23,24 +23,31 @@
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($name, '.DD.HTML')">
|
||||
<xsl:when test="contains($name, '.HTML')">
|
||||
<a href="{$name}" style="color: #5555ff;"><xsl:value-of select="substring-before($name, '.HTML')"/></a>
|
||||
<br/>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($name, '.')">
|
||||
<a href="{$name}" style="color: #5555ff;"><xsl:value-of select="."/></a>
|
||||
</xsl:when>
|
||||
<xsl:when test="contains($name, '.HC')"></xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<a href="{$name}" style="color: #aa00aa;">+] <xsl:value-of select="."/></a>
|
||||
<xsl:choose>
|
||||
<xsl:when test="contains($name, '.')">
|
||||
<a href="{$name}" style="color: #5555ff;"><xsl:value-of select="."/></a>
|
||||
<br/>
|
||||
</xsl:when>
|
||||
|
||||
<xsl:otherwise>
|
||||
<a href="{$name}" style="color: #aa00aa;">+] <xsl:value-of select="."/></a>
|
||||
<br/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<br/>
|
||||
</xsl:for-each>
|
||||
</pre>
|
||||
</body>
|
||||
|
||||
283
public/Wb/Adam/ABlkDev/ADskA.HC.HTML
Executable file
283
public/Wb/Adam/ABlkDev/ADskA.HC.HTML
Executable file
@ -0,0 +1,283 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DBlk</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> blk,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l3"></a>{</span><span class=cF2>//Dump disk block. Optionally, write.</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>//If you set write to TRUE, the block will</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l6"></a> </span><span class=cF2>//See </span><a href="/Wb/Demo/Dsk/DskRaw.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/DskRaw.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l7"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l8"></a>
|
||||
<a name="l9"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,blk,1);
|
||||
<a name="l10"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (write) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l12"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l13"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) {
|
||||
<a name="l14"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l15"></a> </span><span class=cF5>BlkWrite</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,blk,1);
|
||||
<a name="l16"></a> }
|
||||
<a name="l17"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l18"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DClus</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> c,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> num=0)
|
||||
<a name="l22"></a>{</span><span class=cF2>//Dump disk clus. Optionally, write.</span><span class=cF0>
|
||||
<a name="l23"></a></span><span class=cF2>//If you set write to TRUE, the clus will</span><span class=cF0>
|
||||
<a name="l24"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF2>//See </span><a href="/Wb/Demo/Dsk/DskRaw.HC.HTML#l1"><span class=cF4>::/Demo/Dsk/DskRaw.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l26"></a> </span><span class=cF2>//Do </span><a href="/Wb/Kernel/BlkDev/DskDirB.HC.HTML#l102"><span class=cF4>Dir</span></a><span class=cF2>("*",TRUE); to get clus numbers of files.</span><span class=cF0>
|
||||
<a name="l27"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l28"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,c,num);
|
||||
<a name="l29"></a> </span><span class=cF5>ClusRead</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,c,1);
|
||||
<a name="l30"></a> </span><span class=cF6>"Clus:%X\n"</span><span class=cF0>,c;
|
||||
<a name="l31"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,</span><span class=cF5>Fs</span><span class=cF0>->cur_dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (write) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) {
|
||||
<a name="l35"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l36"></a> </span><span class=cF5>ClusWrite</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dv,buf,c,1);
|
||||
<a name="l37"></a> }
|
||||
<a name="l38"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l40"></a>}
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>Dump</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF1>Bool</span><span class=cF0> write=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l43"></a>{</span><span class=cF2>//Dump file. Optionally, write.</span><span class=cF0>
|
||||
<a name="l44"></a></span><span class=cF2>//If you set write to TRUE, the file will</span><span class=cF0>
|
||||
<a name="l45"></a> </span><span class=cF2>//be written when you press <ESC>.</span><span class=cF0>
|
||||
<a name="l46"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
|
||||
<a name="l47"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (buf=</span><span class=cF5>FileRead</span><span class=cF7>(</span><span class=cF0>filename,&size</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l49"></a> </span><span class=cF5>DocD</span><span class=cF0>(buf,size);
|
||||
<a name="l50"></a> </span><span class=cF1>if</span><span class=cF0> (write) {
|
||||
<a name="l51"></a> </span><span class=cF6>"Edit and press <ESC> to write or <SHIFT-ESC>\n"</span><span class=cF0>;
|
||||
<a name="l52"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>View</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l53"></a> </span><span class=cF6>"Write\n"</span><span class=cF0>;
|
||||
<a name="l54"></a> </span><span class=cF5>FileWrite</span><span class=cF0>(filename,buf,size);
|
||||
<a name="l55"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l56"></a> }
|
||||
<a name="l57"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l58"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l59"></a>}
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Copy</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src_files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *dst_files_find_mask=</span><span class=cF6>"."</span><span class=cF0>)
|
||||
<a name="l62"></a>{</span><span class=cF2>//Copy files.</span><span class=cF0>
|
||||
<a name="l63"></a></span><span class=cF2>//If the name ends in ".Z", it will</span><span class=cF0>
|
||||
<a name="l64"></a> </span><span class=cF2>//be stored compressed. If not ".Z"</span><span class=cF0>
|
||||
<a name="l65"></a> </span><span class=cF2>//it will be stored uncompressed.</span><span class=cF0>
|
||||
<a name="l66"></a> </span><span class=cF1>Bool</span><span class=cF0> res=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l67"></a> </span><span class=cF9>CDirContext</span><span class=cF0> *dirc;
|
||||
<a name="l68"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l69"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l70"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(src_files_find_mask,</span><span class=cF3>FUF_CLUS_ORDER</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l71"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDir</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l73"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l74"></a> tmpde=tmpde1;
|
||||
<a name="l75"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l77"></a> st=</span><span class=cF5>FileNameAbs</span><span class=cF0>(tmpde->name);
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>CopySingle</span><span class=cF7>(</span><span class=cF0>tmpde->full_name,st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l79"></a> res=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l80"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l81"></a> }
|
||||
<a name="l82"></a> tmpde=tmpde->next;
|
||||
<a name="l83"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l85"></a> }
|
||||
<a name="l86"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l87"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l88"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l89"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l90"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>CopySingle</span><span class=cF0>(src_files_find_mask,dst_files_find_mask);
|
||||
<a name="l91"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l92"></a>}
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Move</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *f1,</span><span class=cF1>U8</span><span class=cF0> *f2)
|
||||
<a name="l95"></a>{</span><span class=cF2>//Move files from one location to another or rename.</span><span class=cF0>
|
||||
<a name="l96"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Copy</span><span class=cF7>(</span><span class=cF0>f1,f2</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l97"></a> </span><span class=cF5>Del</span><span class=cF0>(f1);
|
||||
<a name="l98"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l99"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l100"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l101"></a>}
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>CopyTree2</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> src_dir_len,</span><span class=cF9>I64</span><span class=cF0> dst_dir_len,</span><span class=cF1>U8</span><span class=cF0> *dst_dir)
|
||||
<a name="l104"></a>{
|
||||
<a name="l105"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l106"></a> </span><span class=cF9>I64</span><span class=cF0> res=1;
|
||||
<a name="l107"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l108"></a> st=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>+dst_dir_len+2);
|
||||
<a name="l109"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(st,dst_dir,dst_dir_len);
|
||||
<a name="l110"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(st+dst_dir_len,tmpde->full_name+src_dir_len);
|
||||
<a name="l111"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l112"></a> </span><span class=cF5>DirMk</span><span class=cF0>(st,</span><span class=cF5>LinkedLstCnt</span><span class=cF7>(</span><span class=cF0>tmpde->sub</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l113"></a> res+=</span><span class=cF5>CopyTree2</span><span class=cF0>(tmpde->sub,src_dir_len,dst_dir_len,dst_dir);
|
||||
<a name="l114"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l115"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>CopySingle</span><span class=cF7>(</span><span class=cF0>tmpde->full_name,st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l116"></a> res++;
|
||||
<a name="l117"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l118"></a> tmpde=tmpde->next;
|
||||
<a name="l119"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l120"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l121"></a>}
|
||||
<a name="l122"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>CopyTree</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src_files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *dst_files_find_mask,
|
||||
<a name="l123"></a> </span><span class=cF1>Bool</span><span class=cF0> no_mask=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l124"></a>{</span><span class=cF2>//Copy directory tree.</span><span class=cF0>
|
||||
<a name="l125"></a></span><span class=cF2>//Returns the count of copied files (not dirs).</span><span class=cF0>
|
||||
<a name="l126"></a> </span><span class=cF9>CDirContext</span><span class=cF0> *dirc;
|
||||
<a name="l127"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l128"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i1,i2;
|
||||
<a name="l129"></a> </span><span class=cF1>U8</span><span class=cF0> *st1,*st2;
|
||||
<a name="l130"></a>
|
||||
<a name="l131"></a> st1=</span><span class=cF5>DirNameAbs</span><span class=cF0>(src_files_find_mask);
|
||||
<a name="l132"></a> st2=</span><span class=cF5>DirNameAbs</span><span class=cF0>(dst_files_find_mask);
|
||||
<a name="l133"></a> i1=</span><span class=cF5>StrLen</span><span class=cF0>(st1);
|
||||
<a name="l134"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>st1,st2,i1</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>st2[i1]==</span><span class=cF6>'/'</span><span class=cF0> || !st2[i1]</span><span class=cF7>)</span><span class=cF0> ) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l136"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l137"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l138"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l139"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l140"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l141"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>src_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,,no_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l142"></a> tmpde=</span><span class=cF5>FilesFind</span><span class=cF0>(dirc->mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF0>);
|
||||
<a name="l143"></a> st1=</span><span class=cF5>DirCur</span><span class=cF0>;
|
||||
<a name="l144"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l145"></a> i1=</span><span class=cF5>StrLen</span><span class=cF0>(st1);
|
||||
<a name="l146"></a> </span><span class=cF1>if</span><span class=cF0> (i1==3) i1--;
|
||||
<a name="l147"></a> </span><span class=cF1>if</span><span class=cF0> (dirc=</span><span class=cF5>DirContextNew</span><span class=cF7>(</span><span class=cF0>dst_files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l148"></a> st2=</span><span class=cF5>DirCur</span><span class=cF0>;
|
||||
<a name="l149"></a> i2=</span><span class=cF5>StrLen</span><span class=cF0>(st2);
|
||||
<a name="l150"></a> </span><span class=cF1>if</span><span class=cF0> (i2==3) i2--;
|
||||
<a name="l151"></a> res=</span><span class=cF5>CopyTree2</span><span class=cF0>(tmpde,i1,i2,st2);
|
||||
<a name="l152"></a> </span><span class=cF5>DirContextDel</span><span class=cF0>(dirc);
|
||||
<a name="l153"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l154"></a> }
|
||||
<a name="l155"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde);
|
||||
<a name="l156"></a> </span><span class=cF5>Free</span><span class=cF0>(st1);
|
||||
<a name="l157"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l158"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l159"></a>}
|
||||
<a name="l160"></a>
|
||||
<a name="l161"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTreeDirs</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1)
|
||||
<a name="l162"></a>{
|
||||
<a name="l163"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l164"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l165"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l166"></a> tmpde2=tmpde1->next;
|
||||
<a name="l167"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l168"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->sub)
|
||||
<a name="l169"></a> res+=</span><span class=cF5>DelTreeDirs</span><span class=cF0>(tmpde1->sub);
|
||||
<a name="l170"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(tmpde1->full_name,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l171"></a> }
|
||||
<a name="l172"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l173"></a> tmpde1=tmpde2;
|
||||
<a name="l174"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l175"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l176"></a>}
|
||||
<a name="l177"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTreeFiles</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1)
|
||||
<a name="l178"></a>{
|
||||
<a name="l179"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l180"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l181"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l182"></a> tmpde2=tmpde1->next;
|
||||
<a name="l183"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l184"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->sub)
|
||||
<a name="l185"></a> res+=</span><span class=cF5>DelTreeFiles</span><span class=cF0>(tmpde1->sub);
|
||||
<a name="l186"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l187"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(tmpde1->full_name,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l188"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l189"></a> tmpde1=tmpde2;
|
||||
<a name="l190"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l191"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l192"></a>}
|
||||
<a name="l193"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DelTree</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l194"></a>{</span><span class=cF2>//Delete directory tree.</span><span class=cF0>
|
||||
<a name="l195"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l196"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r"</span><span class=cF0>);
|
||||
<a name="l197"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l198"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDir</span><span class=cF7>(</span><span class=cF0>files_find_mask</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l199"></a> res=</span><span class=cF5>DelTreeDirs</span><span class=cF0>(</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l200"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(files_find_mask,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l201"></a> res+=</span><span class=cF5>Del</span><span class=cF0>(files_find_mask,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l203"></a> res=</span><span class=cF5>DelTreeFiles</span><span class=cF0>(</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l204"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l205"></a>}
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TouchFile</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF1>U8</span><span class=cF0> *attr,</span><span class=cF9>CDate</span><span class=cF0> cdt=</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l208"></a>{
|
||||
<a name="l209"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(*filename);
|
||||
<a name="l210"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> de;
|
||||
<a name="l211"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_dir=</span><span class=cF5>StrNew</span><span class=cF0>(filename),buf[</span><span class=cF3>STR_LEN</span><span class=cF0>];
|
||||
<a name="l212"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF0>filename,&de,</span><span class=cF3>FUF_JUST_FILES</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> </span><span class=cF5>Free</span><span class=cF0>(de.full_name);
|
||||
<a name="l214"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>attr,</span><span class=cF6>"+?"</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l215"></a> </span><span class=cF6>"%-48ts %s\n"</span><span class=cF0>,filename,</span><span class=cF5>StrPrintFlags</span><span class=cF0>(buf,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_ATTRS"</span><span class=cF7>)</span><span class=cF0>,de.attr);
|
||||
<a name="l216"></a> </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l217"></a> </span><span class=cF5>StrFirstRem</span><span class=cF0>(cur_dir,</span><span class=cF6>":"</span><span class=cF0>);
|
||||
<a name="l218"></a> </span><span class=cF5>StrLastRem</span><span class=cF0>(cur_dir,</span><span class=cF6>"/"</span><span class=cF0>);
|
||||
<a name="l219"></a> </span><span class=cF1>if</span><span class=cF0> (!*cur_dir)
|
||||
<a name="l220"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(cur_dir,</span><span class=cF6>"/"</span><span class=cF0>);
|
||||
<a name="l221"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&de.attr,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_ATTRS"</span><span class=cF7>)</span><span class=cF0>,attr);
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (cdt==</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l223"></a> de.datetime=</span><span class=cF5>Now</span><span class=cF0>;
|
||||
<a name="l224"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l225"></a> de.datetime=cdt;
|
||||
<a name="l226"></a> </span><span class=cF5>DirNew</span><span class=cF0>(dv,cur_dir,&de,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l227"></a> }
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File not found: \"%s\".\n"</span><span class=cF0>,filename);
|
||||
<a name="l230"></a> </span><span class=cF5>Free</span><span class=cF0>(cur_dir);
|
||||
<a name="l231"></a>}
|
||||
<a name="l232"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Touch</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *attr=</span><span class=cF6>"+?"</span><span class=cF0>,
|
||||
<a name="l233"></a> </span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CDate</span><span class=cF0> cdt=</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l234"></a>{</span><span class=cF2>/*Touch file attributes and DateTime.</span><span class=cF0>
|
||||
<a name="l235"></a></span><span class=cF2>Default lists attributes.</span><span class=cF0>
|
||||
<a name="l236"></a></span><span class=cF2>attr: "+?" =show current</span><span class=cF0>
|
||||
<a name="l237"></a></span><span class=cF2>"+T" =resident</span><span class=cF4>
|
||||
<a name="l238"></a></span><a href="/Wb/Kernel/KernelA.HH.HTML#l2497"><span class=cF4>RS_ATTR_READ_ONLY</span></a><span class=cF2> </span><a href="/Wb/Kernel/KDefine.HC.HTML#l109"><span class=cF4>ST_FILE_ATTRS</span></a><span class=cF0>
|
||||
<a name="l239"></a></span><span class=cF2>To Set DateL:</span><span class=cF0>
|
||||
<a name="l240"></a></span><span class=cF2>Touch(filename,"",,datetime);</span><span class=cF0>
|
||||
<a name="l241"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l242"></a> </span><span class=cF9>I64</span><span class=cF0> fuf_flags=0;
|
||||
<a name="l243"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l244"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+f+F"</span><span class=cF0>);
|
||||
<a name="l245"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l246"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l247"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l248"></a> </span><span class=cF5>TouchFile</span><span class=cF0>(tmpde->full_name,attr,cdt);
|
||||
<a name="l249"></a> tmpde=tmpde->next;
|
||||
<a name="l250"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l251"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l252"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
222
public/Wb/Adam/ABlkDev/ADskB.HC.HTML
Executable file
222
public/Wb/Adam/ABlkDev/ADskB.HC.HTML
Executable file
@ -0,0 +1,222 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Internal"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l5"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l6"></a> res+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>+1;
|
||||
<a name="l7"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l8"></a> res+=</span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(tmpde->sub);
|
||||
<a name="l9"></a> tmpde=tmpde->next;
|
||||
<a name="l10"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l11"></a> </span><span class=cF1>return</span><span class=cF0> res+1;
|
||||
<a name="l12"></a>}
|
||||
<a name="l13"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF1>U8</span><span class=cF0> *dst)
|
||||
<a name="l14"></a>{
|
||||
<a name="l15"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i;
|
||||
<a name="l16"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l17"></a> *dst++=1;
|
||||
<a name="l18"></a> res++;
|
||||
<a name="l19"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(dst,&tmpde-></span><span class=cF1>start</span><span class=cF0>,</span><span class=cF3>CDIR_SIZE</span><span class=cF0>);
|
||||
<a name="l20"></a> dst+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l21"></a> res+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l23"></a> i=</span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(tmpde->sub,dst);
|
||||
<a name="l24"></a> dst+=i;
|
||||
<a name="l25"></a> res+=i;
|
||||
<a name="l26"></a> }
|
||||
<a name="l27"></a> tmpde=tmpde->next;
|
||||
<a name="l28"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l29"></a> *dst=0;
|
||||
<a name="l30"></a> </span><span class=cF1>return</span><span class=cF0> res+1;
|
||||
<a name="l31"></a>}
|
||||
<a name="l32"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DirTreeSerialize</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> *_size=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l33"></a>{</span><span class=cF2>//Serialize tree returned from </span><a href="/Wb/Kernel/BlkDev/DskFind.HC.HTML#l27"><span class=cF4>FilesFind</span></a><span class=cF2>() into a one contiguous U8 array.</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF9>I64</span><span class=cF0> size=</span><span class=cF5>DirTreeSerializeSize</span><span class=cF0>(tmpde);
|
||||
<a name="l35"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>MAlloc</span><span class=cF0>(size);
|
||||
<a name="l36"></a> </span><span class=cF5>DirTreeSerializeFill</span><span class=cF0>(tmpde,buf);
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (_size) *_size=size;
|
||||
<a name="l38"></a> </span><span class=cF1>return</span><span class=cF0> buf;
|
||||
<a name="l39"></a>}
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src,</span><span class=cF9>CDirEntry</span><span class=cF0> **tmpde)
|
||||
<a name="l42"></a>{
|
||||
<a name="l43"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1;
|
||||
<a name="l44"></a> </span><span class=cF1>if</span><span class=cF0> (*src++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> tmpde1=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l46"></a> *tmpde=tmpde1;
|
||||
<a name="l47"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(&tmpde1-></span><span class=cF1>start</span><span class=cF0>,src,</span><span class=cF3>CDIR_SIZE</span><span class=cF0>);
|
||||
<a name="l48"></a> src+=</span><span class=cF3>CDIR_SIZE</span><span class=cF0>;
|
||||
<a name="l49"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l50"></a> src=</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde1->sub);
|
||||
<a name="l51"></a> src=</span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde1->next);
|
||||
<a name="l52"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l53"></a> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l54"></a> </span><span class=cF1>return</span><span class=cF0> src;
|
||||
<a name="l55"></a>}
|
||||
<a name="l56"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF5>DirTreeUnserialize</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src)
|
||||
<a name="l57"></a>{</span><span class=cF2>//Unserialize tree to make it like a tree returned from </span><a href="/Wb/Kernel/BlkDev/DskFind.HC.HTML#l27"><span class=cF4>FilesFind</span></a><span class=cF2>().</span><span class=cF0>
|
||||
<a name="l58"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l59"></a> </span><span class=cF5>DirTreeUnserialize2</span><span class=cF0>(src,&tmpde);
|
||||
<a name="l60"></a> </span><span class=cF1>return</span><span class=cF0> tmpde;
|
||||
<a name="l61"></a>}
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Program Routines"</span><span class=cF0>
|
||||
<a name="l64"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FOFlatten</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>CDirEntry</span><span class=cF0> **a,</span><span class=cF9>I64</span><span class=cF0> *i)
|
||||
<a name="l65"></a>{
|
||||
<a name="l66"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1;
|
||||
<a name="l67"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l68"></a> tmpde1=tmpde->next;
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l70"></a> </span><span class=cF5>FOFlatten</span><span class=cF0>(tmpde->sub,a,i);
|
||||
<a name="l71"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde);
|
||||
<a name="l72"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l73"></a> a[*i]=tmpde;
|
||||
<a name="l74"></a> *i=*i+1;
|
||||
<a name="l75"></a> }
|
||||
<a name="l76"></a> tmpde=tmpde1;
|
||||
<a name="l77"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l78"></a>}
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Size1</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,</span><span class=cF9>I64</span><span class=cF0> *_fuf_flags,</span><span class=cF9>I64</span><span class=cF0> round_to)
|
||||
<a name="l81"></a>{
|
||||
<a name="l82"></a> </span><span class=cF1>U8</span><span class=cF0> buf[</span><span class=cF3>BLK_SIZE</span><span class=cF0>];
|
||||
<a name="l83"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i;
|
||||
<a name="l84"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv;
|
||||
<a name="l85"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>i=tmpde->size</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>_fuf_flags,</span><span class=cF3>FUf_EXPAND</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l87"></a> !</span><span class=cF7>(</span><span class=cF0>tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l88"></a> </span><span class=cF5>FileAttr</span><span class=cF7>(</span><span class=cF0>tmpde->name</span><span class=cF7>)</span><span class=cF0>&</span><span class=cF3>RS_ATTR_COMPRESSED</span><span class=cF0>) {
|
||||
<a name="l89"></a> dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(*tmpde->full_name);
|
||||
<a name="l90"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,buf,</span><span class=cF5>Clus2Blk</span><span class=cF7>(</span><span class=cF0>dv,tmpde->clus</span><span class=cF7>)</span><span class=cF0>,1);
|
||||
<a name="l91"></a> i=(&buf)(</span><span class=cF9>CArcCompress</span><span class=cF0> *)->expanded_size;
|
||||
<a name="l92"></a> }
|
||||
<a name="l93"></a> </span><span class=cF1>if</span><span class=cF0> (round_to)
|
||||
<a name="l94"></a> i=</span><span class=cF5>CeilU64</span><span class=cF0>(tmpde->size,round_to);
|
||||
<a name="l95"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l96"></a> i+=</span><span class=cF5>Size1</span><span class=cF0>(tmpde->sub,_fuf_flags,round_to);
|
||||
<a name="l97"></a> tmpde->user_data=i;
|
||||
<a name="l98"></a> res+=i;
|
||||
<a name="l99"></a> tmpde=tmpde->next;
|
||||
<a name="l100"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l101"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l102"></a>}
|
||||
<a name="l103"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Size</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"/*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> round_to=0)
|
||||
<a name="l104"></a>{</span><span class=cF2>//Total size of files in mask. "+x" for expanded size.</span><span class=cF0>
|
||||
<a name="l105"></a></span><span class=cF2>//Does not include directory size of base directory, but</span><span class=cF0>
|
||||
<a name="l106"></a> </span><span class=cF2>//does include size of sub directories.</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF9>I64</span><span class=cF0> fuf_flags=0,res=0;
|
||||
<a name="l108"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r"</span><span class=cF0>);
|
||||
<a name="l110"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l111"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1=</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,fuf_flags&</span><span class=cF3>FUG_FILES_FIND</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l112"></a> fuf_flags&=</span><span class=cF3>FUF_EXPAND</span><span class=cF0>;
|
||||
<a name="l113"></a> res=</span><span class=cF5>Size1</span><span class=cF0>(tmpde1,&fuf_flags,round_to);
|
||||
<a name="l114"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l115"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l116"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l117"></a>}
|
||||
<a name="l118"></a>
|
||||
<a name="l119"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FileCnt</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde)
|
||||
<a name="l120"></a>{</span><span class=cF2>//Cnt of files in </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2520"><span class=cF4>CDirEntry</span></a><span class=cF2> tree.</span><span class=cF0>
|
||||
<a name="l121"></a> </span><span class=cF9>I64</span><span class=cF0> cnt=0;
|
||||
<a name="l122"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l124"></a> cnt+=</span><span class=cF5>FileCnt</span><span class=cF0>(tmpde->sub);
|
||||
<a name="l125"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l126"></a> cnt++;
|
||||
<a name="l127"></a> tmpde=tmpde->next;
|
||||
<a name="l128"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l129"></a> </span><span class=cF1>return</span><span class=cF0> cnt;
|
||||
<a name="l130"></a>}
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l133"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FF</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l134"></a>{</span><span class=cF2>//Files find. List files matching mask.</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF9>I64</span><span class=cF0> cnt=0,fuf_flags=0;
|
||||
<a name="l136"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l137"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F"</span><span class=cF0>);
|
||||
<a name="l138"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l139"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l140"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l141"></a> </span><span class=cF5>PutFileLink</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l142"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l143"></a> cnt++;
|
||||
<a name="l144"></a> tmpde=tmpde->next;
|
||||
<a name="l145"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l146"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l147"></a> </span><span class=cF1>return</span><span class=cF0> cnt;
|
||||
<a name="l148"></a>}
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Zip</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l151"></a>{</span><span class=cF2>//Compress files by moving to .Z filename.</span><span class=cF0>
|
||||
<a name="l152"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l153"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l154"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l155"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F+O"</span><span class=cF0>);
|
||||
<a name="l156"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l157"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l158"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l159"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>IsDotZ</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l160"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s.Z"</span><span class=cF0>,tmpde->full_name);
|
||||
<a name="l161"></a> res+=</span><span class=cF5>Move</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l162"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l163"></a> }
|
||||
<a name="l164"></a> tmpde=tmpde->next;
|
||||
<a name="l165"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l166"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l167"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l168"></a>}
|
||||
<a name="l169"></a>
|
||||
<a name="l170"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Unzip</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF6>"*.Z"</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l171"></a>{</span><span class=cF2>//Uncompress files by moving to not .Z filename.</span><span class=cF0>
|
||||
<a name="l172"></a></span><span class=cF2>//You don't have to do this for normal operation.</span><span class=cF0>
|
||||
<a name="l173"></a> </span><span class=cF2>//It automatically unzips ".Z" files.</span><span class=cF0>
|
||||
<a name="l174"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l175"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l176"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,fuf_flags=0;
|
||||
<a name="l177"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r+f+F+O"</span><span class=cF0>);
|
||||
<a name="l178"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&fuf_flags,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l179"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,fuf_flags);
|
||||
<a name="l180"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l181"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsDotZ</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l182"></a> st=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l183"></a> </span><span class=cF5>StrLastRem</span><span class=cF0>(st,</span><span class=cF6>"."</span><span class=cF0>);
|
||||
<a name="l184"></a> res+=</span><span class=cF5>Move</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l185"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l186"></a> }
|
||||
<a name="l187"></a> tmpde=tmpde->next;
|
||||
<a name="l188"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l189"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l190"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l191"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
475
public/Wb/Adam/ABlkDev/DskChk.HC.HTML
Executable file
475
public/Wb/Adam/ABlkDev/DskChk.HC.HTML
Executable file
@ -0,0 +1,475 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>ChkDskConfirm</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF1>if</span><span class=cF0> (*_fix && *_confirm) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF6>"Fix "</span><span class=cF0>;
|
||||
<a name="l6"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>YorN</span><span class=cF0>)
|
||||
<a name="l7"></a> *_fix=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l8"></a> *_confirm=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l9"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l10"></a> </span><span class=cF1>return</span><span class=cF0> *_fix;
|
||||
<a name="l11"></a>}
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(</span><span class=cF9>CDrv</span><span class=cF0> *dv,</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1,
|
||||
<a name="l14"></a> </span><span class=cF1>U8</span><span class=cF0> *bits,</span><span class=cF1>U8</span><span class=cF0> *bits2,</span><span class=cF9>I64</span><span class=cF0> size,</span><span class=cF9>I64</span><span class=cF0> bpc)
|
||||
<a name="l15"></a>{
|
||||
<a name="l16"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l17"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,errs=0;
|
||||
<a name="l18"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l19"></a> tmpde2=tmpde1->next;
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> && tmpde1->sub)
|
||||
<a name="l21"></a> errs+=</span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(dv,tmpde1->sub,bits,bits2,size,bpc);
|
||||
<a name="l22"></a> j=(tmpde1->size+bpc-1)/bpc;
|
||||
<a name="l23"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<j;i++) {
|
||||
<a name="l24"></a> </span><span class=cF1>if</span><span class=cF0> (i+tmpde1->clus-dv->data_area>size) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l26"></a> i+tmpde1->clus);
|
||||
<a name="l27"></a> errs++;
|
||||
<a name="l28"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l29"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,i+tmpde1->clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l32"></a> i+tmpde1->clus);
|
||||
<a name="l33"></a> errs++;
|
||||
<a name="l34"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBtr</span><span class=cF7>(</span><span class=cF0>bits2,i+tmpde1->clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l36"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,
|
||||
<a name="l37"></a> i+tmpde1->clus);
|
||||
<a name="l38"></a> errs++;
|
||||
<a name="l39"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l40"></a> }
|
||||
<a name="l41"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l42"></a> tmpde1=tmpde2;
|
||||
<a name="l43"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l45"></a>}
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaChkDsk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let,</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l48"></a>{
|
||||
<a name="l49"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,bpc,size,errs=0;
|
||||
<a name="l50"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l51"></a> </span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%c:/*"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>),
|
||||
<a name="l52"></a> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir),
|
||||
<a name="l53"></a> *bits,*bits2;
|
||||
<a name="l54"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *ptr,*ptr2;
|
||||
<a name="l55"></a>
|
||||
<a name="l56"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l57"></a> </span><span class=cF6>"Scanning...\n"</span><span class=cF0>;
|
||||
<a name="l58"></a> size=(dv->size-</span><span class=cF7>(</span><span class=cF0>dv->data_area-dv->drv_offset</span><span class=cF7>)</span><span class=cF0>)/dv->spc;
|
||||
<a name="l59"></a> bpc=dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l60"></a> bits=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3);
|
||||
<a name="l61"></a> bits2=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l62"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bits2,dv->fat1,</span><span class=cF7>(</span><span class=cF0>(size+7)>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1</span><span class=cF7>)</span><span class=cF0>>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a> </span><span class=cF2>//Get Root Dir size</span><span class=cF0>
|
||||
<a name="l65"></a> ptr2=</span><span class=cF5>MAlloc</span><span class=cF0>(bpc);
|
||||
<a name="l66"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,ptr2,dv->root_clus,1);
|
||||
<a name="l67"></a> ptr=ptr2(</span><span class=cF1>U8</span><span class=cF0> *)-</span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CDirEntry</span><span class=cF0>.</span><span class=cF1>start</span><span class=cF0>);
|
||||
<a name="l68"></a> j=(ptr->size+bpc-1)/bpc;
|
||||
<a name="l69"></a> </span><span class=cF5>Free</span><span class=cF0>(ptr2);
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<j;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (i+dv->root_clus-dv->data_area>size) {
|
||||
<a name="l73"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l74"></a> errs++;
|
||||
<a name="l75"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l76"></a> }
|
||||
<a name="l77"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,i+dv->root_clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l78"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l79"></a> errs++;
|
||||
<a name="l80"></a> }
|
||||
<a name="l81"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBtr</span><span class=cF7>(</span><span class=cF0>bits2,i+dv->root_clus-dv->data_area</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l82"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc: RootDir Clus:%X\n"</span><span class=cF0>,i+dv->root_clus);
|
||||
<a name="l83"></a> errs++;
|
||||
<a name="l84"></a> }
|
||||
<a name="l85"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l86"></a>
|
||||
<a name="l87"></a> errs+=</span><span class=cF5>RedSeaChkDskLst</span><span class=cF0>(dv,</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l88"></a> bits,bits2,size,bpc);
|
||||
<a name="l89"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<size;i++)
|
||||
<a name="l90"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bits2,i</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Shouldn't Alloc Clus:%0X\n"</span><span class=cF0>,i+dv->data_area);
|
||||
<a name="l92"></a> errs++;
|
||||
<a name="l93"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ChkDskConfirm</span><span class=cF7>(</span><span class=cF0>_fix,_confirm</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l94"></a> </span><span class=cF5>RedSeaFreeClus</span><span class=cF0>(dv,i+dv->data_area,1);
|
||||
<a name="l95"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a> </span><span class=cF5>Free</span><span class=cF0>(files_find_mask);
|
||||
<a name="l98"></a> </span><span class=cF5>Free</span><span class=cF0>(bits);
|
||||
<a name="l99"></a> </span><span class=cF5>Free</span><span class=cF0>(bits2);
|
||||
<a name="l100"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l101"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l102"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l103"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l104"></a>}
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(</span><span class=cF9>CDrv</span><span class=cF0> *dv,</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde1,
|
||||
<a name="l107"></a> </span><span class=cF1>U8</span><span class=cF0> *bits,</span><span class=cF9>U32</span><span class=cF0> *bits2,</span><span class=cF9>I64</span><span class=cF0> size,</span><span class=cF9>I64</span><span class=cF0> bpc)
|
||||
<a name="l108"></a>{
|
||||
<a name="l109"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde2;
|
||||
<a name="l110"></a> </span><span class=cF9>I64</span><span class=cF0> i,c,errs=0;
|
||||
<a name="l111"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l112"></a> tmpde2=tmpde1->next;
|
||||
<a name="l113"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0> && tmpde1->sub)
|
||||
<a name="l114"></a> errs+=</span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(dv,tmpde1->sub,bits,bits2,size,bpc);
|
||||
<a name="l115"></a> i=0;
|
||||
<a name="l116"></a> c=tmpde1->clus;
|
||||
<a name="l117"></a> </span><span class=cF1>while</span><span class=cF0> (0<c<0x0FFFFFF8) {
|
||||
<a name="l118"></a> </span><span class=cF1>if</span><span class=cF0> (c>size) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l119"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l120"></a> errs++;
|
||||
<a name="l121"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l122"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,c</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l124"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l125"></a> errs++;
|
||||
<a name="l126"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF1>if</span><span class=cF0> (!bits2[c]) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l128"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc:%s Clus:%X\n"</span><span class=cF0>,tmpde1->full_name,c);
|
||||
<a name="l129"></a> errs++;
|
||||
<a name="l130"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l131"></a> bits2[c]=0;
|
||||
<a name="l132"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(dv,c);
|
||||
<a name="l133"></a> i++;
|
||||
<a name="l134"></a> }
|
||||
<a name="l135"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpde1->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l136"></a> i*=bpc;
|
||||
<a name="l137"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->size>i) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l138"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Alloced File Too Short:%s\n"</span><span class=cF0>,tmpde1->full_name);
|
||||
<a name="l139"></a> errs++;
|
||||
<a name="l140"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l141"></a> </span><span class=cF1>if</span><span class=cF0> (i>tmpde1->size+bpc-1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l142"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Alloced File Too Long:%s\n"</span><span class=cF0>,tmpde1->full_name);
|
||||
<a name="l143"></a> errs++;
|
||||
<a name="l144"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l145"></a> }
|
||||
<a name="l146"></a> </span><span class=cF5>DirEntryDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l147"></a> tmpde1=tmpde2;
|
||||
<a name="l148"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l149"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l150"></a>}
|
||||
<a name="l151"></a>
|
||||
<a name="l152"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32ChkDsk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let,</span><span class=cF1>Bool</span><span class=cF0> *_fix,</span><span class=cF1>Bool</span><span class=cF0> *_confirm)
|
||||
<a name="l153"></a>{
|
||||
<a name="l154"></a> </span><span class=cF9>I64</span><span class=cF0> i,bpc,size,c,errs=0;
|
||||
<a name="l155"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l156"></a> </span><span class=cF1>U8</span><span class=cF0> *files_find_mask=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%c:/*"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>),
|
||||
<a name="l157"></a> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir),
|
||||
<a name="l158"></a> *bits;
|
||||
<a name="l159"></a> </span><span class=cF9>U32</span><span class=cF0> *bits2;
|
||||
<a name="l160"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l161"></a> </span><span class=cF6>"Scanning...\n"</span><span class=cF0>;
|
||||
<a name="l162"></a> size=(dv->size-</span><span class=cF7>(</span><span class=cF0>dv->data_area-dv->drv_offset</span><span class=cF7>)</span><span class=cF0>)/dv->spc;
|
||||
<a name="l163"></a> bpc=dv->spc<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l164"></a> bits=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>size+7</span><span class=cF7>)</span><span class=cF0>>>3);
|
||||
<a name="l165"></a> bits2=</span><span class=cF5>CAlloc</span><span class=cF0>(size*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l166"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bits2,dv->fat1,</span><span class=cF7>(</span><span class=cF0>size*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1</span><span class=cF7>)</span><span class=cF0>>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l167"></a>
|
||||
<a name="l168"></a> c=dv->root_clus;
|
||||
<a name="l169"></a> </span><span class=cF1>while</span><span class=cF0> (0<c<0x0FFFFFF8) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l170"></a> </span><span class=cF1>if</span><span class=cF0> (c>size) {
|
||||
<a name="l171"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Invalid Clus: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l172"></a> errs++;
|
||||
<a name="l173"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l174"></a> }
|
||||
<a name="l175"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>bits,c</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l176"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"Dbl Alloc: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l177"></a> errs++;
|
||||
<a name="l178"></a> }
|
||||
<a name="l179"></a> </span><span class=cF1>if</span><span class=cF0> (!bits2[c]) {
|
||||
<a name="l180"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"UnAlloc: RootDir Clus:%X\n"</span><span class=cF0>,c);
|
||||
<a name="l181"></a> errs++;
|
||||
<a name="l182"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l183"></a> bits2[c]=0;
|
||||
<a name="l184"></a> c=</span><span class=cF5>ClusNumNext</span><span class=cF0>(dv,c);
|
||||
<a name="l185"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l186"></a>
|
||||
<a name="l187"></a> errs+=</span><span class=cF5>FAT32ChkDskLst</span><span class=cF0>(dv,</span><span class=cF5>FilesFind</span><span class=cF7>(</span><span class=cF0>files_find_mask,</span><span class=cF3>FUF_RECURSE</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l188"></a> bits,bits2,size,bpc);
|
||||
<a name="l189"></a>
|
||||
<a name="l190"></a> bits2[1]=0; </span><span class=cF2>//See </span><a href="/Wb/Kernel/BlkDev/FileSysFAT.HC.HTML#l48"><span class=cF4>FAT32Fmt</span></a><span class=cF2>()</span><span class=cF0>
|
||||
<a name="l191"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<size;i++)
|
||||
<a name="l192"></a> </span><span class=cF1>if</span><span class=cF0> (bits2[i]) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l193"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>"Shouldn't Alloc Clus:%0X\n"</span><span class=cF0>,i);
|
||||
<a name="l194"></a> errs++;
|
||||
<a name="l195"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ChkDskConfirm</span><span class=cF7>(</span><span class=cF0>_fix,_confirm</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l196"></a> </span><span class=cF5>FAT32FreeClus</span><span class=cF0>(dv,i);
|
||||
<a name="l197"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l198"></a> </span><span class=cF5>Free</span><span class=cF0>(files_find_mask);
|
||||
<a name="l199"></a> </span><span class=cF5>Free</span><span class=cF0>(bits);
|
||||
<a name="l200"></a> </span><span class=cF5>Free</span><span class=cF0>(bits2);
|
||||
<a name="l201"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l203"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l204"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l205"></a>}
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DskChk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,</span><span class=cF1>Bool</span><span class=cF0> fix=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> confirm=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l208"></a>{</span><span class=cF2>//Check disk for allocation errors and, optionally, fix.</span><span class=cF0>
|
||||
<a name="l209"></a></span><span class=cF2>//You probably want to reformat and reinstall.</span><span class=cF0>
|
||||
<a name="l210"></a> </span><span class=cF9>I64</span><span class=cF0> errs=0;
|
||||
<a name="l211"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l212"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l214"></a> errs=</span><span class=cF5>RedSeaChkDsk</span><span class=cF0>(drv_let,&fix,&confirm);
|
||||
<a name="l215"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l216"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l217"></a> errs=</span><span class=cF5>FAT32ChkDsk</span><span class=cF0>(drv_let,&fix,&confirm);
|
||||
<a name="l218"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l219"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l220"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l221"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (errs) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l223"></a> </span><span class=cF1>if</span><span class=cF0> (fix)
|
||||
<a name="l224"></a> </span><span class=cF6>"It might be a little better. "</span><span class=cF0>;
|
||||
<a name="l225"></a> </span><span class=cF6>"Copy files to another partition or CD/DVD, "</span><span class=cF0>
|
||||
<a name="l226"></a> </span><span class=cF6>"reformat, and copy back. "</span><span class=cF0>
|
||||
<a name="l227"></a> </span><span class=cF6>"Or, copy from a back-up.\n"</span><span class=cF0>;
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF1>return</span><span class=cF0> errs;
|
||||
<a name="l230"></a>}
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>RedSeaDrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l233"></a>{
|
||||
<a name="l234"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l235"></a> </span><span class=cF9>I64</span><span class=cF0> lohi,c1,i,x,y,l=(</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>)*(</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1),
|
||||
<a name="l236"></a> s=dv->size+dv->drv_offset-dv->data_area;
|
||||
<a name="l237"></a> </span><span class=cF1>U8</span><span class=cF0> *bitmap;
|
||||
<a name="l238"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l239"></a>
|
||||
<a name="l240"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l241"></a> </span><span class=cF5>WinMax</span><span class=cF0>;
|
||||
<a name="l242"></a> </span><span class=cF5>WinBorder</span><span class=cF0>(</span><span class=cF3>ON</span><span class=cF0>);
|
||||
<a name="l243"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l244"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l245"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l246"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l247"></a> i=(</span><span class=cF7>(</span><span class=cF0>s+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l248"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l249"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l250"></a> i=0;
|
||||
<a name="l251"></a> </span><span class=cF1>for</span><span class=cF0> (y=0;y<</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;y++) {
|
||||
<a name="l252"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ScanKey</span><span class=cF0>)
|
||||
<a name="l253"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l254"></a> </span><span class=cF1>for</span><span class=cF0> (x=0;x<</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1;x++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l255"></a> lohi=i*s;
|
||||
<a name="l256"></a> c1=lohi/l;
|
||||
<a name="l257"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bitmap,c1</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l258"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>BLUE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l259"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l260"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>WHITE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l261"></a> </span><span class=cF5>GrPlot</span><span class=cF0>(dc,x,y);
|
||||
<a name="l262"></a> i++;
|
||||
<a name="l263"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l264"></a> }
|
||||
<a name="l265"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l266"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l267"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l268"></a> </span><span class=cF5>GetChar</span><span class=cF0>;
|
||||
<a name="l269"></a>
|
||||
<a name="l270"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l271"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l272"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l273"></a>}
|
||||
<a name="l274"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FAT32DrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l275"></a>{
|
||||
<a name="l276"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l277"></a> </span><span class=cF9>I64</span><span class=cF0> lohi,c1,i,x,y,l=(</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>)*(</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1),
|
||||
<a name="l278"></a> s=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
|
||||
<a name="l279"></a> </span><span class=cF9>U32</span><span class=cF0> *bitmap;
|
||||
<a name="l280"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l281"></a>
|
||||
<a name="l282"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l283"></a> </span><span class=cF5>WinMax</span><span class=cF0>;
|
||||
<a name="l284"></a> </span><span class=cF5>WinBorder</span><span class=cF0>(</span><span class=cF3>ON</span><span class=cF0>);
|
||||
<a name="l285"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l286"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l287"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l288"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l289"></a> i=(s*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l290"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l291"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l292"></a> i=0;
|
||||
<a name="l293"></a> </span><span class=cF1>for</span><span class=cF0> (y=0;y<</span><span class=cF3>GR_HEIGHT</span><span class=cF0>-3*</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;y++) {
|
||||
<a name="l294"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ScanKey</span><span class=cF0>)
|
||||
<a name="l295"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l296"></a> </span><span class=cF1>for</span><span class=cF0> (x=0;x<</span><span class=cF3>GR_WIDTH</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0><<1;x++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l297"></a> lohi=i*s;
|
||||
<a name="l298"></a> c1=lohi/l;
|
||||
<a name="l299"></a> </span><span class=cF1>if</span><span class=cF0> (bitmap[c1])
|
||||
<a name="l300"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>BLUE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l301"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l302"></a> dc->color=</span><span class=cF3>ROP_XOR</span><span class=cF0>+</span><span class=cF3>WHITE</span><span class=cF0>^</span><span class=cF3>TRANSPARENT</span><span class=cF0>;
|
||||
<a name="l303"></a> </span><span class=cF5>GrPlot</span><span class=cF0>(dc,x,y);
|
||||
<a name="l304"></a> i++;
|
||||
<a name="l305"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l306"></a> }
|
||||
<a name="l307"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l308"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l309"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l310"></a> </span><span class=cF5>GetChar</span><span class=cF0>;
|
||||
<a name="l311"></a>
|
||||
<a name="l312"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l313"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l314"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l315"></a>}
|
||||
<a name="l316"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrvView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l317"></a>{</span><span class=cF2>//Drive view. Graph the allocation map's fragmentation.</span><span class=cF0>
|
||||
<a name="l318"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l319"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l320"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l321"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l322"></a> </span><span class=cF5>RedSeaDrvView</span><span class=cF0>(drv_let);
|
||||
<a name="l323"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l324"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l325"></a> </span><span class=cF5>FAT32DrvView</span><span class=cF0>(drv_let);
|
||||
<a name="l326"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l327"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l328"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l329"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l330"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l331"></a>}
|
||||
<a name="l332"></a>
|
||||
<a name="l333"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DskView</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l334"></a>{</span><span class=cF2>//Disk view. Pie chart of partition sizes.</span><span class=cF0>
|
||||
<a name="l335"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,attr,
|
||||
<a name="l336"></a> h=</span><span class=cF5>Fs</span><span class=cF0>->pix_width,
|
||||
<a name="l337"></a> v=</span><span class=cF5>Fs</span><span class=cF0>->pix_height,
|
||||
<a name="l338"></a> radius;
|
||||
<a name="l339"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv;
|
||||
<a name="l340"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd=</span><span class=cF5>Let2BlkDev</span><span class=cF0>(drv_let);
|
||||
<a name="l341"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>;
|
||||
<a name="l342"></a> </span><span class=cF1>F64</span><span class=cF0> sect_start,sect_end;
|
||||
<a name="l343"></a>
|
||||
<a name="l344"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l345"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l346"></a> </span><span class=cF5>DocClear</span><span class=cF0>;
|
||||
<a name="l347"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l348"></a> </span><span class=cF1>if</span><span class=cF0> (h<v)
|
||||
<a name="l349"></a> radius=0.4*h;
|
||||
<a name="l350"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l351"></a> radius=0.4*v;
|
||||
<a name="l352"></a> dc->color=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l353"></a> </span><span class=cF5>GrCircle</span><span class=cF0>(dc,h>>1,v>>1,radius);
|
||||
<a name="l354"></a>
|
||||
<a name="l355"></a> j=1;
|
||||
<a name="l356"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>DRVS_NUM</span><span class=cF0>;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l357"></a> dv=&</span><span class=cFB>blkdev</span><span class=cF0>.drvs[i];
|
||||
<a name="l358"></a> </span><span class=cF1>if</span><span class=cF0> (bd==dv->bd && dv->fs_type) {
|
||||
<a name="l359"></a> sect_start=-(dv->drv_offset*2*</span><span class=cF3>pi</span><span class=cF0>/</span><span class=cF7>(</span><span class=cF0>bd->max_blk+1</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l360"></a> sect_end =-(</span><span class=cF7>(</span><span class=cF0>dv->drv_offset+dv->size</span><span class=cF7>)</span><span class=cF0>*2*</span><span class=cF3>pi</span><span class=cF0>/</span><span class=cF7>(</span><span class=cF0>bd->max_blk+1</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l361"></a> dc->color=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l362"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,h>>1,v>>1,
|
||||
<a name="l363"></a> h>>1+radius*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>sect_start</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l364"></a> v>>1+radius*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>sect_start</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l365"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,h>>1,v>>1,
|
||||
<a name="l366"></a> h>>1+radius*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>sect_end</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l367"></a> v>>1+radius*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>sect_end</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l368"></a>
|
||||
<a name="l369"></a> attr=</span><span class=cF5>DrvTextAttrGet</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l370"></a> dc->color=attr&15;
|
||||
<a name="l371"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,0,v-</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>*j,</span><span class=cF6>"%C %-8Z"</span><span class=cF0>,</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l372"></a> dv->fs_type,</span><span class=cF6>"ST_DRV_TYPES"</span><span class=cF0>);
|
||||
<a name="l373"></a> dc->color.c1=attr>>4;
|
||||
<a name="l374"></a> dc->color|=</span><span class=cF3>ROPF_DITHER</span><span class=cF0>;
|
||||
<a name="l375"></a> </span><span class=cF5>GrFloodFill</span><span class=cF0>(dc,
|
||||
<a name="l376"></a> h>>1+</span><span class=cF7>(</span><span class=cF0>radius-4</span><span class=cF7>)</span><span class=cF0>*</span><span class=cF5>Cos</span><span class=cF7>(</span><span class=cF0>(sect_start+sect_end)/2</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l377"></a> v>>1+</span><span class=cF7>(</span><span class=cF0>radius-4</span><span class=cF7>)</span><span class=cF0>*</span><span class=cF5>Sin</span><span class=cF7>(</span><span class=cF0>(sect_start+sect_end)/2</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l378"></a> j++;
|
||||
<a name="l379"></a> }
|
||||
<a name="l380"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l381"></a>
|
||||
<a name="l382"></a> </span><span class=cF5>GetChar</span><span class=cF0>(,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l383"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l384"></a> </span><span class=cF5>DCFill</span><span class=cF0>;
|
||||
<a name="l385"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l386"></a>}
|
||||
<a name="l387"></a>
|
||||
<a name="l388"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaUnusedDrvSpace</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l389"></a>{
|
||||
<a name="l390"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l391"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i,l;
|
||||
<a name="l392"></a> </span><span class=cF1>U8</span><span class=cF0> *bitmap;
|
||||
<a name="l393"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l394"></a> l=dv->size+dv->drv_offset-dv->data_area;
|
||||
<a name="l395"></a> i=(</span><span class=cF7>(</span><span class=cF0>l+7</span><span class=cF7>)</span><span class=cF0>>>3+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l396"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l397"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l398"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<l;i++)
|
||||
<a name="l399"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>bitmap,i</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l400"></a> res++;
|
||||
<a name="l401"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l402"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l403"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l404"></a> </span><span class=cF1>return</span><span class=cF0> res*</span><span class=cF3>BLK_SIZE</span><span class=cF0>*dv->spc;
|
||||
<a name="l405"></a>}
|
||||
<a name="l406"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FAT32UnusedDrvSpace</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l407"></a>{
|
||||
<a name="l408"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l409"></a> </span><span class=cF9>I64</span><span class=cF0> res=0,i,l;
|
||||
<a name="l410"></a> </span><span class=cF9>U32</span><span class=cF0> *bitmap;
|
||||
<a name="l411"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l412"></a> l=(dv->size+dv->spc-1)/dv->spc-(2+dv->data_area-dv->drv_offset);
|
||||
<a name="l413"></a> i=(l*4+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l414"></a> bitmap=</span><span class=cF5>MAlloc</span><span class=cF0>(i<<</span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>);
|
||||
<a name="l415"></a> </span><span class=cF5>BlkRead</span><span class=cF0>(dv,bitmap,dv->fat1,i);
|
||||
<a name="l416"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<l;i++)
|
||||
<a name="l417"></a> </span><span class=cF1>if</span><span class=cF0> (!bitmap[i])
|
||||
<a name="l418"></a> res++;
|
||||
<a name="l419"></a> </span><span class=cF5>Free</span><span class=cF0>(bitmap);
|
||||
<a name="l420"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l421"></a> </span><span class=cF5>DrvUnlock</span><span class=cF0>(dv);
|
||||
<a name="l422"></a> </span><span class=cF1>return</span><span class=cF0> res*</span><span class=cF3>BLK_SIZE</span><span class=cF0>*dv->spc;
|
||||
<a name="l423"></a>}
|
||||
<a name="l424"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DrvUnused</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l425"></a>{</span><span class=cF2>//Returns unused size in bytes.</span><span class=cF0>
|
||||
<a name="l426"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>Let2Drv</span><span class=cF0>(drv_let),*old_dv=</span><span class=cF5>Fs</span><span class=cF0>->cur_dv;
|
||||
<a name="l427"></a> </span><span class=cF1>U8</span><span class=cF0> *old_dir=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF5>Fs</span><span class=cF0>->cur_dir);
|
||||
<a name="l428"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l429"></a> </span><span class=cF5>Drv</span><span class=cF0>(drv_let);
|
||||
<a name="l430"></a> </span><span class=cF1>switch</span><span class=cF0> (dv->fs_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l431"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_REDSEA</span><span class=cF0>:
|
||||
<a name="l432"></a> res=</span><span class=cF5>RedSeaUnusedDrvSpace</span><span class=cF0>(drv_let);
|
||||
<a name="l433"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l434"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FSt_FAT32</span><span class=cF0>:
|
||||
<a name="l435"></a> res=</span><span class=cF5>FAT32UnusedDrvSpace</span><span class=cF0>(drv_let);
|
||||
<a name="l436"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l437"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l438"></a> </span><span class=cF5>PrintErr</span><span class=cF0>(</span><span class=cF6>"File System Not Supported\n"</span><span class=cF0>);
|
||||
<a name="l439"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l440"></a> </span><span class=cF5>Drv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>old_dv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l441"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_dir);
|
||||
<a name="l442"></a> </span><span class=cF5>Free</span><span class=cF0>(old_dir);
|
||||
<a name="l443"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l444"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
198
public/Wb/Adam/ABlkDev/DskPrt.HC.HTML
Executable file
198
public/Wb/Adam/ABlkDev/DskPrt.HC.HTML
Executable file
@ -0,0 +1,198 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Install;File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ROUND_DRV_TO</span><span class=cF0> (63*255)
|
||||
<a name="l4"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DRV_HEADER</span><span class=cF0> 63
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CPlannedDrv</span><span class=cF0>
|
||||
<a name="l7"></a>{
|
||||
<a name="l8"></a> </span><span class=cF9>CPlannedDrv</span><span class=cF0> *next,*last;
|
||||
<a name="l9"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l10"></a> </span><span class=cF1>Bool</span><span class=cF0> pri;
|
||||
<a name="l11"></a>};
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DskPrt</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,...)
|
||||
<a name="l14"></a>{</span><span class=cF2>/*Partition the disk containing partition drv_let.</span><span class=cF0>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cF2>drv_let=0 means add new drive that is not already mounted.</span><span class=cF0>
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a></span><span class=cF2>>DskPrt('C',0.5,0.25,0.25); //Make three. 50% C, 25% D, 25% E, round-up to blk.</span><span class=cF0>
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd;
|
||||
<a name="l22"></a> </span><span class=cF9>CPlannedDrv</span><span class=cF0> head,*tmppp;
|
||||
<a name="l23"></a> </span><span class=cF9>CMasterBoot</span><span class=cF0> mbr;
|
||||
<a name="l24"></a> </span><span class=cF1>Bool</span><span class=cF0> pri=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l25"></a> </span><span class=cF9>I64</span><span class=cF0> ext_base,drv_let2,pri_cnt=0,i,start_offset,</span><span class=cF1>offset</span><span class=cF0>,
|
||||
<a name="l26"></a> total,remaining,cur_arg=0;
|
||||
<a name="l27"></a> </span><span class=cF6>"This command does not play well\n"</span><span class=cF0>
|
||||
<a name="l28"></a> </span><span class=cF6>"with other operating systems.\n"</span><span class=cF0>
|
||||
<a name="l29"></a> </span><span class=cF6>"You really should use another\n"</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF6>"operating system's partitioner.\n"</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF6>"If you use this, it may, in fact,\n"</span><span class=cF0>
|
||||
<a name="l32"></a> </span><span class=cF6>"make your hard drive impossible\n"</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF6>"to repartition with other operating\n"</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF6>"until you set block zero to zero\n"</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF6>"with $LK,\"BootMHDZero\",\"MN:BootMHDZero\"$()\n\n\n"</span><span class=cF0>
|
||||
<a name="l36"></a> </span><span class=cF6>"Continue"</span><span class=cF0>;
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (argc<=cur_arg && !</span><span class=cF5>YorN</span><span class=cF0>)
|
||||
<a name="l38"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l39"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l40"></a>
|
||||
<a name="l41"></a> </span><span class=cF1>if</span><span class=cF0> (drv_let && !</span><span class=cF5>Let2BlkDev</span><span class=cF7>(</span><span class=cF0>drv_let,</span><span class=cF3>FALSE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l42"></a> drv_let=0;
|
||||
<a name="l43"></a> </span><span class=cF1>if</span><span class=cF0> (!drv_let && !</span><span class=cF7>(</span><span class=cF0>drv_let=</span><span class=cF5>Mount</span><span class=cF0>(</span><span class=cF3>TRUE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l44"></a> !</span><span class=cF7>(</span><span class=cF0>bd=</span><span class=cF5>Let2BlkDev</span><span class=cF0>(drv_let,</span><span class=cF3>FALSE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> || bd->type!=</span><span class=cF3>BDT_ATA</span><span class=cF0>)
|
||||
<a name="l45"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a> total=bd->max_blk+1;
|
||||
<a name="l48"></a> </span><span class=cF5>QueInit</span><span class=cF0>(&head);
|
||||
<a name="l49"></a> drv_let2=bd->first_drv_let;
|
||||
<a name="l50"></a> remaining=</span><span class=cF5>FloorU64</span><span class=cF0>(bd->max_blk+1,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>);
|
||||
<a name="l51"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>FloorU64</span><span class=cF7>(</span><span class=cF0>remaining,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>>=</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l52"></a> tmppp=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CPlannedDrv</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l53"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l54"></a> </span><span class=cF6>"$RED$Partition %C$FG$\n"</span><span class=cF0>,drv_let2;
|
||||
<a name="l55"></a> tmppp->pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l56"></a> </span><span class=cF1>if</span><span class=cF0> (pri) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l57"></a> </span><span class=cF6>"Primary Partition"</span><span class=cF0>;
|
||||
<a name="l58"></a> </span><span class=cF1>if</span><span class=cF0> (argc>cur_arg || </span><span class=cF5>YorN</span><span class=cF0>) {
|
||||
<a name="l59"></a> pri_cnt++;
|
||||
<a name="l60"></a> tmppp->pri=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l61"></a> </span><span class=cF1>if</span><span class=cF0> (pri_cnt==3)
|
||||
<a name="l62"></a> pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l63"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l64"></a> pri=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l65"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l66"></a> </span><span class=cF6>"\nBlocks Remaining:%d (0x%X)\n"</span><span class=cF0>,
|
||||
<a name="l67"></a> remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF0>,remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (argc>cur_arg)
|
||||
<a name="l69"></a> tmppp->size=</span><span class=cF5>MinI64</span><span class=cF0>(</span><span class=cF5>CeilU64</span><span class=cF7>(</span><span class=cF5>MaxI64</span><span class=cF0>(remaining,</span><span class=cF3>DRV_HEADER</span><span class=cF0>),</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>,
|
||||
<a name="l70"></a> </span><span class=cF5>CeilU64</span><span class=cF7>(</span><span class=cF0>argv[cur_arg++](</span><span class=cF1>F64</span><span class=cF0>)*total,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l71"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l72"></a> tmppp->size=</span><span class=cF5>CeilU64</span><span class=cF0>(</span><span class=cF5>GetI64</span><span class=cF7>(</span><span class=cF6>"Size in Blocks :"</span><span class=cF0>,
|
||||
<a name="l73"></a> remaining-</span><span class=cF3>DRV_HEADER</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF3>DRV_HEADER</span><span class=cF0>,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>);
|
||||
<a name="l74"></a> } </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0><=tmppp->size<=</span><span class=cF5>FloorU64</span><span class=cF0>(remaining,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l75"></a> </span><span class=cF5>QueIns</span><span class=cF0>(tmppp,head.last);
|
||||
<a name="l76"></a> remaining-=tmppp->size;
|
||||
<a name="l77"></a> drv_let2++;
|
||||
<a name="l78"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a> </span><span class=cF6>"\n\n!!! Repartition Drive !!!\n\n"</span><span class=cF0>;
|
||||
<a name="l81"></a> tmppp=head.next;
|
||||
<a name="l82"></a> drv_let2=bd->first_drv_let;
|
||||
<a name="l83"></a> </span><span class=cF1>while</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF6>"Drive %C:%08X "</span><span class=cF0>,drv_let2,tmppp->size;
|
||||
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp->pri)
|
||||
<a name="l86"></a> </span><span class=cF6>"Primary\n"</span><span class=cF0>;
|
||||
<a name="l87"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l88"></a> </span><span class=cF6>"Logical\n"</span><span class=cF0>;
|
||||
<a name="l89"></a> tmppp=tmppp->next;
|
||||
<a name="l90"></a> drv_let2++;
|
||||
<a name="l91"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l92"></a> </span><span class=cF1>if</span><span class=cF0> (!argc && !</span><span class=cF5>AreYouSure</span><span class=cF0>)
|
||||
<a name="l93"></a> </span><span class=cF1>goto</span><span class=cF0> pd_done;
|
||||
<a name="l94"></a>
|
||||
<a name="l95"></a> remaining=</span><span class=cF5>FloorU64</span><span class=cF0>(bd->max_blk+1,</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>)-</span><span class=cF3>ROUND_DRV_TO</span><span class=cF0>;
|
||||
<a name="l96"></a> tmppp=head.next;
|
||||
<a name="l97"></a> </span><span class=cF5>MemSet</span><span class=cF0>(&mbr,0,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l98"></a> mbr.signature=0xAA55;
|
||||
<a name="l99"></a> </span><span class=cF1>offset</span><span class=cF0>=0;
|
||||
<a name="l100"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<pri_cnt;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l101"></a> mbr.p[i].active=0x80;
|
||||
<a name="l102"></a> mbr.p[i].start_head=0;
|
||||
<a name="l103"></a> mbr.p[i].start_cyl=0x101;
|
||||
<a name="l104"></a> mbr.p[i].type=1; </span><span class=cF2>//Will get set different.</span><span class=cF0>
|
||||
<a name="l105"></a> mbr.p[i].end_head=0xFE;
|
||||
<a name="l106"></a> mbr.p[i].end_cyl=0xFFFF;
|
||||
<a name="l107"></a> mbr.p[i].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF3>DRV_HEADER</span><span class=cF0>+</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l108"></a> mbr.p[i].size=tmppp->size-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF1>offset</span><span class=cF0>+=tmppp->size;
|
||||
<a name="l110"></a> remaining-=tmppp->size;
|
||||
<a name="l111"></a> tmppp=tmppp->next;
|
||||
<a name="l112"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l113"></a> </span><span class=cF1>if</span><span class=cF0> (!i) i++;
|
||||
<a name="l114"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l115"></a> mbr.p[i].active=0x80;
|
||||
<a name="l116"></a> mbr.p[i].start_head=0;
|
||||
<a name="l117"></a> mbr.p[i].start_cyl=0x101;
|
||||
<a name="l118"></a> mbr.p[i].type=0xF;
|
||||
<a name="l119"></a> mbr.p[i].end_head=0xFE;
|
||||
<a name="l120"></a> mbr.p[i].end_cyl=0xFFFF;
|
||||
<a name="l121"></a> mbr.p[i].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l122"></a> mbr.p[i].size=remaining;
|
||||
<a name="l123"></a> ext_base=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l124"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l125"></a> </span><span class=cF5>ATAWriteBlks</span><span class=cF0>(bd,&mbr,0,1);
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a> </span><span class=cF1>while</span><span class=cF0> (tmppp!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l128"></a> start_offset=</span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l129"></a> </span><span class=cF5>MemSet</span><span class=cF0>(&mbr,0,</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l130"></a> mbr.signature=0xAA55;
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a> mbr.p[0].active=0x80;
|
||||
<a name="l133"></a> mbr.p[0].start_head=1;
|
||||
<a name="l134"></a> mbr.p[0].start_cyl=0x101;
|
||||
<a name="l135"></a> mbr.p[0].type=1; </span><span class=cF2>//Will get set different.</span><span class=cF0>
|
||||
<a name="l136"></a> mbr.p[0].end_head=0xFE;
|
||||
<a name="l137"></a> mbr.p[0].end_cyl=0xFFFF;
|
||||
<a name="l138"></a> mbr.p[0].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l139"></a> mbr.p[0].size=tmppp->size-</span><span class=cF3>DRV_HEADER</span><span class=cF0>;
|
||||
<a name="l140"></a> </span><span class=cF1>offset</span><span class=cF0>+=tmppp->size;
|
||||
<a name="l141"></a> tmppp=tmppp->next;
|
||||
<a name="l142"></a> </span><span class=cF1>if</span><span class=cF0> (tmppp!=&head) {
|
||||
<a name="l143"></a> mbr.p[1].active=0x80;
|
||||
<a name="l144"></a> mbr.p[1].start_head=0;
|
||||
<a name="l145"></a> mbr.p[1].start_cyl=0x101;
|
||||
<a name="l146"></a> mbr.p[1].type=5;
|
||||
<a name="l147"></a> mbr.p[1].end_head=0xFE;
|
||||
<a name="l148"></a> mbr.p[1].end_cyl=0xFFFF;
|
||||
<a name="l149"></a> mbr.p[1].</span><span class=cF1>offset</span><span class=cF0>=</span><span class=cF1>offset</span><span class=cF0>-ext_base;
|
||||
<a name="l150"></a> mbr.p[1].size=tmppp->size;
|
||||
<a name="l151"></a> }
|
||||
<a name="l152"></a> </span><span class=cF5>ATAWriteBlks</span><span class=cF0>(bd,&mbr,start_offset,1);
|
||||
<a name="l153"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a> bd->flags&=~(</span><span class=cF3>BDF_INITIALIZED</span><span class=cF0> | </span><span class=cF3>BDF_INIT_IN_PROGRESS</span><span class=cF0>);
|
||||
<a name="l156"></a> </span><span class=cF5>BlkDevAdd</span><span class=cF0>(bd,,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l157"></a> </span><span class=cF1>for</span><span class=cF0> (i=bd->first_drv_let;i<drv_let2;i++)
|
||||
<a name="l158"></a> </span><span class=cF5>Fmt</span><span class=cF0>(i,,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l159"></a>
|
||||
<a name="l160"></a> pd_done:
|
||||
<a name="l161"></a> </span><span class=cF1>while</span><span class=cF0> (head.next!=&head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l162"></a> tmppp=head.next;
|
||||
<a name="l163"></a> </span><span class=cF5>QueRem</span><span class=cF0>(tmppp);
|
||||
<a name="l164"></a> </span><span class=cF5>Free</span><span class=cF0>(tmppp);
|
||||
<a name="l165"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l166"></a> </span><span class=cF1>return</span><span class=cF0> total;
|
||||
<a name="l167"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
822
public/Wb/Adam/ABlkDev/FileMgr.HC.HTML
Executable file
822
public/Wb/Adam/ABlkDev/FileMgr.HC.HTML
Executable file
@ -0,0 +1,822 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"DolDoc/Output;StdOut/DolDoc"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DirFileDoc</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->attr & </span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>) {
|
||||
<a name="l6"></a> tmpde->user_data=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$TR,\"%s\",U=0x%X$"</span><span class=cF0>,tmpde->name,tmpde);
|
||||
<a name="l7"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n$ID,+2$"</span><span class=cF0>);
|
||||
<a name="l8"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde->sub)
|
||||
<a name="l9"></a> </span><span class=cF5>DirFileDoc</span><span class=cF0>(doc,tmpde->sub);
|
||||
<a name="l10"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$ID,-2$"</span><span class=cF0>);
|
||||
<a name="l11"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l12"></a> tmpde->user_data=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$MU,\"%s\",U=0x%X$"</span><span class=cF0>,tmpde->name,tmpde);
|
||||
<a name="l13"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l14"></a> }
|
||||
<a name="l15"></a> tmpde=tmpde->next;
|
||||
<a name="l16"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l17"></a>}
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"File/Cmd Line (Typically);Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FM_NORMAL</span><span class=cF0> 0
|
||||
<a name="l22"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FM_PICK_FILE</span><span class=cF0> 1
|
||||
<a name="l23"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FM_PICK_DIR</span><span class=cF0> 2
|
||||
<a name="l24"></a>
|
||||
<a name="l25"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0>
|
||||
<a name="l26"></a>{
|
||||
<a name="l27"></a> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *next;
|
||||
<a name="l28"></a> </span><span class=cF1>U8</span><span class=cF0> *name;
|
||||
<a name="l29"></a>};
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a></span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *</span><span class=cF5>FMCollectUncollapsedLst</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l32"></a>{
|
||||
<a name="l33"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=doc->head.next;
|
||||
<a name="l34"></a> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *res=</span><span class=cF3>NULL</span><span class=cF0>,*tmpc;
|
||||
<a name="l35"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l36"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) {
|
||||
<a name="l38"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>doc_e->de_flags&</span><span class=cF3>DOCEF_CHECKED_COLLAPSED</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde=doc_e->user_data) {
|
||||
<a name="l40"></a> tmpc=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CFMUncollapsedLst</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l41"></a> tmpc->next=res;
|
||||
<a name="l42"></a> res=tmpc;
|
||||
<a name="l43"></a> tmpc->name=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l44"></a> }
|
||||
<a name="l45"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l46"></a> }
|
||||
<a name="l47"></a> doc_e=doc_e->next;
|
||||
<a name="l48"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l49"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l50"></a>}
|
||||
<a name="l51"></a>
|
||||
<a name="l52"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMMarkUncollapsed</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *tmpc,
|
||||
<a name="l53"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_entry,</span><span class=cF1>U8</span><span class=cF0> *next_entry)
|
||||
<a name="l54"></a>{
|
||||
<a name="l55"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=doc->head.next;
|
||||
<a name="l56"></a> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *tmpc1;
|
||||
<a name="l57"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l58"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) {
|
||||
<a name="l60"></a> tmpde=doc_e->user_data;
|
||||
<a name="l61"></a> tmpc1=tmpc;
|
||||
<a name="l62"></a> </span><span class=cF1>while</span><span class=cF0> (tmpc1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l63"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>tmpc1->name,tmpde->full_name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l64"></a> doc_e->de_flags&=~</span><span class=cF3>DOCEF_CHECKED_COLLAPSED</span><span class=cF0>;
|
||||
<a name="l65"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l66"></a> }
|
||||
<a name="l67"></a> tmpc1=tmpc1->next;
|
||||
<a name="l68"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (cur_entry) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l70"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>cur_entry,tmpde->full_name,</span><span class=cF5>StrLen</span><span class=cF0>(tmpde->full_name)</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l71"></a> doc->cur_entry=doc_e;
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>==</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>cur_entry</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l73"></a> cur_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l74"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (next_entry) {
|
||||
<a name="l75"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>next_entry,
|
||||
<a name="l76"></a> tmpde->full_name,</span><span class=cF5>StrLen</span><span class=cF0>(tmpde->full_name)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l77"></a> doc->cur_entry=doc_e;
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>==</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>next_entry</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l79"></a> cur_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l80"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l81"></a> }
|
||||
<a name="l82"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l83"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) {
|
||||
<a name="l84"></a> tmpde=doc_e->user_data;
|
||||
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (cur_entry) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>cur_entry,tmpde->full_name,</span><span class=cF5>StrLen</span><span class=cF0>(tmpde->full_name)</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l87"></a> doc->cur_entry=doc_e;
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>==</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>cur_entry</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l89"></a> cur_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l90"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (next_entry) {
|
||||
<a name="l91"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>next_entry,
|
||||
<a name="l92"></a> tmpde->full_name,</span><span class=cF5>StrLen</span><span class=cF0>(tmpde->full_name)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l93"></a> doc->cur_entry=doc_e;
|
||||
<a name="l94"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>tmpde->full_name</span><span class=cF7>)</span><span class=cF0>==</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>next_entry</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l95"></a> cur_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l96"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l97"></a> }
|
||||
<a name="l98"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l99"></a> }
|
||||
<a name="l100"></a> doc_e=doc_e->next;
|
||||
<a name="l101"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l102"></a>}
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMDelUncollapsedLst</span><span class=cF0>(</span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *tmpc)
|
||||
<a name="l105"></a>{
|
||||
<a name="l106"></a> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *tmpc1;
|
||||
<a name="l107"></a> </span><span class=cF1>while</span><span class=cF0> (tmpc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l108"></a> tmpc1=tmpc->next;
|
||||
<a name="l109"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpc->name);
|
||||
<a name="l110"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpc);
|
||||
<a name="l111"></a> tmpc=tmpc1;
|
||||
<a name="l112"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l113"></a>}
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a></span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF5>FMRebuildDocDrv</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let,</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDirEntry</span><span class=cF0> **_head,</span><span class=cF1>Bool</span><span class=cF0> init)
|
||||
<a name="l116"></a>{
|
||||
<a name="l117"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l118"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l119"></a> tmpde=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l120"></a> tmpde->full_name=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%C:/"</span><span class=cF0>,drv_let);
|
||||
<a name="l121"></a> tmpde->attr=</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>;
|
||||
<a name="l122"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%c:/*"</span><span class=cF0>,drv_let);
|
||||
<a name="l123"></a> </span><span class=cF1>if</span><span class=cF0> (init)
|
||||
<a name="l124"></a> tmpde->sub=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(st,</span><span class=cF3>FUF_RECURSE</span><span class=cF0>);
|
||||
<a name="l125"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l126"></a> tmpde1=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l127"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l128"></a> tmpde->user_data=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$TR,\"%s\",U=0x%X$"</span><span class=cF0>,tmpde->full_name,tmpde);
|
||||
<a name="l129"></a> tmpde->next=*_head;
|
||||
<a name="l130"></a> *_head=tmpde;
|
||||
<a name="l131"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n$ID,+2$"</span><span class=cF0>);
|
||||
<a name="l132"></a> </span><span class=cF5>DocBottom</span><span class=cF0>(doc);
|
||||
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (init) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l134"></a> </span><span class=cF5>DirFileDoc</span><span class=cF0>(doc,tmpde1);
|
||||
<a name="l135"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) {
|
||||
<a name="l136"></a> tmpde1->parent=tmpde;
|
||||
<a name="l137"></a> tmpde1=tmpde1->next;
|
||||
<a name="l138"></a> }
|
||||
<a name="l139"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l140"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$ID,-2$"</span><span class=cF0>);
|
||||
<a name="l141"></a> </span><span class=cF1>return</span><span class=cF0> tmpde;
|
||||
<a name="l142"></a>}
|
||||
<a name="l143"></a>
|
||||
<a name="l144"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DEF2_PROCESSED</span><span class=cF0> 1
|
||||
<a name="l145"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>DEF2_NOT_INITIALIZED</span><span class=cF0> 2
|
||||
<a name="l146"></a>
|
||||
<a name="l147"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> **_doc,</span><span class=cF9>CDirEntry</span><span class=cF0> **_head,</span><span class=cF9>I64</span><span class=cF0> mode)
|
||||
<a name="l148"></a>{
|
||||
<a name="l149"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv;
|
||||
<a name="l150"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l151"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=*_doc,*doc2=</span><span class=cFB>sys_clip_doc</span><span class=cF0>,*parent_doc;
|
||||
<a name="l152"></a> </span><span class=cF9>CFMUncollapsedLst</span><span class=cF0> *tmpc=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l153"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_entry=</span><span class=cF3>NULL</span><span class=cF0>,*next_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l154"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce;
|
||||
<a name="l155"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1,*cur_tree_entry;
|
||||
<a name="l156"></a> </span><span class=cF1>if</span><span class=cF0> (!doc)
|
||||
<a name="l157"></a> parent_doc=</span><span class=cF5>DocPut</span><span class=cF0>;
|
||||
<a name="l158"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l159"></a> parent_doc=doc->parent_doc;
|
||||
<a name="l160"></a> </span><span class=cF5>Fs</span><span class=cF0>->put_doc=</span><span class=cF5>Fs</span><span class=cF0>->display_doc=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l161"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l162"></a> </span><span class=cF5>Refresh</span><span class=cF0>;
|
||||
<a name="l163"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l164"></a> cur_tree_entry=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l165"></a> doc_ce=doc->cur_entry;
|
||||
<a name="l166"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l167"></a> cur_tree_entry=doc_ce->user_data;
|
||||
<a name="l168"></a> </span><span class=cF1>if</span><span class=cF0> (cur_tree_entry)
|
||||
<a name="l169"></a> cur_entry=</span><span class=cF5>StrNew</span><span class=cF0>(cur_tree_entry->full_name);
|
||||
<a name="l170"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l171"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce!=doc)
|
||||
<a name="l172"></a> doc_ce=doc_ce->next;
|
||||
<a name="l173"></a> </span><span class=cF1>while</span><span class=cF0> (doc_ce!=doc) {
|
||||
<a name="l174"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l175"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l176"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l177"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l178"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l179"></a> tmpde1=tmpde->parent;
|
||||
<a name="l180"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) {
|
||||
<a name="l181"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1==cur_tree_entry) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l182"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l183"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l184"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l185"></a> tmpde1=tmpde1->parent;
|
||||
<a name="l186"></a> }
|
||||
<a name="l187"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde)
|
||||
<a name="l188"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l189"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l190"></a> doc_ce=doc_ce->next;
|
||||
<a name="l191"></a> }
|
||||
<a name="l192"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde)
|
||||
<a name="l193"></a> next_entry=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l194"></a>
|
||||
<a name="l195"></a> tmpc=</span><span class=cF5>FMCollectUncollapsedLst</span><span class=cF0>(doc);
|
||||
<a name="l196"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l197"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l198"></a> </span><span class=cF1>if</span><span class=cF0> (*_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l199"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(*_head);
|
||||
<a name="l200"></a> *_head=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l201"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l202"></a> doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l203"></a> doc->desc=</span><span class=cF6>'FileMan'</span><span class=cF0>;
|
||||
<a name="l204"></a> doc->parent_doc=parent_doc;
|
||||
<a name="l205"></a> doc->flags|=</span><span class=cF3>DOCF_FORM</span><span class=cF0>;
|
||||
<a name="l206"></a> </span><span class=cF1>switch</span><span class=cF0> (mode) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l207"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FM_NORMAL</span><span class=cF0>:
|
||||
<a name="l208"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$PURPLE$File Manager\n\n"</span><span class=cF0>
|
||||
<a name="l209"></a> </span><span class=cF6>"$LK,\"Click for Help\",A=\"FI:::/Doc/FileMgr.DD\"$\n\n"</span><span class=cF0>);
|
||||
<a name="l210"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l211"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FM_PICK_FILE</span><span class=cF0>:
|
||||
<a name="l212"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$PURPLE$Pick file and press <ESC>\n\n"</span><span class=cF0>);
|
||||
<a name="l213"></a> doc->flags|=</span><span class=cF3>DOCF_SIZE_MIN</span><span class=cF0>;
|
||||
<a name="l214"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l215"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FM_PICK_DIR</span><span class=cF0>:
|
||||
<a name="l216"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$PURPLE$Pick directory and press <ESC>\n\n"</span><span class=cF0>);
|
||||
<a name="l217"></a> doc->flags|=</span><span class=cF3>DOCF_SIZE_MIN</span><span class=cF0>;
|
||||
<a name="l218"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l219"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l220"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$LTBLUE$"</span><span class=cF0>);
|
||||
<a name="l221"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>DRVS_NUM</span><span class=cF0>;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l222"></a> dv=&</span><span class=cFB>blkdev</span><span class=cF0>.drvs[i];
|
||||
<a name="l223"></a> </span><span class=cF1>if</span><span class=cF0> (dv->bd->type==</span><span class=cF3>BDT_ATAPI</span><span class=cF0>) {
|
||||
<a name="l224"></a> </span><span class=cF1>if</span><span class=cF0> (dv->bd->flags&</span><span class=cF3>BDF_INITIALIZED</span><span class=cF0>)
|
||||
<a name="l225"></a> tmpde=</span><span class=cF5>FMRebuildDocDrv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>,doc,_head,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l226"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l227"></a> tmpde=</span><span class=cF5>FMRebuildDocDrv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>,doc,_head,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l228"></a> tmpde->user_data2|=</span><span class=cF3>DEF2_NOT_INITIALIZED</span><span class=cF0>;
|
||||
<a name="l229"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l230"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (dv->fs_type==</span><span class=cF3>FSt_REDSEA</span><span class=cF0> || dv->fs_type==</span><span class=cF3>FSt_FAT32</span><span class=cF0>)
|
||||
<a name="l231"></a> </span><span class=cF5>FMRebuildDocDrv</span><span class=cF0>(</span><span class=cF5>Drv2Let</span><span class=cF7>(</span><span class=cF0>dv</span><span class=cF7>)</span><span class=cF0>,doc,_head,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l232"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l233"></a> </span><span class=cF5>DocTop</span><span class=cF0>(doc);
|
||||
<a name="l234"></a> </span><span class=cF5>FMMarkUncollapsed</span><span class=cF0>(doc,tmpc,cur_entry,next_entry);
|
||||
<a name="l235"></a> </span><span class=cF5>DocCenter</span><span class=cF0>(doc);
|
||||
<a name="l236"></a> </span><span class=cF5>DocRst</span><span class=cF0>(doc2,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l237"></a> </span><span class=cF5>FMDelUncollapsedLst</span><span class=cF0>(tmpc);
|
||||
<a name="l238"></a> </span><span class=cF5>Free</span><span class=cF0>(cur_entry);
|
||||
<a name="l239"></a> </span><span class=cF5>Free</span><span class=cF0>(next_entry);
|
||||
<a name="l240"></a> *_doc=doc;
|
||||
<a name="l241"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l242"></a> </span><span class=cF5>Fs</span><span class=cF0>->put_doc=</span><span class=cF5>Fs</span><span class=cF0>->display_doc=doc;
|
||||
<a name="l243"></a>}
|
||||
<a name="l244"></a>
|
||||
<a name="l245"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMRename</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l246"></a>{
|
||||
<a name="l247"></a> </span><span class=cF9>CEdFileName</span><span class=cF0> fn;
|
||||
<a name="l248"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=doc->cur_entry;
|
||||
<a name="l249"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>,*parent;
|
||||
<a name="l250"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l251"></a> tmpde=doc_e->user_data;
|
||||
<a name="l252"></a> </span><span class=cF1>if</span><span class=cF0> (parent=tmpde->parent) {
|
||||
<a name="l253"></a> </span><span class=cF5>Cd</span><span class=cF0>(parent->full_name);
|
||||
<a name="l254"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(fn.name,tmpde->name);
|
||||
<a name="l255"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>&fn</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l256"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l257"></a> </span><span class=cF5>Move</span><span class=cF0>(tmpde->name,fn.name);
|
||||
<a name="l258"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l259"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l260"></a> }
|
||||
<a name="l261"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l262"></a> tmpde=doc_e->user_data;
|
||||
<a name="l263"></a> </span><span class=cF1>if</span><span class=cF0> (parent=tmpde->parent) {
|
||||
<a name="l264"></a> </span><span class=cF5>Cd</span><span class=cF0>(parent->full_name);
|
||||
<a name="l265"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(fn.name,tmpde->name);
|
||||
<a name="l266"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>&fn</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l267"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>tmpde->name,fn.name</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l268"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l269"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>CopyTree</span><span class=cF7>(</span><span class=cF0>tmpde->name,fn.name</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l270"></a> </span><span class=cF5>DelTree</span><span class=cF0>(tmpde->name);
|
||||
<a name="l271"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l272"></a> }
|
||||
<a name="l273"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l274"></a> }
|
||||
<a name="l275"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l276"></a>}
|
||||
<a name="l277"></a>
|
||||
<a name="l278"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMMkDir</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l279"></a>{
|
||||
<a name="l280"></a> </span><span class=cF9>CEdFileName</span><span class=cF0> fn;
|
||||
<a name="l281"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=doc->cur_entry;
|
||||
<a name="l282"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde=</span><span class=cF3>NULL</span><span class=cF0>,*parent;
|
||||
<a name="l283"></a> *fn.name=0;
|
||||
<a name="l284"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l285"></a> tmpde=doc_e->user_data;
|
||||
<a name="l286"></a> </span><span class=cF1>if</span><span class=cF0> (parent=tmpde->parent) {
|
||||
<a name="l287"></a> </span><span class=cF5>Cd</span><span class=cF0>(parent->full_name);
|
||||
<a name="l288"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>&fn</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l289"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l290"></a> </span><span class=cF5>DirMk</span><span class=cF0>(fn.name);
|
||||
<a name="l291"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l292"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l293"></a> }
|
||||
<a name="l294"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l295"></a> tmpde=doc_e->user_data;
|
||||
<a name="l296"></a> </span><span class=cF5>Cd</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l297"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocForm</span><span class=cF7>(</span><span class=cF0>&fn</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l298"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l299"></a> </span><span class=cF5>DirMk</span><span class=cF0>(fn.name);
|
||||
<a name="l300"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l301"></a> }
|
||||
<a name="l302"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l303"></a>}
|
||||
<a name="l304"></a>
|
||||
<a name="l305"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMDelete</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l306"></a>{
|
||||
<a name="l307"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l308"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l309"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l310"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l311"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l312"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l313"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"Delete: %s"</span><span class=cF0>,tmpde->full_name);
|
||||
<a name="l314"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>PopUpCancelOk</span><span class=cF7>(</span><span class=cF0>st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l315"></a> </span><span class=cF5>Del</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l316"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l317"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l318"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l319"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l320"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l321"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"Delete: %s"</span><span class=cF0>,tmpde->full_name);
|
||||
<a name="l322"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>PopUpCancelOk</span><span class=cF7>(</span><span class=cF0>st</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l323"></a> </span><span class=cF5>DelTree</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l324"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l325"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l326"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l327"></a>}
|
||||
<a name="l328"></a>
|
||||
<a name="l329"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMChgDsk</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l330"></a>{
|
||||
<a name="l331"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l332"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l333"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l334"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l335"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l336"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l337"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l338"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde->parent)
|
||||
<a name="l339"></a> tmpde=tmpde->parent;
|
||||
<a name="l340"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l341"></a> </span><span class=cF5>DskChg</span><span class=cF0>(*tmpde->full_name);
|
||||
<a name="l342"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l343"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l344"></a>}
|
||||
<a name="l345"></a>
|
||||
<a name="l346"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMMountISO</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l347"></a>{
|
||||
<a name="l348"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l349"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l350"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>tmpde=doc_ce->user_data</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l351"></a> </span><span class=cF5>MountFile</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l352"></a>}
|
||||
<a name="l353"></a>
|
||||
<a name="l354"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMUnmount</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l355"></a>{
|
||||
<a name="l356"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l357"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l358"></a> </span><span class=cF9>I64</span><span class=cF0> drv_let;
|
||||
<a name="l359"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l360"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l361"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l362"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l363"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l364"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde->parent)
|
||||
<a name="l365"></a> tmpde=tmpde->parent;
|
||||
<a name="l366"></a> drv_let=*tmpde->full_name;
|
||||
<a name="l367"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Let2BlkDev</span><span class=cF7>(</span><span class=cF0>drv_let</span><span class=cF7>)</span><span class=cF0>!=</span><span class=cF5>Let2BlkDev</span><span class=cF7>(</span><span class=cF6>':'</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l368"></a> </span><span class=cF5>Unmount</span><span class=cF0>(drv_let);
|
||||
<a name="l369"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l370"></a>}
|
||||
<a name="l371"></a>
|
||||
<a name="l372"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMFmtDrv</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l373"></a>{
|
||||
<a name="l374"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l375"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l376"></a> </span><span class=cF1>U8</span><span class=cF0> *st=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l377"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l378"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l379"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l380"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l381"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l382"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde->parent)
|
||||
<a name="l383"></a> tmpde=tmpde->parent;
|
||||
<a name="l384"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"Format Drive '%c'?\nAre You Sure?\n"</span><span class=cF0>,*tmpde->full_name);
|
||||
<a name="l385"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>PopUpCancelOk</span><span class=cF7>(</span><span class=cF0>st</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l386"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l387"></a> </span><span class=cF5>Fmt</span><span class=cF0>(*tmpde->full_name,,</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l388"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l389"></a> }
|
||||
<a name="l390"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l391"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l392"></a>}
|
||||
<a name="l393"></a>
|
||||
<a name="l394"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMMakeISO</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l395"></a>{
|
||||
<a name="l396"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l397"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l398"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l399"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l400"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l401"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l402"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l403"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l404"></a> tmpde=tmpde->parent;
|
||||
<a name="l405"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde && *tmpde->full_name) {
|
||||
<a name="l406"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l407"></a> </span><span class=cF5>RedSeaISO</span><span class=cF0>(,tmpde->full_name);
|
||||
<a name="l408"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l409"></a> }
|
||||
<a name="l410"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l411"></a>}
|
||||
<a name="l412"></a>
|
||||
<a name="l413"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMBurnISO</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l414"></a>{
|
||||
<a name="l415"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l416"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde;
|
||||
<a name="l417"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0> || doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l418"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l419"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l420"></a> tmpde=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l421"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l422"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde->parent)
|
||||
<a name="l423"></a> tmpde=tmpde->parent;
|
||||
<a name="l424"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l425"></a> </span><span class=cF5>DVDImageWrite</span><span class=cF0>(*tmpde->full_name);
|
||||
<a name="l426"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l427"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l428"></a>}
|
||||
<a name="l429"></a>
|
||||
<a name="l430"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMCopy</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l431"></a>{
|
||||
<a name="l432"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc2=</span><span class=cFB>sys_clip_doc</span><span class=cF0>;
|
||||
<a name="l433"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l434"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry,*doc_e;
|
||||
<a name="l435"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1=</span><span class=cF3>NULL</span><span class=cF0>,*tmpde2;
|
||||
<a name="l436"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock_doc2=</span><span class=cF5>DocLock</span><span class=cF0>(doc2);
|
||||
<a name="l437"></a> doc_e=doc2->head.next;
|
||||
<a name="l438"></a>
|
||||
<a name="l439"></a> tmpde1=doc_ce->user_data;
|
||||
<a name="l440"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l441"></a> tmpde1=tmpde1->parent;
|
||||
<a name="l442"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8!=</span><span class=cF3>DOCT_TREE</span><span class=cF0>)
|
||||
<a name="l443"></a> tmpde1=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l444"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l445"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc2) {
|
||||
<a name="l446"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l447"></a> tmpde=doc_e->user_data;
|
||||
<a name="l448"></a> tmpde->user_data2|=</span><span class=cF3>DEF2_PROCESSED</span><span class=cF0>;
|
||||
<a name="l449"></a> tmpde2=tmpde->parent;
|
||||
<a name="l450"></a> </span><span class=cF1>if</span><span class=cF0> (!tmpde2 || !</span><span class=cF7>(</span><span class=cF0>tmpde2->user_data2&</span><span class=cF3>DEF2_PROCESSED</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l451"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l452"></a> </span><span class=cF5>Copy</span><span class=cF0>(tmpde->full_name,tmpde1->full_name);
|
||||
<a name="l453"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l454"></a> }
|
||||
<a name="l455"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l456"></a> tmpde=doc_e->user_data;
|
||||
<a name="l457"></a> tmpde->user_data2|=</span><span class=cF3>DEF2_PROCESSED</span><span class=cF0>;
|
||||
<a name="l458"></a> tmpde2=tmpde->parent;
|
||||
<a name="l459"></a> </span><span class=cF1>if</span><span class=cF0> (!tmpde2 || !</span><span class=cF7>(</span><span class=cF0>tmpde2->user_data2&</span><span class=cF3>DEF2_PROCESSED</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l460"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l461"></a> </span><span class=cF1>if</span><span class=cF0> (*tmpde1->name)
|
||||
<a name="l462"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s/%s"</span><span class=cF0>,tmpde1->full_name,tmpde->name);
|
||||
<a name="l463"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l464"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s%s"</span><span class=cF0>,tmpde1->full_name,tmpde->name);
|
||||
<a name="l465"></a> </span><span class=cF5>CopyTree</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l466"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l467"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l468"></a> }
|
||||
<a name="l469"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l470"></a> doc_e=doc_e->next;
|
||||
<a name="l471"></a> }
|
||||
<a name="l472"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l473"></a> </span><span class=cF1>if</span><span class=cF0> (unlock_doc2)
|
||||
<a name="l474"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc2);
|
||||
<a name="l475"></a>}
|
||||
<a name="l476"></a>
|
||||
<a name="l477"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_INCLUDE</span><span class=cF0> 0
|
||||
<a name="l478"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_ADAM_INCLUDE</span><span class=cF0> 1
|
||||
<a name="l479"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_DELETE</span><span class=cF0> 2
|
||||
<a name="l480"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_RENAME</span><span class=cF0> 3
|
||||
<a name="l481"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_MKDIR</span><span class=cF0> 4
|
||||
<a name="l482"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_PLAIN</span><span class=cF0> 5
|
||||
<a name="l483"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_PASTE</span><span class=cF0> 6
|
||||
<a name="l484"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_CHG_DSK</span><span class=cF0> 7
|
||||
<a name="l485"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_FORMAT</span><span class=cF0> 8
|
||||
<a name="l486"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_MOUNT_REDSEA_ISO_C</span><span class=cF0> 9
|
||||
<a name="l487"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_UNMOUNT</span><span class=cF0> 10
|
||||
<a name="l488"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_MAKE_REDSEA_ISO_C</span><span class=cF0> 11
|
||||
<a name="l489"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_BURN_ISO</span><span class=cF0> 12
|
||||
<a name="l490"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>FMR_HELP</span><span class=cF0> 13
|
||||
<a name="l491"></a>
|
||||
<a name="l492"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpFMRight</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l493"></a>{
|
||||
<a name="l494"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l495"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l496"></a> </span><span class=cF1>if</span><span class=cF0> (header) </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%s"</span><span class=cF0>,header);
|
||||
<a name="l497"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$CM+LX,1,1 $$BT,\"INCLUDE \",LE=FMR_INCLUDE$"</span><span class=cF0>
|
||||
<a name="l498"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"ADAM INCLUDE \",LE=FMR_ADAM_INCLUDE$"</span><span class=cF0>
|
||||
<a name="l499"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"DELETE \",LE=FMR_DELETE$"</span><span class=cF0>
|
||||
<a name="l500"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"RENAME \",LE=FMR_RENAME$"</span><span class=cF0>
|
||||
<a name="l501"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"MAKE DIRECTORY \",LE=FMR_MKDIR$"</span><span class=cF0>
|
||||
<a name="l502"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"PLAIN-TEXT EDIT \",LE=FMR_PLAIN$"</span><span class=cF0>
|
||||
<a name="l503"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"PASTE CLIP FILES \",LE=FMR_PASTE$"</span><span class=cF0>
|
||||
<a name="l504"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"CHANGE DISK(MOUNT IT) \",LE=FMR_CHG_DSK$"</span><span class=cF0>
|
||||
<a name="l505"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"FORMAT \",LE=FMR_FORMAT$"</span><span class=cF0>
|
||||
<a name="l506"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"MOUNT ISO.C FILE \","</span><span class=cF0>
|
||||
<a name="l507"></a> </span><span class=cF6>"LE=FMR_MOUNT_REDSEA_ISO_C$"</span><span class=cF0>
|
||||
<a name="l508"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"UNMOUNT \",LE=FMR_UNMOUNT$"</span><span class=cF0>
|
||||
<a name="l509"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"MAKE ISO.C (CD/DVD) FILE\",LE=FMR_MAKE_REDSEA_ISO_C$"</span><span class=cF0>
|
||||
<a name="l510"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"BURN ISO (CD/DVD) FILE \",LE=FMR_BURN_ISO$"</span><span class=cF0>
|
||||
<a name="l511"></a> </span><span class=cF6>"$CM+LX,1,3 $$BT,\"HELP \",LE=FMR_HELP$"</span><span class=cF0>
|
||||
<a name="l512"></a> </span><span class=cF6>"$CM+LX,29,0$$BT,\"CANCEL \",LE=DOCM_CANCEL$\n"</span><span class=cF0>);
|
||||
<a name="l513"></a> </span><span class=cF1>if</span><span class=cF0> (footer) </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%s"</span><span class=cF0>,footer);
|
||||
<a name="l514"></a> i=</span><span class=cF5>PopUpMenu</span><span class=cF0>(doc);
|
||||
<a name="l515"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l516"></a> </span><span class=cF1>return</span><span class=cF0> i;
|
||||
<a name="l517"></a>}
|
||||
<a name="l518"></a>
|
||||
<a name="l519"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMRightClick</span><span class=cF0>()
|
||||
<a name="l520"></a>{
|
||||
<a name="l521"></a> </span><span class=cF1>switch</span><span class=cF0> (</span><span class=cF5>PopUpFMRight</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l522"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_INCLUDE</span><span class=cF0>:
|
||||
<a name="l523"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,0,0x3F0000003F);
|
||||
<a name="l524"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l525"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_ADAM_INCLUDE</span><span class=cF0>:
|
||||
<a name="l526"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,0,0x23F0000023F);
|
||||
<a name="l527"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l528"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_DELETE</span><span class=cF0>:
|
||||
<a name="l529"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF3>CH_CTRLY</span><span class=cF0>,0);
|
||||
<a name="l530"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l531"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_RENAME</span><span class=cF0>:
|
||||
<a name="l532"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'r'</span><span class=cF0>,0);
|
||||
<a name="l533"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l534"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_MKDIR</span><span class=cF0>:
|
||||
<a name="l535"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'d'</span><span class=cF0>,0);
|
||||
<a name="l536"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l537"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_PLAIN</span><span class=cF0>:
|
||||
<a name="l538"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF3>CH_SHIFT_SPACE</span><span class=cF0>,0);
|
||||
<a name="l539"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l540"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_PASTE</span><span class=cF0>:
|
||||
<a name="l541"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,0,</span><span class=cF3>SC_INS</span><span class=cF0>+</span><span class=cF3>SCF_SHIFT</span><span class=cF0>);
|
||||
<a name="l542"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l543"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_CHG_DSK</span><span class=cF0>:
|
||||
<a name="l544"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'c'</span><span class=cF0>,0);
|
||||
<a name="l545"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l546"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_FORMAT</span><span class=cF0>:
|
||||
<a name="l547"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'f'</span><span class=cF0>,0);
|
||||
<a name="l548"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l549"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_MOUNT_REDSEA_ISO_C</span><span class=cF0>:
|
||||
<a name="l550"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'i'</span><span class=cF0>,0);
|
||||
<a name="l551"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l552"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_UNMOUNT</span><span class=cF0>:
|
||||
<a name="l553"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'u'</span><span class=cF0>,0);
|
||||
<a name="l554"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l555"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_MAKE_REDSEA_ISO_C</span><span class=cF0>:
|
||||
<a name="l556"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'m'</span><span class=cF0>,0);
|
||||
<a name="l557"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l558"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_BURN_ISO</span><span class=cF0>:
|
||||
<a name="l559"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF6>'B'</span><span class=cF0>,0);
|
||||
<a name="l560"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l561"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>FMR_HELP</span><span class=cF0>:
|
||||
<a name="l562"></a> </span><span class=cF5>Msg</span><span class=cF0>(</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>,</span><span class=cF3>CH_CTRLM</span><span class=cF0>,0x43200000432);
|
||||
<a name="l563"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l564"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l565"></a>}
|
||||
<a name="l566"></a>
|
||||
<a name="l567"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cFB>fm_ms_str</span><span class=cF0>=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l568"></a></span><span class=cF1>U0</span><span class=cF0> (*</span><span class=cFB>fp_old_final_scrn_update</span><span class=cF0>)(</span><span class=cF9>CDC</span><span class=cF0> *dc);
|
||||
<a name="l569"></a>
|
||||
<a name="l570"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FMFinalScrnUpdate</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc)
|
||||
<a name="l571"></a>{
|
||||
<a name="l572"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>fm_ms_str</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l573"></a> dc->color=</span><span class=cF3>LTRED</span><span class=cF0>;
|
||||
<a name="l574"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,</span><span class=cFB>ms</span><span class=cF0>.pos.x,</span><span class=cFB>ms</span><span class=cF0>.pos.y,</span><span class=cF6>"%s"</span><span class=cF0>,</span><span class=cFB>fm_ms_str</span><span class=cF0>);
|
||||
<a name="l575"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l576"></a> (*</span><span class=cFB>fp_old_final_scrn_update</span><span class=cF0>)(dc);
|
||||
<a name="l577"></a>}
|
||||
<a name="l578"></a>
|
||||
<a name="l579"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>FileMgr</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> mode=</span><span class=cF3>FM_NORMAL</span><span class=cF0>,</span><span class=cF9>CTask</span><span class=cF0> *mem_task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l580"></a>{</span><span class=cF2>//File manager. Also, used to choose files and dirs.</span><span class=cF0>
|
||||
<a name="l581"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *head=</span><span class=cF3>NULL</span><span class=cF0>,*tmpde,*tmpde1,*tmpde2;
|
||||
<a name="l582"></a> </span><span class=cF9>I64</span><span class=cF0> sc,ch,arg1,arg2,msg_code;
|
||||
<a name="l583"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,*old_put_doc=</span><span class=cF5>DocPut</span><span class=cF0>,*old_display_doc=</span><span class=cF5>DocDisplay</span><span class=cF0>;
|
||||
<a name="l584"></a> </span><span class=cF1>U8</span><span class=cF0> *res=</span><span class=cF3>NULL</span><span class=cF0>,*st,*st2,*old_cur_dir=</span><span class=cF5>DirCur</span><span class=cF0>;
|
||||
<a name="l585"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=</span><span class=cF3>NULL</span><span class=cF0>,*doc_e;
|
||||
<a name="l586"></a> </span><span class=cF1>Bool</span><span class=cF0> okay;
|
||||
<a name="l587"></a>
|
||||
<a name="l588"></a> </span><span class=cF5>SettingsPush</span><span class=cF0>; </span><span class=cF2>//See </span><a href="/Wb/Adam/TaskSettings.HC.HTML#l3"><span class=cF4>SettingsPush</span></a><span class=cF0>
|
||||
<a name="l589"></a> </span><span class=cFB>fp_old_final_scrn_update</span><span class=cF0>=</span><span class=cFB>gr</span><span class=cF0>.fp_final_scrn_update;
|
||||
<a name="l590"></a> </span><span class=cF5>MenuFilePush</span><span class=cF0>(</span><span class=cF6>"::/Doc/FileMgrPullDown.DD"</span><span class=cF0>);
|
||||
<a name="l591"></a> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(&doc,&head,mode);
|
||||
<a name="l592"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1=</span><span class=cF5>Cd2DirEntry</span><span class=cF7>(</span><span class=cF0>head,old_cur_dir</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l593"></a> doc->cur_entry=tmpde1->user_data;
|
||||
<a name="l594"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l595"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1->attr&</span><span class=cF3>RS_ATTR_DIR</span><span class=cF0>)
|
||||
<a name="l596"></a> tmpde1->user_data(</span><span class=cF9>CDocEntry</span><span class=cF0> *)->de_flags&=~</span><span class=cF3>DOCEF_CHECKED_COLLAPSED</span><span class=cF0>;
|
||||
<a name="l597"></a> tmpde1=tmpde1->parent;
|
||||
<a name="l598"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l599"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l600"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l601"></a> </span><span class=cF1>do</span><span class=cF0> msg_code=</span><span class=cF5>GetMsg</span><span class=cF0>(&arg1,&arg2,
|
||||
<a name="l602"></a> 1<<</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>|1<<</span><span class=cF3>MSG_MS_L_DOWN</span><span class=cF0>|1<<</span><span class=cF3>MSG_MS_L_UP</span><span class=cF0>|1<<</span><span class=cF3>MSG_MS_R_UP</span><span class=cF0>);
|
||||
<a name="l603"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Fs</span><span class=cF0>!=</span><span class=cFB>sys_focus_task</span><span class=cF0>);
|
||||
<a name="l604"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l605"></a> </span><span class=cF1>switch</span><span class=cF0> (msg_code) {
|
||||
<a name="l606"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>MSG_MS_R_UP</span><span class=cF0>:
|
||||
<a name="l607"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l608"></a> </span><span class=cF5>FMRightClick</span><span class=cF0>;
|
||||
<a name="l609"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l610"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l611"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>MSG_MS_L_DOWN</span><span class=cF0>:
|
||||
<a name="l612"></a> doc_ce=doc->cur_entry;
|
||||
<a name="l613"></a> </span><span class=cFB>fm_ms_str</span><span class=cF0>=doc_ce->tag;
|
||||
<a name="l614"></a> </span><span class=cFB>gr</span><span class=cF0>.fp_final_scrn_update=&</span><span class=cF5>FMFinalScrnUpdate</span><span class=cF0>;
|
||||
<a name="l615"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l616"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>MSG_MS_L_UP</span><span class=cF0>:
|
||||
<a name="l617"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l618"></a> </span><span class=cFB>gr</span><span class=cF0>.fp_final_scrn_update=</span><span class=cFB>fp_old_final_scrn_update</span><span class=cF0>;
|
||||
<a name="l619"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>WinCursorPosSet</span><span class=cF7>(</span><span class=cF5>Fs</span><span class=cF0>,arg1+</span><span class=cF5>Fs</span><span class=cF0>->pix_left+</span><span class=cF5>Fs</span><span class=cF0>->scroll_x,
|
||||
<a name="l620"></a> arg2+</span><span class=cF5>Fs</span><span class=cF0>->pix_top+</span><span class=cF5>Fs</span><span class=cF0>->scroll_y,</span><span class=cF3>TRUE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l621"></a> doc_e=doc->cur_entry;
|
||||
<a name="l622"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e!=doc_ce) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l623"></a> st2=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l624"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) {
|
||||
<a name="l625"></a> tmpde1=doc_e->user_data;
|
||||
<a name="l626"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde1=tmpde1->parent)
|
||||
<a name="l627"></a> st2=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde1->full_name);
|
||||
<a name="l628"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) {
|
||||
<a name="l629"></a> tmpde1=doc_e->user_data;
|
||||
<a name="l630"></a> st2=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde1->full_name);
|
||||
<a name="l631"></a> }
|
||||
<a name="l632"></a> </span><span class=cF1>if</span><span class=cF0> (st2 && doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) {
|
||||
<a name="l633"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l634"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l635"></a> </span><span class=cF5>Move</span><span class=cF0>(tmpde->full_name,st2);
|
||||
<a name="l636"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l637"></a> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(&doc,&head,mode);
|
||||
<a name="l638"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (st2 && doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>) {
|
||||
<a name="l639"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l640"></a> okay=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l641"></a> tmpde2=tmpde1;
|
||||
<a name="l642"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde2) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l643"></a> </span><span class=cF1>if</span><span class=cF0> (tmpde2!=tmpde)
|
||||
<a name="l644"></a> tmpde2=tmpde2->parent;
|
||||
<a name="l645"></a> </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l646"></a> okay=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l647"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l648"></a> }
|
||||
<a name="l649"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l650"></a> </span><span class=cF1>if</span><span class=cF0> (okay) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l651"></a> </span><span class=cF1>if</span><span class=cF0> (*tmpde1->name)
|
||||
<a name="l652"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s/%s"</span><span class=cF0>,tmpde1->full_name,tmpde->name);
|
||||
<a name="l653"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l654"></a> st=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s%s"</span><span class=cF0>,tmpde1->full_name,tmpde->name);
|
||||
<a name="l655"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>tmpde->full_name,st</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l656"></a> </span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l657"></a> </span><span class=cF5>CopyTree</span><span class=cF0>(tmpde->full_name,st);
|
||||
<a name="l658"></a> </span><span class=cF5>DelTree</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l659"></a> </span><span class=cF5>Silent</span><span class=cF0>(</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l660"></a> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(&doc,&head,mode);
|
||||
<a name="l661"></a> }
|
||||
<a name="l662"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l663"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l664"></a> }
|
||||
<a name="l665"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l666"></a> </span><span class=cF5>FlushMsgs</span><span class=cF0>;
|
||||
<a name="l667"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l668"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l669"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l670"></a> </span><span class=cF5>Ed</span><span class=cF0>(doc_e->user_data</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->full_name);
|
||||
<a name="l671"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l672"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l673"></a> doc_ce=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l674"></a> }
|
||||
<a name="l675"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l676"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l677"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>MSG_KEY_DOWN</span><span class=cF0>:
|
||||
<a name="l678"></a> doc_ce=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l679"></a> ch=arg1; sc=arg2;
|
||||
<a name="l680"></a> </span><span class=cF1>if</span><span class=cF0> (sc.u8[0]==</span><span class=cF3>SC_DELETE</span><span class=cF0> && !</span><span class=cF7>(</span><span class=cF0>sc&(</span><span class=cF3>SCF_SHIFT</span><span class=cF0>|</span><span class=cF3>SCF_CTRL</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l681"></a> ch=</span><span class=cF3>CH_CTRLY</span><span class=cF0>;
|
||||
<a name="l682"></a> </span><span class=cF1>if</span><span class=cF0> (ch && sc&</span><span class=cF3>SCF_ALT</span><span class=cF0>) </span><span class=cF1>goto</span><span class=cF0> fm_regular_key;
|
||||
<a name="l683"></a> </span><span class=cF1>switch</span><span class=cF0> (ch) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l684"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\n'</span><span class=cF0>:
|
||||
<a name="l685"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l686"></a> </span><span class=cF5>FMRightClick</span><span class=cF0>;
|
||||
<a name="l687"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l688"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l689"></a> </span><span class=cF1>start</span><span class=cF0>:
|
||||
<a name="l690"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l691"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_CTRLV</span><span class=cF0>:
|
||||
<a name="l692"></a> </span><span class=cF5>FMCopy</span><span class=cF0>(doc);
|
||||
<a name="l693"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l694"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'r'</span><span class=cF0>:
|
||||
<a name="l695"></a> </span><span class=cF5>FMRename</span><span class=cF0>(doc);
|
||||
<a name="l696"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l697"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'d'</span><span class=cF0>:
|
||||
<a name="l698"></a> </span><span class=cF5>FMMkDir</span><span class=cF0>(doc);
|
||||
<a name="l699"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l700"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_CTRLY</span><span class=cF0>:
|
||||
<a name="l701"></a> </span><span class=cF5>FMDelete</span><span class=cF0>(doc);
|
||||
<a name="l702"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l703"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'c'</span><span class=cF0>:
|
||||
<a name="l704"></a> </span><span class=cF5>FMChgDsk</span><span class=cF0>(doc);
|
||||
<a name="l705"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l706"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'i'</span><span class=cF0>:
|
||||
<a name="l707"></a> </span><span class=cF5>FMMountISO</span><span class=cF0>(doc);
|
||||
<a name="l708"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l709"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'u'</span><span class=cF0>:
|
||||
<a name="l710"></a> </span><span class=cF5>FMUnmount</span><span class=cF0>(doc);
|
||||
<a name="l711"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l712"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'m'</span><span class=cF0>:
|
||||
<a name="l713"></a> </span><span class=cF5>FMMakeISO</span><span class=cF0>(doc);
|
||||
<a name="l714"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l715"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'B'</span><span class=cF0>:
|
||||
<a name="l716"></a> </span><span class=cF5>FMBurnISO</span><span class=cF0>(doc);
|
||||
<a name="l717"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l718"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'f'</span><span class=cF0>:
|
||||
<a name="l719"></a> </span><span class=cF5>FMFmtDrv</span><span class=cF0>(doc);
|
||||
<a name="l720"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l721"></a> </span><span class=cF1>end</span><span class=cF0>:
|
||||
<a name="l722"></a> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(&doc,&head,mode);
|
||||
<a name="l723"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l724"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_SHIFT_ESC</span><span class=cF0>:
|
||||
<a name="l725"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l726"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_SPACE</span><span class=cF0>:
|
||||
<a name="l727"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) {
|
||||
<a name="l728"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l729"></a> </span><span class=cF5>Ed</span><span class=cF0>(doc->cur_entry->user_data</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->full_name);
|
||||
<a name="l730"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l731"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l732"></a> </span><span class=cF1>goto</span><span class=cF0> fm_regular_key;
|
||||
<a name="l733"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l734"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_SHIFT_SPACE</span><span class=cF0>:
|
||||
<a name="l735"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) {
|
||||
<a name="l736"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l737"></a> </span><span class=cF5>Plain</span><span class=cF0>(doc->cur_entry->user_data</span><span class=cF7>(</span><span class=cF9>CDirEntry</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->full_name);
|
||||
<a name="l738"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l739"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l740"></a> </span><span class=cF1>goto</span><span class=cF0> fm_regular_key;
|
||||
<a name="l741"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l742"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_ESC</span><span class=cF0>:
|
||||
<a name="l743"></a> doc_ce=doc->cur_entry;
|
||||
<a name="l744"></a> tmpde=doc_ce->user_data;
|
||||
<a name="l745"></a> </span><span class=cF1>if</span><span class=cF0> (mode==</span><span class=cF3>FM_PICK_FILE</span><span class=cF0> && doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>)
|
||||
<a name="l746"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name,mem_task);
|
||||
<a name="l747"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (mode==</span><span class=cF3>FM_PICK_DIR</span><span class=cF0>) {
|
||||
<a name="l748"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TREE</span><span class=cF0>)
|
||||
<a name="l749"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name,mem_task);
|
||||
<a name="l750"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0> &&
|
||||
<a name="l751"></a> </span><span class=cF7>(</span><span class=cF0>tmpde=tmpde->parent</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l752"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(tmpde->full_name,mem_task);
|
||||
<a name="l753"></a> }
|
||||
<a name="l754"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l755"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l756"></a> </span><span class=cF1>if</span><span class=cF0> (sc.u8[0]==</span><span class=cF3>SC_INS</span><span class=cF0> && sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0> && !</span><span class=cF7>(</span><span class=cF0>sc&</span><span class=cF3>SCF_CTRL</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l757"></a> </span><span class=cF5>FMCopy</span><span class=cF0>(doc);
|
||||
<a name="l758"></a> </span><span class=cF5>FMRebuildDoc</span><span class=cF0>(&doc,&head,mode);
|
||||
<a name="l759"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (sc.u8[0]==</span><span class=cF3>SC_F5</span><span class=cF0>) {
|
||||
<a name="l760"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry->type_u8==</span><span class=cF3>DOCT_MENU_VAL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l761"></a> tmpde=doc->cur_entry->user_data;
|
||||
<a name="l762"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l763"></a> </span><span class=cF1>if</span><span class=cF0> (sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0>)
|
||||
<a name="l764"></a> </span><span class=cF5>AdamFile</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l765"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l766"></a> </span><span class=cF5>PopUpFile</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l767"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l768"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l769"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l770"></a>fm_regular_key:
|
||||
<a name="l771"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l772"></a> </span><span class=cF5>PutKey</span><span class=cF0>(ch,sc);
|
||||
<a name="l773"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l774"></a> }
|
||||
<a name="l775"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l776"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l777"></a> }
|
||||
<a name="l778"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (ch!=</span><span class=cF3>CH_ESC</span><span class=cF0> && ch!=</span><span class=cF3>CH_SHIFT_ESC</span><span class=cF0>);
|
||||
<a name="l779"></a> </span><span class=cFB>gr</span><span class=cF0>.fp_final_scrn_update=</span><span class=cFB>fp_old_final_scrn_update</span><span class=cF0>;
|
||||
<a name="l780"></a> </span><span class=cF5>Fs</span><span class=cF0>->put_doc =old_put_doc;
|
||||
<a name="l781"></a> </span><span class=cF5>Fs</span><span class=cF0>->display_doc=old_display_doc;
|
||||
<a name="l782"></a> </span><span class=cF5>SettingsPop</span><span class=cF0>;
|
||||
<a name="l783"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l784"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(head);
|
||||
<a name="l785"></a> </span><span class=cF5>Cd</span><span class=cF0>(old_cur_dir);
|
||||
<a name="l786"></a> </span><span class=cF5>Free</span><span class=cF0>(old_cur_dir);
|
||||
<a name="l787"></a> </span><span class=cF1>if</span><span class=cF0> (mode!=</span><span class=cF3>FM_NORMAL</span><span class=cF0> && !res)
|
||||
<a name="l788"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF6>""</span><span class=cF0>,mem_task);
|
||||
<a name="l789"></a> </span><span class=cF5>MenuPop</span><span class=cF0>;
|
||||
<a name="l790"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l791"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
39
public/Wb/Adam/ABlkDev/MakeABlkDev.HC.HTML
Executable file
39
public/Wb/Adam/ABlkDev/MakeABlkDev.HC.HTML
Executable file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF3>__DIR__</span><span class=cF0>);;
|
||||
<a name="l2"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"ADskA"</span><span class=cF0>
|
||||
<a name="l3"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"ADskB"</span><span class=cF0>
|
||||
<a name="l4"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"DskPrt"</span><span class=cF0>
|
||||
<a name="l5"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"Mount"</span><span class=cF0>
|
||||
<a name="l6"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"DskChk"</span><span class=cF0>
|
||||
<a name="l7"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"FileMgr"</span><span class=cF0>
|
||||
<a name="l8"></a></span><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF6>".."</span><span class=cF0>);;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
190
public/Wb/Adam/ABlkDev/Mount.HC.HTML
Executable file
190
public/Wb/Adam/ABlkDev/Mount.HC.HTML
Executable file
@ -0,0 +1,190 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Install;File/Cmd Line (Typically);Cmd Line (Typically);"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>U8</span><span class=cF0> </span><span class=cF5>Mount2</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> boot_drv_let,</span><span class=cF9>CDoc</span><span class=cF0> *_doc,</span><span class=cF1>Bool</span><span class=cF0> _caller_is_prtdsk)
|
||||
<a name="l3"></a>{</span><span class=cF2>//If _doc, called by </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF2> else called by </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF2>().</span><span class=cF0>
|
||||
<a name="l4"></a> </span><span class=cF9>I64</span><span class=cF0> cnt,total=0,num_hints,drv_let,type,unit,prt_num;
|
||||
<a name="l5"></a> </span><span class=cF1>U8</span><span class=cF0> blks_buf[</span><span class=cF3>STR_LEN</span><span class=cF0>],addr_buf[</span><span class=cF3>STR_LEN</span><span class=cF0>],base0_buf[</span><span class=cF3>STR_LEN</span><span class=cF0>],base1_buf[</span><span class=cF3>STR_LEN</span><span class=cF0>],
|
||||
<a name="l6"></a> *filename=</span><span class=cF3>NULL</span><span class=cF0>,*filename2=</span><span class=cF3>NULL</span><span class=cF0>,res=0;
|
||||
<a name="l7"></a> </span><span class=cF9>CATARep</span><span class=cF0> *head=</span><span class=cF3>NULL</span><span class=cF0>,*tmpha;
|
||||
<a name="l8"></a> </span><span class=cF1>Bool</span><span class=cF0> whole_drv,make_free;
|
||||
<a name="l9"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l10"></a> </span><span class=cF1>if</span><span class=cF0> (boot_drv_let)
|
||||
<a name="l11"></a> boot_drv_let=</span><span class=cF5>Let2Let</span><span class=cF0>(boot_drv_let);
|
||||
<a name="l12"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l13"></a> cnt=0;
|
||||
<a name="l14"></a> </span><span class=cF1>if</span><span class=cF0> (!_doc)
|
||||
<a name="l15"></a> </span><span class=cF5>DrvRep</span><span class=cF0>;
|
||||
<a name="l16"></a> </span><span class=cF6>"\n****** Mount Drives ******\n"</span><span class=cF0>
|
||||
<a name="l17"></a> </span><span class=cF6>"$GREEN$A$FG$-$GREEN$B$FG$ are RAM drives.\n"</span><span class=cF0>
|
||||
<a name="l18"></a> </span><span class=cF6>"$GREEN$C$FG$-$GREEN$L$FG$ are ATA hard drives.\n"</span><span class=cF0>
|
||||
<a name="l19"></a> </span><span class=cF6>"$GREEN$M$FG$-$GREEN$P$FG$ are ISO file read drives.\n"</span><span class=cF0>
|
||||
<a name="l20"></a> </span><span class=cF6>"$GREEN$Q$FG$-$GREEN$S$FG$ are ISO file write drives.\n"</span><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF6>"$GREEN$T$FG$-$GREEN$Z$FG$ are ATAPI CD/DVD drives.\n"</span><span class=cF0>
|
||||
<a name="l22"></a> </span><span class=cF6>"\nDrive Letter ($PURPLE$<ENTER>$FG$ to exit):"</span><span class=cF0>;
|
||||
<a name="l23"></a> drv_let=</span><span class=cF5>Let2Let</span><span class=cF0>(</span><span class=cF5>GetChar</span><span class=cF0>);
|
||||
<a name="l24"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l25"></a> </span><span class=cF1>if</span><span class=cF0> (type=</span><span class=cF5>Let2BlkDevType</span><span class=cF7>(</span><span class=cF0>drv_let</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l26"></a> whole_drv=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l27"></a> </span><span class=cF1>if</span><span class=cF0> (_doc) </span><span class=cF7>{</span><span class=cF0> </span><span class=cF2>//Called by </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF0>
|
||||
<a name="l28"></a> doc=_doc;
|
||||
<a name="l29"></a> make_free=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l30"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0> </span><span class=cF2>//Called by </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF2>()</span><span class=cF0>
|
||||
<a name="l31"></a> doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l32"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"CBlkDev *bd;\n"</span><span class=cF0>);
|
||||
<a name="l33"></a> make_free=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l34"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l35"></a> unit=0;
|
||||
<a name="l36"></a> prt_num=</span><span class=cF3>I64_MIN</span><span class=cF0>;
|
||||
<a name="l37"></a> </span><span class=cF1>switch</span><span class=cF0> (type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l38"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_RAM</span><span class=cF0>:
|
||||
<a name="l39"></a> </span><span class=cF6>"Addr of RAM disk ($PURPLE$<ENTER>$FG$ to MAlloc):"</span><span class=cF0>;
|
||||
<a name="l40"></a> </span><span class=cF5>GetS</span><span class=cF0>(addr_buf,</span><span class=cF3>STR_LEN</span><span class=cF0>);
|
||||
<a name="l41"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_WRITE</span><span class=cF0>:
|
||||
<a name="l42"></a> </span><span class=cF6>"Blks of 512 bytes:"</span><span class=cF0>;
|
||||
<a name="l43"></a> </span><span class=cF5>GetS</span><span class=cF0>(blks_buf,</span><span class=cF3>STR_LEN</span><span class=cF0>);
|
||||
<a name="l44"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l45"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_READ</span><span class=cF0>:
|
||||
<a name="l46"></a> filename=</span><span class=cF5>GetStr</span><span class=cF0>(</span><span class=cF6>"File Name:"</span><span class=cF0>);
|
||||
<a name="l47"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l48"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ATA</span><span class=cF0>:
|
||||
<a name="l49"></a> prt_num=</span><span class=cF5>GetI64</span><span class=cF0>(</span><span class=cF6>"Partition Num (Default=All):"</span><span class=cF0>,prt_num);
|
||||
<a name="l50"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ATAPI</span><span class=cF0>:
|
||||
<a name="l51"></a> num_hints=</span><span class=cF5>ATARep</span><span class=cF0>(,,&head);
|
||||
<a name="l52"></a> </span><span class=cF1>if</span><span class=cF0> (type==</span><span class=cF3>BDT_ATAPI</span><span class=cF0> && boot_drv_let)
|
||||
<a name="l53"></a> </span><span class=cF6>"<ENTER> to use booted CD/DVD\n"</span><span class=cF0>; </span><span class=cF2>//Only </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF0>
|
||||
<a name="l54"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (num_hints)
|
||||
<a name="l56"></a> </span><span class=cF6>"Enter dev number or\nport with $PURPLE$0x$FG$ prefix.\n"</span><span class=cF0>
|
||||
<a name="l57"></a> </span><span class=cF6>"I/O Port Base0:\n"</span><span class=cF0>;
|
||||
<a name="l58"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF6>"Include $PURPLE$0x$FG$ prefix.\nI/O Port Base0:\n"</span><span class=cF0>;
|
||||
<a name="l60"></a> </span><span class=cF5>GetS</span><span class=cF0>(base0_buf,</span><span class=cF3>STR_LEN</span><span class=cF0>);
|
||||
<a name="l61"></a> } </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>base0_buf</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>type!=</span><span class=cF3>BDT_ATAPI</span><span class=cF0> || !boot_drv_let</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l62"></a> </span><span class=cF1>if</span><span class=cF0> (1<=</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>base0_buf</span><span class=cF7>)</span><span class=cF0><=num_hints) {
|
||||
<a name="l63"></a> tmpha=</span><span class=cF5>ATARepFind</span><span class=cF0>(head,</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>base0_buf</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l64"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(base0_buf,</span><span class=cF6>"0x%X"</span><span class=cF0>,tmpha->base0);
|
||||
<a name="l65"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(base1_buf,</span><span class=cF6>"0x%X"</span><span class=cF0>,tmpha->base1);
|
||||
<a name="l66"></a> unit=tmpha->unit;
|
||||
<a name="l67"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (type!=</span><span class=cF3>BDT_ATAPI</span><span class=cF0> || *base0_buf) {
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (type==</span><span class=cF3>BDT_ATAPI</span><span class=cF0>)
|
||||
<a name="l69"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(base1_buf,</span><span class=cF6>"0"</span><span class=cF0>);
|
||||
<a name="l70"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l71"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cF6>"I/O Port Base1:\n"</span><span class=cF0>;
|
||||
<a name="l73"></a> </span><span class=cF5>GetS</span><span class=cF0>(base1_buf,</span><span class=cF3>STR_LEN</span><span class=cF0>);
|
||||
<a name="l74"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>base1_buf</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l75"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF6>"\t$PURPLE$0$FG$=Master\n\t$PURPLE$1$FG$=Slave\nUnit:"</span><span class=cF0>;
|
||||
<a name="l77"></a> unit=</span><span class=cF5>GetChar</span><span class=cF0>-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l78"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>0<=unit<=1</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l79"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l80"></a> }
|
||||
<a name="l81"></a> </span><span class=cF5>LinkedLstDel</span><span class=cF0>(head);
|
||||
<a name="l82"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l83"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd=BlkDevNextFreeSlot(\'%C\',%d);bd->unit=%d;\n"</span><span class=cF0>,
|
||||
<a name="l85"></a> drv_let,type,unit);
|
||||
<a name="l86"></a> </span><span class=cF1>switch</span><span class=cF0> (type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l87"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_RAM</span><span class=cF0>:
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (!*addr_buf) </span><span class=cF5>StrCpy</span><span class=cF0>(addr_buf,</span><span class=cF6>"0"</span><span class=cF0>);
|
||||
<a name="l89"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->RAM_dsk=%s;\n"</span><span class=cF0>,addr_buf);
|
||||
<a name="l90"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_WRITE</span><span class=cF0>:
|
||||
<a name="l91"></a> </span><span class=cF1>if</span><span class=cF0> (!*blks_buf) </span><span class=cF5>StrCpy</span><span class=cF0>(blks_buf,</span><span class=cF6>"0"</span><span class=cF0>);
|
||||
<a name="l92"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->max_blk=(%s)-1;\n"</span><span class=cF0>,blks_buf);
|
||||
<a name="l93"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->drv_offset=19<<2+"</span><span class=cF0>
|
||||
<a name="l94"></a> </span><span class=cF6>"(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;\n"</span><span class=cF0>);
|
||||
<a name="l95"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l96"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ISO_FILE_READ</span><span class=cF0>:
|
||||
<a name="l97"></a> filename2=</span><span class=cF5>FileNameAbs</span><span class=cF0>(filename);
|
||||
<a name="l98"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->file_dsk_name=AStrNew(\"%s\");\n"</span><span class=cF0>,filename2);
|
||||
<a name="l99"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->drv_offset=19<<2+"</span><span class=cF0>
|
||||
<a name="l100"></a> </span><span class=cF6>"(DVD_BLK_SIZE*2+DVD_BOOT_LOADER_SIZE)/BLK_SIZE;\n"</span><span class=cF0>);
|
||||
<a name="l101"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l102"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ATA</span><span class=cF0>:
|
||||
<a name="l103"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>BDT_ATAPI</span><span class=cF0>:
|
||||
<a name="l104"></a> </span><span class=cF1>if</span><span class=cF0> (type==</span><span class=cF3>BDT_ATAPI</span><span class=cF0> && !*base0_buf) {
|
||||
<a name="l105"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"GetBaseUnit(bd);\n"</span><span class=cF0>); </span><span class=cF2>//Only </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF0>
|
||||
<a name="l106"></a> </span><span class=cF1>if</span><span class=cF0> (drv_let==boot_drv_let)
|
||||
<a name="l107"></a> make_free=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l108"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l109"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"bd->base0=%s;bd->base1=%s;\n"</span><span class=cF0>,base0_buf,base1_buf);
|
||||
<a name="l110"></a> </span><span class=cF1>if</span><span class=cF0> (type==</span><span class=cF3>BDT_ATA</span><span class=cF0> && _caller_is_prtdsk) {
|
||||
<a name="l111"></a> </span><span class=cF6>"\nReformat WHOLE drive!"</span><span class=cF0>;
|
||||
<a name="l112"></a> whole_drv=</span><span class=cF5>YorN</span><span class=cF0>;
|
||||
<a name="l113"></a> }
|
||||
<a name="l114"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l115"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l116"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"BlkDevAdd(bd,%d,%d,%d);\n"</span><span class=cF0>,prt_num,whole_drv,make_free);
|
||||
<a name="l117"></a> </span><span class=cF1>if</span><span class=cF0> (_doc) </span><span class=cF2>//Called by </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF0>
|
||||
<a name="l118"></a> cnt++;
|
||||
<a name="l119"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0> </span><span class=cF2>//Called by </span><a href="/Wb/Adam/ABlkDev/Mount.HC.HTML#l138"><span class=cF4>Mount</span></a><span class=cF2>()</span><span class=cF0>
|
||||
<a name="l120"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>cnt=</span><span class=cF5>ExeDoc</span><span class=cF0>(doc)</span><span class=cF7>)</span><span class=cF0> && whole_drv) {
|
||||
<a name="l121"></a> </span><span class=cF1>if</span><span class=cF0> (_caller_is_prtdsk) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l122"></a> res=drv_let;
|
||||
<a name="l123"></a> </span><span class=cF5>DskPrt</span><span class=cF0>(drv_let,1.0); </span><span class=cF2>//First mount whole drive.</span><span class=cF0>
|
||||
<a name="l124"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l125"></a> </span><span class=cF5>DskPrt</span><span class=cF0>(drv_let);
|
||||
<a name="l126"></a> }
|
||||
<a name="l127"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l128"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l129"></a> }
|
||||
<a name="l130"></a> total+=cnt;
|
||||
<a name="l131"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (cnt && !_caller_is_prtdsk ||
|
||||
<a name="l132"></a> !total && _doc); </span><span class=cF2>//At least 1 if Called by </span><a href="/Wb/Kernel/KCfg.HC.HTML#l1"><span class=cF4>::/Kernel/KCfg.HC</span></a><span class=cF0>
|
||||
<a name="l133"></a> </span><span class=cF5>Free</span><span class=cF0>(filename);
|
||||
<a name="l134"></a> </span><span class=cF5>Free</span><span class=cF0>(filename2);
|
||||
<a name="l135"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l136"></a>}
|
||||
<a name="l137"></a>
|
||||
<a name="l138"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> </span><span class=cF5>Mount</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> caller_is_prtdsk=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l139"></a>{</span><span class=cF2>//Mount drives. Called from </span><a href="/Wb/Adam/ABlkDev/DskPrt.HC.HTML#l43"><span class=cF4>DskPrt(Mount)</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l140"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>Mount2</span><span class=cF0>(0,</span><span class=cF3>NULL</span><span class=cF0>,caller_is_prtdsk);
|
||||
<a name="l141"></a>}
|
||||
<a name="l142"></a>
|
||||
<a name="l143"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Unmount</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0)
|
||||
<a name="l144"></a>{</span><span class=cF2>//Unmount drive(s).</span><span class=cF0>
|
||||
<a name="l145"></a> </span><span class=cF5>BlkDevDel</span><span class=cF0>(</span><span class=cF5>Let2BlkDev</span><span class=cF7>(</span><span class=cF0>drv_let</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l146"></a>}
|
||||
<a name="l147"></a>
|
||||
<a name="l148"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> </span><span class=cF5>MountFile</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename)
|
||||
<a name="l149"></a>{</span><span class=cF2>//Mount ISO.C file.</span><span class=cF0>
|
||||
<a name="l150"></a> </span><span class=cF1>U8</span><span class=cF0> *filename2=</span><span class=cF5>ExtDft</span><span class=cF0>(filename,</span><span class=cF6>"ISO.C"</span><span class=cF0>),*filename3=</span><span class=cF5>FileNameAbs</span><span class=cF0>(filename2);
|
||||
<a name="l151"></a> </span><span class=cF9>CDrv</span><span class=cF0> *dv=</span><span class=cF5>DrvMakeFreeSlot</span><span class=cF0>(</span><span class=cF5>DrvNextFreeLet</span><span class=cF7>(</span><span class=cF6>'M'</span><span class=cF7>)</span><span class=cF0>); </span><span class=cF2>//First </span><a href="/Wb/Kernel/KernelA.HH.HTML#l2604"><span class=cF4>BDT_ISO_FILE_READ</span></a><span class=cF0>
|
||||
<a name="l152"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd=</span><span class=cF5>BlkDevNextFreeSlot</span><span class=cF0>(dv->drv_let,</span><span class=cF3>BDT_ISO_FILE_READ</span><span class=cF0>);
|
||||
<a name="l153"></a> bd->drv_offset=19<<2+(</span><span class=cF3>DVD_BLK_SIZE</span><span class=cF0>*2+</span><span class=cF3>DVD_BOOT_LOADER_SIZE</span><span class=cF0>)/</span><span class=cF3>BLK_SIZE</span><span class=cF0>;
|
||||
<a name="l154"></a> bd->file_dsk_name=</span><span class=cF5>AStrNew</span><span class=cF0>(filename3);
|
||||
<a name="l155"></a> </span><span class=cF5>BlkDevAdd</span><span class=cF0>(bd,,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l156"></a> </span><span class=cF5>Free</span><span class=cF0>(filename3);
|
||||
<a name="l157"></a> </span><span class=cF5>Free</span><span class=cF0>(filename2);
|
||||
<a name="l158"></a> </span><span class=cF1>return</span><span class=cF0> dv->drv_let;
|
||||
<a name="l159"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
301
public/Wb/Adam/ADbg.HC.HTML
Executable file
301
public/Wb/Adam/ADbg.HC.HTML
Executable file
@ -0,0 +1,301 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Debugging/Dump"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>ClassRep2</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF1>U8</span><span class=cF0> *_d,</span><span class=cF1>U8</span><span class=cF0> *class_name=</span><span class=cF1>lastclass</span><span class=cF0>,
|
||||
<a name="l3"></a> </span><span class=cF9>I64</span><span class=cF0> depth,</span><span class=cF9>I64</span><span class=cF0> max_depth,</span><span class=cF1>Bool</span><span class=cF0> dynamic,</span><span class=cF9>I64</span><span class=cF0> types=</span><span class=cF3>HTT_CLASS</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>=0)
|
||||
<a name="l4"></a>{</span><span class=cF2>//See </span><a href="/Wb/Demo/LastClass.HC.HTML#l1"><span class=cF4>::/Demo/LastClass.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,stars,*ptr;
|
||||
<a name="l6"></a> </span><span class=cF9>CMemberLst</span><span class=cF0> *ml;
|
||||
<a name="l7"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l8"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock;
|
||||
<a name="l9"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *tmpc,*tmpc2;
|
||||
<a name="l10"></a> </span><span class=cF1>if</span><span class=cF0> (depth>=max_depth) </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpc=</span><span class=cF5>HashFind</span><span class=cF0>(class_name,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,types)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l12"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"Class Not Found.\n"</span><span class=cF0>);
|
||||
<a name="l13"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l14"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l15"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>ChkPtr</span><span class=cF7>(</span><span class=cF0>_d</span><span class=cF7>)</span><span class=cF0> || !</span><span class=cF5>ChkPtr</span><span class=cF7>(</span><span class=cF0>_d(</span><span class=cF1>U8</span><span class=cF0> *)+tmpc->size</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l16"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"Bad Ptr:%016X\n"</span><span class=cF0>,_d);
|
||||
<a name="l17"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l18"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l19"></a> </span><span class=cF1>if</span><span class=cF0> (tmpc->base_class && !</span><span class=cF5>ClassRep2</span><span class=cF7>(</span><span class=cF0>doc,_d,tmpc->base_class->str,
|
||||
<a name="l20"></a> depth,max_depth,dynamic,types,</span><span class=cF1>offset</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l21"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l22"></a> unlock=</span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l23"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"Class:\"%s\"\n"</span><span class=cF0>,class_name);
|
||||
<a name="l24"></a> ml=tmpc->member_lst_and_root;
|
||||
<a name="l25"></a> </span><span class=cF1>while</span><span class=cF0> (ml) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l26"></a> tmpc2=ml->member_class;
|
||||
<a name="l27"></a> ptr=_d(</span><span class=cF1>U8</span><span class=cF0> *)+ml-></span><span class=cF1>offset</span><span class=cF0>;
|
||||
<a name="l28"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%08X "</span><span class=cF0>,ptr</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF1>offset</span><span class=cF0>);
|
||||
<a name="l29"></a> stars=tmpc2->ptr_stars_cnt;
|
||||
<a name="l30"></a> tmpc2=</span><span class=cF5>OptClassFwd</span><span class=cF0>(tmpc2);
|
||||
<a name="l31"></a> tmpc2-=tmpc2->ptr_stars_cnt;
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (tmpc2->type & </span><span class=cF3>HTT_INTERNAL_TYPE</span><span class=cF0>) {
|
||||
<a name="l33"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$GREEN$%-20ts:$FG$"</span><span class=cF0>,ml->str);
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (stars==1 && </span><span class=cF7>(</span><span class=cF0>tmpc2->raw_type==</span><span class=cF3>RT_I8</span><span class=cF0> || tmpc2->raw_type==</span><span class=cF3>RT_U8</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l35"></a> ptr=*ptr;
|
||||
<a name="l36"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ChkPtr</span><span class=cF7>(</span><span class=cF0>ptr</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l38"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$\n"</span><span class=cF0>);
|
||||
<a name="l39"></a> doc_e->data=ptr;
|
||||
<a name="l40"></a> </span><span class=cF5>DocDataFmt</span><span class=cF0>(doc,doc_e);
|
||||
<a name="l41"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l42"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%40ts\n"</span><span class=cF0>,ptr);
|
||||
<a name="l43"></a> }
|
||||
<a name="l44"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (!stars) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> j=</span><span class=cF5>MinI64</span><span class=cF0>(ml->dim.total_cnt,32);
|
||||
<a name="l46"></a> </span><span class=cF1>if</span><span class=cF0> (tmpc2->raw_type==</span><span class=cF3>RT_I8</span><span class=cF0> || tmpc2->raw_type==</span><span class=cF3>RT_U8</span><span class=cF0>) {
|
||||
<a name="l47"></a> </span><span class=cF1>if</span><span class=cF0> (j==1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l49"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=U8,A=\"%%c\"$\n"</span><span class=cF0>);
|
||||
<a name="l50"></a> doc_e->data=ptr;
|
||||
<a name="l51"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l52"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%c\n"</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l53"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l54"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l55"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM-P+RD,LEN=64,A=\"%%40ts\"$\n"</span><span class=cF0>);
|
||||
<a name="l56"></a> doc_e->data=ptr;
|
||||
<a name="l57"></a> </span><span class=cF5>DocDataFmt</span><span class=cF0>(doc,doc_e);
|
||||
<a name="l58"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%40ts\n"</span><span class=cF0>,ptr);
|
||||
<a name="l60"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l61"></a> }
|
||||
<a name="l62"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<j;i++) {
|
||||
<a name="l63"></a> </span><span class=cF1>switch</span><span class=cF0> (tmpc2->raw_type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l64"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_I0</span><span class=cF0>:
|
||||
<a name="l65"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_U0</span><span class=cF0>:
|
||||
<a name="l66"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l67"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_I8</span><span class=cF0>:
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l69"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=I8,A=\"%%02X\"$ "</span><span class=cF0>);
|
||||
<a name="l70"></a> doc_e->data=ptr(</span><span class=cF1>I8</span><span class=cF0> *)++;
|
||||
<a name="l71"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%02X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF1>I8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l73"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l74"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_U8</span><span class=cF0>:
|
||||
<a name="l75"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l76"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=U8,A=\"%%02X\"$ "</span><span class=cF0>);
|
||||
<a name="l77"></a> doc_e->data=ptr(</span><span class=cF1>U8</span><span class=cF0> *)++;
|
||||
<a name="l78"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l79"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%02X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l80"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l81"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_I16</span><span class=cF0>:
|
||||
<a name="l82"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l83"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=I16,A=\"%%04X\"$ "</span><span class=cF0>);
|
||||
<a name="l84"></a> doc_e->data=ptr(</span><span class=cF9>I16</span><span class=cF0> *)++;
|
||||
<a name="l85"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%04X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>I16</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l87"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l88"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_U16</span><span class=cF0>:
|
||||
<a name="l89"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l90"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=U16,A=\"%%04X\"$ "</span><span class=cF0>);
|
||||
<a name="l91"></a> doc_e->data=ptr(</span><span class=cF9>U16</span><span class=cF0> *)++;
|
||||
<a name="l92"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l93"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%04X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>U16</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l94"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l95"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_I32</span><span class=cF0>:
|
||||
<a name="l96"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l97"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=I32,A=\"%%08X\"$ "</span><span class=cF0>);
|
||||
<a name="l98"></a> doc_e->data=ptr(</span><span class=cF9>I32</span><span class=cF0> *)++;
|
||||
<a name="l99"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l100"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%08X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>I32</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l101"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l102"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_U32</span><span class=cF0>:
|
||||
<a name="l103"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l104"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=U32,A=\"%%08X\"$ "</span><span class=cF0>);
|
||||
<a name="l105"></a> doc_e->data=ptr(</span><span class=cF9>U32</span><span class=cF0> *)++;
|
||||
<a name="l106"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%08X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>U32</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l108"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_U64</span><span class=cF0>:
|
||||
<a name="l110"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l111"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=U64,A=\"%%08X\"$ "</span><span class=cF0>);
|
||||
<a name="l112"></a> doc_e->data=ptr(</span><span class=cF9>U64</span><span class=cF0> *)++;
|
||||
<a name="l113"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l114"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%08X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>U64</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l115"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l116"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>RT_F64</span><span class=cF0>:
|
||||
<a name="l117"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l118"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,RT=F64,A=\"%%16g\"$ "</span><span class=cF0>);
|
||||
<a name="l119"></a> doc_e->data=ptr(</span><span class=cF1>F64</span><span class=cF0> *)++;
|
||||
<a name="l120"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l121"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%16g "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>I64</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l122"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l123"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l124"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic) {
|
||||
<a name="l125"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$DA-TRM+RD+UD,A=\"%%016X\"$ "</span><span class=cF0>);
|
||||
<a name="l126"></a> doc_e->data=ptr(</span><span class=cF9>I64</span><span class=cF0> *)++;
|
||||
<a name="l127"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l128"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%016X "</span><span class=cF0>,*ptr</span><span class=cF7>(</span><span class=cF9>I64</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>++);
|
||||
<a name="l129"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l130"></a> </span><span class=cF1>if</span><span class=cF0> (dynamic)
|
||||
<a name="l131"></a> </span><span class=cF5>DocDataFmt</span><span class=cF0>(doc,doc_e);
|
||||
<a name="l132"></a> }
|
||||
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (j<ml->dim.total_cnt)
|
||||
<a name="l134"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"..."</span><span class=cF0>);
|
||||
<a name="l135"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l136"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%016X"</span><span class=cF0>,*ptr);
|
||||
<a name="l137"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l138"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l139"></a> </span><span class=cF1>if</span><span class=cF0> (depth<2) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l140"></a> </span><span class=cF1>if</span><span class=cF0> (stars==1 && !</span><span class=cF5>ChkPtr</span><span class=cF7>(</span><span class=cF0>*ptr</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l141"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%-20ts:%016X\n"</span><span class=cF0>,ml->str,*ptr);
|
||||
<a name="l142"></a> </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l143"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$TR,\"%s\"$\n"</span><span class=cF0>,ml->str);
|
||||
<a name="l144"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$ID,2$"</span><span class=cF0>);
|
||||
<a name="l145"></a> </span><span class=cF1>if</span><span class=cF0> (!stars)
|
||||
<a name="l146"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,ptr,tmpc2->str,depth+1,max_depth,dynamic);
|
||||
<a name="l147"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (stars==1)
|
||||
<a name="l148"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,*ptr,tmpc2->str,depth+1,max_depth,dynamic);
|
||||
<a name="l149"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$ID,-2$"</span><span class=cF0>);
|
||||
<a name="l150"></a> }
|
||||
<a name="l151"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l152"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%-20ts\n"</span><span class=cF0>,ml->str);
|
||||
<a name="l153"></a> }
|
||||
<a name="l154"></a> ml=ml->next;
|
||||
<a name="l155"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l156"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
||||
<a name="l157"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l158"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l159"></a>}
|
||||
<a name="l160"></a>
|
||||
<a name="l161"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ClassRep</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_d,</span><span class=cF1>U8</span><span class=cF0> *class_name=</span><span class=cF1>lastclass</span><span class=cF0>,
|
||||
<a name="l162"></a> </span><span class=cF9>I64</span><span class=cF0> max_depth=2,</span><span class=cF1>Bool</span><span class=cF0> fun=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>=0)
|
||||
<a name="l163"></a>{</span><span class=cF2>//Displays members of a record by using the compiler's info.</span><span class=cF0>
|
||||
<a name="l164"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l165"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsRaw</span><span class=cF0>)
|
||||
<a name="l166"></a> doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l167"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l168"></a> </span><span class=cF5>DocMax</span><span class=cF0>;
|
||||
<a name="l169"></a> doc=</span><span class=cF5>DocPut</span><span class=cF0>;
|
||||
<a name="l170"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l171"></a> </span><span class=cF1>if</span><span class=cF0> (fun)
|
||||
<a name="l172"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,_d,class_name,0,max_depth,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>HTT_FUN</span><span class=cF0>,</span><span class=cF1>offset</span><span class=cF0>);
|
||||
<a name="l173"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l174"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,_d,class_name,0,max_depth,</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF3>HTT_CLASS</span><span class=cF0>,</span><span class=cF1>offset</span><span class=cF0>);
|
||||
<a name="l175"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l176"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
||||
<a name="l177"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsRaw</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l178"></a> </span><span class=cF5>DocDump</span><span class=cF0>(doc,100000);
|
||||
<a name="l179"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l180"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l181"></a>}
|
||||
<a name="l182"></a>
|
||||
<a name="l183"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ClassRepD</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_d,</span><span class=cF1>U8</span><span class=cF0> *class_name=</span><span class=cF1>lastclass</span><span class=cF0>,
|
||||
<a name="l184"></a> </span><span class=cF9>I64</span><span class=cF0> max_depth=2,</span><span class=cF1>Bool</span><span class=cF0> fun=</span><span class=cF3>FALSE</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>offset</span><span class=cF0>=0)
|
||||
<a name="l185"></a>{</span><span class=cF2>//Dynamic ClassRep. Uses hex_ed widgit for live changes.</span><span class=cF0>
|
||||
<a name="l186"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l187"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsRaw</span><span class=cF0>)
|
||||
<a name="l188"></a> doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l189"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l190"></a> </span><span class=cF5>DocMax</span><span class=cF0>;
|
||||
<a name="l191"></a> doc=</span><span class=cF5>DocPut</span><span class=cF0>;
|
||||
<a name="l192"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l193"></a> </span><span class=cF1>if</span><span class=cF0> (fun)
|
||||
<a name="l194"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,_d,class_name,0,max_depth,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>HTT_FUN</span><span class=cF0>,</span><span class=cF1>offset</span><span class=cF0>);
|
||||
<a name="l195"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l196"></a> </span><span class=cF5>ClassRep2</span><span class=cF0>(doc,_d,class_name,0,max_depth,</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF3>HTT_CLASS</span><span class=cF0>,</span><span class=cF1>offset</span><span class=cF0>);
|
||||
<a name="l197"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l198"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
||||
<a name="l199"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsRaw</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l200"></a> </span><span class=cF5>DocDump</span><span class=cF0>(doc,100000);
|
||||
<a name="l201"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l202"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l203"></a>}
|
||||
<a name="l204"></a>
|
||||
<a name="l205"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>UpdateRegVarImg</span><span class=cF0>(</span><span class=cF9>CHashFun</span><span class=cF0> *tmpf,</span><span class=cF1>U8</span><span class=cF0> *_b,</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l206"></a>{
|
||||
<a name="l207"></a> </span><span class=cF9>CMemberLst</span><span class=cF0> *ml;
|
||||
<a name="l208"></a> </span><span class=cF9>CHashClass</span><span class=cF0> *tmpc;
|
||||
<a name="l209"></a> ml=tmpf->member_lst_and_root;
|
||||
<a name="l210"></a> </span><span class=cF1>while</span><span class=cF0> (ml) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l211"></a> </span><span class=cF1>if</span><span class=cF0> (ml-></span><span class=cF1>reg</span><span class=cF0>!=</span><span class=cF3>REG_NONE</span><span class=cF0>) {
|
||||
<a name="l212"></a> tmpc=</span><span class=cF5>OptClassFwd</span><span class=cF0>(ml->member_class);
|
||||
<a name="l213"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(_b+ml-></span><span class=cF1>offset</span><span class=cF0>,</span><span class=cF5>TaskRegAddr</span><span class=cF7>(</span><span class=cF0>task,ml-></span><span class=cF1>reg</span><span class=cF7>)</span><span class=cF0>,tmpc->size);
|
||||
<a name="l214"></a> }
|
||||
<a name="l215"></a> ml=ml->next;
|
||||
<a name="l216"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l217"></a>}
|
||||
<a name="l218"></a>
|
||||
<a name="l219"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>FunRep</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF1>U8</span><span class=cF0> *rbp=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> max_depth=2,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l220"></a>{</span><span class=cF2>//Shows names and vals of a fun's local vars using compiler's info.</span><span class=cF0>
|
||||
<a name="l221"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l222"></a> </span><span class=cF1>U8</span><span class=cF0> *img;
|
||||
<a name="l223"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *tmpf=</span><span class=cF5>HashFind</span><span class=cF0>(st,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,</span><span class=cF3>HTT_FUN</span><span class=cF0>);
|
||||
<a name="l224"></a> </span><span class=cF9>CMemberLst</span><span class=cF0> *tmpm;
|
||||
<a name="l225"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l226"></a> </span><span class=cF1>if</span><span class=cF0> (rbp) {
|
||||
<a name="l227"></a> </span><span class=cF1>if</span><span class=cF0> (task) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l228"></a></span><span class=cF2>//tmpf->size is negative. It's the bottom</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF2>//of the fun local var space relative to RBP .</span><span class=cF0>
|
||||
<a name="l230"></a> size=tmpf->arg_cnt*8-tmpf->size+16;
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a> img=</span><span class=cF5>MAlloc</span><span class=cF0>(size);
|
||||
<a name="l233"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(img,rbp+tmpf->size,size);
|
||||
<a name="l234"></a> </span><span class=cF5>UpdateRegVarImg</span><span class=cF0>(tmpf,img-tmpf->size,task);
|
||||
<a name="l235"></a> </span><span class=cF5>ClassRep</span><span class=cF0>(img-tmpf->size,st,max_depth,</span><span class=cF3>TRUE</span><span class=cF0>,rbp-img+tmpf->size);
|
||||
<a name="l236"></a> </span><span class=cF5>Free</span><span class=cF0>(img);
|
||||
<a name="l237"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l238"></a> </span><span class=cF5>ClassRep</span><span class=cF0>(rbp,st,max_depth,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l239"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l240"></a> tmpm=tmpf->member_lst_and_root;
|
||||
<a name="l241"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l242"></a> </span><span class=cF1>if</span><span class=cF0> (0<=tmpm-></span><span class=cF1>reg</span><span class=cF0><</span><span class=cF3>REG_REGS_NUM</span><span class=cF0>)
|
||||
<a name="l243"></a> </span><span class=cF6>"%08Z %s\n"</span><span class=cF0>,tmpm-></span><span class=cF1>reg</span><span class=cF0>,</span><span class=cF6>"ST_U64_REGS"</span><span class=cF0>,tmpm->str;
|
||||
<a name="l244"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l245"></a> </span><span class=cF6>"%08tX %s\n"</span><span class=cF0>,tmpm-></span><span class=cF1>offset</span><span class=cF0>,tmpm->str;
|
||||
<a name="l246"></a> tmpm=tmpm->next;
|
||||
<a name="l247"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l248"></a> </span><span class=cF6>"%08tX Stk Size\n"</span><span class=cF0>,tmpf->size;
|
||||
<a name="l249"></a> }
|
||||
<a name="l250"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l251"></a>}
|
||||
<a name="l252"></a>
|
||||
<a name="l253"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Debugging/Unassemble"</span><span class=cF0>
|
||||
<a name="l254"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Uf</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l255"></a>{</span><span class=cF2>//Unassembles a named fun</span><span class=cF0>
|
||||
<a name="l256"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l257"></a> </span><span class=cF9>CHashSrcSym</span><span class=cF0> *tmpf;
|
||||
<a name="l258"></a> </span><span class=cF9>CDbgInfo</span><span class=cF0> *dbg_info;
|
||||
<a name="l259"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf=</span><span class=cF5>HashFind</span><span class=cF7>(</span><span class=cF0>st,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,</span><span class=cF3>HTT_FUN</span><span class=cF0>|</span><span class=cF3>HTT_EXPORT_SYS_SYM</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l260"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf->type&</span><span class=cF3>HTT_FUN</span><span class=cF0>)
|
||||
<a name="l261"></a> </span><span class=cF5>FunRep</span><span class=cF0>(st);
|
||||
<a name="l262"></a> </span><span class=cF1>if</span><span class=cF0> (dbg_info=tmpf->dbg_info) {
|
||||
<a name="l263"></a> i=dbg_info->body[dbg_info->max_line+1-dbg_info->min_line]
|
||||
<a name="l264"></a> -dbg_info->body[0];
|
||||
<a name="l265"></a> </span><span class=cF5>Un</span><span class=cF0>(dbg_info->body[0],i);
|
||||
<a name="l266"></a> </span><span class=cF6>"Code Size:%04X\n"</span><span class=cF0>,i;
|
||||
<a name="l267"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l268"></a> </span><span class=cF5>U</span><span class=cF0>(</span><span class=cF5>HashVal</span><span class=cF7>(</span><span class=cF0>tmpf</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l269"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l270"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
68
public/Wb/Adam/ADefine.HC.HTML
Executable file
68
public/Wb/Adam/ADefine.HC.HTML
Executable file
@ -0,0 +1,68 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Define;Char/Define"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LoadDocDefines</span><span class=cF0>()
|
||||
<a name="l4"></a>{
|
||||
<a name="l5"></a> </span><span class=cF9>CBinFile</span><span class=cF0> *bfh=</span><span class=cFB>mem_boot_base</span><span class=cF0>-</span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF9>CBinFile</span><span class=cF0>);
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_OS_NAME_VERSION"</span><span class=cF0>,</span><span class=cF6>"TempleOS V%0.2f"</span><span class=cF0>,</span><span class=cFB>sys_os_version</span><span class=cF0>);
|
||||
<a name="l8"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_TEMPLEOS_AGE"</span><span class=cF0>,</span><span class=cF6>"%0.1f"</span><span class=cF0>,
|
||||
<a name="l9"></a> </span><span class=cF7>(</span><span class=cF5>Now</span><span class=cF0>-</span><span class=cF5>Str2Date</span><span class=cF0>(</span><span class=cF6>"8/1/2003"</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>/</span><span class=cF5>ToF64</span><span class=cF7>(</span><span class=cF0>1<<32</span><span class=cF7>)</span><span class=cF0>/</span><span class=cF3>CDATE_YEAR_DAYS</span><span class=cF0>);
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_KERNEL"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,bfh);
|
||||
<a name="l12"></a> bfh(</span><span class=cF9>I64</span><span class=cF0>)+=bfh->file_size-1;
|
||||
<a name="l13"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_KERNEL_END"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,bfh);
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a> </span><span class=cF2>//</span><a href="/Wb/Adam/Opt/Boot/BootDVD.HC.HTML#l5"><span class=cF4>DD_BOOT_HIGH_LOC_DVD</span></a><span class=cF0>
|
||||
<a name="l16"></a></span><span class=cF5>
|
||||
<a name="l17"></a>+] LineRep</span><span class=cF0>
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MP_VECT"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,</span><span class=cF3>MP_VECT_ADDR</span><span class=cF0>);
|
||||
<a name="l20"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MP_VECT_END"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,
|
||||
<a name="l21"></a> </span><span class=cF3>MP_VECT_ADDR</span><span class=cF0>+</span><span class=cFD>COREAP_16BIT_INIT_END</span><span class=cF0>-</span><span class=cFD>COREAP_16BIT_INIT</span><span class=cF0>-1);
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_SYS_FIXED_AREA_BASE"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,</span><span class=cF3>SYS_FIXED_AREA</span><span class=cF0>);
|
||||
<a name="l24"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_SYS_FIXED_AREA_END"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,
|
||||
<a name="l25"></a> </span><span class=cF3>SYS_FIXED_AREA</span><span class=cF0>+</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CSysFixedArea</span><span class=cF7>)</span><span class=cF0>-1);
|
||||
<a name="l26"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MEM_HEAP_BASE"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,</span><span class=cFB>mem_heap_base</span><span class=cF0>);
|
||||
<a name="l27"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MEM_HEAP_LIMIT"</span><span class=cF0>,</span><span class=cF6>"%08X"</span><span class=cF0>,</span><span class=cFB>mem_heap_limit</span><span class=cF0>);
|
||||
<a name="l28"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MEM_MIN_MEG"</span><span class=cF0>,</span><span class=cF6>"%dMeg"</span><span class=cF0>,</span><span class=cF3>MEM_MIN_MEG</span><span class=cF0>);
|
||||
<a name="l29"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_UNCACHED_ALIAS"</span><span class=cF0>,</span><span class=cF6>"%010X"</span><span class=cF0>,</span><span class=cFB>dev</span><span class=cF0>.uncached_alias);
|
||||
<a name="l30"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_PHYSICAL_SPACE_END"</span><span class=cF0>,</span><span class=cF6>"%010X"</span><span class=cF0>,
|
||||
<a name="l31"></a> </span><span class=cFB>mem_physical_space</span><span class=cF0>-1);
|
||||
<a name="l32"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_MAPPED_SPACE_END"</span><span class=cF0>,</span><span class=cF6>"%010X"</span><span class=cF0>,
|
||||
<a name="l33"></a> </span><span class=cFB>mem_mapped_space</span><span class=cF0>-1);
|
||||
<a name="l34"></a> </span><span class=cF5>DefinePrint</span><span class=cF0>(</span><span class=cF6>"DD_JIFFY_HZ"</span><span class=cF0>,</span><span class=cF6>"%dHz"</span><span class=cF0>,</span><span class=cF3>JIFFY_FREQ</span><span class=cF0>);
|
||||
<a name="l35"></a>}
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a></span><span class=cF5>LoadDocDefines</span><span class=cF0>;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
126
public/Wb/Adam/AExts.HC.HTML
Executable file
126
public/Wb/Adam/AExts.HC.HTML
Executable file
@ -0,0 +1,126 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDDef</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF9>CTask</span><span class=cF0> *parent=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l2"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDDefsPut</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF9>I64</span><span class=cF0> num=-1);
|
||||
<a name="l3"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDFillin</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n);
|
||||
<a name="l4"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACFillIn</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n);
|
||||
<a name="l5"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACMan</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF9>CTask</span><span class=cF0> *parent_task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l6"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>AdamFile</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF1>Bool</span><span class=cF0> warn_ext=</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l7"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>AutoComplete</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> val=</span><span class=cF3>OFF</span><span class=cF0>);
|
||||
<a name="l8"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ClipDel</span><span class=cF0>();
|
||||
<a name="l9"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0> *</span><span class=cF5>CtrlFindUnique</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *haystack_task,</span><span class=cF9>I64</span><span class=cF0> needle_type);
|
||||
<a name="l10"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>CtrlInside</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y);
|
||||
<a name="l11"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>DC2Sprite</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *tmpb);
|
||||
<a name="l12"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocBinDel</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocBin</span><span class=cF0> *b);
|
||||
<a name="l13"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocBinsValidate</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l14"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocBottom</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l15"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocCenter</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> recalc_flags=</span><span class=cF3>RECALCt_NORMAL</span><span class=cF0>);
|
||||
<a name="l16"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocClear</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> clear_holds=</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l17"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocCursor</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> show=</span><span class=cF3>OFF</span><span class=cF0>,</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l18"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocD</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *buf,</span><span class=cF9>I64</span><span class=cF0> cnt=0x80);
|
||||
<a name="l19"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocDataFmt</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e,</span><span class=cF9>I64</span><span class=cF0> d=</span><span class=cF3>DOCM_CANCEL</span><span class=cF0>);
|
||||
<a name="l20"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocDel</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l21"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cF5>DocDisplay</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l22"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocDump</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> uS_delay=0);
|
||||
<a name="l23"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDocEntry</span><span class=cF0> *</span><span class=cF5>DocEntryCopy</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
|
||||
<a name="l24"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocEntryDel</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
|
||||
<a name="l25"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocForm</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_d,</span><span class=cF1>U8</span><span class=cF0> *class_name=</span><span class=cF1>lastclass</span><span class=cF0>,
|
||||
<a name="l26"></a> </span><span class=cF9>I64</span><span class=cF0> dof_flags=0,</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l27"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocHelpIdx</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF1>U8</span><span class=cF0> *idx);
|
||||
<a name="l28"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocHighlightCursor</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> show=</span><span class=cF3>OFF</span><span class=cF0>,</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l29"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocInsDoc</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CDoc</span><span class=cF0> *doc2);
|
||||
<a name="l30"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocInsEntry</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e);
|
||||
<a name="l31"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocLock</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l32"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DocMax</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> i=</span><span class=cF3>I64_MAX</span><span class=cF0>);
|
||||
<a name="l33"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cF5>DocNew</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l34"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDocEntry</span><span class=cF0> *</span><span class=cF5>DocPrint</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *fmt,...);
|
||||
<a name="l35"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cF5>DocPut</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l36"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cF5>DocRead</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *name=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> flags=0);
|
||||
<a name="l37"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocRecalc</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> recalc_flags=</span><span class=cF3>RECALCt_NORMAL</span><span class=cF0>);
|
||||
<a name="l38"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocRst</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF1>Bool</span><span class=cF0> is_old);
|
||||
<a name="l39"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDocEntry</span><span class=cF0> *</span><span class=cF5>DocSprite</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *elems,</span><span class=cF1>U8</span><span class=cF0> *fmt=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l40"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocTop</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l41"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>DocUnlock</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l42"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocUpdateTaskDocs</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task);
|
||||
<a name="l43"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawCtrls</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task);
|
||||
<a name="l44"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Ed</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *link_st,</span><span class=cF9>I64</span><span class=cF0> edf_dof_flags=0);
|
||||
<a name="l45"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdCodeTools</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l46"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>EdSprite</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> bin_num);
|
||||
<a name="l47"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>ExeDoc</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> ccf_flags=0);
|
||||
<a name="l48"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>FindWiz</span><span class=cF0>();
|
||||
<a name="l49"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>GetI64</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *msg=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> dft=0,</span><span class=cF9>I64</span><span class=cF0> lo=</span><span class=cF3>I64_MIN</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> hi=</span><span class=cF3>I64_MAX</span><span class=cF0>);
|
||||
<a name="l50"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>GrPlot0</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y);
|
||||
<a name="l51"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CMenuEntry</span><span class=cF0> *</span><span class=cF5>MenuEntryFind</span><span class=cF0>(</span><span class=cF9>CMenu</span><span class=cF0> *haystack_menu,</span><span class=cF1>U8</span><span class=cF0> *needle_full_name);
|
||||
<a name="l52"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CMenu</span><span class=cF0> *</span><span class=cF5>MenuFilePush</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename);
|
||||
<a name="l53"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MenuPop</span><span class=cF0>();
|
||||
<a name="l54"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CMenu</span><span class=cF0> *</span><span class=cF5>MenuPush</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st);
|
||||
<a name="l55"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> </span><span class=cF5>Mount</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> caller_is_prtdsk=</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l56"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0> *</span><span class=cF5>Noise</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> mS,</span><span class=cF1>F64</span><span class=cF0> min_ona,</span><span class=cF1>F64</span><span class=cF0> max_ona);
|
||||
<a name="l57"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>Plain</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,</span><span class=cF9>I64</span><span class=cF0> edf_dof_flags=0);
|
||||
<a name="l58"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>PopUpCancelOk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l59"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpColor</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,
|
||||
<a name="l60"></a> </span><span class=cF1>Bool</span><span class=cF0> allow_transparent=</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> allow_dft=</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l61"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpColorDither</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l62"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpColorLighting</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l63"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpFile</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename,
|
||||
<a name="l64"></a> </span><span class=cF1>Bool</span><span class=cF0> warn_ext=</span><span class=cF3>TRUE</span><span class=cF0>,</span><span class=cF9>CTask</span><span class=cF0> *parent=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CTask</span><span class=cF0> **_pu_task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l65"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>PopUpForm</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_d,</span><span class=cF1>U8</span><span class=cF0> *class_name=</span><span class=cF1>lastclass</span><span class=cF0>,
|
||||
<a name="l66"></a> </span><span class=cF9>I64</span><span class=cF0> dof_flags=</span><span class=cF3>DOF_SIZE_MIN</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l67"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpGetI64</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *msg,</span><span class=cF9>I64</span><span class=cF0> dft,</span><span class=cF9>I64</span><span class=cF0> lo=</span><span class=cF3>I64_MIN</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> hi=</span><span class=cF3>I64_MAX</span><span class=cF0>);
|
||||
<a name="l68"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>PopUpGetStr</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l69"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpMenu</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> dof_flags=0);
|
||||
<a name="l70"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>PopUpNoYes</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l71"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>PopUpOk</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l72"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>PopUpRangeI64</span><span class=cF0>(
|
||||
<a name="l73"></a> </span><span class=cF9>I64</span><span class=cF0> lo,</span><span class=cF9>I64</span><span class=cF0> hi,</span><span class=cF9>I64</span><span class=cF0> step=1,</span><span class=cF1>U8</span><span class=cF0> *header=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *footer=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l74"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>PopUpTransform</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> *r);
|
||||
<a name="l75"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RedSeaISO</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_iso_filename=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *_src_dir,
|
||||
<a name="l76"></a> </span><span class=cF1>U8</span><span class=cF0> *_stage2_filename=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l77"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Refresh</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> cnt=1,</span><span class=cF1>Bool</span><span class=cF0> force=</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l78"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>RegOneTimePopUp</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> flag_num,</span><span class=cF1>U8</span><span class=cF0> *msg);
|
||||
<a name="l79"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path,</span><span class=cF1>U8</span><span class=cF0> *fmt,...);
|
||||
<a name="l80"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>SettingsPop</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> flags=0);
|
||||
<a name="l81"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CTaskSettings</span><span class=cF0> *</span><span class=cF5>SettingsPush</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> flags=0);
|
||||
<a name="l82"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TemplateCtrlSlider</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc);
|
||||
<a name="l83"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>View</span><span class=cF0>();
|
||||
<a name="l84"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ViewAnglesDel</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l85"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0> *</span><span class=cF5>ViewAnglesNew</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l86"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>WinBorder</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> val=</span><span class=cF3>OFF</span><span class=cF0>,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l87"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cF5>WinCursorPosSet</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task,</span><span class=cF9>I64</span><span class=cF0> msx,</span><span class=cF9>I64</span><span class=cF0> msy,</span><span class=cF1>Bool</span><span class=cF0> set_cursor=</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l88"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>WinHorz</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> left,</span><span class=cF9>I64</span><span class=cF0> right,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l89"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinMax</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l90"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinScrollNull</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task,</span><span class=cF9>CD3I64</span><span class=cF0> *s);
|
||||
<a name="l91"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinScrollRestore</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task,</span><span class=cF9>CD3I64</span><span class=cF0> *s);
|
||||
<a name="l92"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinScrollsInit</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task);
|
||||
<a name="l93"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>WinToTop</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> update_z_buf=</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l94"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>WinVert</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> top,</span><span class=cF9>I64</span><span class=cF0> bottom,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>);
|
||||
<a name="l95"></a></span><span class=cF1>extern</span><span class=cF0> </span><span class=cF9>CWinMgrGlbls</span><span class=cF0> </span><span class=cFB>winmgr</span><span class=cF0>;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
462
public/Wb/Adam/AHash.HC.HTML
Executable file
462
public/Wb/Adam/AHash.HC.HTML
Executable file
@ -0,0 +1,462 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;Hash/System;Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CWho</span><span class=cF0>
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *h;
|
||||
<a name="l5"></a> </span><span class=cF1>U8</span><span class=cF0> *idx;
|
||||
<a name="l6"></a>};
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>HashEntriesCompare</span><span class=cF0>(</span><span class=cF9>CWho</span><span class=cF0> *h1,</span><span class=cF9>CWho</span><span class=cF0> *h2)
|
||||
<a name="l9"></a>{
|
||||
<a name="l10"></a> </span><span class=cF9>I64</span><span class=cF0> i1,i2;
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (i1=</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>h1->h->str,h2->h->str</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l12"></a> </span><span class=cF1>return</span><span class=cF0> i1;
|
||||
<a name="l13"></a> i1=</span><span class=cF5>HashTypeNum</span><span class=cF0>(h1->h);
|
||||
<a name="l14"></a> i2=</span><span class=cF5>HashTypeNum</span><span class=cF0>(h2->h);
|
||||
<a name="l15"></a> </span><span class=cF1>return</span><span class=cF0> i1-i2;
|
||||
<a name="l16"></a>}
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>HashEntriesCompare2</span><span class=cF0>(</span><span class=cF9>CWho</span><span class=cF0> *h1,</span><span class=cF9>CWho</span><span class=cF0> *h2)
|
||||
<a name="l19"></a>{
|
||||
<a name="l20"></a> </span><span class=cF9>CHashFun</span><span class=cF0> *tmpf1=h1->h,*tmpf2=h2->h;
|
||||
<a name="l21"></a> </span><span class=cF9>I64</span><span class=cF0> i1=</span><span class=cF5>HashVal</span><span class=cF0>(tmpf1),i2=</span><span class=cF5>HashVal</span><span class=cF0>(tmpf2);
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (i1==i2) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l23"></a> i1=</span><span class=cF5>HashTypeNum</span><span class=cF0>(tmpf1);
|
||||
<a name="l24"></a> i2=</span><span class=cF5>HashTypeNum</span><span class=cF0>(tmpf2);
|
||||
<a name="l25"></a> </span><span class=cF1>if</span><span class=cF0> (i1==i2)
|
||||
<a name="l26"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>StrCmp</span><span class=cF0>(tmpf1->str,tmpf2->str);
|
||||
<a name="l27"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l28"></a> </span><span class=cF1>return</span><span class=cF0> i1-i2;
|
||||
<a name="l29"></a>}
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>HelpIndexCnt</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *ptr,</span><span class=cF1>U8</span><span class=cF0> *idx)
|
||||
<a name="l32"></a>{
|
||||
<a name="l33"></a> </span><span class=cF9>I64</span><span class=cF0> cnt=0,ch,idx_len=</span><span class=cF5>StrLen</span><span class=cF0>(idx);
|
||||
<a name="l34"></a> </span><span class=cF1>while</span><span class=cF0> (*ptr) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>ptr,idx,idx_len</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l36"></a> cnt++;
|
||||
<a name="l37"></a> </span><span class=cF1>while</span><span class=cF0> (ch=*ptr++)
|
||||
<a name="l38"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>';'</span><span class=cF0>)
|
||||
<a name="l39"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l40"></a> </span><span class=cF1>if</span><span class=cF0> (!ch)
|
||||
<a name="l41"></a> ptr--;
|
||||
<a name="l42"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l43"></a> </span><span class=cF1>return</span><span class=cF0> cnt;
|
||||
<a name="l44"></a>}
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>HelpIndexStr</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> **_ptr,</span><span class=cF1>U8</span><span class=cF0> *idx)
|
||||
<a name="l47"></a>{
|
||||
<a name="l48"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr=*_ptr,*ptr2,*res;
|
||||
<a name="l49"></a> </span><span class=cF9>I64</span><span class=cF0> ch,idx_len=</span><span class=cF5>StrLen</span><span class=cF0>(idx);
|
||||
<a name="l50"></a> </span><span class=cF1>while</span><span class=cF0> (*ptr) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l51"></a> ptr2=ptr;
|
||||
<a name="l52"></a> </span><span class=cF1>while</span><span class=cF0> (ch=*ptr++)
|
||||
<a name="l53"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>';'</span><span class=cF0>)
|
||||
<a name="l54"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (!ch)
|
||||
<a name="l56"></a> ptr--;
|
||||
<a name="l57"></a> *_ptr=ptr;
|
||||
<a name="l58"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>ptr2,idx,idx_len</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l59"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>';'</span><span class=cF0>)
|
||||
<a name="l60"></a> ptr--;
|
||||
<a name="l61"></a> *ptr=0;
|
||||
<a name="l62"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(ptr2);
|
||||
<a name="l63"></a> *ptr=ch;
|
||||
<a name="l64"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l65"></a> }
|
||||
<a name="l66"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l67"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l68"></a>}
|
||||
<a name="l69"></a>
|
||||
<a name="l70"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>HelpComment</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task,</span><span class=cF9>CHash</span><span class=cF0> *tmph,</span><span class=cF1>U8</span><span class=cF0> *_src_link)
|
||||
<a name="l71"></a>{
|
||||
<a name="l72"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l73"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l74"></a> </span><span class=cF1>U8</span><span class=cF0> *res=</span><span class=cF3>NULL</span><span class=cF0>,*ptr,*ptr2,*src_link=</span><span class=cF5>StrNew</span><span class=cF0>(_src_link);
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a> </span><span class=cF1>if</span><span class=cF0> (*src_link==</span><span class=cF6>'F'</span><span class=cF0> && src_link[2]==</span><span class=cF6>':'</span><span class=cF0>)
|
||||
<a name="l77"></a> *src_link=</span><span class=cF6>'P'</span><span class=cF0>;
|
||||
<a name="l78"></a> </span><span class=cF5>XTalkWait</span><span class=cF0>(task,</span><span class=cF6>"Ed(0x%X,DOF_DONT_WINMGR_SYNC|DOF_DONT_SHOW);\n"</span><span class=cF0>,src_link);
|
||||
<a name="l79"></a> </span><span class=cF5>Free</span><span class=cF0>(src_link);
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a> doc=</span><span class=cF5>DocPut</span><span class=cF0>(task);
|
||||
<a name="l82"></a> doc_e=doc->cur_entry;
|
||||
<a name="l83"></a> </span><span class=cF1>if</span><span class=cF0> (tmph->type&</span><span class=cF3>HTT_FUN</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&tmph(</span><span class=cF9>CHashFun</span><span class=cF0> *)->flags,</span><span class=cF3>Ff__EXTERN</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l85"></a> </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&tmph(</span><span class=cF9>CHashFun</span><span class=cF0> *)->flags,</span><span class=cF3>Ff_INTERNAL</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l86"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc &&
|
||||
<a name="l87"></a> </span><span class=cF7>(</span><span class=cF0>!(doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0>)||!</span><span class=cF5>StrOcc</span><span class=cF0>(doc_e->tag,</span><span class=cF6>';'</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l88"></a> doc_e=doc_e->next;
|
||||
<a name="l89"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l90"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc &&
|
||||
<a name="l91"></a> </span><span class=cF7>(</span><span class=cF0>!(doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0>)||!</span><span class=cF5>StrOcc</span><span class=cF0>(doc_e->tag,</span><span class=cF6>'{'</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l92"></a> doc_e=doc_e->next;
|
||||
<a name="l93"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l94"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l95"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0>) {
|
||||
<a name="l96"></a> ptr=doc_e->tag;
|
||||
<a name="l97"></a> </span><span class=cF1>if</span><span class=cF0> (ptr2=</span><span class=cF5>StrMatch</span><span class=cF7>(</span><span class=cF6>"//"</span><span class=cF0>,ptr</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l98"></a> ptr=ptr2+2;
|
||||
<a name="l99"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ptr2=</span><span class=cF5>StrMatch</span><span class=cF7>(</span><span class=cF6>"/*"</span><span class=cF0>,ptr</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l100"></a> ptr=ptr2+2;
|
||||
<a name="l101"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>ptr,</span><span class=cF6>"public"</span><span class=cF0>,6</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l102"></a> ptr+=6;
|
||||
<a name="l103"></a> </span><span class=cF1>while</span><span class=cF0> (*ptr==</span><span class=cF3>CH_SPACE</span><span class=cF0>)
|
||||
<a name="l104"></a> ptr++;
|
||||
<a name="l105"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(ptr);
|
||||
<a name="l106"></a> doc_e=doc_e->next;
|
||||
<a name="l107"></a> }
|
||||
<a name="l108"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc && doc_e->type_u8!=</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0>) {
|
||||
<a name="l109"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TAB</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l110"></a> ptr=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s "</span><span class=cF0>,res);
|
||||
<a name="l111"></a> </span><span class=cF5>Free</span><span class=cF0>(res);
|
||||
<a name="l112"></a> res=ptr;
|
||||
<a name="l113"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l114"></a> ptr=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"%s%s"</span><span class=cF0>,res,doc_e->tag);
|
||||
<a name="l115"></a> </span><span class=cF5>Free</span><span class=cF0>(res);
|
||||
<a name="l116"></a> res=ptr;
|
||||
<a name="l117"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l118"></a> doc_e=doc_e->next;
|
||||
<a name="l119"></a> }
|
||||
<a name="l120"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l121"></a> </span><span class=cF5>XTalkWait</span><span class=cF0>(task,</span><span class=cF6>"%c"</span><span class=cF0>,</span><span class=cF3>CH_SHIFT_ESC</span><span class=cF0>);
|
||||
<a name="l122"></a> </span><span class=cF1>if</span><span class=cF0> (res) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l123"></a> ptr=</span><span class=cF5>MStrUtil</span><span class=cF0>(res,</span><span class=cF3>SUF_REM_TRAILING</span><span class=cF0>|</span><span class=cF3>SUF_REM_LEADING</span><span class=cF0>|</span><span class=cF3>SUF_SINGLE_SPACE</span><span class=cF0>);
|
||||
<a name="l124"></a> </span><span class=cF5>Free</span><span class=cF0>(res);
|
||||
<a name="l125"></a> res=ptr;
|
||||
<a name="l126"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l128"></a>}
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>HashEntriesCompare3</span><span class=cF0>(</span><span class=cF9>CWho</span><span class=cF0> *h1,</span><span class=cF9>CWho</span><span class=cF0> *h2)
|
||||
<a name="l131"></a>{
|
||||
<a name="l132"></a> </span><span class=cF9>I64</span><span class=cF0> i,i1=0,i2=0;
|
||||
<a name="l133"></a> i=</span><span class=cF5>StrCmp</span><span class=cF0>(h1->idx,h2->idx);
|
||||
<a name="l134"></a> </span><span class=cF1>if</span><span class=cF0> (i)
|
||||
<a name="l135"></a> </span><span class=cF1>return</span><span class=cF0> i;
|
||||
<a name="l136"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l137"></a> </span><span class=cF1>if</span><span class=cF0> (h1->h->type&</span><span class=cF3>HTT_HELP_FILE</span><span class=cF0>)
|
||||
<a name="l138"></a> i1=1;
|
||||
<a name="l139"></a> </span><span class=cF1>if</span><span class=cF0> (h2->h->type&</span><span class=cF3>HTT_HELP_FILE</span><span class=cF0>)
|
||||
<a name="l140"></a> i2=1;
|
||||
<a name="l141"></a> i=i2-i1;
|
||||
<a name="l142"></a> </span><span class=cF1>if</span><span class=cF0> (i)
|
||||
<a name="l143"></a> </span><span class=cF1>return</span><span class=cF0> i;
|
||||
<a name="l144"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l145"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>StrCmp</span><span class=cF0>(h1->h->str,h2->h->str);
|
||||
<a name="l146"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l147"></a>}
|
||||
<a name="l148"></a>
|
||||
<a name="l149"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Who</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *fu_flags=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CHashTable</span><span class=cF0> *h=</span><span class=cF3>NULL</span><span class=cF0>,
|
||||
<a name="l150"></a></span><span class=cF1>U8</span><span class=cF0> *idx=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l151"></a>{</span><span class=cF2>//Dump hash symbol table.</span><span class=cF0>
|
||||
<a name="l152"></a></span><span class=cF2>// "+p" for only public symbols</span><span class=cF0>
|
||||
<a name="l153"></a> </span><span class=cF2>// "+m" to order by number (normally alphabetical)</span><span class=cF0>
|
||||
<a name="l154"></a> </span><span class=cF2>// "-r" just local hash table</span><span class=cF0>
|
||||
<a name="l155"></a> </span><span class=cF9>CHashTable</span><span class=cF0> *table;
|
||||
<a name="l156"></a> </span><span class=cF9>CHashSrcSym</span><span class=cF0> *tmph;
|
||||
<a name="l157"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *ptr;
|
||||
<a name="l158"></a> </span><span class=cF9>CWho</span><span class=cF0> *lst;
|
||||
<a name="l159"></a> </span><span class=cF9>I64</span><span class=cF0> cnt,i,j,k,f=0;
|
||||
<a name="l160"></a> </span><span class=cF1>U8</span><span class=cF0> buf[512],*last_idx=</span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF6>""</span><span class=cF0>),*cur_idx,*comment;
|
||||
<a name="l161"></a> </span><span class=cF1>Bool</span><span class=cF0> recurse,publics,map;
|
||||
<a name="l162"></a> </span><span class=cF9>CTask</span><span class=cF0> *task;
|
||||
<a name="l163"></a>
|
||||
<a name="l164"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&f,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"+r"</span><span class=cF0>);
|
||||
<a name="l165"></a> </span><span class=cF5>ScanFlags</span><span class=cF0>(&f,</span><span class=cF5>Define</span><span class=cF7>(</span><span class=cF6>"ST_FILE_UTIL_FLAGS"</span><span class=cF7>)</span><span class=cF0>,fu_flags);
|
||||
<a name="l166"></a> </span><span class=cF1>if</span><span class=cF0> (f&~</span><span class=cF7>(</span><span class=cF3>FUF_RECURSE</span><span class=cF0>|</span><span class=cF3>FUF_PUBLIC</span><span class=cF0>|</span><span class=cF3>FUF_MAP</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l167"></a> </span><span class=cF5>throw</span><span class=cF0>(</span><span class=cF6>'FUF'</span><span class=cF0>);
|
||||
<a name="l168"></a> recurse=</span><span class=cF5>Bt</span><span class=cF0>(&f,</span><span class=cF3>FUf_RECURSE</span><span class=cF0>);
|
||||
<a name="l169"></a> publics=</span><span class=cF5>Bt</span><span class=cF0>(&f,</span><span class=cF3>FUf_PUBLIC</span><span class=cF0>);
|
||||
<a name="l170"></a> map =</span><span class=cF5>Bt</span><span class=cF0>(&f,</span><span class=cF3>FUf_MAP</span><span class=cF0>);
|
||||
<a name="l171"></a>
|
||||
<a name="l172"></a> </span><span class=cF1>if</span><span class=cF0> (!h) h=</span><span class=cF5>Fs</span><span class=cF0>->hash_table;
|
||||
<a name="l173"></a>
|
||||
<a name="l174"></a> </span><span class=cF1>if</span><span class=cF0> (idx) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l175"></a> task=</span><span class=cF5>User</span><span class=cF0>;
|
||||
<a name="l176"></a> </span><span class=cF5>TaskWait</span><span class=cF0>(task);
|
||||
<a name="l177"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&task->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF0>);
|
||||
<a name="l178"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l179"></a> task=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l180"></a>
|
||||
<a name="l181"></a> cnt=0;
|
||||
<a name="l182"></a> table=h;
|
||||
<a name="l183"></a> </span><span class=cF1>while</span><span class=cF0> (table) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l184"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<=table->mask;i++) {
|
||||
<a name="l185"></a> tmph=table->body[i];
|
||||
<a name="l186"></a> </span><span class=cF1>while</span><span class=cF0> (tmph) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l187"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmph->type & (</span><span class=cF3>HTF_IMPORT</span><span class=cF0> | </span><span class=cF3>HTF_PRIVATE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l188"></a> </span><span class=cF7>(</span><span class=cF0>tmph->type & </span><span class=cF3>HTF_PUBLIC</span><span class=cF0> || !publics</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l189"></a> </span><span class=cF1>if</span><span class=cF0> (!idx)
|
||||
<a name="l190"></a> cnt++;
|
||||
<a name="l191"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (tmph->type&</span><span class=cF3>HTG_SRC_SYM</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>cur_idx=tmph->idx</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l192"></a> cnt+=</span><span class=cF5>HelpIndexCnt</span><span class=cF0>(cur_idx,idx);
|
||||
<a name="l193"></a> }
|
||||
<a name="l194"></a> tmph=tmph->next;
|
||||
<a name="l195"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l196"></a> }
|
||||
<a name="l197"></a> </span><span class=cF1>if</span><span class=cF0> (recurse)
|
||||
<a name="l198"></a> table=table->next;
|
||||
<a name="l199"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l200"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l201"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l202"></a> </span><span class=cF1>if</span><span class=cF0> (!cnt) </span><span class=cF1>goto</span><span class=cF0> wh_done;
|
||||
<a name="l203"></a>
|
||||
<a name="l204"></a> lst=</span><span class=cF5>CAlloc</span><span class=cF0>(cnt*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CWho</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l205"></a> j=0;
|
||||
<a name="l206"></a> table=h;
|
||||
<a name="l207"></a> </span><span class=cF1>while</span><span class=cF0> (table) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l208"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<=table->mask;i++) {
|
||||
<a name="l209"></a> tmph=table->body[i];
|
||||
<a name="l210"></a> </span><span class=cF1>while</span><span class=cF0> (tmph) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l211"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmph->type & (</span><span class=cF3>HTF_IMPORT</span><span class=cF0> | </span><span class=cF3>HTF_PRIVATE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l212"></a> </span><span class=cF7>(</span><span class=cF0>tmph->type & </span><span class=cF3>HTF_PUBLIC</span><span class=cF0> || !publics</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l213"></a> </span><span class=cF1>if</span><span class=cF0> (!idx)
|
||||
<a name="l214"></a> lst[j++].h=tmph;
|
||||
<a name="l215"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (tmph->type&</span><span class=cF3>HTG_SRC_SYM</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>cur_idx=tmph->idx</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l216"></a> </span><span class=cF7>(</span><span class=cF0>k=</span><span class=cF5>HelpIndexCnt</span><span class=cF0>(cur_idx,idx)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l217"></a> </span><span class=cF1>while</span><span class=cF0> (k--) {
|
||||
<a name="l218"></a> lst[j].idx=</span><span class=cF5>HelpIndexStr</span><span class=cF0>(&cur_idx,idx);
|
||||
<a name="l219"></a> lst[j++].h=tmph;
|
||||
<a name="l220"></a> }
|
||||
<a name="l221"></a> tmph=tmph->next;
|
||||
<a name="l222"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l223"></a> }
|
||||
<a name="l224"></a> </span><span class=cF1>if</span><span class=cF0> (recurse)
|
||||
<a name="l225"></a> table=table->next;
|
||||
<a name="l226"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l227"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l229"></a>
|
||||
<a name="l230"></a> </span><span class=cF1>if</span><span class=cF0> (map)
|
||||
<a name="l231"></a> </span><span class=cF5>QSort</span><span class=cF0>(lst,cnt,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CWho</span><span class=cF7>)</span><span class=cF0>,&</span><span class=cF5>HashEntriesCompare2</span><span class=cF0>);
|
||||
<a name="l232"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (idx)
|
||||
<a name="l233"></a> </span><span class=cF5>QSort</span><span class=cF0>(lst,cnt,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CWho</span><span class=cF7>)</span><span class=cF0>,&</span><span class=cF5>HashEntriesCompare3</span><span class=cF0>);
|
||||
<a name="l234"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l235"></a> </span><span class=cF5>QSort</span><span class=cF0>(lst,cnt,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CWho</span><span class=cF7>)</span><span class=cF0>,&</span><span class=cF5>HashEntriesCompare</span><span class=cF0>);
|
||||
<a name="l236"></a>
|
||||
<a name="l237"></a> </span><span class=cF1>if</span><span class=cF0> (idx) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l238"></a> </span><span class=cFB>progress1_max</span><span class=cF0>=cnt;
|
||||
<a name="l239"></a> </span><span class=cFB>progress1</span><span class=cF0>=0;
|
||||
<a name="l240"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l241"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<cnt;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l242"></a> comment=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l243"></a> ptr=lst[i].h;
|
||||
<a name="l244"></a> </span><span class=cF1>if</span><span class=cF0> (idx)
|
||||
<a name="l245"></a> </span><span class=cF1>if</span><span class=cF0> (cur_idx=lst[i].idx) {
|
||||
<a name="l246"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>cur_idx,last_idx</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l247"></a> </span><span class=cF5>Free</span><span class=cF0>(last_idx);
|
||||
<a name="l248"></a> last_idx=</span><span class=cF5>StrNew</span><span class=cF0>(cur_idx);
|
||||
<a name="l249"></a> </span><span class=cF1>if</span><span class=cF0> (i)
|
||||
<a name="l250"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n\n"</span><span class=cF0>);
|
||||
<a name="l251"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$WW,0$$PURPLE$$TX+CX,\"%$Q\"$$FG$\n"</span><span class=cF0>,cur_idx);
|
||||
<a name="l252"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l253"></a> }
|
||||
<a name="l254"></a>
|
||||
<a name="l255"></a> </span><span class=cF1>if</span><span class=cF0> (idx && ptr->type & </span><span class=cF3>HTT_HELP_FILE</span><span class=cF0>) {
|
||||
<a name="l256"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$WW,1$"</span><span class=cF0>);
|
||||
<a name="l257"></a> </span><span class=cF5>DocType</span><span class=cF0>(doc,ptr->str);
|
||||
<a name="l258"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$WW,0$"</span><span class=cF0>);
|
||||
<a name="l259"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l260"></a> </span><span class=cF1>if</span><span class=cF0> (ptr->type&</span><span class=cF3>HTG_SRC_SYM</span><span class=cF0> && ptr</span><span class=cF7>(</span><span class=cF9>CHashSrcSym</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->src_link) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l261"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$LK,\"%-20s\",A=\"%s\"$"</span><span class=cF0>,
|
||||
<a name="l262"></a> ptr->str,ptr</span><span class=cF7>(</span><span class=cF9>CHashSrcSym</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->src_link);
|
||||
<a name="l263"></a> </span><span class=cF1>if</span><span class=cF0> (idx)
|
||||
<a name="l264"></a> comment=</span><span class=cF5>HelpComment</span><span class=cF0>(task,ptr,ptr</span><span class=cF7>(</span><span class=cF9>CHashSrcSym</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->src_link);
|
||||
<a name="l265"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l266"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%-20s"</span><span class=cF0>,ptr->str);
|
||||
<a name="l267"></a>
|
||||
<a name="l268"></a> </span><span class=cF1>if</span><span class=cF0> (!idx) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l269"></a> </span><span class=cF1>if</span><span class=cF0> (ptr->type & </span><span class=cF3>HTT_DEFINE_STR</span><span class=cF0>) {
|
||||
<a name="l270"></a> j=ptr(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *)->cnt;
|
||||
<a name="l271"></a> </span><span class=cF1>if</span><span class=cF0> (j==-1)
|
||||
<a name="l272"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(buf,</span><span class=cF6>"%-10t$Q "</span><span class=cF0>,ptr</span><span class=cF7>(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->data);
|
||||
<a name="l273"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l274"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(buf,</span><span class=cF6>"%-10t$Q %02X"</span><span class=cF0>,ptr</span><span class=cF7>(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->data,j);
|
||||
<a name="l275"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ptr->type & </span><span class=cF3>HTT_GLBL_VAR</span><span class=cF0>)
|
||||
<a name="l276"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(buf,</span><span class=cF6>"%010X "</span><span class=cF0>,ptr</span><span class=cF7>(</span><span class=cF9>CHashGlblVar</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>->data_addr);
|
||||
<a name="l277"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l278"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(buf,</span><span class=cF6>"%010X "</span><span class=cF0>,</span><span class=cF5>HashVal</span><span class=cF7>(</span><span class=cF0>ptr</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l279"></a> j=</span><span class=cF5>HashEntrySize</span><span class=cF0>(ptr);
|
||||
<a name="l280"></a> </span><span class=cF1>if</span><span class=cF0> (j==-1)
|
||||
<a name="l281"></a> </span><span class=cF5>CatPrint</span><span class=cF0>(buf,</span><span class=cF6>" %04X "</span><span class=cF0>,ptr->use_cnt);
|
||||
<a name="l282"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l283"></a> </span><span class=cF5>CatPrint</span><span class=cF0>(buf,</span><span class=cF6>" %04X %010X "</span><span class=cF0>,ptr->use_cnt,j);
|
||||
<a name="l284"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l285"></a> *buf=0;
|
||||
<a name="l286"></a>
|
||||
<a name="l287"></a> k=ptr->type;
|
||||
<a name="l288"></a> </span><span class=cF1>if</span><span class=cF0> (publics)
|
||||
<a name="l289"></a> k&=~</span><span class=cF3>HTF_PUBLIC</span><span class=cF0>;
|
||||
<a name="l290"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>k&</span><span class=cF3>HTG_TYPE_MASK</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l291"></a> </span><span class=cF5>CatPrint</span><span class=cF0>(buf,</span><span class=cF6>"NULL "</span><span class=cF0>);
|
||||
<a name="l292"></a> </span><span class=cF1>while</span><span class=cF0> (k) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l293"></a> j=</span><span class=cF5>Bsf</span><span class=cF0>(k);
|
||||
<a name="l294"></a> </span><span class=cF1>if</span><span class=cF0> (j<0)
|
||||
<a name="l295"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l296"></a> </span><span class=cF5>Btr</span><span class=cF0>(&k,j);
|
||||
<a name="l297"></a> </span><span class=cF5>CatPrint</span><span class=cF0>(buf,</span><span class=cF6>"%Z "</span><span class=cF0>,j,</span><span class=cF6>"ST_HTT_TYPES"</span><span class=cF0>);
|
||||
<a name="l298"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l299"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%s"</span><span class=cF0>,buf);
|
||||
<a name="l300"></a> </span><span class=cF1>if</span><span class=cF0> (comment) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l301"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$GREEN$%s$FG$"</span><span class=cF0>,comment);
|
||||
<a name="l302"></a> </span><span class=cF5>Free</span><span class=cF0>(comment);
|
||||
<a name="l303"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l304"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l305"></a> }
|
||||
<a name="l306"></a> </span><span class=cF5>Free</span><span class=cF0>(lst[i].idx);
|
||||
<a name="l307"></a> </span><span class=cF1>if</span><span class=cF0> (idx)
|
||||
<a name="l308"></a> </span><span class=cFB>progress1</span><span class=cF0>++;
|
||||
<a name="l309"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l310"></a> </span><span class=cF5>Free</span><span class=cF0>(lst);
|
||||
<a name="l311"></a> </span><span class=cF1>if</span><span class=cF0> (idx)
|
||||
<a name="l312"></a> </span><span class=cFB>progress1</span><span class=cF0>=</span><span class=cFB>progress1_max</span><span class=cF0>=0;
|
||||
<a name="l313"></a>
|
||||
<a name="l314"></a>wh_done:
|
||||
<a name="l315"></a> </span><span class=cF1>if</span><span class=cF0> (doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l316"></a> </span><span class=cF1>if</span><span class=cF0> (doc->head.next==doc)
|
||||
<a name="l317"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"No Match"</span><span class=cF0>);
|
||||
<a name="l318"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l319"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
||||
<a name="l320"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l321"></a> </span><span class=cF5>Free</span><span class=cF0>(last_idx);
|
||||
<a name="l322"></a> </span><span class=cF5>Kill</span><span class=cF0>(task);
|
||||
<a name="l323"></a>}
|
||||
<a name="l324"></a>
|
||||
<a name="l325"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;Hash;Cmd Line (Typically)"</span><span class=cF0>
|
||||
<a name="l326"></a>
|
||||
<a name="l327"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>HDR_NUM</span><span class=cF0> 16
|
||||
<a name="l328"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>HashDepthRep</span><span class=cF0>(</span><span class=cF9>CHashTable</span><span class=cF0> *table=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l329"></a>{</span><span class=cF2>//Hash table linked-list chain depth report.</span><span class=cF0>
|
||||
<a name="l330"></a></span><span class=cF2>//Histogram of collision count.</span><span class=cF0>
|
||||
<a name="l331"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,longest=0,cnt=0,a[</span><span class=cF3>HDR_NUM</span><span class=cF0>];
|
||||
<a name="l332"></a> </span><span class=cF9>CHash</span><span class=cF0> *tmph;
|
||||
<a name="l333"></a> </span><span class=cF1>if</span><span class=cF0> (!table) table=</span><span class=cF5>Fs</span><span class=cF0>->hash_table;
|
||||
<a name="l334"></a> </span><span class=cF5>MemSet</span><span class=cF0>(a,0,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF0>a</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l335"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<=table->mask;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l336"></a> tmph=table->body[i];
|
||||
<a name="l337"></a> </span><span class=cF1>if</span><span class=cF0> (tmph) {
|
||||
<a name="l338"></a> j=</span><span class=cF5>LinkedLstCnt</span><span class=cF0>(tmph);
|
||||
<a name="l339"></a> </span><span class=cF1>if</span><span class=cF0> (j<</span><span class=cF3>HDR_NUM</span><span class=cF0>)
|
||||
<a name="l340"></a> a[j]++;
|
||||
<a name="l341"></a> cnt+=j;
|
||||
<a name="l342"></a> </span><span class=cF1>if</span><span class=cF0> (j>longest)
|
||||
<a name="l343"></a> longest=j;
|
||||
<a name="l344"></a> }
|
||||
<a name="l345"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l346"></a> </span><span class=cF6>"Histogram\n"</span><span class=cF0>;
|
||||
<a name="l347"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>HDR_NUM</span><span class=cF0>;i++)
|
||||
<a name="l348"></a> </span><span class=cF1>if</span><span class=cF0> (a[i])
|
||||
<a name="l349"></a> </span><span class=cF6>"%02d:%d\n"</span><span class=cF0>,i,a[i];
|
||||
<a name="l350"></a> </span><span class=cF6>"Size:%d Count:%d Longest:%d\n"</span><span class=cF0>,
|
||||
<a name="l351"></a> table->mask+1,cnt,longest;
|
||||
<a name="l352"></a> </span><span class=cF1>return</span><span class=cF0> longest;
|
||||
<a name="l353"></a>}
|
||||
<a name="l354"></a>
|
||||
<a name="l355"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Help System"</span><span class=cF0>
|
||||
<a name="l356"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>"::/Doc/HelpSystem"</span><span class=cF0>
|
||||
<a name="l357"></a>
|
||||
<a name="l358"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocHelpIdx</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF1>U8</span><span class=cF0> *idx)
|
||||
<a name="l359"></a>{</span><span class=cF2>//Put to doc report for given help idx.</span><span class=cF0>
|
||||
<a name="l360"></a> </span><span class=cF5>Who</span><span class=cF0>(</span><span class=cF6>"+p"</span><span class=cF0>,,idx,doc);
|
||||
<a name="l361"></a>}
|
||||
<a name="l362"></a>
|
||||
<a name="l363"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>PopUpHelpIndex</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *idx,</span><span class=cF9>CTask</span><span class=cF0> *parent=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l364"></a>{</span><span class=cF2>//PopUp win report for given help idx.</span><span class=cF0>
|
||||
<a name="l365"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
|
||||
<a name="l366"></a> buf=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"DocHelpIdx(DocPut,\"%s\");View;"</span><span class=cF0>,idx);
|
||||
<a name="l367"></a> </span><span class=cF5>PopUp</span><span class=cF0>(buf,parent);
|
||||
<a name="l368"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l369"></a>}
|
||||
<a name="l370"></a>
|
||||
<a name="l371"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Hash/System"</span><span class=cF0>
|
||||
<a name="l372"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MapFileLoad</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *filename)
|
||||
<a name="l373"></a>{</span><span class=cF2>//Load map file so we have src line info.</span><span class=cF0>
|
||||
<a name="l374"></a> </span><span class=cF1>U8</span><span class=cF0> *st,*ptr,*name=</span><span class=cF5>ExtDft</span><span class=cF0>(filename,</span><span class=cF6>"MAP.Z"</span><span class=cF0>),
|
||||
<a name="l375"></a> *absname=</span><span class=cF5>FileNameAbs</span><span class=cF0>(name);
|
||||
<a name="l376"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF5>DocRead</span><span class=cF0>(name);
|
||||
<a name="l377"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l378"></a> </span><span class=cF9>CHashSrcSym</span><span class=cF0> *tmph;
|
||||
<a name="l379"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,base=0;
|
||||
<a name="l380"></a> </span><span class=cF9>CDbgInfo</span><span class=cF0> *dbg_info;
|
||||
<a name="l381"></a>
|
||||
<a name="l382"></a> </span><span class=cF5>FileExtRem</span><span class=cF0>(absname);
|
||||
<a name="l383"></a> </span><span class=cF1>if</span><span class=cF0> (absname[1]==</span><span class=cF6>':'</span><span class=cF0> && </span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>absname</span><span class=cF7>)</span><span class=cF0>>2 &&
|
||||
<a name="l384"></a> </span><span class=cF7>(</span><span class=cF0>tmph=</span><span class=cF5>HashSingleTableFind</span><span class=cF0>(absname+2,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,</span><span class=cF3>HTT_MODULE</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l385"></a> base=tmph(</span><span class=cF9>CHashGeneric</span><span class=cF0> *)->user_data0+</span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF9>CBinFile</span><span class=cF0>);
|
||||
<a name="l386"></a>
|
||||
<a name="l387"></a> </span><span class=cF1>if</span><span class=cF0> (!doc) </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l388"></a> doc_e=doc->head.next;
|
||||
<a name="l389"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l390"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_LINK</span><span class=cF0>) {
|
||||
<a name="l391"></a> </span><span class=cF1>if</span><span class=cF0> (*doc_e->tag)
|
||||
<a name="l392"></a> st=</span><span class=cF5>MStrUtil</span><span class=cF0>(doc_e->tag,</span><span class=cF3>SUF_REM_TRAILING</span><span class=cF0>);
|
||||
<a name="l393"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l394"></a> st=</span><span class=cF5>MStrUtil</span><span class=cF0>(doc_e->aux_str,</span><span class=cF3>SUF_REM_TRAILING</span><span class=cF0>);
|
||||
<a name="l395"></a> </span><span class=cF1>if</span><span class=cF0> (tmph=</span><span class=cF5>HashSingleTableFind</span><span class=cF7>(</span><span class=cF0>st,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,</span><span class=cF3>HTG_SRC_SYM</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l396"></a> </span><span class=cF1>if</span><span class=cF0> (*doc_e->tag) {
|
||||
<a name="l397"></a> </span><span class=cF5>Free</span><span class=cF0>(tmph->src_link);
|
||||
<a name="l398"></a> tmph->src_link=doc_e->aux_str;
|
||||
<a name="l399"></a> ptr=tmph->src_link;
|
||||
<a name="l400"></a> </span><span class=cF1>if</span><span class=cF0> (ptr[0] && ptr[1] && ptr[2]==</span><span class=cF6>':'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l401"></a> </span><span class=cF1>if</span><span class=cF0> (ptr[3]==</span><span class=cF6>':'</span><span class=cF0>)
|
||||
<a name="l402"></a> ptr[3]=</span><span class=cFB>blkdev</span><span class=cF0>.boot_drv_let;
|
||||
<a name="l403"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ptr[3]==</span><span class=cF6>'~'</span><span class=cF0>)
|
||||
<a name="l404"></a> ptr[3]=*</span><span class=cFB>blkdev</span><span class=cF0>.home_dir;
|
||||
<a name="l405"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l406"></a> doc_e->aux_str=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l407"></a> }
|
||||
<a name="l408"></a> </span><span class=cF1>if</span><span class=cF0> (tmph->type&</span><span class=cF7>(</span><span class=cF3>HTT_FUN</span><span class=cF0>|</span><span class=cF3>HTT_EXPORT_SYS_SYM</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l409"></a> !</span><span class=cF7>(</span><span class=cF0>dbg_info=tmph->dbg_info</span><span class=cF7>)</span><span class=cF0> && doc_e->bin_data &&
|
||||
<a name="l410"></a> </span><span class=cF7>(</span><span class=cF0>dbg_info=doc_e->bin_data->data</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l411"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->bin_data->size></span><span class=cF5>MSize</span><span class=cF7>(</span><span class=cF0>dbg_info</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l412"></a> </span><span class=cF6>"Corrupt Map Entry\n"</span><span class=cF0>;
|
||||
<a name="l413"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l414"></a> doc_e->bin_data->data=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l415"></a> tmph->dbg_info=dbg_info;
|
||||
<a name="l416"></a> </span><span class=cF1>for</span><span class=cF0> (i=dbg_info->min_line;i<=dbg_info->max_line+1;i++) {
|
||||
<a name="l417"></a> j=i-dbg_info->min_line;
|
||||
<a name="l418"></a> </span><span class=cF1>if</span><span class=cF0> (dbg_info->body[j])
|
||||
<a name="l419"></a> dbg_info->body[j]=dbg_info->body[j]+base;
|
||||
<a name="l420"></a> }
|
||||
<a name="l421"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l422"></a> }
|
||||
<a name="l423"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l424"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l425"></a> }
|
||||
<a name="l426"></a> doc_e=doc_e->next;
|
||||
<a name="l427"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l428"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l429"></a> </span><span class=cF5>Free</span><span class=cF0>(name);
|
||||
<a name="l430"></a> </span><span class=cF5>Free</span><span class=cF0>(absname);
|
||||
<a name="l431"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
166
public/Wb/Adam/AMath.HC.HTML
Executable file
166
public/Wb/Adam/AMath.HC.HTML
Executable file
@ -0,0 +1,166 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Math"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>R2P</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> *_mag=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>F64</span><span class=cF0> *_arg=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>F64</span><span class=cF0> x,</span><span class=cF1>F64</span><span class=cF0> y)
|
||||
<a name="l3"></a>{</span><span class=cF2>//Rect to polar</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>//Returns angle in range (-pi,pi]</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF1>if</span><span class=cF0> (_arg)
|
||||
<a name="l6"></a> *_arg=</span><span class=cF5>Arg</span><span class=cF0>(x,y);
|
||||
<a name="l7"></a> </span><span class=cF1>if</span><span class=cF0> (_mag)
|
||||
<a name="l8"></a> *_mag=</span><span class=cF5>Sqrt</span><span class=cF0>(x*x+y*y);
|
||||
<a name="l9"></a>}
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>P2R</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> *_x=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>F64</span><span class=cF0> *_y=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>F64</span><span class=cF0> mag,</span><span class=cF1>F64</span><span class=cF0> arg)
|
||||
<a name="l12"></a>{</span><span class=cF2>//Polar to Rect</span><span class=cF0>
|
||||
<a name="l13"></a> </span><span class=cF1>if</span><span class=cF0> (_x)
|
||||
<a name="l14"></a> *_x=mag*</span><span class=cF5>Cos</span><span class=cF0>(arg);
|
||||
<a name="l15"></a> </span><span class=cF1>if</span><span class=cF0> (_y)
|
||||
<a name="l16"></a> *_y=mag*</span><span class=cF5>Sin</span><span class=cF0>(arg);
|
||||
<a name="l17"></a>}
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Wrap</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> theta,</span><span class=cF1>F64</span><span class=cF0> base=-</span><span class=cF3>pi</span><span class=cF0>)
|
||||
<a name="l20"></a>{</span><span class=cF2>//Returns angle in range [base,base+2*pi)</span><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF1>F64</span><span class=cF0> res=theta%(2*</span><span class=cF3>pi</span><span class=cF0>);
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (res>=base+2*</span><span class=cF3>pi</span><span class=cF0>)
|
||||
<a name="l23"></a> res-=2*</span><span class=cF3>pi</span><span class=cF0>;
|
||||
<a name="l24"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (res<base)
|
||||
<a name="l25"></a> res+=2*</span><span class=cF3>pi</span><span class=cF0>;
|
||||
<a name="l26"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l27"></a>}
|
||||
<a name="l28"></a>
|
||||
<a name="l29"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DistSqrI64</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> x1,</span><span class=cF9>I64</span><span class=cF0> y1,</span><span class=cF9>I64</span><span class=cF0> x2,</span><span class=cF9>I64</span><span class=cF0> y2)
|
||||
<a name="l30"></a>{</span><span class=cF2>//Distance-squared between 2 points.</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF9>I64</span><span class=cF0> dx=x1-x2,dy=y1-y2;
|
||||
<a name="l32"></a> </span><span class=cF1>return</span><span class=cF0> dx*dx+dy*dy;
|
||||
<a name="l33"></a>}
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>ASin</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> s)
|
||||
<a name="l36"></a>{</span><span class=cF2>//Arc Sin (Inverse Sin).</span><span class=cF0>
|
||||
<a name="l37"></a> </span><span class=cF1>F64</span><span class=cF0> c;
|
||||
<a name="l38"></a> c=s*s;
|
||||
<a name="l39"></a> </span><span class=cF1>if</span><span class=cF0> (c>=1.0)
|
||||
<a name="l40"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>pi</span><span class=cF0>/2.0;
|
||||
<a name="l41"></a> c=</span><span class=cF5>Sqrt</span><span class=cF0>(1.0-c);
|
||||
<a name="l42"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>ATan</span><span class=cF0>(s/c);
|
||||
<a name="l43"></a>}
|
||||
<a name="l44"></a>
|
||||
<a name="l45"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>ACos</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> c)
|
||||
<a name="l46"></a>{</span><span class=cF2>//Arc Cos (Inverse Cos).</span><span class=cF0>
|
||||
<a name="l47"></a> </span><span class=cF1>F64</span><span class=cF0> s;
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (!c)
|
||||
<a name="l49"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>pi</span><span class=cF0>/2.0;
|
||||
<a name="l50"></a> s=c*c;
|
||||
<a name="l51"></a> </span><span class=cF1>if</span><span class=cF0> (s>=1.0)
|
||||
<a name="l52"></a> </span><span class=cF1>return</span><span class=cF0> 0.0;
|
||||
<a name="l53"></a> s=</span><span class=cF5>Sqrt</span><span class=cF0>(1.0-s);
|
||||
<a name="l54"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>ATan</span><span class=cF0>(s/c);
|
||||
<a name="l55"></a>}
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Sinh</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> x)
|
||||
<a name="l58"></a>{</span><span class=cF2>//Hyperbolic Sine.</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF1>return</span><span class=cF0> 0.5*(</span><span class=cF5>Exp</span><span class=cF7>(</span><span class=cF0>x</span><span class=cF7>)</span><span class=cF0>-</span><span class=cF5>Exp</span><span class=cF7>(</span><span class=cF0>-x</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l60"></a>}
|
||||
<a name="l61"></a>
|
||||
<a name="l62"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Cosh</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> x)
|
||||
<a name="l63"></a>{</span><span class=cF2>//Hyperbolic Cosine.</span><span class=cF0>
|
||||
<a name="l64"></a> </span><span class=cF1>return</span><span class=cF0> 0.5*(</span><span class=cF5>Exp</span><span class=cF7>(</span><span class=cF0>x</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF5>Exp</span><span class=cF7>(</span><span class=cF0>-x</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l65"></a>}
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Math/Complex;Data Types/Complex"</span><span class=cF0>
|
||||
<a name="l68"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CAdd</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *sum,</span><span class=cF9>Complex</span><span class=cF0> *n1,</span><span class=cF9>Complex</span><span class=cF0> *n2)
|
||||
<a name="l69"></a>{</span><span class=cF2>//sum=n1+n2</span><span class=cF0>
|
||||
<a name="l70"></a> sum->x=n1->x+n2->x;
|
||||
<a name="l71"></a> sum->y=n1->y+n2->y;
|
||||
<a name="l72"></a> </span><span class=cF1>return</span><span class=cF0> sum;
|
||||
<a name="l73"></a>}
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CSub</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *diff,</span><span class=cF9>Complex</span><span class=cF0> *n1,</span><span class=cF9>Complex</span><span class=cF0> *n2)
|
||||
<a name="l76"></a>{</span><span class=cF2>//diff=n1-n2</span><span class=cF0>
|
||||
<a name="l77"></a> diff->x=n1->x-n2->x;
|
||||
<a name="l78"></a> diff->y=n1->y-n2->y;
|
||||
<a name="l79"></a> </span><span class=cF1>return</span><span class=cF0> diff;
|
||||
<a name="l80"></a>}
|
||||
<a name="l81"></a>
|
||||
<a name="l82"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CMul</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *prod,</span><span class=cF9>Complex</span><span class=cF0> *n1,</span><span class=cF9>Complex</span><span class=cF0> *n2)
|
||||
<a name="l83"></a>{</span><span class=cF2>//prod=n1*n2</span><span class=cF0>
|
||||
<a name="l84"></a> prod->x=n1->x*n2->x-n1->y*n2->y;
|
||||
<a name="l85"></a> prod->y=n1->x*n2->y+n1->y*n2->x;
|
||||
<a name="l86"></a> </span><span class=cF1>return</span><span class=cF0> prod;
|
||||
<a name="l87"></a>}
|
||||
<a name="l88"></a>
|
||||
<a name="l89"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CDiv</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *quot,</span><span class=cF9>Complex</span><span class=cF0> *n1,</span><span class=cF9>Complex</span><span class=cF0> *n2)
|
||||
<a name="l90"></a>{</span><span class=cF2>//quot=n1/n2</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF1>F64</span><span class=cF0> m1,arg1,m2,arg2;
|
||||
<a name="l92"></a> </span><span class=cF5>R2P</span><span class=cF0>(&m1,&arg1,n1->x,n1->y);
|
||||
<a name="l93"></a> </span><span class=cF5>R2P</span><span class=cF0>(&m2,&arg2,n2->x,n2->y);
|
||||
<a name="l94"></a> m1/=m2;
|
||||
<a name="l95"></a> arg1-=arg2;
|
||||
<a name="l96"></a> quot->x=m1*</span><span class=cF5>Cos</span><span class=cF0>(arg1);
|
||||
<a name="l97"></a> quot->y=m1*</span><span class=cF5>Sin</span><span class=cF0>(arg1);
|
||||
<a name="l98"></a> </span><span class=cF1>return</span><span class=cF0> quot;
|
||||
<a name="l99"></a>}
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CScale</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *dst,</span><span class=cF1>F64</span><span class=cF0> s)
|
||||
<a name="l102"></a>{</span><span class=cF2>//dst*=s</span><span class=cF0>
|
||||
<a name="l103"></a> dst->x*=s;
|
||||
<a name="l104"></a> dst->y*=s;
|
||||
<a name="l105"></a> </span><span class=cF1>return</span><span class=cF0> dst;
|
||||
<a name="l106"></a>}
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CCopy</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *dst,</span><span class=cF9>Complex</span><span class=cF0> *src)
|
||||
<a name="l109"></a>{</span><span class=cF2>//dst=src</span><span class=cF0>
|
||||
<a name="l110"></a> dst->x=src->x;
|
||||
<a name="l111"></a> dst->y=src->y;
|
||||
<a name="l112"></a> </span><span class=cF1>return</span><span class=cF0> dst;
|
||||
<a name="l113"></a>}
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CEqu</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *dst,</span><span class=cF1>F64</span><span class=cF0> x,</span><span class=cF1>F64</span><span class=cF0> y)
|
||||
<a name="l116"></a>{</span><span class=cF2>//dst=(x,y)</span><span class=cF0>
|
||||
<a name="l117"></a> dst->x=x;
|
||||
<a name="l118"></a> dst->y=y;
|
||||
<a name="l119"></a> </span><span class=cF1>return</span><span class=cF0> dst;
|
||||
<a name="l120"></a>}
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>Complex</span><span class=cF0> *</span><span class=cF5>CPoly</span><span class=cF0>(</span><span class=cF9>Complex</span><span class=cF0> *dst,</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF9>Complex</span><span class=cF0> *zeros,</span><span class=cF9>Complex</span><span class=cF0> *x)
|
||||
<a name="l123"></a>{</span><span class=cF2>//Eval complex polynomial</span><span class=cF0>
|
||||
<a name="l124"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l125"></a> </span><span class=cF9>Complex</span><span class=cF0> n1,n2;
|
||||
<a name="l126"></a> </span><span class=cF1>if</span><span class=cF0> (n>0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF5>CSub</span><span class=cF0>(dst,x,&zeros[0]);
|
||||
<a name="l128"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<n;i++) {
|
||||
<a name="l129"></a> </span><span class=cF5>CCopy</span><span class=cF0>(&n1,dst);
|
||||
<a name="l130"></a> </span><span class=cF5>CMul</span><span class=cF0>(dst,&n1,</span><span class=cF5>CSub</span><span class=cF7>(</span><span class=cF0>&n2,x,&zeros[i]</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l131"></a> }
|
||||
<a name="l132"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l133"></a> </span><span class=cF5>CEqu</span><span class=cF0>(dst,1.0,0.0);
|
||||
<a name="l134"></a> </span><span class=cF1>return</span><span class=cF0> dst;
|
||||
<a name="l135"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
719
public/Wb/Adam/AMathODE.HC.HTML
Executable file
719
public/Wb/Adam/AMathODE.HC.HTML
Executable file
@ -0,0 +1,719 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Math/ODE"</span><span class=cF0>
|
||||
<a name="l2"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>"::/Doc/ODE"</span><span class=cF0>
|
||||
<a name="l3"></a>
|
||||
<a name="l4"></a></span><span class=cF2>//See </span><a href="/Wb/Doc/Credits.DD.HTML#l1"><span class=cF4>::/Doc/Credits.DD</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a></span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>LowPass1</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> a,</span><span class=cF1>F64</span><span class=cF0> y0,</span><span class=cF1>F64</span><span class=cF0> y,</span><span class=cF1>F64</span><span class=cF0> dt=1.0)
|
||||
<a name="l7"></a>{</span><span class=cF2>//First order low pass filter</span><span class=cF0>
|
||||
<a name="l8"></a> dt=</span><span class=cF5>Exp</span><span class=cF0>(-a*dt);
|
||||
<a name="l9"></a> </span><span class=cF1>return</span><span class=cF0> y0*dt+y*(1.0-dt);
|
||||
<a name="l10"></a>}
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODERstPtrs</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l13"></a>{
|
||||
<a name="l14"></a> </span><span class=cF9>I64</span><span class=cF0> s=ode->n_internal*</span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0>);
|
||||
<a name="l15"></a> </span><span class=cF1>F64</span><span class=cF0> *ptr=ode->array_base;
|
||||
<a name="l16"></a> ode->state_internal=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l17"></a> ode->state_scale=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l18"></a> ode->DstateDt=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l19"></a> ode->initial_state=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l20"></a> ode->tmp0=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l21"></a> ode->tmp1=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l22"></a> ode->tmp2=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l23"></a> ode->tmp3=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l24"></a> ode->tmp4=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l25"></a> ode->tmp5=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l26"></a> ode->tmp6=ptr; ptr(</span><span class=cF9>I64</span><span class=cF0>)+=s;
|
||||
<a name="l27"></a> ode->tmp7=ptr;
|
||||
<a name="l28"></a>}
|
||||
<a name="l29"></a>
|
||||
<a name="l30"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CMathODE</span><span class=cF0> *</span><span class=cF5>ODENew</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF1>F64</span><span class=cF0> max_tolerance=1e-6,</span><span class=cF9>I64</span><span class=cF0> flags=0)
|
||||
<a name="l31"></a>{</span><span class=cF2>//Make differential equation ctrl struct. See </span><a href="/Wb/Kernel/KernelA.HH.HTML#l241"><span class=cF4>flags</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l32"></a> </span><span class=cF2>//The tolerance is not precise.</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF2>//You can min_tolerance and it will</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF2>//dynamically adjust tolerance to utilize</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF2>//the CPU.</span><span class=cF0>
|
||||
<a name="l36"></a> </span><span class=cF9>I64</span><span class=cF0> s=n*</span><span class=cF1>sizeof</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0>);
|
||||
<a name="l37"></a> </span><span class=cF9>CMathODE</span><span class=cF0> *ode=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CMathODE</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l38"></a> ode->t_scale=1.0;
|
||||
<a name="l39"></a> ode->flags=flags;
|
||||
<a name="l40"></a> ode->n_internal=ode->n=n;
|
||||
<a name="l41"></a> ode->h=1e-6;
|
||||
<a name="l42"></a> ode->h_min=1e-64;
|
||||
<a name="l43"></a> ode->h_max=1e32;
|
||||
<a name="l44"></a> ode->max_tolerance=ode->min_tolerance=ode->tolerance_internal=max_tolerance;
|
||||
<a name="l45"></a> ode->win_task=ode->mem_task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l46"></a> </span><span class=cF5>QueInit</span><span class=cF0>(&ode->next_mass);
|
||||
<a name="l47"></a> </span><span class=cF5>QueInit</span><span class=cF0>(&ode->next_spring);
|
||||
<a name="l48"></a> ode->state=</span><span class=cF5>CAlloc</span><span class=cF0>(s);
|
||||
<a name="l49"></a> ode->array_base=</span><span class=cF5>MAlloc</span><span class=cF0>(12*s);
|
||||
<a name="l50"></a> </span><span class=cF5>ODERstPtrs</span><span class=cF0>(ode);
|
||||
<a name="l51"></a> </span><span class=cF1>return</span><span class=cF0> ode;
|
||||
<a name="l52"></a>}
|
||||
<a name="l53"></a>
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>ODEPause</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>Bool</span><span class=cF0> val=</span><span class=cF3>ON</span><span class=cF0>)
|
||||
<a name="l56"></a>{</span><span class=cF2>//Pause ODE.</span><span class=cF0>
|
||||
<a name="l57"></a> </span><span class=cF1>Bool</span><span class=cF0> res;
|
||||
<a name="l58"></a> </span><span class=cF1>if</span><span class=cF0> (!ode) </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>OFF</span><span class=cF0>;
|
||||
<a name="l59"></a> res=</span><span class=cF5>LBEqu</span><span class=cF0>(&ode->flags,</span><span class=cF3>ODEf_PAUSED</span><span class=cF0>,val);
|
||||
<a name="l60"></a> </span><span class=cF1>if</span><span class=cF0> (val)
|
||||
<a name="l61"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&ode->flags,</span><span class=cF3>ODEf_BUSY</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l62"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l63"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l64"></a>}
|
||||
<a name="l65"></a>
|
||||
<a name="l66"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEDel</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l67"></a>{</span><span class=cF2>//Free ODE node, but not masses or springs.</span><span class=cF0>
|
||||
<a name="l68"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (!ode) </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l70"></a> </span><span class=cF5>ODEPause</span><span class=cF0>(ode);
|
||||
<a name="l71"></a> </span><span class=cF5>Free</span><span class=cF0>(ode->state);
|
||||
<a name="l72"></a> </span><span class=cF5>Free</span><span class=cF0>(ode->array_base);
|
||||
<a name="l73"></a> </span><span class=cF1>if</span><span class=cF0> (ode->slave_tasks) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l74"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++)
|
||||
<a name="l75"></a> </span><span class=cF5>Kill</span><span class=cF0>(ode->slave_tasks[i]);
|
||||
<a name="l76"></a> </span><span class=cF5>Free</span><span class=cF0>(ode->slave_tasks);
|
||||
<a name="l77"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l78"></a> </span><span class=cF5>Free</span><span class=cF0>(ode);
|
||||
<a name="l79"></a>}
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>ODESize</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l82"></a>{</span><span class=cF2>//Mem size of ode ctrl, but not masses and springs.</span><span class=cF0>
|
||||
<a name="l83"></a> </span><span class=cF1>if</span><span class=cF0> (!ode)
|
||||
<a name="l84"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l85"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>MSize2</span><span class=cF0>(ode->state)+</span><span class=cF5>MSize2</span><span class=cF0>(ode->array_base)+</span><span class=cF5>MSize2</span><span class=cF0>(ode);
|
||||
<a name="l87"></a>}
|
||||
<a name="l88"></a>
|
||||
<a name="l89"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODESetMassesPtrs</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>F64</span><span class=cF0> *state,</span><span class=cF1>F64</span><span class=cF0> *DstateDt)
|
||||
<a name="l90"></a>{
|
||||
<a name="l91"></a> </span><span class=cF9>COrder2D3</span><span class=cF0> *ptr1=state(</span><span class=cF1>F64</span><span class=cF0> *)+ode->n,
|
||||
<a name="l92"></a> *ptr2=DstateDt(</span><span class=cF1>F64</span><span class=cF0> *)+ode->n;
|
||||
<a name="l93"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm=ode->next_mass;
|
||||
<a name="l94"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l95"></a> tmpm->state=ptr1++;
|
||||
<a name="l96"></a> tmpm->DstateDt=ptr2++;
|
||||
<a name="l97"></a> tmpm=tmpm->next;
|
||||
<a name="l98"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l99"></a>}
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEState2Internal</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l102"></a>{
|
||||
<a name="l103"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l104"></a> </span><span class=cF1>F64</span><span class=cF0> *old_array_base;
|
||||
<a name="l105"></a> </span><span class=cF9>I64</span><span class=cF0> mass_cnt;
|
||||
<a name="l106"></a>
|
||||
<a name="l107"></a> </span><span class=cF1>if</span><span class=cF0> (ode->flags&</span><span class=cF3>ODEF_HAS_MASSES</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l108"></a> mass_cnt=0;
|
||||
<a name="l109"></a> tmpm=ode->next_mass;
|
||||
<a name="l110"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l111"></a> mass_cnt++;
|
||||
<a name="l112"></a> tmpm=tmpm->next;
|
||||
<a name="l113"></a> }
|
||||
<a name="l114"></a> old_array_base=ode->array_base;
|
||||
<a name="l115"></a> ode->n_internal=ode->n+6*mass_cnt;
|
||||
<a name="l116"></a> ode->array_base=</span><span class=cF5>MAlloc</span><span class=cF0>(12*ode->n_internal*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>,ode->mem_task);
|
||||
<a name="l117"></a> </span><span class=cF5>Free</span><span class=cF0>(old_array_base);
|
||||
<a name="l118"></a> </span><span class=cF5>ODERstPtrs</span><span class=cF0>(ode);
|
||||
<a name="l119"></a>
|
||||
<a name="l120"></a> </span><span class=cF5>ODESetMassesPtrs</span><span class=cF0>(ode,ode->state_internal,ode->state_internal);
|
||||
<a name="l121"></a> tmpm=ode->next_mass;
|
||||
<a name="l122"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l123"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(tmpm->state,&tmpm->saved_state,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>COrder2D3</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l124"></a> tmpm=tmpm->next;
|
||||
<a name="l125"></a> }
|
||||
<a name="l126"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(ode->state_internal,ode->state,ode->n*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l128"></a>}
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEInternal2State</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l131"></a>{
|
||||
<a name="l132"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l133"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(ode->state,ode->state_internal,ode->n*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l134"></a> </span><span class=cF1>if</span><span class=cF0> (ode->flags&</span><span class=cF3>ODEF_HAS_MASSES</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF5>ODESetMassesPtrs</span><span class=cF0>(ode,ode->state_internal,ode->state_internal);
|
||||
<a name="l136"></a> tmpm=ode->next_mass;
|
||||
<a name="l137"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l138"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(&tmpm->saved_state,tmpm->state,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>COrder2D3</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l139"></a> tmpm=tmpm->next;
|
||||
<a name="l140"></a> }
|
||||
<a name="l141"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l142"></a>}
|
||||
<a name="l143"></a>
|
||||
<a name="l144"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODERenum</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l145"></a>{</span><span class=cF2>//Renumber masses and springs.</span><span class=cF0>
|
||||
<a name="l146"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l147"></a> </span><span class=cF9>CSpring</span><span class=cF0> *tmps;
|
||||
<a name="l148"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a> i=0;
|
||||
<a name="l151"></a> tmpm=ode->next_mass;
|
||||
<a name="l152"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l153"></a> tmpm->num=i++;
|
||||
<a name="l154"></a> tmpm=tmpm->next;
|
||||
<a name="l155"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l156"></a>
|
||||
<a name="l157"></a> i=0;
|
||||
<a name="l158"></a> tmps=ode->next_spring;
|
||||
<a name="l159"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&ode->next_spring) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l160"></a> tmps->num=i++;
|
||||
<a name="l161"></a> tmps->end1_num=tmps->end1->num;
|
||||
<a name="l162"></a> tmps->end2_num=tmps->end2->num;
|
||||
<a name="l163"></a> tmps=tmps->next;
|
||||
<a name="l164"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l165"></a>}
|
||||
<a name="l166"></a>
|
||||
<a name="l167"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CMass</span><span class=cF0> *</span><span class=cF5>MassFind</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>F64</span><span class=cF0> x,</span><span class=cF1>F64</span><span class=cF0> y,</span><span class=cF1>F64</span><span class=cF0> z=0)
|
||||
<a name="l168"></a>{</span><span class=cF2>//Search for mass nearest to x,y,z.</span><span class=cF0>
|
||||
<a name="l169"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm,*best_mass=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l170"></a> </span><span class=cF1>F64</span><span class=cF0> dd,best_dd=</span><span class=cF3>F64_MAX</span><span class=cF0>;
|
||||
<a name="l171"></a>
|
||||
<a name="l172"></a> tmpm=ode->next_mass;
|
||||
<a name="l173"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l174"></a> dd=</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->x-x)+</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->y-y)+</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->z-z);
|
||||
<a name="l175"></a> </span><span class=cF1>if</span><span class=cF0> (dd<best_dd) {
|
||||
<a name="l176"></a> best_dd=dd;
|
||||
<a name="l177"></a> best_mass=tmpm;
|
||||
<a name="l178"></a> }
|
||||
<a name="l179"></a> tmpm=tmpm->next;
|
||||
<a name="l180"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l181"></a> </span><span class=cF1>return</span><span class=cF0> best_mass;
|
||||
<a name="l182"></a>}
|
||||
<a name="l183"></a>
|
||||
<a name="l184"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CSpring</span><span class=cF0> *</span><span class=cF5>SpringFind</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>F64</span><span class=cF0> x,</span><span class=cF1>F64</span><span class=cF0> y,</span><span class=cF1>F64</span><span class=cF0> z=0)
|
||||
<a name="l185"></a>{</span><span class=cF2>//Find spring midpoint nearest x,y,z.</span><span class=cF0>
|
||||
<a name="l186"></a> </span><span class=cF9>CSpring</span><span class=cF0> *tmps,*best_spring=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l187"></a> </span><span class=cF1>F64</span><span class=cF0> dd,best_dd=</span><span class=cF3>F64_MAX</span><span class=cF0>;
|
||||
<a name="l188"></a>
|
||||
<a name="l189"></a> tmps=ode->next_spring;
|
||||
<a name="l190"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&ode->next_spring) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l191"></a> dd=</span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->x+tmps->end2->x</span><span class=cF7>)</span><span class=cF0>/2-x)+
|
||||
<a name="l192"></a> </span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->y+tmps->end2->y</span><span class=cF7>)</span><span class=cF0>/2-y)+
|
||||
<a name="l193"></a> </span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->z+tmps->end2->z</span><span class=cF7>)</span><span class=cF0>/2-z);
|
||||
<a name="l194"></a> </span><span class=cF1>if</span><span class=cF0> (dd<best_dd) {
|
||||
<a name="l195"></a> best_dd=dd;
|
||||
<a name="l196"></a> best_spring=tmps;
|
||||
<a name="l197"></a> }
|
||||
<a name="l198"></a> tmps=tmps->next;
|
||||
<a name="l199"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l200"></a> </span><span class=cF1>return</span><span class=cF0> best_spring;
|
||||
<a name="l201"></a>}
|
||||
<a name="l202"></a>
|
||||
<a name="l203"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MassOrSpringFind</span><span class=cF0>(
|
||||
<a name="l204"></a> </span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF9>CMass</span><span class=cF0> **res_mass,</span><span class=cF9>CSpring</span><span class=cF0> **res_spring,
|
||||
<a name="l205"></a> </span><span class=cF1>F64</span><span class=cF0> x,</span><span class=cF1>F64</span><span class=cF0> y,</span><span class=cF1>F64</span><span class=cF0> z=0)
|
||||
<a name="l206"></a>{</span><span class=cF2>//Find spring or mass nearest x,y,z.</span><span class=cF0>
|
||||
<a name="l207"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm,*best_mass=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l208"></a> </span><span class=cF9>CSpring</span><span class=cF0> *tmps,*best_spring=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l209"></a> </span><span class=cF1>F64</span><span class=cF0> dd,best_dd=</span><span class=cF3>F64_MAX</span><span class=cF0>;
|
||||
<a name="l210"></a>
|
||||
<a name="l211"></a> tmpm=ode->next_mass;
|
||||
<a name="l212"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> dd=</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->x-x)+</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->y-y)+</span><span class=cF5>Sqr</span><span class=cF0>(tmpm->z-z);
|
||||
<a name="l214"></a> </span><span class=cF1>if</span><span class=cF0> (dd<best_dd) {
|
||||
<a name="l215"></a> best_dd=dd;
|
||||
<a name="l216"></a> best_mass=tmpm;
|
||||
<a name="l217"></a> }
|
||||
<a name="l218"></a> tmpm=tmpm->next;
|
||||
<a name="l219"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l220"></a>
|
||||
<a name="l221"></a> tmps=ode->next_spring;
|
||||
<a name="l222"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&ode->next_spring) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l223"></a> dd=</span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->x+tmps->end2->x</span><span class=cF7>)</span><span class=cF0>/2-x)+
|
||||
<a name="l224"></a> </span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->y+tmps->end2->y</span><span class=cF7>)</span><span class=cF0>/2-y)+
|
||||
<a name="l225"></a> </span><span class=cF5>Sqr</span><span class=cF0>(</span><span class=cF7>(</span><span class=cF0>tmps->end1->z+tmps->end2->z</span><span class=cF7>)</span><span class=cF0>/2-z);
|
||||
<a name="l226"></a> </span><span class=cF1>if</span><span class=cF0> (dd<best_dd) {
|
||||
<a name="l227"></a> best_dd=dd;
|
||||
<a name="l228"></a> best_spring=tmps;
|
||||
<a name="l229"></a> best_mass=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l230"></a> }
|
||||
<a name="l231"></a> tmps=tmps->next;
|
||||
<a name="l232"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l233"></a> </span><span class=cF1>if</span><span class=cF0> (res_mass) *res_mass =best_mass;
|
||||
<a name="l234"></a> </span><span class=cF1>if</span><span class=cF0> (res_spring) *res_spring=best_spring;
|
||||
<a name="l235"></a>}
|
||||
<a name="l236"></a>
|
||||
<a name="l237"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CMass</span><span class=cF0> *</span><span class=cF5>MassFindNum</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF9>I64</span><span class=cF0> num)
|
||||
<a name="l238"></a>{</span><span class=cF2>//Return mass number N.</span><span class=cF0>
|
||||
<a name="l239"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm=ode->next_mass;
|
||||
<a name="l240"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l241"></a> </span><span class=cF1>if</span><span class=cF0> (tmpm->num==num)
|
||||
<a name="l242"></a> </span><span class=cF1>return</span><span class=cF0> tmpm;
|
||||
<a name="l243"></a> tmpm=tmpm->next;
|
||||
<a name="l244"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l245"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l246"></a>}
|
||||
<a name="l247"></a>
|
||||
<a name="l248"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODERstInactive</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l249"></a>{</span><span class=cF2>//Set all masses and springs to ACTIVE for new trial.</span><span class=cF0>
|
||||
<a name="l250"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l251"></a> </span><span class=cF9>CSpring</span><span class=cF0> *tmps;
|
||||
<a name="l252"></a> tmpm=ode->next_mass;
|
||||
<a name="l253"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l254"></a> tmpm->flags&=~</span><span class=cF3>MSF_INACTIVE</span><span class=cF0>;
|
||||
<a name="l255"></a> tmpm=tmpm->next;
|
||||
<a name="l256"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l257"></a> tmps=ode->next_spring;
|
||||
<a name="l258"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&ode->next_spring) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l259"></a> tmps->flags&=~</span><span class=cF3>SSF_INACTIVE</span><span class=cF0>;
|
||||
<a name="l260"></a> tmps=tmps->next;
|
||||
<a name="l261"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l262"></a>}
|
||||
<a name="l263"></a>
|
||||
<a name="l264"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODECalcSprings</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l265"></a>{
|
||||
<a name="l266"></a> </span><span class=cF9>CSpring</span><span class=cF0> *tmps=ode->next_spring;
|
||||
<a name="l267"></a> </span><span class=cF9>CMass</span><span class=cF0> *e1,*e2;
|
||||
<a name="l268"></a> </span><span class=cF1>F64</span><span class=cF0> d;
|
||||
<a name="l269"></a> </span><span class=cF9>CD3</span><span class=cF0> p;
|
||||
<a name="l270"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&ode->next_spring) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l271"></a> </span><span class=cF1>if</span><span class=cF0> (tmps->flags&</span><span class=cF3>SSF_INACTIVE</span><span class=cF0>) {
|
||||
<a name="l272"></a> tmps->displacement=0;
|
||||
<a name="l273"></a> tmps->f=0;
|
||||
<a name="l274"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l275"></a> e1=tmps->end1;
|
||||
<a name="l276"></a> e2=tmps->end2;
|
||||
<a name="l277"></a> d=</span><span class=cF5>D3Norm</span><span class=cF0>(</span><span class=cF5>D3Sub</span><span class=cF7>(</span><span class=cF0>&p,&e2->state->x,&e1->state->x</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l278"></a> tmps->displacement=d-tmps->rest_len;
|
||||
<a name="l279"></a> tmps->f=tmps->displacement*tmps->const;
|
||||
<a name="l280"></a> </span><span class=cF1>if</span><span class=cF0> (tmps->f>0 && tmps->flags&</span><span class=cF3>SSF_NO_TENSION</span><span class=cF0>)
|
||||
<a name="l281"></a> tmps->f=0;
|
||||
<a name="l282"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (tmps->f<0 && tmps->flags&</span><span class=cF3>SSF_NO_COMPRESSION</span><span class=cF0>)
|
||||
<a name="l283"></a> tmps->f=0;
|
||||
<a name="l284"></a> </span><span class=cF1>if</span><span class=cF0> (d>0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l285"></a> </span><span class=cF5>D3MulEqu</span><span class=cF0>(&p,tmps->f/d);
|
||||
<a name="l286"></a> </span><span class=cF5>D3AddEqu</span><span class=cF0>(&e1->DstateDt->DxDt,&p);
|
||||
<a name="l287"></a> </span><span class=cF5>D3SubEqu</span><span class=cF0>(&e2->DstateDt->DxDt,&p);
|
||||
<a name="l288"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l289"></a> }
|
||||
<a name="l290"></a> tmps=tmps->next;
|
||||
<a name="l291"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l292"></a>}
|
||||
<a name="l293"></a>
|
||||
<a name="l294"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODECalcDrag</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l295"></a>{
|
||||
<a name="l296"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l297"></a> </span><span class=cF1>F64</span><span class=cF0> d,dd;
|
||||
<a name="l298"></a> </span><span class=cF9>CD3</span><span class=cF0> p;
|
||||
<a name="l299"></a> </span><span class=cF1>if</span><span class=cF0> (ode->drag_v || ode->drag_v2 || ode->drag_v3) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l300"></a> tmpm=ode->next_mass;
|
||||
<a name="l301"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l302"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpm->flags & </span><span class=cF3>MSF_INACTIVE</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l303"></a> tmpm->drag_profile_factor &&
|
||||
<a name="l304"></a> </span><span class=cF7>(</span><span class=cF0>dd=</span><span class=cF5>D3NormSqr</span><span class=cF0>(&tmpm->state->DxDt)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l305"></a> d=ode->drag_v;
|
||||
<a name="l306"></a> </span><span class=cF1>if</span><span class=cF0> (ode->drag_v2)
|
||||
<a name="l307"></a> d+=ode->drag_v2*</span><span class=cF5>Sqrt</span><span class=cF0>(dd);
|
||||
<a name="l308"></a> </span><span class=cF1>if</span><span class=cF0> (ode->drag_v3)
|
||||
<a name="l309"></a> d+=dd*ode->drag_v3;
|
||||
<a name="l310"></a> </span><span class=cF5>D3SubEqu</span><span class=cF0>(&tmpm->DstateDt->DxDt,
|
||||
<a name="l311"></a> </span><span class=cF5>D3Mul</span><span class=cF7>(</span><span class=cF0>&p,d*tmpm->drag_profile_factor,&tmpm->state->DxDt</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l312"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l313"></a> tmpm=tmpm->next;
|
||||
<a name="l314"></a> }
|
||||
<a name="l315"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l316"></a>}
|
||||
<a name="l317"></a>
|
||||
<a name="l318"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEApplyAccelerationLimit</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l319"></a>{
|
||||
<a name="l320"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l321"></a> </span><span class=cF1>F64</span><span class=cF0> d;
|
||||
<a name="l322"></a> </span><span class=cF1>if</span><span class=cF0> (ode->acceleration_limit) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l323"></a> tmpm=ode->next_mass;
|
||||
<a name="l324"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l325"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpm->flags & </span><span class=cF3>MSF_INACTIVE</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l326"></a> </span><span class=cF7>(</span><span class=cF0>d=</span><span class=cF5>D3Norm</span><span class=cF0>(&tmpm->DstateDt->DxDt)</span><span class=cF7>)</span><span class=cF0>>ode->acceleration_limit)
|
||||
<a name="l327"></a> </span><span class=cF5>D3MulEqu</span><span class=cF0>(&tmpm->DstateDt->DxDt,ode->acceleration_limit/d);
|
||||
<a name="l328"></a> tmpm=tmpm->next;
|
||||
<a name="l329"></a> }
|
||||
<a name="l330"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l331"></a>}
|
||||
<a name="l332"></a>
|
||||
<a name="l333"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEMPTask</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l334"></a>{
|
||||
<a name="l335"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l336"></a> </span><span class=cF1>while</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&ode->mp_not_done_flags,</span><span class=cF5>Gs</span><span class=cF0>->num</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l337"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l338"></a> </span><span class=cF1>if</span><span class=cF0> (ode->mp_derive)
|
||||
<a name="l339"></a> (*ode->mp_derive)(ode,ode->mp_t,
|
||||
<a name="l340"></a> </span><span class=cF5>Gs</span><span class=cF0>->num,ode->mp_state,ode->mp_DstateDt);
|
||||
<a name="l341"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&ode->mp_not_done_flags,</span><span class=cF5>Gs</span><span class=cF0>->num);
|
||||
<a name="l342"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l343"></a>}
|
||||
<a name="l344"></a>
|
||||
<a name="l345"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEMPWake</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l346"></a>{
|
||||
<a name="l347"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l348"></a> </span><span class=cF1>if</span><span class=cF0> (!ode->slave_tasks) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l349"></a> ode->slave_tasks=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cFB>mp_cnt</span><span class=cF0>*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CTask</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l350"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++)
|
||||
<a name="l351"></a> ode->slave_tasks[i]=</span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>ODEMPTask</span><span class=cF0>,ode,</span><span class=cF6>"ODE Slave"</span><span class=cF0>,i);
|
||||
<a name="l352"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l353"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l354"></a> </span><span class=cF5>Suspend</span><span class=cF0>(ode->slave_tasks[i],</span><span class=cF3>FALSE</span><span class=cF0>);
|
||||
<a name="l355"></a> </span><span class=cF5>MPInt</span><span class=cF0>(</span><span class=cF3>I_WAKE</span><span class=cF0>,i);
|
||||
<a name="l356"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l357"></a>}
|
||||
<a name="l358"></a>
|
||||
<a name="l359"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEMPSleep</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l360"></a>{
|
||||
<a name="l361"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l362"></a> </span><span class=cF1>if</span><span class=cF0> (ode->slave_tasks) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l363"></a> </span><span class=cF1>while</span><span class=cF0> (ode->mp_not_done_flags)
|
||||
<a name="l364"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l365"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++)
|
||||
<a name="l366"></a> </span><span class=cF5>Suspend</span><span class=cF0>(ode->slave_tasks[i]);
|
||||
<a name="l367"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l368"></a>}
|
||||
<a name="l369"></a>
|
||||
<a name="l370"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODECallMPDerivative</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> *state,</span><span class=cF1>F64</span><span class=cF0> *DstateDt)
|
||||
<a name="l371"></a>{
|
||||
<a name="l372"></a> ode->mp_t=t;
|
||||
<a name="l373"></a> ode->mp_state=state;
|
||||
<a name="l374"></a> ode->mp_DstateDt=DstateDt;
|
||||
<a name="l375"></a> ode->mp_not_done_flags=1<<</span><span class=cFB>mp_cnt</span><span class=cF0>-1;
|
||||
<a name="l376"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l377"></a> </span><span class=cF1>while</span><span class=cF0> (ode->mp_not_done_flags);
|
||||
<a name="l378"></a>}
|
||||
<a name="l379"></a>
|
||||
<a name="l380"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode,</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> *state,</span><span class=cF1>F64</span><span class=cF0> *DstateDt)
|
||||
<a name="l381"></a>{
|
||||
<a name="l382"></a> </span><span class=cF9>CMass</span><span class=cF0> *tmpm;
|
||||
<a name="l383"></a> </span><span class=cF1>if</span><span class=cF0> (ode->flags&</span><span class=cF3>ODEF_HAS_MASSES</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l384"></a> </span><span class=cF5>ODESetMassesPtrs</span><span class=cF0>(ode,state,DstateDt);
|
||||
<a name="l385"></a> tmpm=ode->next_mass;
|
||||
<a name="l386"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l387"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpm->flags&</span><span class=cF3>MSF_INACTIVE</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l388"></a> </span><span class=cF5>D3Zero</span><span class=cF0>(&tmpm->DstateDt->DxDt);
|
||||
<a name="l389"></a> </span><span class=cF5>D3Copy</span><span class=cF0>(&tmpm->DstateDt->x,&tmpm->state->DxDt);
|
||||
<a name="l390"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l391"></a> tmpm=tmpm->next;
|
||||
<a name="l392"></a> }
|
||||
<a name="l393"></a> </span><span class=cF5>ODECalcSprings</span><span class=cF0>(ode);
|
||||
<a name="l394"></a> </span><span class=cF5>ODECalcDrag</span><span class=cF0>(ode);
|
||||
<a name="l395"></a> </span><span class=cF1>if</span><span class=cF0> (ode->mp_derive)
|
||||
<a name="l396"></a> </span><span class=cF5>ODECallMPDerivative</span><span class=cF0>(ode,t,state,DstateDt);
|
||||
<a name="l397"></a> </span><span class=cF1>if</span><span class=cF0> (ode->derive)
|
||||
<a name="l398"></a> (*ode->derive)(ode,t,state,DstateDt);
|
||||
<a name="l399"></a> tmpm=ode->next_mass;
|
||||
<a name="l400"></a> </span><span class=cF1>while</span><span class=cF0> (tmpm!=&ode->next_mass) {
|
||||
<a name="l401"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpm->flags&</span><span class=cF3>MSF_INACTIVE</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l402"></a> </span><span class=cF1>if</span><span class=cF0> (tmpm->flags&</span><span class=cF3>MSF_FIXED</span><span class=cF0>) {
|
||||
<a name="l403"></a> </span><span class=cF5>D3Zero</span><span class=cF0>(&tmpm->DstateDt->DxDt);
|
||||
<a name="l404"></a> </span><span class=cF5>D3Zero</span><span class=cF0>(&tmpm->DstateDt->x);
|
||||
<a name="l405"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (tmpm->mass)
|
||||
<a name="l406"></a> </span><span class=cF5>D3DivEqu</span><span class=cF0>(&tmpm->DstateDt->DxDt,tmpm->mass);
|
||||
<a name="l407"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l408"></a> tmpm=tmpm->next;
|
||||
<a name="l409"></a> }
|
||||
<a name="l410"></a> </span><span class=cF5>ODEApplyAccelerationLimit</span><span class=cF0>(ode);
|
||||
<a name="l411"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l412"></a> </span><span class=cF1>if</span><span class=cF0> (ode->mp_derive)
|
||||
<a name="l413"></a> </span><span class=cF5>ODECallMPDerivative</span><span class=cF0>(ode,t,state,DstateDt);
|
||||
<a name="l414"></a> </span><span class=cF1>if</span><span class=cF0> (ode->derive)
|
||||
<a name="l415"></a> (*ode->derive)(ode,t,state,DstateDt);
|
||||
<a name="l416"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l417"></a>}
|
||||
<a name="l418"></a>
|
||||
<a name="l419"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEOneStep</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l420"></a>{
|
||||
<a name="l421"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l422"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t,ode->state_internal,ode->DstateDt);
|
||||
<a name="l423"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<ode->n_internal;i++)
|
||||
<a name="l424"></a> ode->state_internal[i]+=ode->h*ode->DstateDt[i];
|
||||
<a name="l425"></a> ode->t+=ode->h;
|
||||
<a name="l426"></a>}
|
||||
<a name="l427"></a>
|
||||
<a name="l428"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODERK4OneStep</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l429"></a>{
|
||||
<a name="l430"></a> </span><span class=cF9>I64</span><span class=cF0> i,n=ode->n_internal;
|
||||
<a name="l431"></a> </span><span class=cF1>F64</span><span class=cF0> xh,hh,h6,*dym,*dyt,*yt,*DstateDt;
|
||||
<a name="l432"></a>
|
||||
<a name="l433"></a> dym =ode->tmp0;
|
||||
<a name="l434"></a> dyt =ode->tmp1;
|
||||
<a name="l435"></a> yt =ode->tmp2;
|
||||
<a name="l436"></a> DstateDt=ode->tmp3;
|
||||
<a name="l437"></a> hh =0.5*ode->h;
|
||||
<a name="l438"></a> h6 =ode->h / 6.0;
|
||||
<a name="l439"></a> xh =ode->t + hh;
|
||||
<a name="l440"></a>
|
||||
<a name="l441"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t,ode->state_internal,ode->DstateDt);
|
||||
<a name="l442"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l443"></a> yt[i]=ode->state_internal[i]+hh*DstateDt[i];
|
||||
<a name="l444"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,xh,yt,dyt);
|
||||
<a name="l445"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l446"></a> yt[i]=ode->state_internal[i]+hh*dyt[i];
|
||||
<a name="l447"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,xh,yt,dym);
|
||||
<a name="l448"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l449"></a> yt[i]=ode->state_internal[i]+ode->h*dym[i];
|
||||
<a name="l450"></a> dym[i]+=dyt[i];
|
||||
<a name="l451"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l452"></a> ode->t+=ode->h;
|
||||
<a name="l453"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t,yt,dyt);
|
||||
<a name="l454"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l455"></a> ode->state_internal[i]+=h6*(DstateDt[i]+dyt[i]+2.0*dym[i]);
|
||||
<a name="l456"></a>}
|
||||
<a name="l457"></a>
|
||||
<a name="l458"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEa2</span><span class=cF0> 0.2
|
||||
<a name="l459"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEa3</span><span class=cF0> 0.3
|
||||
<a name="l460"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEa4</span><span class=cF0> 0.6
|
||||
<a name="l461"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEa5</span><span class=cF0> 1.0
|
||||
<a name="l462"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEa6</span><span class=cF0> 0.875
|
||||
<a name="l463"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb21</span><span class=cF0> 0.2
|
||||
<a name="l464"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb31</span><span class=cF0> (3.0/40.0)
|
||||
<a name="l465"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb32</span><span class=cF0> (9.0/40.0)
|
||||
<a name="l466"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb41</span><span class=cF0> 0.3
|
||||
<a name="l467"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb42</span><span class=cF0> (-0.9)
|
||||
<a name="l468"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb43</span><span class=cF0> 1.2
|
||||
<a name="l469"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb51</span><span class=cF0> (-11.0/54.0)
|
||||
<a name="l470"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb52</span><span class=cF0> 2.5
|
||||
<a name="l471"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb53</span><span class=cF0> (-70.0/27.0)
|
||||
<a name="l472"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb54</span><span class=cF0> (35.0/27.0)
|
||||
<a name="l473"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb61</span><span class=cF0> (1631.0/55296.0)
|
||||
<a name="l474"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb62</span><span class=cF0> (175.0/512.0)
|
||||
<a name="l475"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb63</span><span class=cF0> (575.0/13824.0)
|
||||
<a name="l476"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb64</span><span class=cF0> (44275.0/110592.0)
|
||||
<a name="l477"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEb65</span><span class=cF0> (253.0/4096.0)
|
||||
<a name="l478"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEc1</span><span class=cF0> (37.0/378.0)
|
||||
<a name="l479"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEc3</span><span class=cF0> (250.0/621.0)
|
||||
<a name="l480"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEc4</span><span class=cF0> (125.0/594.0)
|
||||
<a name="l481"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEc6</span><span class=cF0> (512.0/1771.0)
|
||||
<a name="l482"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEdc1</span><span class=cF0> (37.0/378.0-2825.0/27648.0)
|
||||
<a name="l483"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEdc3</span><span class=cF0> (250.0/621.0-18575.0/48384.0)
|
||||
<a name="l484"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEdc4</span><span class=cF0> (125.0/594.0-13525.0/55296.0)
|
||||
<a name="l485"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEdc5</span><span class=cF0> (-277.0/14336.0)
|
||||
<a name="l486"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ODEdc6</span><span class=cF0> (512.0/1771.0-0.25)
|
||||
<a name="l487"></a>
|
||||
<a name="l488"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODECashKarp</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l489"></a>{
|
||||
<a name="l490"></a> </span><span class=cF9>I64</span><span class=cF0> i,n=ode->n_internal;
|
||||
<a name="l491"></a> </span><span class=cF1>F64</span><span class=cF0> h=ode->h,*state=ode->state_internal,
|
||||
<a name="l492"></a> *DstateDt=ode->DstateDt,*ak2,*ak3,*ak4,*ak5,*ak6,
|
||||
<a name="l493"></a> *tmpstate,*stateerr,*outstate;
|
||||
<a name="l494"></a>
|
||||
<a name="l495"></a> ak2=ode->tmp0;
|
||||
<a name="l496"></a> ak3=ode->tmp1;
|
||||
<a name="l497"></a> ak4=ode->tmp2;
|
||||
<a name="l498"></a> ak5=ode->tmp3;
|
||||
<a name="l499"></a> ak6=ode->tmp4;
|
||||
<a name="l500"></a> tmpstate=ode->tmp5;
|
||||
<a name="l501"></a> outstate=ode->tmp6;
|
||||
<a name="l502"></a> stateerr=ode->tmp7;
|
||||
<a name="l503"></a>
|
||||
<a name="l504"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l505"></a> tmpstate[i]=state[i]+</span><span class=cF3>ODEb21</span><span class=cF0>*h*DstateDt[i];
|
||||
<a name="l506"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t+</span><span class=cF3>ODEa2</span><span class=cF0>*h,tmpstate,ak2);
|
||||
<a name="l507"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l508"></a> tmpstate[i]=state[i]+h*(</span><span class=cF3>ODEb31</span><span class=cF0>*DstateDt[i]+</span><span class=cF3>ODEb32</span><span class=cF0>*ak2[i]);
|
||||
<a name="l509"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t+</span><span class=cF3>ODEa3</span><span class=cF0>*h,tmpstate,ak3);
|
||||
<a name="l510"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l511"></a> tmpstate[i]=state[i]+h*(</span><span class=cF3>ODEb41</span><span class=cF0>*DstateDt[i]+</span><span class=cF3>ODEb42</span><span class=cF0>*ak2[i]+</span><span class=cF3>ODEb43</span><span class=cF0>*ak3[i]);
|
||||
<a name="l512"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t+</span><span class=cF3>ODEa4</span><span class=cF0>*h,tmpstate,ak4);
|
||||
<a name="l513"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l514"></a> tmpstate[i]=state[i]+h*(</span><span class=cF3>ODEb51</span><span class=cF0>*DstateDt[i]+
|
||||
<a name="l515"></a> </span><span class=cF3>ODEb52</span><span class=cF0>*ak2[i]+</span><span class=cF3>ODEb53</span><span class=cF0>*ak3[i]+</span><span class=cF3>ODEb54</span><span class=cF0>*ak4[i]);
|
||||
<a name="l516"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t+</span><span class=cF3>ODEa5</span><span class=cF0>*h,tmpstate,ak5);
|
||||
<a name="l517"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l518"></a> tmpstate[i]=state[i]+h*(</span><span class=cF3>ODEb61</span><span class=cF0>*DstateDt[i]+
|
||||
<a name="l519"></a> </span><span class=cF3>ODEb62</span><span class=cF0>*ak2[i]+</span><span class=cF3>ODEb63</span><span class=cF0>*ak3[i]+</span><span class=cF3>ODEb64</span><span class=cF0>*ak4[i]+</span><span class=cF3>ODEb65</span><span class=cF0>*ak5[i]);
|
||||
<a name="l520"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t+</span><span class=cF3>ODEa6</span><span class=cF0>*h,tmpstate,ak6);
|
||||
<a name="l521"></a>
|
||||
<a name="l522"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l523"></a> outstate[i]=state[i]+h*(</span><span class=cF3>ODEc1</span><span class=cF0>*DstateDt[i]+
|
||||
<a name="l524"></a> </span><span class=cF3>ODEc3</span><span class=cF0>*ak3[i]+</span><span class=cF3>ODEc4</span><span class=cF0>*ak4[i]+</span><span class=cF3>ODEc6</span><span class=cF0>*ak6[i]);
|
||||
<a name="l525"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<n;i++)
|
||||
<a name="l526"></a> stateerr[i]=h*(</span><span class=cF3>ODEdc1</span><span class=cF0>*DstateDt[i]+</span><span class=cF3>ODEdc3</span><span class=cF0>*ak3[i]+
|
||||
<a name="l527"></a> </span><span class=cF3>ODEdc4</span><span class=cF0>*ak4[i]+</span><span class=cF3>ODEdc5</span><span class=cF0>*ak5[i]+</span><span class=cF3>ODEdc6</span><span class=cF0>*ak6[i]);
|
||||
<a name="l528"></a>}
|
||||
<a name="l529"></a>
|
||||
<a name="l530"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SAFETY</span><span class=cF0> 0.9
|
||||
<a name="l531"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PGROW</span><span class=cF0> (-0.2)
|
||||
<a name="l532"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PSHRNK</span><span class=cF0> (-0.25)
|
||||
<a name="l533"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>ERRCON</span><span class=cF0> 1.89e-4
|
||||
<a name="l534"></a>
|
||||
<a name="l535"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODERK5OneStep</span><span class=cF0>(</span><span class=cF9>CMathODE</span><span class=cF0> *ode)
|
||||
<a name="l536"></a>{
|
||||
<a name="l537"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l538"></a> </span><span class=cF1>F64</span><span class=cF0> errmax,tmp,*tmpstate=ode->tmp6,*stateerr=ode->tmp7;
|
||||
<a name="l539"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l540"></a> ode->h=</span><span class=cF5>Clamp</span><span class=cF0>(ode->h,ode->h_min,ode->h_max);
|
||||
<a name="l541"></a> </span><span class=cF5>ODECashKarp</span><span class=cF0>(ode);
|
||||
<a name="l542"></a> errmax=0.0;
|
||||
<a name="l543"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<ode->n_internal;i++) {
|
||||
<a name="l544"></a> tmp=</span><span class=cF5>Abs</span><span class=cF0>(stateerr[i]/ode->state_scale[i]);
|
||||
<a name="l545"></a> </span><span class=cF1>if</span><span class=cF0> (tmp>errmax)
|
||||
<a name="l546"></a> errmax=tmp;
|
||||
<a name="l547"></a> }
|
||||
<a name="l548"></a> errmax/=ode->tolerance_internal;
|
||||
<a name="l549"></a> </span><span class=cF1>if</span><span class=cF0> (errmax<=1.0 || ode->h==ode->h_min) </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l550"></a> tmp=ode->h*</span><span class=cF3>SAFETY</span><span class=cF0>*errmax`</span><span class=cF3>PSHRNK</span><span class=cF0>;
|
||||
<a name="l551"></a> </span><span class=cF1>if</span><span class=cF0> (tmp<0.1*ode->h)
|
||||
<a name="l552"></a> ode->h*=0.1;
|
||||
<a name="l553"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l554"></a> ode->h=tmp;
|
||||
<a name="l555"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l556"></a> ode->t+=ode->h;
|
||||
<a name="l557"></a> </span><span class=cF1>if</span><span class=cF0> (errmax></span><span class=cF3>ERRCON</span><span class=cF0>)
|
||||
<a name="l558"></a> ode->h*=</span><span class=cF3>SAFETY</span><span class=cF0>*errmax`</span><span class=cF3>PGROW</span><span class=cF0>;
|
||||
<a name="l559"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l560"></a> ode->h*=5.0;
|
||||
<a name="l561"></a> ode->h=</span><span class=cF5>Clamp</span><span class=cF0>(ode->h,ode->h_min,ode->h_max);
|
||||
<a name="l562"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(ode->state_internal,tmpstate,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>*ode->n_internal);
|
||||
<a name="l563"></a>}
|
||||
<a name="l564"></a>
|
||||
<a name="l565"></a></span><span class=cF1>F64</span><span class=cF0> </span><span class=cFB>ode_alloced_factor</span><span class=cF0>=0.75;
|
||||
<a name="l566"></a>
|
||||
<a name="l567"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ODEsUpdate</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l568"></a>{</span><span class=cF2>/* This routine is called by the </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l7"><span class=cF4>window mgr</span></a><span class=cF2>on a continuous</span><span class=cF0>
|
||||
<a name="l569"></a></span><span class=cF2>basis to allow real-time simulation. It is intended</span><span class=cF0>
|
||||
<a name="l570"></a></span><span class=cF2>to provide ress good enough for games. It uses a runge-kutta</span><span class=cF0>
|
||||
<a name="l571"></a></span><span class=cF2>integrator which is a better algorithm than doing it with Euler.</span><span class=cF0>
|
||||
<a name="l572"></a>
|
||||
<a name="l573"></a></span><span class=cF2>It is adaptive step-sized, so it slows down when an important</span><span class=cF0>
|
||||
<a name="l574"></a></span><span class=cF2>event is taking place to improve accuracy, but in my implementation</span><span class=cF0>
|
||||
<a name="l575"></a></span><span class=cF2>it has a timeout.</span><span class=cF0>
|
||||
<a name="l576"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l577"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l578"></a> </span><span class=cF1>F64</span><span class=cF0> d,start_time,timeout_time,t_desired,t_initial,interpolation;
|
||||
<a name="l579"></a> </span><span class=cF9>CMathODE</span><span class=cF0> *ode;
|
||||
<a name="l580"></a>
|
||||
<a name="l581"></a> </span><span class=cF1>if</span><span class=cF0> (task->next_ode==&task->next_ode)
|
||||
<a name="l582"></a> task->last_ode_time=0;
|
||||
<a name="l583"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&task->win_inhibit,</span><span class=cF3>WIf_SELF_ODE</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l584"></a></span><span class=cF2>//See </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l58"><span class=cF4>GrUpdateTasks</span></a><span class=cF2>() and </span><a href="/Wb/Adam/Gr/GrScrn.HC.HTML#l3"><span class=cF4>GrUpdateTaskODEs</span></a><span class=cF2>().</span><span class=cF0>
|
||||
<a name="l585"></a> </span><span class=cF2>//We will not pick a time limit based on</span><span class=cF0>
|
||||
<a name="l586"></a> </span><span class=cF2>//how busy the CPU is, what percent of the</span><span class=cF0>
|
||||
<a name="l587"></a> </span><span class=cF2>//last refresh cycle was spent on ODE's</span><span class=cF0>
|
||||
<a name="l588"></a> </span><span class=cF2>//and what the refresh cycle rate was.</span><span class=cF0>
|
||||
<a name="l589"></a> start_time=</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l590"></a> d=1.0/</span><span class=cFB>winmgr</span><span class=cF0>.fps;
|
||||
<a name="l591"></a> timeout_time=start_time+
|
||||
<a name="l592"></a> (task->last_ode_time/d+0.1)/(</span><span class=cFB>winmgr</span><span class=cF0>.last_ode_time/d+0.1)*
|
||||
<a name="l593"></a> </span><span class=cFB>ode_alloced_factor</span><span class=cF0>*d;
|
||||
<a name="l594"></a> ode=task->next_ode;
|
||||
<a name="l595"></a> </span><span class=cF1>while</span><span class=cF0> (ode!=&task->next_ode) {
|
||||
<a name="l596"></a> t_initial=ode->t;
|
||||
<a name="l597"></a> d=</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l598"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ode->flags&</span><span class=cF3>ODEF_STARTED</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l599"></a> ode->base_t=d;
|
||||
<a name="l600"></a> ode->flags|=</span><span class=cF3>ODEF_STARTED</span><span class=cF0>;
|
||||
<a name="l601"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l602"></a> d-=ode->base_t+t_initial;
|
||||
<a name="l603"></a> t_desired=ode->t_scale*d+t_initial;
|
||||
<a name="l604"></a> </span><span class=cF1>if</span><span class=cF0> (ode->flags&</span><span class=cF3>ODEF_PAUSED</span><span class=cF0>)
|
||||
<a name="l605"></a> ode->base_t+=t_desired-ode->t; </span><span class=cF2>//Slip</span><span class=cF0>
|
||||
<a name="l606"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l607"></a> ode->flags|=</span><span class=cF3>ODEF_BUSY</span><span class=cF0>;
|
||||
<a name="l608"></a> </span><span class=cF1>if</span><span class=cF0> (ode->flags&</span><span class=cF3>ODEF_PAUSED</span><span class=cF0>)
|
||||
<a name="l609"></a> ode->base_t+=t_desired-ode->t; </span><span class=cF2>//Slip</span><span class=cF0>
|
||||
<a name="l610"></a> </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l611"></a> </span><span class=cF1>if</span><span class=cF0> (ode->derive || ode->mp_derive) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l612"></a> </span><span class=cF1>if</span><span class=cF0> (ode->mp_derive)
|
||||
<a name="l613"></a> </span><span class=cF5>ODEMPWake</span><span class=cF0>(ode);
|
||||
<a name="l614"></a> </span><span class=cF5>ODEState2Internal</span><span class=cF0>(ode);
|
||||
<a name="l615"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(ode->initial_state,ode->state_internal,
|
||||
<a name="l616"></a> ode->n_internal*</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>F64</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l617"></a> </span><span class=cF1>while</span><span class=cF0> (ode->t<t_desired) {
|
||||
<a name="l618"></a> ode->h_max=t_desired-ode->t;
|
||||
<a name="l619"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t,ode->state_internal,ode->DstateDt);
|
||||
<a name="l620"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<ode->n_internal;i++)
|
||||
<a name="l621"></a> ode->state_scale[i]=</span><span class=cF5>Abs</span><span class=cF0>(ode->state_internal[i])+
|
||||
<a name="l622"></a> </span><span class=cF5>Abs</span><span class=cF0>(ode->DstateDt[i]*ode->h)+ode->tolerance_internal;
|
||||
<a name="l623"></a> </span><span class=cF5>ODERK5OneStep</span><span class=cF0>(ode);
|
||||
<a name="l624"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>tS</span><span class=cF0>>timeout_time) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l625"></a> ode->base_t+=t_desired-ode->t; </span><span class=cF2>//Slip</span><span class=cF0>
|
||||
<a name="l626"></a> </span><span class=cF1>goto</span><span class=cF0> ode_done;
|
||||
<a name="l627"></a>
|
||||
<a name="l628"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l629"></a> }
|
||||
<a name="l630"></a>
|
||||
<a name="l631"></a> </span><span class=cF2>//Interpolate if end time was not exact.</span><span class=cF0>
|
||||
<a name="l632"></a> </span><span class=cF1>if</span><span class=cF0> (ode->t!=t_desired) {
|
||||
<a name="l633"></a> </span><span class=cF1>if</span><span class=cF0> (interpolation=ode->t-t_initial) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l634"></a> interpolation=(t_desired-t_initial)/interpolation;
|
||||
<a name="l635"></a> </span><span class=cF1>if</span><span class=cF0> (interpolation!=1.0)
|
||||
<a name="l636"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<ode->n_internal;i++)
|
||||
<a name="l637"></a> ode->state_internal[i]=(ode->state_internal[i]-
|
||||
<a name="l638"></a> ode->initial_state[i])*interpolation+
|
||||
<a name="l639"></a> ode->initial_state[i];
|
||||
<a name="l640"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l641"></a> ode->t=t_desired;
|
||||
<a name="l642"></a> }
|
||||
<a name="l643"></a>ode_done:
|
||||
<a name="l644"></a> </span><span class=cF5>ODEInternal2State</span><span class=cF0>(ode);
|
||||
<a name="l645"></a>
|
||||
<a name="l646"></a> </span><span class=cF2>//Convenience call to set vals</span><span class=cF0>
|
||||
<a name="l647"></a> </span><span class=cF5>ODECallDerivative</span><span class=cF0>(ode,ode->t,ode->state_internal,ode->DstateDt);
|
||||
<a name="l648"></a>
|
||||
<a name="l649"></a> </span><span class=cF1>if</span><span class=cF0> (ode->mp_derive)
|
||||
<a name="l650"></a> </span><span class=cF5>ODEMPSleep</span><span class=cF0>(ode);
|
||||
<a name="l651"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l652"></a> }
|
||||
<a name="l653"></a> ode->flags&=~</span><span class=cF3>ODEF_BUSY</span><span class=cF0>;
|
||||
<a name="l654"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l655"></a> ode->base_t+=(1.0-ode->t_scale)*d;
|
||||
<a name="l656"></a> ode=ode->next;
|
||||
<a name="l657"></a> }
|
||||
<a name="l658"></a>
|
||||
<a name="l659"></a> </span><span class=cF2>//Now, we will dynamically adjust tolerances.</span><span class=cF0>
|
||||
<a name="l660"></a>
|
||||
<a name="l661"></a> </span><span class=cF2>//We will regulate the tolerances</span><span class=cF0>
|
||||
<a name="l662"></a> </span><span class=cF2>//to fill the time we decided was</span><span class=cF0>
|
||||
<a name="l663"></a> </span><span class=cF2>//okay to devote to ODE's.</span><span class=cF0>
|
||||
<a name="l664"></a> </span><span class=cF2>//Since we might have multiple ODE's</span><span class=cF0>
|
||||
<a name="l665"></a> </span><span class=cF2>//active we scale them by the same factor.</span><span class=cF0>
|
||||
<a name="l666"></a>
|
||||
<a name="l667"></a> </span><span class=cF2>//This algorithm is probably not stable or very good, but it's something.</span><span class=cF0>
|
||||
<a name="l668"></a>
|
||||
<a name="l669"></a> </span><span class=cF2>//Target is 75% of alloced time.</span><span class=cF0>
|
||||
<a name="l670"></a> d=(</span><span class=cF5>tS</span><span class=cF0>-start_time)/(timeout_time-start_time)-0.75;
|
||||
<a name="l671"></a>
|
||||
<a name="l672"></a> ode=task->next_ode;
|
||||
<a name="l673"></a> </span><span class=cF1>while</span><span class=cF0> (ode!=&task->next_ode) {
|
||||
<a name="l674"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ode->flags&</span><span class=cF3>ODEF_PAUSED</span><span class=cF7>)</span><span class=cF0> && ode->derive) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l675"></a> </span><span class=cF1>if</span><span class=cF0> (ode->min_tolerance!=ode->max_tolerance) {
|
||||
<a name="l676"></a> </span><span class=cF1>if</span><span class=cF0> (d>0)
|
||||
<a name="l677"></a> ode->tolerance_internal*=10.0`d;
|
||||
<a name="l678"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l679"></a> ode->tolerance_internal*=2.0`d;
|
||||
<a name="l680"></a> }
|
||||
<a name="l681"></a> ode->tolerance_internal=</span><span class=cF5>Clamp</span><span class=cF0>(ode->tolerance_internal,
|
||||
<a name="l682"></a> ode->min_tolerance,ode->max_tolerance);
|
||||
<a name="l683"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l684"></a> ode=ode->next;
|
||||
<a name="l685"></a> }
|
||||
<a name="l686"></a> </span><span class=cFB>winmgr</span><span class=cF0>.ode_time+=task->last_ode_time=</span><span class=cF5>tS</span><span class=cF0>-start_time;
|
||||
<a name="l687"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l688"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
210
public/Wb/Adam/AMem.HC.HTML
Executable file
210
public/Wb/Adam/AMem.HC.HTML
Executable file
@ -0,0 +1,210 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Memory/Task"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>TaskMemAlloced</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> override_validate=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l3"></a>{</span><span class=cF2>//Count of bytes alloced to a task, used+unused.</span><span class=cF0>
|
||||
<a name="l4"></a> </span><span class=cF9>I64</span><span class=cF0> res;
|
||||
<a name="l5"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l6"></a> </span><span class=cF1>if</span><span class=cF0> (override_validate || </span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>task</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l7"></a> res=task->code_heap->alloced_u8s;
|
||||
<a name="l8"></a> </span><span class=cF1>if</span><span class=cF0> (task->code_heap!=task->data_heap)
|
||||
<a name="l9"></a> res+=task->data_heap->alloced_u8s;
|
||||
<a name="l10"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l11"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l12"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l13"></a>}
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>TaskMemUsed</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> override_validate=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l16"></a>{</span><span class=cF2>//Count of bytes alloced to a task and in use.</span><span class=cF0>
|
||||
<a name="l17"></a> </span><span class=cF9>I64</span><span class=cF0> res;
|
||||
<a name="l18"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l19"></a> </span><span class=cF1>if</span><span class=cF0> (override_validate || </span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>task</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l20"></a> res=task->code_heap->used_u8s;
|
||||
<a name="l21"></a> </span><span class=cF1>if</span><span class=cF0> (task->data_heap!=task->code_heap)
|
||||
<a name="l22"></a> res+=task->data_heap->used_u8s;
|
||||
<a name="l23"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l24"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l26"></a>}
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Memory/Task;Debugging/Heap;Memory/Debugging"</span><span class=cF0>
|
||||
<a name="l29"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>HeapRep</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l30"></a>{</span><span class=cF2>//Report status of task's heap.</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF9>I64</span><span class=cF0> i,cnt;
|
||||
<a name="l32"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *uum;
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (!task || task==</span><span class=cF5>Fs</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF6>"Task can't HeapRep on self.\n"</span><span class=cF0>;
|
||||
<a name="l36"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l37"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l38"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>task</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l39"></a>
|
||||
<a name="l40"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l41"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l42"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&task->code_heap->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l43"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>if</span><span class=cF0> (task->data_heap!=task->code_heap)
|
||||
<a name="l45"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&task->data_heap->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l46"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l47"></a>
|
||||
<a name="l48"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>MEM_HEAP_HASH_SIZE</span><span class=cF0>>>3;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l49"></a> cnt=0;
|
||||
<a name="l50"></a> uum=task->code_heap->heap_hash[i];
|
||||
<a name="l51"></a> </span><span class=cF1>while</span><span class=cF0> (uum) {
|
||||
<a name="l52"></a> cnt+=uum->size;
|
||||
<a name="l53"></a> uum=uum->next;
|
||||
<a name="l54"></a> }
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (task->data_heap!=task->code_heap) {
|
||||
<a name="l56"></a> uum=task->data_heap->heap_hash[i];
|
||||
<a name="l57"></a> </span><span class=cF1>while</span><span class=cF0> (uum) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l58"></a> cnt+=uum->size;
|
||||
<a name="l59"></a> uum=uum->next;
|
||||
<a name="l60"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l61"></a> }
|
||||
<a name="l62"></a> </span><span class=cF1>if</span><span class=cF0> (cnt)
|
||||
<a name="l63"></a> </span><span class=cF6>"%03X:%08X\n"</span><span class=cF0>,i<<3,cnt;
|
||||
<a name="l64"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l65"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l66"></a>
|
||||
<a name="l67"></a> uum=task->code_heap->malloc_free_lst;
|
||||
<a name="l68"></a> </span><span class=cF1>while</span><span class=cF0> (uum) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l69"></a> </span><span class=cF6>"%X, "</span><span class=cF0>,uum->size;
|
||||
<a name="l70"></a> uum=uum->next;
|
||||
<a name="l71"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cF1>if</span><span class=cF0> (task->data_heap!=task->code_heap) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l73"></a> uum=task->data_heap->malloc_free_lst;
|
||||
<a name="l74"></a> </span><span class=cF1>while</span><span class=cF0> (uum) {
|
||||
<a name="l75"></a> </span><span class=cF6>"%X, "</span><span class=cF0>,uum->size;
|
||||
<a name="l76"></a> uum=uum->next;
|
||||
<a name="l77"></a> }
|
||||
<a name="l78"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a> </span><span class=cF1>if</span><span class=cF0> (task->data_heap!=task->code_heap)
|
||||
<a name="l81"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&task->data_heap->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l82"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&task->code_heap->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l83"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l86"></a>}
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Memory/HeapCtrl;Debugging/Heap;Memory/Debugging"</span><span class=cF0>
|
||||
<a name="l89"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>IsInHeapCtrl</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *a,</span><span class=cF9>CHeapCtrl</span><span class=cF0> *hc,</span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF1>lock</span><span class=cF0>=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l90"></a>{</span><span class=cF2>//Check addr if in HeapCtrl.</span><span class=cF0>
|
||||
<a name="l91"></a> </span><span class=cF9>CMemBlk</span><span class=cF0> *m;
|
||||
<a name="l92"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l93"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l94"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF1>lock</span><span class=cF0>)
|
||||
<a name="l95"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l96"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l97"></a> m=hc->next_mem_blk;
|
||||
<a name="l98"></a> </span><span class=cF1>while</span><span class=cF0> (m!=&hc->next_mem_blk) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l99"></a> </span><span class=cF1>if</span><span class=cF0> (a>=m && a<m</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>+m->pags<<</span><span class=cF3>MEM_PAG_BITS</span><span class=cF0>) {
|
||||
<a name="l100"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF1>lock</span><span class=cF0>)
|
||||
<a name="l101"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l102"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l103"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l104"></a> }
|
||||
<a name="l105"></a> m=m->next;
|
||||
<a name="l106"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF1>lock</span><span class=cF0>)
|
||||
<a name="l108"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l109"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l110"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l111"></a>}
|
||||
<a name="l112"></a>
|
||||
<a name="l113"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>HeapCtrlWalk</span><span class=cF0>(</span><span class=cF9>CHeapCtrl</span><span class=cF0> *hc)
|
||||
<a name="l114"></a>{</span><span class=cF2>//Check integrity of HeapCtrl.</span><span class=cF0>
|
||||
<a name="l115"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l116"></a> </span><span class=cF9>CMemUnused</span><span class=cF0> *uum;
|
||||
<a name="l117"></a>
|
||||
<a name="l118"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l119"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l120"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l121"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l122"></a>
|
||||
<a name="l123"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>MEM_HEAP_HASH_SIZE</span><span class=cF0>>>3;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l124"></a> uum=hc->heap_hash[i];
|
||||
<a name="l125"></a> </span><span class=cF1>while</span><span class=cF0> (uum) {
|
||||
<a name="l126"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>IsInHeapCtrl</span><span class=cF7>(</span><span class=cF0>uum,hc,</span><span class=cF3>FALSE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l127"></a> </span><span class=cF1>goto</span><span class=cF0> hc_false;
|
||||
<a name="l128"></a> uum=uum->next;
|
||||
<a name="l129"></a> }
|
||||
<a name="l130"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l131"></a> uum=hc->malloc_free_lst;
|
||||
<a name="l132"></a> </span><span class=cF1>while</span><span class=cF0> (uum) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>IsInHeapCtrl</span><span class=cF7>(</span><span class=cF0>uum,hc,</span><span class=cF3>FALSE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l134"></a> </span><span class=cF1>goto</span><span class=cF0> hc_false;
|
||||
<a name="l135"></a> uum=uum->next;
|
||||
<a name="l136"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l137"></a>
|
||||
<a name="l138"></a> #</span><span class=cF1>if</span><span class=cF0> </span><span class=cF3>_CFG_HEAP_DBG</span><span class=cF0>
|
||||
<a name="l139"></a> </span><span class=cF9>CMemUsed</span><span class=cF0> *um,*um1;
|
||||
<a name="l140"></a> um1=(&hc->next_um)(</span><span class=cF1>U8</span><span class=cF0> *)-</span><span class=cF1>offset</span><span class=cF0>(</span><span class=cF9>CMemUsed</span><span class=cF0>.next);
|
||||
<a name="l141"></a> um=um1->next;
|
||||
<a name="l142"></a> </span><span class=cF1>while</span><span class=cF0> (um!=um1) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l143"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>IsInHeapCtrl</span><span class=cF7>(</span><span class=cF0>um,hc,</span><span class=cF3>FALSE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l144"></a> </span><span class=cF1>goto</span><span class=cF0> hc_false;
|
||||
<a name="l145"></a> um=um->next;
|
||||
<a name="l146"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l147"></a>#</span><span class=cF1>endif</span><span class=cF0>
|
||||
<a name="l148"></a>
|
||||
<a name="l149"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l150"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l151"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l152"></a>
|
||||
<a name="l153"></a> hc_false:
|
||||
<a name="l154"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&hc->locked_flags,</span><span class=cF3>HClf_LOCKED</span><span class=cF0>);
|
||||
<a name="l155"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l156"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l157"></a>}
|
||||
<a name="l158"></a>
|
||||
<a name="l159"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Memory/Task;Debugging/Heap;Memory/Debugging"</span><span class=cF0>
|
||||
<a name="l160"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>IsInHeap</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *a,</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF1>lock</span><span class=cF0>=</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l161"></a>{</span><span class=cF2>//Check addr if in task's heaps.</span><span class=cF0>
|
||||
<a name="l162"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l163"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>task</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF5>IsInHeapCtrl</span><span class=cF0>(a,task->code_heap,</span><span class=cF1>lock</span><span class=cF0>)||
|
||||
<a name="l164"></a> task->data_heap!=task->code_heap &&
|
||||
<a name="l165"></a> </span><span class=cF5>IsInHeapCtrl</span><span class=cF0>(a,task->data_heap,</span><span class=cF1>lock</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l166"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l167"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l168"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l169"></a>}
|
||||
<a name="l170"></a>
|
||||
<a name="l171"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>HeapWalk</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l172"></a>{</span><span class=cF2>//Check integrity of task's heaps.</span><span class=cF0>
|
||||
<a name="l173"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l174"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>task</span><span class=cF7>)</span><span class=cF0> || !</span><span class=cF5>HeapCtrlWalk</span><span class=cF7>(</span><span class=cF0>task->code_heap</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l175"></a> task->data_heap!=task->code_heap && !</span><span class=cF5>HeapCtrlWalk</span><span class=cF7>(</span><span class=cF0>task->data_heap</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l176"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l177"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l178"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l179"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
51
public/Wb/Adam/AMouse.HC.HTML
Executable file
51
public/Wb/Adam/AMouse.HC.HTML
Executable file
@ -0,0 +1,51 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Graphics/Misc;Mouse/Ptr"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cFA>
|
||||
<a name="l3"></a><1>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a></span><span class=cFB>gr</span><span class=cF0>.empty_sprite=</span><span class=cFA><1></span><span class=cF0>;
|
||||
<a name="l6"></a></span><span class=cFA>
|
||||
<a name="l7"></a><2>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l8"></a></span><span class=cFA>
|
||||
<a name="l9"></a><3>/* Graphics Not Rendered in HTML */</span><span class=cF0>
|
||||
<a name="l10"></a>
|
||||
<a name="l11"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawGrabMs</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y,</span><span class=cF1>Bool</span><span class=cF0> closed)
|
||||
<a name="l12"></a>{</span><span class=cF2>//This is a callback. See </span><a href="/Wb/Demo/Graphics/Grid.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Grid.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l13"></a> dc->flags&=~(</span><span class=cF3>DCF_TRANSFORMATION</span><span class=cF0>|</span><span class=cF3>DCF_SYMMETRY</span><span class=cF0>);
|
||||
<a name="l14"></a> dc->color=</span><span class=cF3>ROP_EQU</span><span class=cF0>;
|
||||
<a name="l15"></a> </span><span class=cF1>if</span><span class=cF0> (closed)
|
||||
<a name="l16"></a> </span><span class=cF5>Sprite3</span><span class=cF0>(dc,x,y,0,</span><span class=cFA><2></span><span class=cF0>);
|
||||
<a name="l17"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l18"></a> </span><span class=cF5>Sprite3</span><span class=cF0>(dc,x,y,0,</span><span class=cFA><3></span><span class=cF0>);
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a></span><span class=cFB>gr</span><span class=cF0>.fp_draw_grab_ms=&</span><span class=cF5>DrawGrabMs</span><span class=cF0>;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
234
public/Wb/Adam/ARegistry.HC.HTML
Executable file
234
public/Wb/Adam/ARegistry.HC.HTML
Executable file
@ -0,0 +1,234 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Registry"</span><span class=cF0>
|
||||
<a name="l2"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>REGISTRY_FILENAME</span><span class=cF0> </span><span class=cF6>"~/Registry.HC.Z"</span><span class=cF0>
|
||||
<a name="l3"></a></span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cFB>sys_registry_doc</span><span class=cF0>=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l4"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cFB>sys_msg_flags</span><span class=cF0>[1]={0};
|
||||
<a name="l5"></a></span><span class=cF1>F64</span><span class=cF0> </span><span class=cFB>registry_version</span><span class=cF0>;
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>RegCache</span><span class=cF0>()
|
||||
<a name="l8"></a>{
|
||||
<a name="l9"></a> </span><span class=cF1>Bool</span><span class=cF0> old_silent;
|
||||
<a name="l10"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cFB>sys_registry_doc</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l11"></a> old_silent=</span><span class=cF5>Silent</span><span class=cF0>;
|
||||
<a name="l12"></a> </span><span class=cFB>sys_registry_doc</span><span class=cF0>=</span><span class=cF5>DocRead</span><span class=cF0>(</span><span class=cF3>REGISTRY_FILENAME</span><span class=cF0>);
|
||||
<a name="l13"></a> </span><span class=cF5>Silent</span><span class=cF0>(old_silent);
|
||||
<a name="l14"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l15"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l16"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l17"></a>}
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>RegDft</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path,</span><span class=cF1>U8</span><span class=cF0> *val,</span><span class=cF1>Bool</span><span class=cF0> is_adam_entry=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l20"></a>{</span><span class=cF2>//Add code doc tree branch to registry.</span><span class=cF0>
|
||||
<a name="l21"></a> </span><span class=cF1>Bool</span><span class=cF0> res,unlock_doc;
|
||||
<a name="l22"></a> </span><span class=cF5>RegCache</span><span class=cF0>;
|
||||
<a name="l23"></a> unlock_doc=</span><span class=cF5>DocLock</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>);
|
||||
<a name="l24"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>DocTreeFind</span><span class=cF7>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF5>DocTreeMake</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path);
|
||||
<a name="l26"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,</span><span class=cF6>"%s"</span><span class=cF0>,val);
|
||||
<a name="l27"></a> </span><span class=cF1>if</span><span class=cF0> (is_adam_entry) {
|
||||
<a name="l28"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Fs</span><span class=cF0>==</span><span class=cFB>adam_task</span><span class=cF0>)
|
||||
<a name="l29"></a> </span><span class=cF5>ExePrint</span><span class=cF0>(</span><span class=cF6>"%s"</span><span class=cF0>,val);
|
||||
<a name="l30"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l31"></a> </span><span class=cF5>Adam</span><span class=cF0>(</span><span class=cF6>"%s"</span><span class=cF0>,val);
|
||||
<a name="l32"></a> }
|
||||
<a name="l33"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DrvIsWritable</span><span class=cF7>(</span><span class=cF0>*</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l34"></a> </span><span class=cF5>DocWrite</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>);
|
||||
<a name="l35"></a> res=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l36"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l37"></a> res=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l38"></a> </span><span class=cF1>if</span><span class=cF0> (unlock_doc)
|
||||
<a name="l39"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>);
|
||||
<a name="l40"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l41"></a>}
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RegExe</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path)
|
||||
<a name="l44"></a>{</span><span class=cF2>//Execute doc tree branch in registry.</span><span class=cF0>
|
||||
<a name="l45"></a> </span><span class=cF5>RegCache</span><span class=cF0>;
|
||||
<a name="l46"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>DocTreeExe</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path);
|
||||
<a name="l47"></a>}
|
||||
<a name="l48"></a>
|
||||
<a name="l49"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path,</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l50"></a>{</span><span class=cF2>//Rewrite doc tree branch in registry.</span><span class=cF0>
|
||||
<a name="l51"></a> </span><span class=cF1>Bool</span><span class=cF0> res;
|
||||
<a name="l52"></a> </span><span class=cF5>RegCache</span><span class=cF0>;
|
||||
<a name="l53"></a> res=</span><span class=cF5>DocTreeWriteJoin</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path,</span><span class=cF3>TRUE</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l54"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l55"></a>}
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>RegCnt</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path)
|
||||
<a name="l58"></a>{</span><span class=cF2>//Tree branch cnt in registry.</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF9>I64</span><span class=cF0> res=0;
|
||||
<a name="l60"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *tree_branch,*start_indent,*end_indent;
|
||||
<a name="l61"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock_doc=</span><span class=cF5>DocLock</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>);
|
||||
<a name="l62"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DocTreeFind</span><span class=cF7>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path,
|
||||
<a name="l63"></a> &tree_branch,&start_indent,&end_indent</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l64"></a> end_indent=end_indent->next;
|
||||
<a name="l65"></a> </span><span class=cF1>while</span><span class=cF0> (start_indent!=end_indent) {
|
||||
<a name="l66"></a> res++;
|
||||
<a name="l67"></a> start_indent=start_indent->next;
|
||||
<a name="l68"></a> }
|
||||
<a name="l69"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l70"></a> </span><span class=cF1>if</span><span class=cF0> (unlock_doc)
|
||||
<a name="l71"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>);
|
||||
<a name="l72"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l73"></a>}
|
||||
<a name="l74"></a>
|
||||
<a name="l75"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>RegAppend</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *path,</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l76"></a>{</span><span class=cF2>//Append to doc tree branch in registry.</span><span class=cF0>
|
||||
<a name="l77"></a> </span><span class=cF1>Bool</span><span class=cF0> res;
|
||||
<a name="l78"></a> </span><span class=cF5>RegCache</span><span class=cF0>;
|
||||
<a name="l79"></a> res=</span><span class=cF5>DocTreeAppendJoin</span><span class=cF0>(</span><span class=cFB>sys_registry_doc</span><span class=cF0>,path,</span><span class=cF3>TRUE</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l80"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l81"></a>}
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>OneTimePopUp</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *_flags,</span><span class=cF9>I64</span><span class=cF0> flag_num,</span><span class=cF1>U8</span><span class=cF0> *msg)
|
||||
<a name="l84"></a>{</span><span class=cF2>//See </span><a href="/Wb/Apps/X-Caliber/X-Caliber.HC.HTML#l1"><span class=cF4>::/Apps/X-Caliber/X-Caliber.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l85"></a> </span><span class=cF1>Bool</span><span class=cF0> res=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l86"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF5>DocNew</span><span class=cF0>;
|
||||
<a name="l87"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>_flags,flag_num</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l89"></a> </span><span class=cF1>if</span><span class=cF0> (msg) </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"%s"</span><span class=cF0>,msg);
|
||||
<a name="l90"></a> doc_e=</span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n$CB,\"Do not show this msg again.\",LE=1$"</span><span class=cF0>);
|
||||
<a name="l91"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$CM+CX,0,4$$BT,\"OKAY\",LE=1$\n"</span><span class=cF0>);
|
||||
<a name="l92"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>PopUpMenu</span><span class=cF7>(</span><span class=cF0>doc</span><span class=cF7>)</span><span class=cF0>==1 && doc_e->de_flags&</span><span class=cF3>DOCEF_CHECKED_COLLAPSED</span><span class=cF0>) {
|
||||
<a name="l93"></a> </span><span class=cF5>LBts</span><span class=cF0>(_flags,flag_num);
|
||||
<a name="l94"></a> res=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l95"></a> }
|
||||
<a name="l96"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l97"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l98"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l99"></a>}
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>RegOneTimePopUp</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> flag_num,</span><span class=cF1>U8</span><span class=cF0> *msg)
|
||||
<a name="l102"></a>{</span><span class=cF2>//You're not supposed to make system pop-up flags, only me.</span><span class=cF0>
|
||||
<a name="l103"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>OneTimePopUp</span><span class=cF7>(</span><span class=cFB>sys_msg_flags</span><span class=cF0>,flag_num,msg</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l104"></a> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF6>"Adam/SysMsgFlags"</span><span class=cF0>,</span><span class=cF6>"sys_msg_flags[0]=0x%X;\n"</span><span class=cF0>,
|
||||
<a name="l105"></a> </span><span class=cFB>sys_msg_flags</span><span class=cF0>[0]);
|
||||
<a name="l106"></a>}
|
||||
<a name="l107"></a>
|
||||
<a name="l108"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>RegInit</span><span class=cF0>()
|
||||
<a name="l109"></a>{
|
||||
<a name="l110"></a> </span><span class=cF1>U8</span><span class=cF0> buf[</span><span class=cF3>STR_LEN</span><span class=cF0>];
|
||||
<a name="l111"></a> </span><span class=cF1>Bool</span><span class=cF0> version_present;
|
||||
<a name="l112"></a> </span><span class=cF5>RegDft</span><span class=cF0>(</span><span class=cF6>"Adam/SysMsgFlags"</span><span class=cF0>,</span><span class=cF6>"sys_msg_flags[0]=0;\n"</span><span class=cF0>,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l113"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(buf,</span><span class=cF6>"registry_version=%4.3f;\n"</span><span class=cF0>,</span><span class=cFB>sys_os_version</span><span class=cF0>);
|
||||
<a name="l114"></a> version_present=</span><span class=cF5>RegDft</span><span class=cF0>(</span><span class=cF6>"Adam/SysRegVer"</span><span class=cF0>,buf,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l115"></a> </span><span class=cF5>RegExe</span><span class=cF0>(</span><span class=cF6>"Adam"</span><span class=cF0>);
|
||||
<a name="l116"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>registry_version</span><span class=cF0>!=</span><span class=cFB>sys_os_version</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l117"></a> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF6>"Adam/SysRegVer"</span><span class=cF0>,buf);
|
||||
<a name="l118"></a> </span><span class=cF5>RegExe</span><span class=cF0>(</span><span class=cF6>"Adam"</span><span class=cF0>);
|
||||
<a name="l119"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l120"></a>}
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Boot/Once;Registry/Once"</span><span class=cF0>
|
||||
<a name="l123"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>"::/Doc/Once"</span><span class=cF0>
|
||||
<a name="l124"></a>
|
||||
<a name="l125"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>AOnceFlush</span><span class=cF0>()
|
||||
<a name="l126"></a>{</span><span class=cF2>//Flush AOnce() buf.</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF6>"Once/Adam"</span><span class=cF0>,</span><span class=cF6>""</span><span class=cF0>);
|
||||
<a name="l128"></a>}
|
||||
<a name="l129"></a>
|
||||
<a name="l130"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>OnceFlush</span><span class=cF0>()
|
||||
<a name="l131"></a>{</span><span class=cF2>//Flush Once() buf.</span><span class=cF0>
|
||||
<a name="l132"></a> </span><span class=cF5>RegWrite</span><span class=cF0>(</span><span class=cF6>"Once/User"</span><span class=cF0>,</span><span class=cF6>""</span><span class=cF0>);
|
||||
<a name="l133"></a>}
|
||||
<a name="l134"></a>
|
||||
<a name="l135"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>AOnce</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l136"></a>{</span><span class=cF2>//Add Adam code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF2>, executed next boot.</span><span class=cF0>
|
||||
<a name="l137"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l138"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_ADAM</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l139"></a> </span><span class=cF5>AOnceFlush</span><span class=cF0>;
|
||||
<a name="l140"></a> </span><span class=cF5>RegAppend</span><span class=cF0>(</span><span class=cF6>"Once/Adam"</span><span class=cF0>,</span><span class=cF6>"%s\n"</span><span class=cF0>,buf);
|
||||
<a name="l141"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l142"></a>}
|
||||
<a name="l143"></a>
|
||||
<a name="l144"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Once</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l145"></a>{</span><span class=cF2>//Add User code to </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF2>, executed next boot.</span><span class=cF0>
|
||||
<a name="l146"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l147"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_USER</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l148"></a> </span><span class=cF5>OnceFlush</span><span class=cF0>;
|
||||
<a name="l149"></a> </span><span class=cF5>RegAppend</span><span class=cF0>(</span><span class=cF6>"Once/User"</span><span class=cF0>,</span><span class=cF6>"%s\n"</span><span class=cF0>,buf);
|
||||
<a name="l150"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l151"></a>}
|
||||
<a name="l152"></a>
|
||||
<a name="l153"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>AOnceDrv</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l154"></a>{</span><span class=cF2>//Add Adam code to drv </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF2>, executed next boot.</span><span class=cF0>
|
||||
<a name="l155"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l156"></a> </span><span class=cF9>I64</span><span class=cF0> old_drv_let=*</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name;
|
||||
<a name="l157"></a> </span><span class=cF1>if</span><span class=cF0> (drv_let)
|
||||
<a name="l158"></a> *</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name=drv_let;
|
||||
<a name="l159"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_ADAM</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l160"></a> </span><span class=cF5>AOnceFlush</span><span class=cF0>;
|
||||
<a name="l161"></a> </span><span class=cF5>RegAppend</span><span class=cF0>(</span><span class=cF6>"Once/Adam"</span><span class=cF0>,</span><span class=cF6>"%s\n"</span><span class=cF0>,buf);
|
||||
<a name="l162"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l163"></a> *</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name=old_drv_let;
|
||||
<a name="l164"></a>}
|
||||
<a name="l165"></a>
|
||||
<a name="l166"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>OnceDrv</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> drv_let=0,</span><span class=cF1>U8</span><span class=cF0> *fmt,...)
|
||||
<a name="l167"></a>{</span><span class=cF2>//Add User code to drv </span><a href="/Wb/Home/Registry.HC.HTML#l1"><span class=cF4>~/Registry.HC</span></a><span class=cF2>, executed next boot.</span><span class=cF0>
|
||||
<a name="l168"></a> </span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF5>StrPrintJoin</span><span class=cF0>(</span><span class=cF3>NULL</span><span class=cF0>,fmt,argc,argv);
|
||||
<a name="l169"></a> </span><span class=cF9>I64</span><span class=cF0> old_drv_let=*</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name;
|
||||
<a name="l170"></a> </span><span class=cF1>if</span><span class=cF0> (drv_let)
|
||||
<a name="l171"></a> *</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name=drv_let;
|
||||
<a name="l172"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_USER</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l173"></a> </span><span class=cF5>OnceFlush</span><span class=cF0>;
|
||||
<a name="l174"></a> </span><span class=cF5>RegAppend</span><span class=cF0>(</span><span class=cF6>"Once/User"</span><span class=cF0>,</span><span class=cF6>"%s\n"</span><span class=cF0>,buf);
|
||||
<a name="l175"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l176"></a> *</span><span class=cFB>sys_registry_doc</span><span class=cF0>->filename.name=old_drv_let;
|
||||
<a name="l177"></a>}
|
||||
<a name="l178"></a>
|
||||
<a name="l179"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>OnceExe</span><span class=cF0>()
|
||||
<a name="l180"></a>{</span><span class=cF2>//Execute Once code. Call goes in </span><a href="/Wb/Home/Once..HTML#l1"><span class=cF4>~/Once.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l181"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l182"></a>
|
||||
<a name="l183"></a> </span><span class=cF5>RegDft</span><span class=cF0>(</span><span class=cF6>"Once/Adam"</span><span class=cF0>,</span><span class=cF6>""</span><span class=cF0>);
|
||||
<a name="l184"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>RegCnt</span><span class=cF7>(</span><span class=cF6>"Once/Adam"</span><span class=cF7>)</span><span class=cF0>>2) {
|
||||
<a name="l185"></a> </span><span class=cF5>Adam</span><span class=cF0>(</span><span class=cF6>"RegExe(\"Once/Adam\");"</span><span class=cF0>);
|
||||
<a name="l186"></a> </span><span class=cF5>AOnceFlush</span><span class=cF0>;
|
||||
<a name="l187"></a> }
|
||||
<a name="l188"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_ADAM</span><span class=cF0>);
|
||||
<a name="l189"></a>
|
||||
<a name="l190"></a> </span><span class=cF5>RegDft</span><span class=cF0>(</span><span class=cF6>"Once/User"</span><span class=cF0>,</span><span class=cF6>""</span><span class=cF0>);
|
||||
<a name="l191"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>RegCnt</span><span class=cF7>(</span><span class=cF6>"Once/User"</span><span class=cF7>)</span><span class=cF0>>2) {
|
||||
<a name="l192"></a> </span><span class=cF5>RegExe</span><span class=cF0>(</span><span class=cF6>"Once/User"</span><span class=cF0>);
|
||||
<a name="l193"></a> </span><span class=cF5>OnceFlush</span><span class=cF0>;
|
||||
<a name="l194"></a> }
|
||||
<a name="l195"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_USER</span><span class=cF0>);
|
||||
<a name="l196"></a>
|
||||
<a name="l197"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l198"></a> </span><span class=cF5>AOnceFlush</span><span class=cF0>;
|
||||
<a name="l199"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_ADAM</span><span class=cF0>);
|
||||
<a name="l200"></a> </span><span class=cF5>OnceFlush</span><span class=cF0>;
|
||||
<a name="l201"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_ONCE_USER</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l203"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
440
public/Wb/Adam/ASnd.HC.HTML
Executable file
440
public/Wb/Adam/ASnd.HC.HTML
Executable file
@ -0,0 +1,440 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>SndTaskEndCB</span><span class=cF0>()
|
||||
<a name="l3"></a>{</span><span class=cF2>//Will turn-off snd when a task gets killed.</span><span class=cF0>
|
||||
<a name="l4"></a> </span><span class=cF5>Snd</span><span class=cF0>;
|
||||
<a name="l5"></a> </span><span class=cF5>Exit</span><span class=cF0>;
|
||||
<a name="l6"></a>}
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd/Math;Math"</span><span class=cF0>
|
||||
<a name="l9"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Saw</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l10"></a>{</span><span class=cF2>//Sawtooth. 0.0 - 1.0 think "(Sin+1)/2"</span><span class=cF0>
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l12"></a> </span><span class=cF1>if</span><span class=cF0> (t>=0.0)
|
||||
<a name="l13"></a> </span><span class=cF1>return</span><span class=cF0> t%period/period;
|
||||
<a name="l14"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l15"></a> </span><span class=cF1>return</span><span class=cF0> 1.0+t%period/period;
|
||||
<a name="l16"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l17"></a> </span><span class=cF1>return</span><span class=cF0> 0.0;
|
||||
<a name="l18"></a>}
|
||||
<a name="l19"></a>
|
||||
<a name="l20"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>FullSaw</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l21"></a>{</span><span class=cF2>//Plus&Minus Sawtooth. 1.0 - -1.0 think "Sin"</span><span class=cF0>
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l23"></a> </span><span class=cF1>if</span><span class=cF0> (t>=0.0)
|
||||
<a name="l24"></a> </span><span class=cF1>return</span><span class=cF0> 2.0*(t%period/period)-1.0;
|
||||
<a name="l25"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l26"></a> </span><span class=cF1>return</span><span class=cF0> 2.0*(t%period/period)+1.0;
|
||||
<a name="l27"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l28"></a> </span><span class=cF1>return</span><span class=cF0> 0.0;
|
||||
<a name="l29"></a>}
|
||||
<a name="l30"></a>
|
||||
<a name="l31"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Caw</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l32"></a>{</span><span class=cF2>//Cawtooth. 1.0 - 0.0 think "(Cos+1)/2"</span><span class=cF0>
|
||||
<a name="l33"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l34"></a> </span><span class=cF1>if</span><span class=cF0> (t>=0.0)
|
||||
<a name="l35"></a> </span><span class=cF1>return</span><span class=cF0> 1.0-t%period/period;
|
||||
<a name="l36"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l37"></a> </span><span class=cF1>return</span><span class=cF0> -(t%period)/period;
|
||||
<a name="l38"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>return</span><span class=cF0> 1.0;
|
||||
<a name="l40"></a>}
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>FullCaw</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l43"></a>{</span><span class=cF2>//Plus&Minus Cawtooth. 1.0 - -1.0 think "Cos"</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> </span><span class=cF1>if</span><span class=cF0> (t>=0.0)
|
||||
<a name="l46"></a> </span><span class=cF1>return</span><span class=cF0> -2.0*(t%period/period)+1.0;
|
||||
<a name="l47"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF1>return</span><span class=cF0> -2.0*(t%period/period)-1.0;
|
||||
<a name="l49"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l50"></a> </span><span class=cF1>return</span><span class=cF0> 1.0;
|
||||
<a name="l51"></a>}
|
||||
<a name="l52"></a>
|
||||
<a name="l53"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Tri</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l54"></a>{</span><span class=cF2>//Triangle waveform. 0.0 - 1.0 - 0.0</span><span class=cF0>
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l56"></a> t=2.0*(</span><span class=cF5>Abs</span><span class=cF7>(</span><span class=cF0>t</span><span class=cF7>)</span><span class=cF0>%period)/period;
|
||||
<a name="l57"></a> </span><span class=cF1>if</span><span class=cF0> (t<=1.0)
|
||||
<a name="l58"></a> </span><span class=cF1>return</span><span class=cF0> t;
|
||||
<a name="l59"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l60"></a> </span><span class=cF1>return</span><span class=cF0> 2.0-t;
|
||||
<a name="l61"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l62"></a> </span><span class=cF1>return</span><span class=cF0> 0.0;
|
||||
<a name="l63"></a>}
|
||||
<a name="l64"></a>
|
||||
<a name="l65"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>FullTri</span><span class=cF0>(</span><span class=cF1>F64</span><span class=cF0> t,</span><span class=cF1>F64</span><span class=cF0> period)
|
||||
<a name="l66"></a>{</span><span class=cF2>//Plus&Minus Triangle waveform. 0.0 - 1.0 - 0.0 - -1.0 -0.0</span><span class=cF0>
|
||||
<a name="l67"></a> </span><span class=cF1>if</span><span class=cF0> (period) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l68"></a> t=4.0*(t%period)/period;
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (t<=-1.0) {
|
||||
<a name="l70"></a> </span><span class=cF1>if</span><span class=cF0> (t<=-3.0)
|
||||
<a name="l71"></a> </span><span class=cF1>return</span><span class=cF0> t+4.0;
|
||||
<a name="l72"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l73"></a> </span><span class=cF1>return</span><span class=cF0> -2.0-t;
|
||||
<a name="l74"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l75"></a> </span><span class=cF1>if</span><span class=cF0> (t<=1.0)
|
||||
<a name="l76"></a> </span><span class=cF1>return</span><span class=cF0> t;
|
||||
<a name="l77"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (t<=3.0)
|
||||
<a name="l78"></a> </span><span class=cF1>return</span><span class=cF0> 2.0-t;
|
||||
<a name="l79"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l80"></a> </span><span class=cF1>return</span><span class=cF0> t-4.0;
|
||||
<a name="l81"></a> }
|
||||
<a name="l82"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l83"></a> </span><span class=cF1>return</span><span class=cF0> 0.0;
|
||||
<a name="l84"></a>}
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd/Music"</span><span class=cF0>
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CMusicGlbls</span><span class=cF0>
|
||||
<a name="l89"></a>{
|
||||
<a name="l90"></a> </span><span class=cF1>U8</span><span class=cF0> *cur_song;
|
||||
<a name="l91"></a> </span><span class=cF9>CTask</span><span class=cF0> *cur_song_task;
|
||||
<a name="l92"></a> </span><span class=cF9>I64</span><span class=cF0> octave;
|
||||
<a name="l93"></a> </span><span class=cF1>F64</span><span class=cF0> note_len;
|
||||
<a name="l94"></a> </span><span class=cF1>U8</span><span class=cF0> note_map[7];
|
||||
<a name="l95"></a> </span><span class=cF1>Bool</span><span class=cF0> mute;
|
||||
<a name="l96"></a> </span><span class=cF9>I64</span><span class=cF0> meter_top,meter_bottom;
|
||||
<a name="l97"></a> </span><span class=cF1>F64</span><span class=cF0> tempo,stacatto_factor;
|
||||
<a name="l98"></a>
|
||||
<a name="l99"></a> </span><span class=cF2>//If you wish to sync with a</span><span class=cF0>
|
||||
<a name="l100"></a> </span><span class=cF2>//note in a Play() string. 0 is the start</span><span class=cF0>
|
||||
<a name="l101"></a> </span><span class=cF9>I64</span><span class=cF0> play_note_num;
|
||||
<a name="l102"></a>
|
||||
<a name="l103"></a> </span><span class=cF1>F64</span><span class=cF0> tM_correction,last_Beat,last_tM;
|
||||
<a name="l104"></a>} </span><span class=cFB>music</span><span class=cF0>={</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF3>NULL</span><span class=cF0>,4,1.0,</span><span class=cF7>{</span><span class=cF0>0,2,3,5,7,8,10</span><span class=cF7>}</span><span class=cF0>,</span><span class=cF3>FALSE</span><span class=cF0>,4,4,2.5,0.9,0,0,0,0};
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd/Music;Time/Seconds"</span><span class=cF0>
|
||||
<a name="l107"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>tM</span><span class=cF0>()
|
||||
<a name="l108"></a>{</span><span class=cF2>//Time in seconds synced to music subsystem.</span><span class=cF0>
|
||||
<a name="l109"></a> </span><span class=cF1>return</span><span class=cF0> (</span><span class=cFB>cnts</span><span class=cF0>.jiffies+</span><span class=cFB>music</span><span class=cF0>.tM_correction)/</span><span class=cF3>JIFFY_FREQ</span><span class=cF0>;
|
||||
<a name="l110"></a>}
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>F64</span><span class=cF0> </span><span class=cF5>Beat</span><span class=cF0>()
|
||||
<a name="l113"></a>{</span><span class=cF2>//Time in music beats.</span><span class=cF0>
|
||||
<a name="l114"></a> </span><span class=cF1>F64</span><span class=cF0> res,cur_tM;
|
||||
<a name="l115"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l116"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l117"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>mp_cnt</span><span class=cF0>>1)
|
||||
<a name="l118"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_TMBEAT</span><span class=cF0>],0</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l119"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l120"></a> cur_tM=</span><span class=cF5>tM</span><span class=cF0>;
|
||||
<a name="l121"></a> res=</span><span class=cFB>music</span><span class=cF0>.last_Beat;
|
||||
<a name="l122"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>music</span><span class=cF0>.tempo)
|
||||
<a name="l123"></a> res+=(cur_tM-</span><span class=cFB>music</span><span class=cF0>.last_tM)*</span><span class=cFB>music</span><span class=cF0>.tempo;
|
||||
<a name="l124"></a> </span><span class=cFB>music</span><span class=cF0>.last_tM=cur_tM;
|
||||
<a name="l125"></a> </span><span class=cFB>music</span><span class=cF0>.last_Beat=res;
|
||||
<a name="l126"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_TMBEAT</span><span class=cF0>],0);
|
||||
<a name="l127"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l128"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l129"></a>}
|
||||
<a name="l130"></a>
|
||||
<a name="l131"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd/Music"</span><span class=cF0>
|
||||
<a name="l132"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>MusicSetOctave</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l133"></a>{
|
||||
<a name="l134"></a> </span><span class=cF9>I64</span><span class=cF0> ch;
|
||||
<a name="l135"></a> ch=*st++;
|
||||
<a name="l136"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0><=ch<=</span><span class=cF6>'9'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l137"></a> </span><span class=cFB>music</span><span class=cF0>.octave=ch-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l138"></a> ch=*st++;
|
||||
<a name="l139"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l140"></a> </span><span class=cF1>return</span><span class=cF0> --st;
|
||||
<a name="l141"></a>}
|
||||
<a name="l142"></a>
|
||||
<a name="l143"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>MusicSetMeter</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l144"></a>{
|
||||
<a name="l145"></a> </span><span class=cF9>I64</span><span class=cF0> ch;
|
||||
<a name="l146"></a> ch=*st++;
|
||||
<a name="l147"></a> </span><span class=cF1>while</span><span class=cF0> (ch==</span><span class=cF6>'M'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l148"></a> ch=*st++;
|
||||
<a name="l149"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0><=ch<=</span><span class=cF6>'9'</span><span class=cF0>) {
|
||||
<a name="l150"></a> </span><span class=cFB>music</span><span class=cF0>.meter_top=ch-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l151"></a> ch=*st++;
|
||||
<a name="l152"></a> }
|
||||
<a name="l153"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>'/'</span><span class=cF0>)
|
||||
<a name="l154"></a> ch=*st++;
|
||||
<a name="l155"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0><=ch<=</span><span class=cF6>'9'</span><span class=cF0>) {
|
||||
<a name="l156"></a> </span><span class=cFB>music</span><span class=cF0>.meter_bottom=ch-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l157"></a> ch=*st++;
|
||||
<a name="l158"></a> }
|
||||
<a name="l159"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l160"></a> </span><span class=cF1>return</span><span class=cF0> --st;
|
||||
<a name="l161"></a>}
|
||||
<a name="l162"></a>
|
||||
<a name="l163"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>MusicSetNoteLen</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l164"></a>{
|
||||
<a name="l165"></a> </span><span class=cF1>Bool</span><span class=cF0> cont=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l166"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l167"></a> </span><span class=cF1>switch</span><span class=cF0> (*st++) {
|
||||
<a name="l168"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'w'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=4.0; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l169"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'h'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=2.0; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l170"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'q'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=1.0; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l171"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'e'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=0.5; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l172"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'s'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=0.25; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l173"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'t'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=2.0*</span><span class=cFB>music</span><span class=cF0>.note_len/3.0; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l174"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'.'</span><span class=cF0>: </span><span class=cFB>music</span><span class=cF0>.note_len=1.5*</span><span class=cFB>music</span><span class=cF0>.note_len; </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l175"></a> </span><span class=cF1>default</span><span class=cF0>:
|
||||
<a name="l176"></a> st--;
|
||||
<a name="l177"></a> cont=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l178"></a> }
|
||||
<a name="l179"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (cont);
|
||||
<a name="l180"></a> </span><span class=cF1>return</span><span class=cF0> st;
|
||||
<a name="l181"></a>}
|
||||
<a name="l182"></a>
|
||||
<a name="l183"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>I8</span><span class=cF0> </span><span class=cF5>Note2Ona</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> note,</span><span class=cF9>I64</span><span class=cF0> octave=4)
|
||||
<a name="l184"></a>{</span><span class=cF2>//Note to ona. Mid C is ona=51, note=3 and octave=4.</span><span class=cF0>
|
||||
<a name="l185"></a> </span><span class=cF1>if</span><span class=cF0> (note<3)
|
||||
<a name="l186"></a> </span><span class=cF1>return</span><span class=cF0> (octave+1)*12+note;
|
||||
<a name="l187"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l188"></a> </span><span class=cF1>return</span><span class=cF0> octave*12+note;
|
||||
<a name="l189"></a>}
|
||||
<a name="l190"></a>
|
||||
<a name="l191"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>I8</span><span class=cF0> </span><span class=cF5>Ona2Note</span><span class=cF0>(</span><span class=cF1>I8</span><span class=cF0> ona)
|
||||
<a name="l192"></a>{</span><span class=cF2>//Ona to note in octave. Mid C is ona=51, note=3 and octave=4.</span><span class=cF0>
|
||||
<a name="l193"></a> </span><span class=cF1>return</span><span class=cF0> ona%12;
|
||||
<a name="l194"></a>}
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>I8</span><span class=cF0> </span><span class=cF5>Ona2Octave</span><span class=cF0>(</span><span class=cF1>I8</span><span class=cF0> ona)
|
||||
<a name="l197"></a>{</span><span class=cF2>//Ona to octave. Mid C is ona=51, note=3 and octave=4.</span><span class=cF0>
|
||||
<a name="l198"></a> </span><span class=cF9>I64</span><span class=cF0> note=ona%12,octave=ona/12;
|
||||
<a name="l199"></a> </span><span class=cF1>if</span><span class=cF0> (note<3)
|
||||
<a name="l200"></a> </span><span class=cF1>return</span><span class=cF0> octave-1;
|
||||
<a name="l201"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l202"></a> </span><span class=cF1>return</span><span class=cF0> octave;
|
||||
<a name="l203"></a>}
|
||||
<a name="l204"></a>
|
||||
<a name="l205"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>Play</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF1>U8</span><span class=cF0> *words=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l206"></a>{</span><span class=cF2>/* Notes are entered with a capital letter.</span><span class=cF0>
|
||||
<a name="l207"></a>
|
||||
<a name="l208"></a></span><span class=cF2>Octaves are entered with a digit and</span><span class=cF0>
|
||||
<a name="l209"></a></span><span class=cF2>stay set until changed. Mid C is octave 4.</span><span class=cF0>
|
||||
<a name="l210"></a>
|
||||
<a name="l211"></a></span><span class=cF2>Durations are entered with</span><span class=cF0>
|
||||
<a name="l212"></a></span><span class=cF2>'w' whole note</span><span class=cF0>
|
||||
<a name="l213"></a></span><span class=cF2>'h' half note</span><span class=cF0>
|
||||
<a name="l214"></a></span><span class=cF2>'q' quarter note</span><span class=cF0>
|
||||
<a name="l215"></a></span><span class=cF2>'e' eighth note</span><span class=cF0>
|
||||
<a name="l216"></a></span><span class=cF2>'t' sets to 2/3rds the current duration</span><span class=cF0>
|
||||
<a name="l217"></a></span><span class=cF2>'.' sets to 1.5 times the current duration</span><span class=cF0>
|
||||
<a name="l218"></a></span><span class=cF2>durations stay set until changed.</span><span class=cF0>
|
||||
<a name="l219"></a>
|
||||
<a name="l220"></a></span><span class=cF2>'(' tie, placed before the note to be extended</span><span class=cF0>
|
||||
<a name="l221"></a></span><span class=cF4>
|
||||
<a name="l222"></a></span><a href="/Wb/Adam/ASnd.HC.HTML#l88"><span class=cF4>music.meter_top</span></a><span class=cF2>,</span><a href="/Wb/Adam/ASnd.HC.HTML#l88"><span class=cF4>music.meter_bottom</span></a><span class=cF2> is set with</span><span class=cF0>
|
||||
<a name="l223"></a></span><span class=cF2>"M3/4"</span><span class=cF0>
|
||||
<a name="l224"></a></span><span class=cF2>"M4/4"</span><span class=cF0>
|
||||
<a name="l225"></a></span><span class=cF2>etc.</span><span class=cF0>
|
||||
<a name="l226"></a>
|
||||
<a name="l227"></a></span><span class=cF2>Sharp and flat are done with '#' or 'b'.</span><span class=cF0>
|
||||
<a name="l228"></a>
|
||||
<a name="l229"></a></span><span class=cF2>The var music.stacatto_factor can</span><span class=cF0>
|
||||
<a name="l230"></a></span><span class=cF2>be set to a range from 0.0 to 1.0.</span><span class=cF0>
|
||||
<a name="l231"></a>
|
||||
<a name="l232"></a></span><span class=cF2>The var music.tempo is quarter-notes</span><span class=cF0>
|
||||
<a name="l233"></a></span><span class=cF2>per second. It defaults to</span><span class=cF0>
|
||||
<a name="l234"></a></span><span class=cF2>2.5 and gets faster when bigger.</span><span class=cF0>
|
||||
<a name="l235"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l236"></a> </span><span class=cF1>U8</span><span class=cF0> *word,*last_st;
|
||||
<a name="l237"></a> </span><span class=cF9>I64</span><span class=cF0> note,octave,i=0,ona,timeout_val,timeout_val2;
|
||||
<a name="l238"></a> </span><span class=cF1>Bool</span><span class=cF0> tie;
|
||||
<a name="l239"></a> </span><span class=cF1>F64</span><span class=cF0> d,on_jiffies,off_jiffies;
|
||||
<a name="l240"></a> </span><span class=cFB>music</span><span class=cF0>.play_note_num=0;
|
||||
<a name="l241"></a> </span><span class=cF1>while</span><span class=cF0> (*st) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l242"></a> timeout_val=</span><span class=cFB>cnts</span><span class=cF0>.jiffies;
|
||||
<a name="l243"></a> tie=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l244"></a>
|
||||
<a name="l245"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l246"></a> last_st=st;
|
||||
<a name="l247"></a> </span><span class=cF1>if</span><span class=cF0> (*st==</span><span class=cF6>'('</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l248"></a> tie=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l249"></a> st++;
|
||||
<a name="l250"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l251"></a> st=</span><span class=cF5>MusicSetMeter</span><span class=cF0>(st);
|
||||
<a name="l252"></a> st=</span><span class=cF5>MusicSetOctave</span><span class=cF0>(st);
|
||||
<a name="l253"></a> st=</span><span class=cF5>MusicSetNoteLen</span><span class=cF0>(st);
|
||||
<a name="l254"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l255"></a> } </span><span class=cF1>while</span><span class=cF0> (st!=last_st);
|
||||
<a name="l256"></a>
|
||||
<a name="l257"></a> </span><span class=cF1>if</span><span class=cF0> (!*st) </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l258"></a> note=*st++-</span><span class=cF6>'A'</span><span class=cF0>;
|
||||
<a name="l259"></a> </span><span class=cF1>if</span><span class=cF0> (note<7) {
|
||||
<a name="l260"></a> note=</span><span class=cFB>music</span><span class=cF0>.note_map[note];
|
||||
<a name="l261"></a> octave=</span><span class=cFB>music</span><span class=cF0>.octave;
|
||||
<a name="l262"></a> </span><span class=cF1>if</span><span class=cF0> (*st==</span><span class=cF6>'b'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l263"></a> note--;
|
||||
<a name="l264"></a> </span><span class=cF1>if</span><span class=cF0> (note==2)
|
||||
<a name="l265"></a> octave--;
|
||||
<a name="l266"></a> st++;
|
||||
<a name="l267"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (*st==</span><span class=cF6>'#'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l268"></a> note++;
|
||||
<a name="l269"></a> </span><span class=cF1>if</span><span class=cF0> (note==3)
|
||||
<a name="l270"></a> octave++;
|
||||
<a name="l271"></a> st++;
|
||||
<a name="l272"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l273"></a> ona=</span><span class=cF5>Note2Ona</span><span class=cF0>(note,octave);
|
||||
<a name="l274"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l275"></a> ona=0;
|
||||
<a name="l276"></a> </span><span class=cF1>if</span><span class=cF0> (words && </span><span class=cF7>(</span><span class=cF0>word=</span><span class=cF5>LstSub</span><span class=cF0>(i++,words)</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>word,</span><span class=cF6>" "</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l277"></a> </span><span class=cF6>"%s"</span><span class=cF0>,word;
|
||||
<a name="l278"></a>
|
||||
<a name="l279"></a> d=</span><span class=cF3>JIFFY_FREQ</span><span class=cF0>*</span><span class=cFB>music</span><span class=cF0>.note_len/</span><span class=cFB>music</span><span class=cF0>.tempo;
|
||||
<a name="l280"></a> on_jiffies =d*</span><span class=cFB>music</span><span class=cF0>.stacatto_factor;
|
||||
<a name="l281"></a> off_jiffies =d*(1.0-</span><span class=cFB>music</span><span class=cF0>.stacatto_factor);
|
||||
<a name="l282"></a>
|
||||
<a name="l283"></a> timeout_val+=on_jiffies;
|
||||
<a name="l284"></a> timeout_val2=timeout_val+off_jiffies;
|
||||
<a name="l285"></a>
|
||||
<a name="l286"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cFB>music</span><span class=cF0>.mute)
|
||||
<a name="l287"></a> </span><span class=cF5>Snd</span><span class=cF0>(ona);
|
||||
<a name="l288"></a> </span><span class=cF5>SleepUntil</span><span class=cF0>(timeout_val);
|
||||
<a name="l289"></a> </span><span class=cFB>music</span><span class=cF0>.tM_correction+=on_jiffies-</span><span class=cF5>ToI64</span><span class=cF0>(on_jiffies);
|
||||
<a name="l290"></a>
|
||||
<a name="l291"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cFB>music</span><span class=cF0>.mute && !tie)
|
||||
<a name="l292"></a> </span><span class=cF5>Snd</span><span class=cF0>;
|
||||
<a name="l293"></a> </span><span class=cF5>SleepUntil</span><span class=cF0>(timeout_val2);
|
||||
<a name="l294"></a> </span><span class=cFB>music</span><span class=cF0>.tM_correction+=off_jiffies-</span><span class=cF5>ToI64</span><span class=cF0>(off_jiffies);
|
||||
<a name="l295"></a>
|
||||
<a name="l296"></a> </span><span class=cFB>music</span><span class=cF0>.play_note_num++;
|
||||
<a name="l297"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l298"></a>}
|
||||
<a name="l299"></a>
|
||||
<a name="l300"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MusicSettingsRst</span><span class=cF0>()
|
||||
<a name="l301"></a>{
|
||||
<a name="l302"></a> </span><span class=cFB>music</span><span class=cF0>.play_note_num=0;
|
||||
<a name="l303"></a> </span><span class=cFB>music</span><span class=cF0>.stacatto_factor=0.9;
|
||||
<a name="l304"></a> </span><span class=cFB>music</span><span class=cF0>.tempo=2.5;
|
||||
<a name="l305"></a> </span><span class=cFB>music</span><span class=cF0>.octave=4;
|
||||
<a name="l306"></a> </span><span class=cFB>music</span><span class=cF0>.note_len=1.0;
|
||||
<a name="l307"></a> </span><span class=cFB>music</span><span class=cF0>.meter_top=4;
|
||||
<a name="l308"></a> </span><span class=cFB>music</span><span class=cF0>.meter_bottom=4;
|
||||
<a name="l309"></a> </span><span class=cF5>SndRst</span><span class=cF0>;
|
||||
<a name="l310"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l311"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l312"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>mp_cnt</span><span class=cF0>>1)
|
||||
<a name="l313"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_TMBEAT</span><span class=cF0>],0</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l314"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l315"></a> </span><span class=cFB>music</span><span class=cF0>.last_tM=</span><span class=cF5>tM</span><span class=cF0>;
|
||||
<a name="l316"></a> </span><span class=cFB>music</span><span class=cF0>.last_Beat=0.0;
|
||||
<a name="l317"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_TMBEAT</span><span class=cF0>],0);
|
||||
<a name="l318"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l319"></a>}
|
||||
<a name="l320"></a>
|
||||
<a name="l321"></a></span><span class=cF5>MusicSettingsRst</span><span class=cF0>;
|
||||
<a name="l322"></a>
|
||||
<a name="l323"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>CurSongTask</span><span class=cF0>()
|
||||
<a name="l324"></a>{
|
||||
<a name="l325"></a> </span><span class=cF5>Fs</span><span class=cF0>->task_end_cb=&</span><span class=cF5>SndTaskEndCB</span><span class=cF0>;
|
||||
<a name="l326"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
|
||||
<a name="l327"></a> </span><span class=cF5>Play</span><span class=cF0>(</span><span class=cFB>music</span><span class=cF0>.cur_song);
|
||||
<a name="l328"></a>}
|
||||
<a name="l329"></a>
|
||||
<a name="l330"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Snd"</span><span class=cF0>
|
||||
<a name="l331"></a>
|
||||
<a name="l332"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SE_NOISE</span><span class=cF0> 0
|
||||
<a name="l333"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>SE_SWEEP</span><span class=cF0> 1
|
||||
<a name="l334"></a>
|
||||
<a name="l335"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CSoundEffectFrame</span><span class=cF0>
|
||||
<a name="l336"></a>{
|
||||
<a name="l337"></a> </span><span class=cF9>I32</span><span class=cF0> type;
|
||||
<a name="l338"></a> </span><span class=cF1>I8</span><span class=cF0> ona1,ona2;
|
||||
<a name="l339"></a> </span><span class=cF1>F64</span><span class=cF0> duration;
|
||||
<a name="l340"></a>};
|
||||
<a name="l341"></a>
|
||||
<a name="l342"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>SoundEffectEndTaskCB</span><span class=cF0>()
|
||||
<a name="l343"></a>{
|
||||
<a name="l344"></a> </span><span class=cF5>Free</span><span class=cF0>(</span><span class=cF5>FramePtr</span><span class=cF7>(</span><span class=cF6>"CSoundEffectFrame"</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l345"></a> </span><span class=cFB>music</span><span class=cF0>.mute--;
|
||||
<a name="l346"></a> </span><span class=cF5>SndTaskEndCB</span><span class=cF0>;
|
||||
<a name="l347"></a>}
|
||||
<a name="l348"></a>
|
||||
<a name="l349"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>SoundEffectTask</span><span class=cF0>(</span><span class=cF9>CSoundEffectFrame</span><span class=cF0> *ns)
|
||||
<a name="l350"></a>{
|
||||
<a name="l351"></a> </span><span class=cF9>I64</span><span class=cF0> i,ona;
|
||||
<a name="l352"></a> </span><span class=cF1>F64</span><span class=cF0> t0=</span><span class=cF5>tS</span><span class=cF0>,t,timeout=t0+ns->duration;
|
||||
<a name="l353"></a> </span><span class=cF5>FramePtrAdd</span><span class=cF0>(</span><span class=cF6>"CSoundEffectFrame"</span><span class=cF0>,ns);
|
||||
<a name="l354"></a> </span><span class=cF5>Fs</span><span class=cF0>->task_end_cb=&</span><span class=cF5>SoundEffectEndTaskCB</span><span class=cF0>;
|
||||
<a name="l355"></a> </span><span class=cF1>switch</span><span class=cF0> (ns->type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l356"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>SE_NOISE</span><span class=cF0>:
|
||||
<a name="l357"></a> i=</span><span class=cF5>MaxI64</span><span class=cF0>(ns->ona2-ns->ona1,1);
|
||||
<a name="l358"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>tS</span><span class=cF0><timeout) {
|
||||
<a name="l359"></a> ona=</span><span class=cF5>RandU16</span><span class=cF0>%i+ns->ona1;
|
||||
<a name="l360"></a> </span><span class=cF5>Snd</span><span class=cF0>(ona);
|
||||
<a name="l361"></a> t=</span><span class=cF5>Clamp</span><span class=cF0>(3000.0/</span><span class=cF5>Ona2Freq</span><span class=cF7>(</span><span class=cF0>ona</span><span class=cF7>)</span><span class=cF0>,1.0,50.0);
|
||||
<a name="l362"></a> </span><span class=cF1>if</span><span class=cF0> (t+</span><span class=cF5>tS</span><span class=cF0>>timeout)
|
||||
<a name="l363"></a> t=timeout-</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l364"></a> </span><span class=cF5>Sleep</span><span class=cF0>(t);
|
||||
<a name="l365"></a> }
|
||||
<a name="l366"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l367"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>SE_SWEEP</span><span class=cF0>:
|
||||
<a name="l368"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>tS</span><span class=cF0><timeout) {
|
||||
<a name="l369"></a> t=(</span><span class=cF5>tS</span><span class=cF0>-t0)/ns->duration;
|
||||
<a name="l370"></a> ona=(1.0-t)*ns->ona1+t*ns->ona2;
|
||||
<a name="l371"></a> </span><span class=cF5>Snd</span><span class=cF0>(ona);
|
||||
<a name="l372"></a> t=</span><span class=cF5>Clamp</span><span class=cF0>(3000.0/</span><span class=cF5>Ona2Freq</span><span class=cF7>(</span><span class=cF0>ona</span><span class=cF7>)</span><span class=cF0>,1.0,50.0);
|
||||
<a name="l373"></a> </span><span class=cF1>if</span><span class=cF0> (t+</span><span class=cF5>tS</span><span class=cF0>>timeout)
|
||||
<a name="l374"></a> t=timeout-</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l375"></a> </span><span class=cF5>Sleep</span><span class=cF0>(t);
|
||||
<a name="l376"></a> }
|
||||
<a name="l377"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l378"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l379"></a>}
|
||||
<a name="l380"></a>
|
||||
<a name="l381"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0> *</span><span class=cF5>Noise</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> mS,</span><span class=cF1>F64</span><span class=cF0> min_ona,</span><span class=cF1>F64</span><span class=cF0> max_ona)
|
||||
<a name="l382"></a>{</span><span class=cF2>//Make white noise for given number of mS.</span><span class=cF0>
|
||||
<a name="l383"></a> </span><span class=cF9>CSoundEffectFrame</span><span class=cF0> *ns;
|
||||
<a name="l384"></a> </span><span class=cF1>if</span><span class=cF0> (mS>0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l385"></a> ns=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CSoundEffectFrame</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l386"></a> ns->type=</span><span class=cF3>SE_NOISE</span><span class=cF0>;
|
||||
<a name="l387"></a> ns->duration=mS/1000.0;
|
||||
<a name="l388"></a> ns->ona1=min_ona;
|
||||
<a name="l389"></a> ns->ona2=max_ona;
|
||||
<a name="l390"></a> </span><span class=cFB>music</span><span class=cF0>.mute++;
|
||||
<a name="l391"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>SoundEffectTask</span><span class=cF0>,ns,</span><span class=cF6>"Noise"</span><span class=cF0>,,</span><span class=cF5>Fs</span><span class=cF0>);
|
||||
<a name="l392"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l393"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l394"></a>}
|
||||
<a name="l395"></a>
|
||||
<a name="l396"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CTask</span><span class=cF0> *</span><span class=cF5>Sweep</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> mS,</span><span class=cF1>F64</span><span class=cF0> ona1,</span><span class=cF1>F64</span><span class=cF0> ona2)
|
||||
<a name="l397"></a>{</span><span class=cF2>//Sweep through freq range in given number of mS.</span><span class=cF0>
|
||||
<a name="l398"></a> </span><span class=cF9>CSoundEffectFrame</span><span class=cF0> *ns;
|
||||
<a name="l399"></a> </span><span class=cF1>if</span><span class=cF0> (mS>0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l400"></a> ns=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CSoundEffectFrame</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l401"></a> ns->type=</span><span class=cF3>SE_SWEEP</span><span class=cF0>;
|
||||
<a name="l402"></a> ns->duration=mS/1000.0;
|
||||
<a name="l403"></a> ns->ona1=ona1;
|
||||
<a name="l404"></a> ns->ona2=ona2;
|
||||
<a name="l405"></a> </span><span class=cFB>music</span><span class=cF0>.mute++;
|
||||
<a name="l406"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>SoundEffectTask</span><span class=cF0>,ns,</span><span class=cF6>"Noise"</span><span class=cF0>,,</span><span class=cF5>Fs</span><span class=cF0>);
|
||||
<a name="l407"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l408"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l409"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
292
public/Wb/Adam/AutoComplete/ACDictGen.HC.HTML
Executable file
292
public/Wb/Adam/AutoComplete/ACDictGen.HC.HTML
Executable file
@ -0,0 +1,292 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>/*</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF2>This file is a stand-alone program</span><span class=cF0>
|
||||
<a name="l3"></a></span><span class=cF2>which will regenerate processed dictionary</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>files from a raw Project Gutenberg</span><span class=cF0>
|
||||
<a name="l5"></a></span><span class=cF2>dictionary file.</span><span class=cF0>
|
||||
<a name="l6"></a>
|
||||
<a name="l7"></a></span><span class=cF2>See </span><a href="/Wb/Doc/Credits.DD.HTML#l1"><span class=cF4>::/Doc/Credits.DD</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l8"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF1>U0</span><span class=cF0> ACDPreprocess(</span><span class=cF1>U8</span><span class=cF0> *in_name,</span><span class=cF1>U8</span><span class=cF0> *out_name)
|
||||
<a name="l11"></a>{</span><span class=cF2>/*</span><span class=cF0>
|
||||
<a name="l12"></a></span><span class=cF2><cr><nl>--> <nl></span><span class=cF0>
|
||||
<a name="l13"></a></span><span class=cF2>$</span><span class=cF0> </span><span class=cF2>--> $$</span><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cF2>\'89</span><span class=cF0> </span><span class=cF2>--> .</span><span class=cF0>
|
||||
<a name="l15"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l16"></a> </span><span class=cF9>I64</span><span class=cF0> ch,i;
|
||||
<a name="l17"></a> </span><span class=cF1>U8</span><span class=cF0> *src,*dst;
|
||||
<a name="l18"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l19"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (doc=</span><span class=cF5>DocRead</span><span class=cF7>(</span><span class=cF0>in_name,</span><span class=cF3>DOCF_PLAIN_TEXT_TABS</span><span class=cF0>|</span><span class=cF3>DOCF_DBL_DOLLARS</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l21"></a> doc_e=doc->head.next;
|
||||
<a name="l22"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) {
|
||||
<a name="l23"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l24"></a> src=dst=doc_e->tag;
|
||||
<a name="l25"></a> </span><span class=cF1>while</span><span class=cF0> (ch=*src++) {
|
||||
<a name="l26"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>'\\'</span><span class=cF0> && *src==</span><span class=cF6>'\''</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l27"></a> src++;
|
||||
<a name="l28"></a> i=0;
|
||||
<a name="l29"></a> ch=</span><span class=cF5>ToUpper</span><span class=cF0>(*src++);
|
||||
<a name="l30"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0><=ch<=</span><span class=cF6>'9'</span><span class=cF0>)
|
||||
<a name="l31"></a> i+=ch-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l32"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'A'</span><span class=cF0><=ch<=</span><span class=cF6>'F'</span><span class=cF0>)
|
||||
<a name="l33"></a> i+=ch-</span><span class=cF6>'A'</span><span class=cF0>+10;
|
||||
<a name="l34"></a> i<<=4;
|
||||
<a name="l35"></a> ch=</span><span class=cF5>ToUpper</span><span class=cF0>(*src++);
|
||||
<a name="l36"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0><=ch<=</span><span class=cF6>'9'</span><span class=cF0>)
|
||||
<a name="l37"></a> i+=ch-</span><span class=cF6>'0'</span><span class=cF0>;
|
||||
<a name="l38"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'A'</span><span class=cF0><=ch<=</span><span class=cF6>'F'</span><span class=cF0>)
|
||||
<a name="l39"></a> i+=ch-</span><span class=cF6>'A'</span><span class=cF0>+10;
|
||||
<a name="l40"></a> *dst++=i;
|
||||
<a name="l41"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l42"></a> *dst++=ch;
|
||||
<a name="l43"></a> }
|
||||
<a name="l44"></a> *dst=0;
|
||||
<a name="l45"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l46"></a> doc_e=doc_e->next;
|
||||
<a name="l47"></a> }
|
||||
<a name="l48"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(doc->filename.name,out_name);
|
||||
<a name="l49"></a> </span><span class=cF5>DocWrite</span><span class=cF0>(doc);
|
||||
<a name="l50"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l51"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l52"></a>}
|
||||
<a name="l53"></a>
|
||||
<a name="l54"></a></span><span class=cF9>I64</span><span class=cF0> ACDNextCmd(</span><span class=cF1>U8</span><span class=cF0> **_ptr)
|
||||
<a name="l55"></a>{
|
||||
<a name="l56"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr=*_ptr,*ptr2;
|
||||
<a name="l57"></a> </span><span class=cF9>I64</span><span class=cF0> ch,res=-1;
|
||||
<a name="l58"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l60"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch=*ptr++</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF1>goto</span><span class=cF0> ncmd_done;
|
||||
<a name="l61"></a> } </span><span class=cF1>while</span><span class=cF0> (ch!=</span><span class=cF6>'<'</span><span class=cF0>);
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a> ptr2=ptr;
|
||||
<a name="l64"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l65"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch=*ptr2++</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF1>goto</span><span class=cF0> ncmd_done;
|
||||
<a name="l66"></a> } </span><span class=cF1>while</span><span class=cF0> (ch!=</span><span class=cF6>'>'</span><span class=cF0>);
|
||||
<a name="l67"></a> *--ptr2=0;
|
||||
<a name="l68"></a> res=</span><span class=cF5>LstMatch</span><span class=cF0>(ptr,</span><span class=cF6>"h1\0/h1\0def\0/def\0hw\0/hw\0tt\0/tt\0"</span><span class=cF0>
|
||||
<a name="l69"></a> </span><span class=cF6>"ety\0@fld\0@cd\0@blockquote\0@wordforms\0@note\0@altname\0@chform\0"</span><span class=cF0>
|
||||
<a name="l70"></a> </span><span class=cF6>"@cref\0@syn\0/ety\0@/fld\0@/cd\0@/blockquote\0@/wordforms\0@/note\0"</span><span class=cF0>
|
||||
<a name="l71"></a> </span><span class=cF6>"@/altname\0@/chform\0@/cref\0@/syn\0"</span><span class=cF0>);
|
||||
<a name="l72"></a> *ptr2++=</span><span class=cF6>'>'</span><span class=cF0>;
|
||||
<a name="l73"></a> ptr=ptr2;
|
||||
<a name="l74"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (res<0);
|
||||
<a name="l75"></a>
|
||||
<a name="l76"></a> ncmd_done:
|
||||
<a name="l77"></a> *_ptr=ptr;
|
||||
<a name="l78"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l79"></a>}
|
||||
<a name="l80"></a>
|
||||
<a name="l81"></a></span><span class=cF1>U8</span><span class=cF0> *ACDNextEntry(</span><span class=cF1>U8</span><span class=cF0> **_ptr)
|
||||
<a name="l82"></a>{
|
||||
<a name="l83"></a> </span><span class=cF1>U8</span><span class=cF0> *res,*ignore,*ptr=*_ptr,buf[</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>],*out_ptr=buf;
|
||||
<a name="l84"></a> </span><span class=cF9>I64</span><span class=cF0> ch,l;
|
||||
<a name="l85"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) {
|
||||
<a name="l87"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch=*ptr++</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF1>goto</span><span class=cF0> nentry_done;
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (ch!=</span><span class=cF6>'<'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l89"></a> *out_ptr++=ch;
|
||||
<a name="l90"></a> </span><span class=cF1>if</span><span class=cF0> (ch==</span><span class=cF6>'$'</span><span class=cF0>)
|
||||
<a name="l91"></a> *out_ptr++=ch;
|
||||
<a name="l92"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l93"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l94"></a> }
|
||||
<a name="l95"></a> ignore=</span><span class=cF6>"b>\0i>\0ppp>\0/b>\0/i>\0/p>\0"</span><span class=cF0>
|
||||
<a name="l96"></a> </span><span class=cF6>"ets>\0col>\0spn>\0/ets>\0/col>\0/spn>\0er>\0as>\0cs>\0cd>\0ex>\0"</span><span class=cF0>
|
||||
<a name="l97"></a> </span><span class=cF6>"/er>\0/as>\0/cs>\0/cd>\0/ex>\0"</span><span class=cF0>
|
||||
<a name="l98"></a> </span><span class=cF6>"note>\0/note>\0blockquote>\0/blockquote>\0"</span><span class=cF0>;
|
||||
<a name="l99"></a> </span><span class=cF1>while</span><span class=cF0> (*ignore) {
|
||||
<a name="l100"></a> l=</span><span class=cF5>StrLen</span><span class=cF0>(ignore);
|
||||
<a name="l101"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrNCmp</span><span class=cF7>(</span><span class=cF0>ptr,ignore,l</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l102"></a> ptr+=l;
|
||||
<a name="l103"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l104"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l105"></a> ignore+=l+1;
|
||||
<a name="l106"></a> }
|
||||
<a name="l107"></a> </span><span class=cF1>if</span><span class=cF0> (!*ignore)
|
||||
<a name="l108"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l110"></a>nentry_done:
|
||||
<a name="l111"></a> *out_ptr++=0;
|
||||
<a name="l112"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(buf);
|
||||
<a name="l113"></a> *_ptr=ptr-1;
|
||||
<a name="l114"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l115"></a>}
|
||||
<a name="l116"></a>
|
||||
<a name="l117"></a></span><span class=cF9>I64</span><span class=cF0> ACDCompareWords(</span><span class=cF1>U8</span><span class=cF0> *e1,</span><span class=cF1>U8</span><span class=cF0> *e2)
|
||||
<a name="l118"></a>{
|
||||
<a name="l119"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>StrICmp</span><span class=cF0>(e1,e2);
|
||||
<a name="l120"></a>}
|
||||
<a name="l121"></a>
|
||||
<a name="l122"></a></span><span class=cF1>U8</span><span class=cF0> *ACDSortWords(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF1>start</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> size,</span><span class=cF9>I64</span><span class=cF0> word_cnt)
|
||||
<a name="l123"></a>{
|
||||
<a name="l124"></a> </span><span class=cF1>U8</span><span class=cF0> **ptr_array=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>*word_cnt),
|
||||
<a name="l125"></a> *out_start=</span><span class=cF5>MAlloc</span><span class=cF0>(size),
|
||||
<a name="l126"></a> *ptr=</span><span class=cF1>start</span><span class=cF0>,*ptr2;
|
||||
<a name="l127"></a> </span><span class=cF9>I64</span><span class=cF0> i=0;
|
||||
<a name="l128"></a> </span><span class=cF1>while</span><span class=cF0> (*ptr) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l129"></a> ptr_array[i++]=ptr;
|
||||
<a name="l130"></a> ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(ptr)+3;
|
||||
<a name="l131"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l132"></a> </span><span class=cF6>"Sorting...\n"</span><span class=cF0>; </span><span class=cF5>Sleep</span><span class=cF0>(100);
|
||||
<a name="l133"></a> </span><span class=cF5>QSortI64</span><span class=cF0>(ptr_array,word_cnt,&ACDCompareWords);
|
||||
<a name="l134"></a> </span><span class=cF6>"Done...\n"</span><span class=cF0>; </span><span class=cF5>Sleep</span><span class=cF0>(100);
|
||||
<a name="l135"></a>
|
||||
<a name="l136"></a> ptr=out_start;
|
||||
<a name="l137"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<word_cnt;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l138"></a> ptr2=ptr_array[i];
|
||||
<a name="l139"></a> </span><span class=cF1>while</span><span class=cF0> (*ptr2)
|
||||
<a name="l140"></a> *ptr++=*ptr2++;
|
||||
<a name="l141"></a> *ptr++=*ptr2++; </span><span class=cF2>//zero</span><span class=cF0>
|
||||
<a name="l142"></a> *ptr++=*ptr2++; </span><span class=cF2>//blk lo</span><span class=cF0>
|
||||
<a name="l143"></a> *ptr++=*ptr2++; </span><span class=cF2>//blk hi</span><span class=cF0>
|
||||
<a name="l144"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l145"></a> *ptr++=0;
|
||||
<a name="l146"></a> </span><span class=cF1>return</span><span class=cF0> out_start;
|
||||
<a name="l147"></a>}
|
||||
<a name="l148"></a>
|
||||
<a name="l149"></a></span><span class=cF1>U0</span><span class=cF0> ACDGen(</span><span class=cF1>U8</span><span class=cF0> *in_file)
|
||||
<a name="l150"></a>{
|
||||
<a name="l151"></a> </span><span class=cF9>I64</span><span class=cF0> cmd,size,word_cnt=0,largest_entry=0;
|
||||
<a name="l152"></a> </span><span class=cF1>U8</span><span class=cF0> *st,*in_ptr=</span><span class=cF5>FileRead</span><span class=cF0>(in_file,&size),*in_start=in_ptr,
|
||||
<a name="l153"></a> *out_ptr=</span><span class=cF5>MAlloc</span><span class=cF0>(size),*out_start=out_ptr,
|
||||
<a name="l154"></a> *word_ptr=</span><span class=cF5>MAlloc</span><span class=cF0>(size),*word_start=word_ptr,
|
||||
<a name="l155"></a> *last_word=</span><span class=cF6>""</span><span class=cF0>,*def_word_start=out_ptr,
|
||||
<a name="l156"></a> *sorted_word_start;
|
||||
<a name="l157"></a> </span><span class=cF9>U16</span><span class=cF0> *d;
|
||||
<a name="l158"></a> </span><span class=cF1>if</span><span class=cF0> (!in_ptr) </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l159"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l160"></a> cmd=ACDNextCmd(&in_ptr);
|
||||
<a name="l161"></a> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_H1</span><span class=cF0>) {
|
||||
<a name="l162"></a>next_word:
|
||||
<a name="l163"></a> </span><span class=cF1>if</span><span class=cF0> (out_ptr-def_word_start>largest_entry)
|
||||
<a name="l164"></a> largest_entry=out_ptr-def_word_start;
|
||||
<a name="l165"></a> def_word_start=out_ptr;
|
||||
<a name="l166"></a> </span><span class=cF1>if</span><span class=cF0> (st=ACDNextEntry</span><span class=cF7>(</span><span class=cF0>&in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l167"></a> </span><span class=cF1>if</span><span class=cF0> (*st) {
|
||||
<a name="l168"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrICmp</span><span class=cF7>(</span><span class=cF0>st,last_word</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l169"></a> word_cnt++;
|
||||
<a name="l170"></a>
|
||||
<a name="l171"></a> *word_ptr++=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>;
|
||||
<a name="l172"></a> last_word=word_ptr;
|
||||
<a name="l173"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(word_ptr,st);
|
||||
<a name="l174"></a> word_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l175"></a>
|
||||
<a name="l176"></a> d=word_ptr;
|
||||
<a name="l177"></a> *d=(out_ptr-out_start)/</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>;
|
||||
<a name="l178"></a> word_ptr+=2;
|
||||
<a name="l179"></a>
|
||||
<a name="l180"></a> *out_ptr++=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>;
|
||||
<a name="l181"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(out_ptr,st);
|
||||
<a name="l182"></a> out_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l183"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l184"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l185"></a>
|
||||
<a name="l186"></a> </span><span class=cF1>do</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l187"></a> </span><span class=cF1>do</span><span class=cF0> {
|
||||
<a name="l188"></a> cmd=ACDNextCmd(&in_ptr);
|
||||
<a name="l189"></a> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_H1</span><span class=cF0>)
|
||||
<a name="l190"></a> </span><span class=cF1>goto</span><span class=cF0> next_word;
|
||||
<a name="l191"></a> } </span><span class=cF1>while</span><span class=cF0> (cmd>=0 && !</span><span class=cF7>(</span><span class=cF0>cmd==</span><span class=cF3>ACD_DEF</span><span class=cF0>||cmd==</span><span class=cF3>ACD_PRONUNCIATION</span><span class=cF0>||
|
||||
<a name="l192"></a> cmd==</span><span class=cF3>ACD_POS</span><span class=cF0>||cmd==</span><span class=cF3>ACD_EXTRA</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l193"></a> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_DEF</span><span class=cF0>) {
|
||||
<a name="l194"></a> </span><span class=cF1>if</span><span class=cF0>(st=ACDNextEntry</span><span class=cF7>(</span><span class=cF0>&in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l195"></a> </span><span class=cF1>if</span><span class=cF0> (*st) {
|
||||
<a name="l196"></a> *out_ptr++=</span><span class=cF3>ACD_DEF_CHAR</span><span class=cF0>;
|
||||
<a name="l197"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(out_ptr,st);
|
||||
<a name="l198"></a> out_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l199"></a> }
|
||||
<a name="l200"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l201"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l202"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_PRONUNCIATION</span><span class=cF0>) {
|
||||
<a name="l203"></a> </span><span class=cF1>if</span><span class=cF0>(st=ACDNextEntry</span><span class=cF7>(</span><span class=cF0>&in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l204"></a> </span><span class=cF1>if</span><span class=cF0> (*st) {
|
||||
<a name="l205"></a> *out_ptr++=</span><span class=cF3>ACD_PRONUNCIATION_CHAR</span><span class=cF0>;
|
||||
<a name="l206"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(out_ptr,st);
|
||||
<a name="l207"></a> out_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l208"></a> }
|
||||
<a name="l209"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l210"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l211"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_POS</span><span class=cF0>) {
|
||||
<a name="l212"></a> </span><span class=cF1>if</span><span class=cF0>(st=ACDNextEntry</span><span class=cF7>(</span><span class=cF0>&in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l213"></a> </span><span class=cF1>if</span><span class=cF0> (*st) {
|
||||
<a name="l214"></a> *out_ptr++=</span><span class=cF3>ACD_POS_CHAR</span><span class=cF0>;
|
||||
<a name="l215"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(out_ptr,st);
|
||||
<a name="l216"></a> out_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l217"></a> }
|
||||
<a name="l218"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l219"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l220"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (cmd==</span><span class=cF3>ACD_EXTRA</span><span class=cF0>) {
|
||||
<a name="l221"></a> </span><span class=cF1>if</span><span class=cF0>(st=ACDNextEntry</span><span class=cF7>(</span><span class=cF0>&in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (*st) {
|
||||
<a name="l223"></a> *out_ptr++=</span><span class=cF3>ACD_EXTRA_CHAR</span><span class=cF0>;
|
||||
<a name="l224"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(out_ptr,st);
|
||||
<a name="l225"></a> out_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(st)+1;
|
||||
<a name="l226"></a> }
|
||||
<a name="l227"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l228"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l229"></a> }
|
||||
<a name="l230"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (cmd==</span><span class=cF3>ACD_DEF</span><span class=cF0>||cmd==</span><span class=cF3>ACD_PRONUNCIATION</span><span class=cF0>||
|
||||
<a name="l231"></a> cmd==</span><span class=cF3>ACD_POS</span><span class=cF0>||cmd==</span><span class=cF3>ACD_EXTRA</span><span class=cF0>);
|
||||
<a name="l232"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l233"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l234"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l235"></a> }
|
||||
<a name="l236"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>while</span><span class=cF0> (cmd>=0);
|
||||
<a name="l237"></a> *out_ptr++=</span><span class=cF3>ACD_END_CHAR</span><span class=cF0>;
|
||||
<a name="l238"></a> *word_ptr++=</span><span class=cF3>ACD_END_CHAR</span><span class=cF0>;
|
||||
<a name="l239"></a>
|
||||
<a name="l240"></a> </span><span class=cF5>Free</span><span class=cF0>(in_start);
|
||||
<a name="l241"></a>
|
||||
<a name="l242"></a> </span><span class=cF6>"Blk Size :%d\n"</span><span class=cF0>,</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>;
|
||||
<a name="l243"></a> </span><span class=cF6>"Blk Cnt :%04X\n"</span><span class=cF0>,(out_ptr-out_start+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>-1)/</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>;
|
||||
<a name="l244"></a> </span><span class=cF6>"Largest Entry :%d\n"</span><span class=cF0>,largest_entry;
|
||||
<a name="l245"></a> </span><span class=cF6>"Word Count :%d\n"</span><span class=cF0>,word_cnt;
|
||||
<a name="l246"></a>
|
||||
<a name="l247"></a> </span><span class=cF5>FileWrite</span><span class=cF0>(</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0>,out_start,out_ptr-out_start);
|
||||
<a name="l248"></a> </span><span class=cF6>"Def File Size :%d\n"</span><span class=cF0>,out_ptr-out_start;
|
||||
<a name="l249"></a>
|
||||
<a name="l250"></a> sorted_word_start=ACDSortWords(word_start,word_ptr-word_start,word_cnt);
|
||||
<a name="l251"></a> </span><span class=cF5>FileWrite</span><span class=cF0>(</span><span class=cF3>ACD_WORD_FILENAME</span><span class=cF0>,sorted_word_start,word_ptr-word_start);
|
||||
<a name="l252"></a> </span><span class=cF6>"Word File Size:%d\n"</span><span class=cF0>,word_ptr-word_start;
|
||||
<a name="l253"></a>
|
||||
<a name="l254"></a> </span><span class=cF5>Free</span><span class=cF0>(out_start);
|
||||
<a name="l255"></a> </span><span class=cF5>Free</span><span class=cF0>(word_start);
|
||||
<a name="l256"></a> </span><span class=cF5>Free</span><span class=cF0>(sorted_word_start);
|
||||
<a name="l257"></a>}
|
||||
<a name="l258"></a>
|
||||
<a name="l259"></a></span><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF3>__DIR__</span><span class=cF0>);
|
||||
<a name="l260"></a>ACDPreprocess(</span><span class=cF6>"DICTIONARY.DD"</span><span class=cF0>,</span><span class=cF6>"DICTIONARY2.DD"</span><span class=cF0>);
|
||||
<a name="l261"></a>ACDGen(</span><span class=cF6>"DICTIONARY2.DD"</span><span class=cF0>);
|
||||
</span></pre></body>
|
||||
</html>
|
||||
257
public/Wb/Adam/AutoComplete/ACFill.HC.HTML
Executable file
257
public/Wb/Adam/AutoComplete/ACFill.HC.HTML
Executable file
@ -0,0 +1,257 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete/Dictionary"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>ACDDefGet</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF9>I64</span><span class=cF0> def_num=1)
|
||||
<a name="l3"></a>{</span><span class=cF2>//MAlloc str holding single dict definition of word.</span><span class=cF0>
|
||||
<a name="l4"></a> </span><span class=cF9>CFile</span><span class=cF0> *f;
|
||||
<a name="l5"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *tmph;
|
||||
<a name="l6"></a> </span><span class=cF1>U8</span><span class=cF0> *res=</span><span class=cF3>NULL</span><span class=cF0>,*buf,*in_ptr,
|
||||
<a name="l7"></a> *st2=</span><span class=cF5>MStrUtil</span><span class=cF0>(st,</span><span class=cF3>SUF_TO_UPPER</span><span class=cF0>);
|
||||
<a name="l8"></a> tmph=</span><span class=cF5>HashFind</span><span class=cF0>(st2,</span><span class=cFB>ac</span><span class=cF0>.hash_table,</span><span class=cF3>HTT_DICT_WORD</span><span class=cF0>);
|
||||
<a name="l9"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l10"></a> </span><span class=cF1>if</span><span class=cF0> (tmph) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l11"></a> </span><span class=cF1>if</span><span class=cF0> (f=</span><span class=cF5>FOpen</span><span class=cF7>(</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0>,</span><span class=cF6>"r"</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l12"></a> buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2+1);
|
||||
<a name="l13"></a> buf[</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2]=0; </span><span class=cF2>//terminate</span><span class=cF0>
|
||||
<a name="l14"></a> </span><span class=cF5>FBlkRead</span><span class=cF0>(f,buf,tmph->user_data0*</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>/</span><span class=cF3>BLK_SIZE</span><span class=cF0>,
|
||||
<a name="l15"></a> </span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2/</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l16"></a> </span><span class=cF5>FClose</span><span class=cF0>(f);
|
||||
<a name="l17"></a> in_ptr=buf;
|
||||
<a name="l18"></a> </span><span class=cF1>while</span><span class=cF0> (in_ptr<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l19"></a> </span><span class=cF1>while</span><span class=cF0> (*in_ptr!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> && in_ptr<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2)
|
||||
<a name="l20"></a> in_ptr++;
|
||||
<a name="l21"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr++==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>) {
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrICmp</span><span class=cF7>(</span><span class=cF0>st,in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l23"></a> </span><span class=cF1>while</span><span class=cF0> (def_num && *in_ptr!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>
|
||||
<a name="l24"></a> && in_ptr<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2) {
|
||||
<a name="l25"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr==</span><span class=cF3>ACD_DEF_CHAR</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l26"></a> </span><span class=cF1>if</span><span class=cF0> (!--def_num)
|
||||
<a name="l27"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l28"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l29"></a> in_ptr++;
|
||||
<a name="l30"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l31"></a> in_ptr++;
|
||||
<a name="l32"></a> }
|
||||
<a name="l33"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr++==</span><span class=cF3>ACD_DEF_CHAR</span><span class=cF0>) {
|
||||
<a name="l34"></a> res=</span><span class=cF5>StrNew</span><span class=cF0>(in_ptr);
|
||||
<a name="l35"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l36"></a> }
|
||||
<a name="l37"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l38"></a> }
|
||||
<a name="l39"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l40"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l41"></a> }
|
||||
<a name="l42"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l43"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l44"></a>}
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>ACDDefsGet</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l47"></a>{</span><span class=cF2>//MAlloc str with all dict definitions of word.</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF9>CFile</span><span class=cF0> *f;
|
||||
<a name="l49"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *tmph;
|
||||
<a name="l50"></a> </span><span class=cF1>U8</span><span class=cF0> *res=</span><span class=cF3>NULL</span><span class=cF0>,*buf,*in_ptr,*in_ptr2,
|
||||
<a name="l51"></a> *st2=</span><span class=cF5>MStrUtil</span><span class=cF0>(st,</span><span class=cF3>SUF_TO_UPPER</span><span class=cF0>);
|
||||
<a name="l52"></a> tmph=</span><span class=cF5>HashFind</span><span class=cF0>(st2,</span><span class=cFB>ac</span><span class=cF0>.hash_table,</span><span class=cF3>HTT_DICT_WORD</span><span class=cF0>);
|
||||
<a name="l53"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l54"></a> </span><span class=cF1>if</span><span class=cF0> (tmph) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (f=</span><span class=cF5>FOpen</span><span class=cF7>(</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0>,</span><span class=cF6>"r"</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l56"></a> buf=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2+1);
|
||||
<a name="l57"></a> buf[</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2]=0; </span><span class=cF2>//terminate</span><span class=cF0>
|
||||
<a name="l58"></a> </span><span class=cF5>FBlkRead</span><span class=cF0>(f,buf,tmph->user_data0*</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>/</span><span class=cF3>BLK_SIZE</span><span class=cF0>,
|
||||
<a name="l59"></a> </span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2/</span><span class=cF3>BLK_SIZE</span><span class=cF0>);
|
||||
<a name="l60"></a> </span><span class=cF5>FClose</span><span class=cF0>(f);
|
||||
<a name="l61"></a> in_ptr=buf;
|
||||
<a name="l62"></a> </span><span class=cF1>while</span><span class=cF0> (in_ptr<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l63"></a> </span><span class=cF1>while</span><span class=cF0> (*in_ptr!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> && in_ptr<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2)
|
||||
<a name="l64"></a> in_ptr++;
|
||||
<a name="l65"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr++==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>) {
|
||||
<a name="l66"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>StrICmp</span><span class=cF7>(</span><span class=cF0>st,in_ptr</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l67"></a> in_ptr2=in_ptr;
|
||||
<a name="l68"></a> in_ptr--;
|
||||
<a name="l69"></a> </span><span class=cF1>while</span><span class=cF0> (*in_ptr2!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>
|
||||
<a name="l70"></a> && in_ptr2<buf+</span><span class=cF3>ACD_BLK_SIZE</span><span class=cF0>*2) {
|
||||
<a name="l71"></a> in_ptr2++;
|
||||
<a name="l72"></a> }
|
||||
<a name="l73"></a> res=</span><span class=cF5>MAlloc</span><span class=cF0>(in_ptr2+1-in_ptr);
|
||||
<a name="l74"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(res,in_ptr,in_ptr2-in_ptr);
|
||||
<a name="l75"></a> res[in_ptr2-in_ptr]=</span><span class=cF3>ACD_END_CHAR</span><span class=cF0>;
|
||||
<a name="l76"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l77"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l78"></a> }
|
||||
<a name="l79"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l80"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l81"></a> }
|
||||
<a name="l82"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l83"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l84"></a>}
|
||||
<a name="l85"></a>
|
||||
<a name="l86"></a></span><span class=cF2>/*Fmt of word lst entry:</span><span class=cF0>
|
||||
<a name="l87"></a></span><span class=cF2> U8 ACD_WORD_CHAR</span><span class=cF0>
|
||||
<a name="l88"></a></span><span class=cF2> U8 word[] with terminating zero</span><span class=cF0>
|
||||
<a name="l89"></a></span><span class=cF2> I16 block;</span><span class=cF0>
|
||||
<a name="l90"></a></span><span class=cF2>*/</span><span class=cF0>
|
||||
<a name="l91"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>ACDWordPtAt</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l92"></a>{</span><span class=cF2>//Point to word in word list.</span><span class=cF0>
|
||||
<a name="l93"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l94"></a> </span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF1>start</span><span class=cF0>=</span><span class=cFB>acd</span><span class=cF0>.word_lst,*r=</span><span class=cF1>start</span><span class=cF0>,
|
||||
<a name="l95"></a> *</span><span class=cF1>end</span><span class=cF0>=</span><span class=cFB>acd</span><span class=cF0>.word_lst+</span><span class=cFB>acd</span><span class=cF0>.word_lst_size;
|
||||
<a name="l96"></a> </span><span class=cF1>if</span><span class=cF0> (!st || !*st)
|
||||
<a name="l97"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cFB>acd</span><span class=cF0>.word_lst;
|
||||
<a name="l98"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>acd</span><span class=cF0>.word_lst_size) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l99"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF1>start</span><span class=cF0>+3<</span><span class=cF1>end</span><span class=cF0>) {
|
||||
<a name="l100"></a> r=(</span><span class=cF1>start</span><span class=cF0>+</span><span class=cF1>end</span><span class=cF0>)>>1;
|
||||
<a name="l101"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l102"></a> </span><span class=cF1>while</span><span class=cF0> (*r!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> && r></span><span class=cFB>acd</span><span class=cF0>.word_lst)
|
||||
<a name="l103"></a> r--;
|
||||
<a name="l104"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>r[2]==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>||r[1]==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF7>)</span><span class=cF0>&&r-3></span><span class=cFB>acd</span><span class=cF0>.word_lst)
|
||||
<a name="l105"></a> r--;
|
||||
<a name="l106"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l107"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l108"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l109"></a> </span><span class=cF1>if</span><span class=cF0> (*r==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l110"></a> i=</span><span class=cF5>StrICmp</span><span class=cF0>(st,r+1);
|
||||
<a name="l111"></a> </span><span class=cF1>if</span><span class=cF0> (i<0)
|
||||
<a name="l112"></a> </span><span class=cF1>end</span><span class=cF0>=r-1;
|
||||
<a name="l113"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i>0)
|
||||
<a name="l114"></a> </span><span class=cF1>start</span><span class=cF0>=r+</span><span class=cF5>StrLen</span><span class=cF0>(r)+3;
|
||||
<a name="l115"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l116"></a> </span><span class=cF1>return</span><span class=cF0> r;
|
||||
<a name="l117"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l118"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l119"></a> }
|
||||
<a name="l120"></a> r=(</span><span class=cF1>start</span><span class=cF0>+</span><span class=cF1>end</span><span class=cF0>)>>1;
|
||||
<a name="l121"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) {
|
||||
<a name="l122"></a> </span><span class=cF1>while</span><span class=cF0> (*r!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> && r></span><span class=cFB>acd</span><span class=cF0>.word_lst)
|
||||
<a name="l123"></a> r--;
|
||||
<a name="l124"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>r[2]==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>||r[1]==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF7>)</span><span class=cF0>&&r-3></span><span class=cFB>acd</span><span class=cF0>.word_lst)
|
||||
<a name="l125"></a> r--;
|
||||
<a name="l126"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l127"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l128"></a> }
|
||||
<a name="l129"></a> </span><span class=cF1>if</span><span class=cF0> (*r==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0> && </span><span class=cF5>StrICmp</span><span class=cF7>(</span><span class=cF0>st,r+1</span><span class=cF7>)</span><span class=cF0>>0)
|
||||
<a name="l130"></a> r+=</span><span class=cF5>StrLen</span><span class=cF0>(r)+3;
|
||||
<a name="l131"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l132"></a> </span><span class=cF1>if</span><span class=cF0> (*r==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>)
|
||||
<a name="l133"></a> </span><span class=cF1>return</span><span class=cF0> r;
|
||||
<a name="l134"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l135"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cFB>acd</span><span class=cF0>.word_lst;
|
||||
<a name="l136"></a>}
|
||||
<a name="l137"></a>
|
||||
<a name="l138"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDFillin</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n)
|
||||
<a name="l139"></a>{
|
||||
<a name="l140"></a> </span><span class=cF1>U8</span><span class=cF0> *s;
|
||||
<a name="l141"></a> </span><span class=cF9>I64</span><span class=cF0> len;
|
||||
<a name="l142"></a> </span><span class=cF1>if</span><span class=cF0> (0<=n<</span><span class=cFB>acd</span><span class=cF0>.num_fillins) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l143"></a> s=</span><span class=cFB>acd</span><span class=cF0>.fillins[n]+1;
|
||||
<a name="l144"></a> len=</span><span class=cF5>StrLen</span><span class=cF0>(s);
|
||||
<a name="l145"></a> </span><span class=cF1>if</span><span class=cF0> (len></span><span class=cFB>ac</span><span class=cF0>.partial_len)
|
||||
<a name="l146"></a> </span><span class=cF5>In</span><span class=cF0>(s+</span><span class=cFB>ac</span><span class=cF0>.partial_len);
|
||||
<a name="l147"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l148"></a>}
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDDefsPut</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF9>I64</span><span class=cF0> num=-1)
|
||||
<a name="l151"></a>{</span><span class=cF2>//Put to doc a dictionary definition(s) of a word.</span><span class=cF0>
|
||||
<a name="l152"></a> </span><span class=cF1>U8</span><span class=cF0> *st2,*st3;
|
||||
<a name="l153"></a> </span><span class=cF9>I64</span><span class=cF0> ch,i=0;
|
||||
<a name="l154"></a> </span><span class=cF1>if</span><span class=cF0> (!st) </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l155"></a> </span><span class=cF1>if</span><span class=cF0> (*st==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>)
|
||||
<a name="l156"></a> st++;
|
||||
<a name="l157"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$WW,1$$RED$%s:$FG$\n\n"</span><span class=cF0>,st);
|
||||
<a name="l158"></a> </span><span class=cF1>if</span><span class=cF0> (num<0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l159"></a> </span><span class=cF1>if</span><span class=cF0> (st3=</span><span class=cF5>ACDDefsGet</span><span class=cF7>(</span><span class=cF0>st</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l160"></a> st2=st3;
|
||||
<a name="l161"></a> </span><span class=cF1>while</span><span class=cF0> (ch=*st2++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l162"></a> </span><span class=cF1>switch</span><span class=cF0> (ch) {
|
||||
<a name="l163"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>:
|
||||
<a name="l164"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l165"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>ACD_DEF_CHAR</span><span class=cF0>:
|
||||
<a name="l166"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$GREEN$(%d)$FG$ %s\n"</span><span class=cF0>,
|
||||
<a name="l167"></a> ++i,st2);
|
||||
<a name="l168"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l169"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>ACD_PRONUNCIATION_CHAR</span><span class=cF0>:
|
||||
<a name="l170"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$LTGREEN$%s$FG$\n"</span><span class=cF0>,st2);
|
||||
<a name="l171"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l172"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>ACD_POS_CHAR</span><span class=cF0>:
|
||||
<a name="l173"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$BLACK$%s$FG$\n"</span><span class=cF0>,st2);
|
||||
<a name="l174"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l175"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>ACD_EXTRA_CHAR</span><span class=cF0>:
|
||||
<a name="l176"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$LTBLUE$%s$FG$\n"</span><span class=cF0>,st2);
|
||||
<a name="l177"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l178"></a> }
|
||||
<a name="l179"></a> st2+=</span><span class=cF5>StrLen</span><span class=cF0>(st2)+1;
|
||||
<a name="l180"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l181"></a> </span><span class=cF5>Free</span><span class=cF0>(st3);
|
||||
<a name="l182"></a> }
|
||||
<a name="l183"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l184"></a> </span><span class=cF1>while</span><span class=cF0> (st2=</span><span class=cF5>ACDDefGet</span><span class=cF7>(</span><span class=cF0>st,++i</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l185"></a> </span><span class=cF1>if</span><span class=cF0> (i==num)
|
||||
<a name="l186"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"$GREEN$(%d)$FG$ %s\n"</span><span class=cF0>,
|
||||
<a name="l187"></a> i,st2);
|
||||
<a name="l188"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l189"></a> }
|
||||
<a name="l190"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l191"></a>}
|
||||
<a name="l192"></a>
|
||||
<a name="l193"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDPopUpDef</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st,</span><span class=cF9>I64</span><span class=cF0> num=-1,</span><span class=cF9>CTask</span><span class=cF0> *parent=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l194"></a>{
|
||||
<a name="l195"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
|
||||
<a name="l196"></a> buf=</span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>"ACDDefsPut(DocPut,\"%s\",%d);View;"</span><span class=cF0>,st,num);
|
||||
<a name="l197"></a> </span><span class=cF5>PopUp</span><span class=cF0>(buf,parent);
|
||||
<a name="l198"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l199"></a>}
|
||||
<a name="l200"></a>
|
||||
<a name="l201"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDDef</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF9>CTask</span><span class=cF0> *parent=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l202"></a>{
|
||||
<a name="l203"></a> </span><span class=cF1>if</span><span class=cF0> (0<=n<</span><span class=cFB>acd</span><span class=cF0>.num_fillins)
|
||||
<a name="l204"></a> </span><span class=cF5>ACDPopUpDef</span><span class=cF0>(</span><span class=cFB>acd</span><span class=cF0>.fillins[n],-1,parent);
|
||||
<a name="l205"></a>}
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete"</span><span class=cF0>
|
||||
<a name="l208"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACFillIn</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n)
|
||||
<a name="l209"></a>{
|
||||
<a name="l210"></a> </span><span class=cF1>U8</span><span class=cF0> *s;
|
||||
<a name="l211"></a> </span><span class=cF1>if</span><span class=cF0> (0<=--n<</span><span class=cFB>ac</span><span class=cF0>.num_fillins) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l212"></a> s=</span><span class=cFB>ac</span><span class=cF0>.fillin_matches[n]->str;
|
||||
<a name="l213"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>s</span><span class=cF7>)</span><span class=cF0>></span><span class=cFB>ac</span><span class=cF0>.partial_len)
|
||||
<a name="l214"></a> </span><span class=cF5>In</span><span class=cF0>(s+</span><span class=cFB>ac</span><span class=cF0>.partial_len);
|
||||
<a name="l215"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l216"></a>}
|
||||
<a name="l217"></a>
|
||||
<a name="l218"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACMan</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> n,</span><span class=cF9>CTask</span><span class=cF0> *parent_task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l219"></a>{
|
||||
<a name="l220"></a> </span><span class=cF9>CHashAC</span><span class=cF0> *tmpw;
|
||||
<a name="l221"></a> </span><span class=cF9>CHashSrcSym</span><span class=cF0> *tmph;
|
||||
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (0<=--n<</span><span class=cFB>ac</span><span class=cF0>.num_fillins && </span><span class=cF7>(</span><span class=cF0>tmpw=</span><span class=cFB>ac</span><span class=cF0>.fillin_matches[n]</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l223"></a> </span><span class=cF7>(</span><span class=cF0>tmph=</span><span class=cF5>HashFind</span><span class=cF0>(tmpw->str,</span><span class=cF5>Fs</span><span class=cF0>->hash_table,</span><span class=cF3>HTG_SRC_SYM</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l224"></a> tmph->src_link)
|
||||
<a name="l225"></a> </span><span class=cF5>PopUpEd</span><span class=cF0>(tmph->src_link,parent_task);
|
||||
<a name="l226"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
200
public/Wb/Adam/AutoComplete/ACInit.HC.HTML
Executable file
200
public/Wb/Adam/AutoComplete/ACInit.HC.HTML
Executable file
@ -0,0 +1,200 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete/Dictionary"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cFB>acd</span><span class=cF0>.has_words=</span><span class=cF5>FileFind</span><span class=cF0>(</span><span class=cF3>ACD_WORD_FILENAME</span><span class=cF0>);
|
||||
<a name="l3"></a></span><span class=cFB>acd</span><span class=cF0>.has_defs =</span><span class=cF5>FileFind</span><span class=cF0>(</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0>)||</span><span class=cF5>FileFind</span><span class=cF0>(</span><span class=cF3>ACD_DEF_FILENAME_Z</span><span class=cF0>);
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDWordsLoad</span><span class=cF0>()
|
||||
<a name="l6"></a>{</span><span class=cF2>//Put words from word list into hash table.</span><span class=cF0>
|
||||
<a name="l7"></a> </span><span class=cF9>I64</span><span class=cF0> size;
|
||||
<a name="l8"></a> </span><span class=cF9>CHashGeneric</span><span class=cF0> *tmph;
|
||||
<a name="l9"></a> </span><span class=cF1>U8</span><span class=cF0> *in_ptr,*in_start,*st2;
|
||||
<a name="l10"></a> </span><span class=cF9>U16</span><span class=cF0> *d;
|
||||
<a name="l11"></a> </span><span class=cFB>acd</span><span class=cF0>.num_words=0;
|
||||
<a name="l12"></a> </span><span class=cF1>if</span><span class=cF0> (in_ptr=</span><span class=cF5>FileRead</span><span class=cF7>(</span><span class=cF3>ACD_WORD_FILENAME</span><span class=cF0>,&size</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l13"></a> in_start=in_ptr;
|
||||
<a name="l14"></a> </span><span class=cF5>Free</span><span class=cF0>(</span><span class=cFB>acd</span><span class=cF0>.word_lst);
|
||||
<a name="l15"></a> </span><span class=cFB>acd</span><span class=cF0>.word_lst=</span><span class=cF5>AMAlloc</span><span class=cF0>(size);
|
||||
<a name="l16"></a> </span><span class=cF5>MemCpy</span><span class=cF0>(</span><span class=cFB>acd</span><span class=cF0>.word_lst,in_start,size);
|
||||
<a name="l17"></a> </span><span class=cFB>acd</span><span class=cF0>.word_lst_size=size;
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a> </span><span class=cF1>while</span><span class=cF0> (in_ptr<in_start+size) {
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr==</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>)
|
||||
<a name="l21"></a> in_ptr++;
|
||||
<a name="l22"></a> </span><span class=cF1>if</span><span class=cF0> (*in_ptr) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l23"></a> st2=</span><span class=cF5>MStrUtil</span><span class=cF0>(in_ptr,</span><span class=cF3>SUF_TO_UPPER</span><span class=cF0>);
|
||||
<a name="l24"></a> tmph=</span><span class=cF5>ACAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CHashGeneric</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>st2</span><span class=cF7>)</span><span class=cF0>+1);
|
||||
<a name="l25"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(tmph+1,st2);
|
||||
<a name="l26"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l27"></a> in_ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(in_ptr)+1;
|
||||
<a name="l28"></a> tmph->str=tmph+1;
|
||||
<a name="l29"></a> tmph->use_cnt=1;
|
||||
<a name="l30"></a> tmph->type=</span><span class=cF3>HTT_DICT_WORD</span><span class=cF0>;
|
||||
<a name="l31"></a> d=in_ptr;
|
||||
<a name="l32"></a> tmph->user_data0=*d;
|
||||
<a name="l33"></a> in_ptr+=2;
|
||||
<a name="l34"></a> </span><span class=cF5>HashAdd</span><span class=cF0>(tmph,</span><span class=cFB>ac</span><span class=cF0>.hash_table);
|
||||
<a name="l35"></a> </span><span class=cFB>acd</span><span class=cF0>.num_words++;
|
||||
<a name="l36"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l37"></a> in_ptr+=3;
|
||||
<a name="l38"></a> }
|
||||
<a name="l39"></a> </span><span class=cF5>Free</span><span class=cF0>(in_start);
|
||||
<a name="l40"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l41"></a>}
|
||||
<a name="l42"></a>
|
||||
<a name="l43"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete"</span><span class=cF0>
|
||||
<a name="l44"></a></span><span class=cF9>CHashAC</span><span class=cF0> *</span><span class=cF5>ACHashAdd</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *w)
|
||||
<a name="l45"></a>{
|
||||
<a name="l46"></a> </span><span class=cF9>CHashAC</span><span class=cF0> *tmpw=</span><span class=cF5>HashFind</span><span class=cF0>(w,</span><span class=cFB>ac</span><span class=cF0>.hash_table,</span><span class=cF3>HTT_WORD</span><span class=cF0>);
|
||||
<a name="l47"></a> </span><span class=cF1>if</span><span class=cF0> (tmpw) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l48"></a> tmpw->hits++;
|
||||
<a name="l49"></a> </span><span class=cF1>return</span><span class=cF0> tmpw;
|
||||
<a name="l50"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l51"></a> tmpw=</span><span class=cF5>ACAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CHashAC</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l52"></a> tmpw->str=</span><span class=cF5>AStrNew</span><span class=cF0>(w);
|
||||
<a name="l53"></a> tmpw->type=</span><span class=cF3>HTT_WORD</span><span class=cF0>;
|
||||
<a name="l54"></a> tmpw->use_cnt=1;
|
||||
<a name="l55"></a> tmpw->hits=1;
|
||||
<a name="l56"></a> </span><span class=cF5>HashAdd</span><span class=cF0>(tmpw,</span><span class=cFB>ac</span><span class=cF0>.hash_table);
|
||||
<a name="l57"></a> </span><span class=cFB>ac</span><span class=cF0>.num_words++;
|
||||
<a name="l58"></a> </span><span class=cF1>return</span><span class=cF0> tmpw;
|
||||
<a name="l59"></a>}
|
||||
<a name="l60"></a>
|
||||
<a name="l61"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACSingleFileAdd</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *buf)
|
||||
<a name="l62"></a>{
|
||||
<a name="l63"></a> </span><span class=cF9>I64</span><span class=cF0> ch;
|
||||
<a name="l64"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr=buf,*ptr2,*ptr3;
|
||||
<a name="l65"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l66"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) {
|
||||
<a name="l67"></a> </span><span class=cF1>if</span><span class=cF0> (ch=*ptr++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>,ch</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l69"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l70"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l71"></a> </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l72"></a> }
|
||||
<a name="l73"></a> ptr3=ptr;
|
||||
<a name="l74"></a> ptr2=ptr;
|
||||
<a name="l75"></a> ptr--;
|
||||
<a name="l76"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) {
|
||||
<a name="l77"></a> </span><span class=cF1>if</span><span class=cF0> (ch=*ptr2++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>,ch</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l79"></a> *ptr3++=ch;
|
||||
<a name="l80"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch!=</span><span class=cF3>CH_CURSOR</span><span class=cF0>)
|
||||
<a name="l81"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l82"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l83"></a> ptr2--;
|
||||
<a name="l84"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l85"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l86"></a> }
|
||||
<a name="l87"></a> *ptr3=0;
|
||||
<a name="l88"></a> </span><span class=cF5>ACHashAdd</span><span class=cF0>(ptr);
|
||||
<a name="l89"></a> ptr=ptr2;
|
||||
<a name="l90"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l91"></a>}
|
||||
<a name="l92"></a>
|
||||
<a name="l93"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACMainFileLstTraverse</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *files_find_mask)
|
||||
<a name="l94"></a>{
|
||||
<a name="l95"></a> </span><span class=cF1>U8</span><span class=cF0> *buf;
|
||||
<a name="l96"></a> </span><span class=cF9>CDirEntry</span><span class=cF0> *tmpde,*tmpde1;
|
||||
<a name="l97"></a> </span><span class=cF1>try</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l98"></a> tmpde=tmpde1=</span><span class=cF5>FilesFind</span><span class=cF0>(files_find_mask,
|
||||
<a name="l99"></a> </span><span class=cF3>FUF_RECURSE</span><span class=cF0>|</span><span class=cF3>FUF_JUST_TXT</span><span class=cF0>|</span><span class=cF3>FUF_JUST_FILES</span><span class=cF0>|</span><span class=cF3>FUF_CLUS_ORDER</span><span class=cF0>);
|
||||
<a name="l100"></a> </span><span class=cF1>while</span><span class=cF0> (tmpde) {
|
||||
<a name="l101"></a> </span><span class=cF6>"%s\n"</span><span class=cF0>,tmpde->full_name;
|
||||
<a name="l102"></a> buf=</span><span class=cF5>FileRead</span><span class=cF0>(tmpde->full_name);
|
||||
<a name="l103"></a> </span><span class=cF5>ACSingleFileAdd</span><span class=cF0>(buf);
|
||||
<a name="l104"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l105"></a> tmpde=tmpde->next;
|
||||
<a name="l106"></a> }
|
||||
<a name="l107"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>catch</span><span class=cF0>
|
||||
<a name="l108"></a> </span><span class=cF5>Fs</span><span class=cF0>->catch_except=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l109"></a> </span><span class=cF5>DirTreeDel</span><span class=cF0>(tmpde1);
|
||||
<a name="l110"></a>}
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACProgressTask</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> *_start_flag)
|
||||
<a name="l113"></a>{
|
||||
<a name="l114"></a> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF1>start</span><span class=cF0>=</span><span class=cFB>blkdev</span><span class=cF0>.write_cnt;
|
||||
<a name="l115"></a> </span><span class=cFB>progress1</span><span class=cF0>=0;
|
||||
<a name="l116"></a> </span><span class=cFB>progress1_max</span><span class=cF0>=(</span><span class=cF5>Size</span><span class=cF7>(</span><span class=cF3>ACD_DEF_FILENAME_Z</span><span class=cF0>,</span><span class=cF6>"+x+s"</span><span class=cF7>)</span><span class=cF0>+</span><span class=cF3>BLK_SIZE</span><span class=cF0>-1)>></span><span class=cF3>BLK_SIZE_BITS</span><span class=cF0>;
|
||||
<a name="l117"></a> </span><span class=cF5>StrCpy</span><span class=cF0>(</span><span class=cFB>progress1_desc</span><span class=cF0>,</span><span class=cF6>"Uncompressing Dictionary"</span><span class=cF0>);
|
||||
<a name="l118"></a> </span><span class=cF1>start</span><span class=cF0>=</span><span class=cFB>blkdev</span><span class=cF0>.write_cnt;
|
||||
<a name="l119"></a> *_start_flag=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l120"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cFB>progress1</span><span class=cF0><</span><span class=cFB>progress1_max</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l121"></a> </span><span class=cFB>progress1</span><span class=cF0>=</span><span class=cFB>blkdev</span><span class=cF0>.write_cnt-</span><span class=cF1>start</span><span class=cF0>;
|
||||
<a name="l122"></a> </span><span class=cF5>Sleep</span><span class=cF0>(10);
|
||||
<a name="l123"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l124"></a> *</span><span class=cFB>progress1_desc</span><span class=cF0>=</span><span class=cFB>progress1</span><span class=cF0>=</span><span class=cFB>progress1_max</span><span class=cF0>=0;
|
||||
<a name="l125"></a>}
|
||||
<a name="l126"></a>
|
||||
<a name="l127"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACInit</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *mask=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l128"></a>{</span><span class=cF2>//Read files and build AutoComplete statistics.</span><span class=cF0>
|
||||
<a name="l129"></a> </span><span class=cF1>Bool</span><span class=cF0> start_flag;
|
||||
<a name="l130"></a> </span><span class=cF9>CBlkDev</span><span class=cF0> *bd=</span><span class=cF5>Let2BlkDev</span><span class=cF0>;
|
||||
<a name="l131"></a>
|
||||
<a name="l132"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_AUTO_COMPLETE</span><span class=cF0>);
|
||||
<a name="l133"></a> </span><span class=cF5>AutoComplete</span><span class=cF0>;
|
||||
<a name="l134"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>ac</span><span class=cF0>.flags,</span><span class=cF3>ACf_INIT_IN_PROGRESS</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l135"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l136"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>DrvIsWritable</span><span class=cF0> && </span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF3>ACD_DEF_FILENAME_Z</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l137"></a> !</span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l138"></a> </span><span class=cF1>if</span><span class=cF0> (bd->type!=</span><span class=cF3>BDT_RAM</span><span class=cF0>) {
|
||||
<a name="l139"></a> start_flag=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l140"></a> </span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>ACProgressTask</span><span class=cF0>,&start_flag);
|
||||
<a name="l141"></a> </span><span class=cF1>while</span><span class=cF0> (!start_flag)
|
||||
<a name="l142"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l143"></a> }
|
||||
<a name="l144"></a> </span><span class=cF5>Move</span><span class=cF0>(</span><span class=cF3>ACD_DEF_FILENAME_Z</span><span class=cF0>,</span><span class=cF3>ACD_DEF_FILENAME</span><span class=cF0>);
|
||||
<a name="l145"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l146"></a>
|
||||
<a name="l147"></a> </span><span class=cF5>HashTableDel</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.hash_table);
|
||||
<a name="l148"></a> </span><span class=cFB>ac</span><span class=cF0>.hash_table=</span><span class=cF5>HashTableNew</span><span class=cF0>(2048,</span><span class=cFB>adam_task</span><span class=cF0>);
|
||||
<a name="l149"></a>
|
||||
<a name="l150"></a> </span><span class=cFB>ac</span><span class=cF0>.num_words=0;
|
||||
<a name="l151"></a> </span><span class=cF5>Free</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.cur_word);
|
||||
<a name="l152"></a> </span><span class=cFB>ac</span><span class=cF0>.cur_word=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l153"></a>
|
||||
<a name="l154"></a> </span><span class=cF1>if</span><span class=cF0> (mask)
|
||||
<a name="l155"></a> </span><span class=cF5>ACMainFileLstTraverse</span><span class=cF0>(mask);
|
||||
<a name="l156"></a>
|
||||
<a name="l157"></a> </span><span class=cF5>ACDWordsLoad</span><span class=cF0>;
|
||||
<a name="l158"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cFB>ac</span><span class=cF0>.flags,</span><span class=cF3>ACf_INIT_IN_PROGRESS</span><span class=cF0>);
|
||||
<a name="l159"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_AUTO_COMPLETE</span><span class=cF0>);
|
||||
<a name="l160"></a> </span><span class=cF5>AutoComplete</span><span class=cF0>(</span><span class=cF3>ON</span><span class=cF0>);
|
||||
<a name="l161"></a>}
|
||||
<a name="l162"></a>
|
||||
<a name="l163"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>AutoCompleteSize</span><span class=cF0>()
|
||||
<a name="l164"></a>{
|
||||
<a name="l165"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>ac</span><span class=cF0>.hash_table)
|
||||
<a name="l166"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>HashTableSize2</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.hash_table)+</span><span class=cF5>MSize2</span><span class=cF0>(</span><span class=cFB>acd</span><span class=cF0>.word_lst);
|
||||
<a name="l167"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l168"></a> </span><span class=cF1>return</span><span class=cF0> 0;
|
||||
<a name="l169"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
314
public/Wb/Adam/AutoComplete/ACTask.HC.HTML
Executable file
314
public/Wb/Adam/AutoComplete/ACTask.HC.HTML
Executable file
@ -0,0 +1,314 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete/Dictionary"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDDictWordsAdd</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *st)
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l5"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr;
|
||||
<a name="l6"></a> </span><span class=cF1>if</span><span class=cF0> (st && *st && </span><span class=cF7>(</span><span class=cF0>ptr=</span><span class=cF5>ACDWordPtAt</span><span class=cF0>(st)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l7"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cF3>ACD_FILLINS_NUM</span><span class=cF0>;i++) {
|
||||
<a name="l8"></a> </span><span class=cF1>if</span><span class=cF0> (*ptr++!=</span><span class=cF3>ACD_WORD_CHAR</span><span class=cF0>)
|
||||
<a name="l9"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l10"></a> </span><span class=cF1>if</span><span class=cF0> (i) </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l11"></a> </span><span class=cFB>acd</span><span class=cF0>.fillins[i]=ptr-1;
|
||||
<a name="l12"></a> </span><span class=cF6>"$GREEN$'%d'$FG$ %-23ts"</span><span class=cF0>,i,ptr;
|
||||
<a name="l13"></a> ptr+=</span><span class=cF5>StrLen</span><span class=cF0>(ptr)+3;
|
||||
<a name="l14"></a> }
|
||||
<a name="l15"></a> </span><span class=cFB>acd</span><span class=cF0>.num_fillins=i;
|
||||
<a name="l16"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l17"></a>}
|
||||
<a name="l18"></a>
|
||||
<a name="l19"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"AutoComplete"</span><span class=cF0>
|
||||
<a name="l20"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACDocRst</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> left,</span><span class=cF9>I64</span><span class=cF0> top)
|
||||
<a name="l21"></a>{
|
||||
<a name="l22"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF5>DocPut</span><span class=cF0>;
|
||||
<a name="l23"></a> </span><span class=cF5>DocRst</span><span class=cF0>(doc,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l24"></a> doc->flags|=</span><span class=cF3>DOCF_SIZE_MIN</span><span class=cF0>;
|
||||
<a name="l25"></a> </span><span class=cF5>Fs</span><span class=cF0>->border_src=</span><span class=cF3>BDS_CONST</span><span class=cF0>;
|
||||
<a name="l26"></a> </span><span class=cF5>Fs</span><span class=cF0>->border_attr=</span><span class=cF3>LTGRAY</span><span class=cF0><<4+</span><span class=cF5>DrvTextAttrGet</span><span class=cF0>(</span><span class=cF6>':'</span><span class=cF0>)&15;
|
||||
<a name="l27"></a> </span><span class=cF5>Fs</span><span class=cF0>->text_attr =</span><span class=cF3>LTGRAY</span><span class=cF0><<4+</span><span class=cF3>BLUE</span><span class=cF0>;
|
||||
<a name="l28"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF0>);
|
||||
<a name="l29"></a> </span><span class=cF5>WinHorz</span><span class=cF0>(left,</span><span class=cF5>Fs</span><span class=cF0>->win_right);
|
||||
<a name="l30"></a> </span><span class=cF5>WinVert</span><span class=cF0>(top,</span><span class=cF5>Fs</span><span class=cF0>->win_bottom);
|
||||
<a name="l31"></a> </span><span class=cF5>DocCursor</span><span class=cF0>;
|
||||
<a name="l32"></a>}
|
||||
<a name="l33"></a>
|
||||
<a name="l34"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>ACSkipCrap</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src,</span><span class=cF9>I64</span><span class=cF0> len)
|
||||
<a name="l35"></a>{
|
||||
<a name="l36"></a> </span><span class=cF9>I64</span><span class=cF0> j;
|
||||
<a name="l37"></a> j=len-1;
|
||||
<a name="l38"></a> </span><span class=cF1>while</span><span class=cF0> (j>=0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>,src[j]</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l40"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l41"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l42"></a> j--;
|
||||
<a name="l43"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l44"></a> </span><span class=cF1>return</span><span class=cF0> j+1;
|
||||
<a name="l45"></a>}
|
||||
<a name="l46"></a>
|
||||
<a name="l47"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>ACPriorWordInStr</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *src,</span><span class=cF1>U8</span><span class=cF0> *dst,</span><span class=cF9>I64</span><span class=cF0> len,</span><span class=cF9>I64</span><span class=cF0> buf_size)
|
||||
<a name="l48"></a>{
|
||||
<a name="l49"></a> </span><span class=cF9>I64</span><span class=cF0> i,j=0,k;
|
||||
<a name="l50"></a> i=len-1;
|
||||
<a name="l51"></a> </span><span class=cF1>while</span><span class=cF0> (i>=0)
|
||||
<a name="l52"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>,src[i]</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l53"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l54"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l55"></a> i--;
|
||||
<a name="l56"></a> </span><span class=cF1>if</span><span class=cF0> (i>=-1 && len>0)
|
||||
<a name="l57"></a> </span><span class=cF1>for</span><span class=cF0> (k=i+1;k<len && j<buf_size-1;k++)
|
||||
<a name="l58"></a> dst[j++]=src[k];
|
||||
<a name="l59"></a> dst[j]=0;
|
||||
<a name="l60"></a> </span><span class=cF1>return</span><span class=cF0> i+1;
|
||||
<a name="l61"></a>}
|
||||
<a name="l62"></a>
|
||||
<a name="l63"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACFillInAdd</span><span class=cF0>(</span><span class=cF9>CHashAC</span><span class=cF0> *tmpw)
|
||||
<a name="l64"></a>{
|
||||
<a name="l65"></a> </span><span class=cF9>I64</span><span class=cF0> k;
|
||||
<a name="l66"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>ac</span><span class=cF0>.num_fillins<</span><span class=cF3>AC_FILLINS_NUM</span><span class=cF0> ||
|
||||
<a name="l67"></a> tmpw->hits></span><span class=cFB>ac</span><span class=cF0>.fillin_hits[</span><span class=cFB>ac</span><span class=cF0>.num_fillins-1]) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l68"></a> </span><span class=cF1>for</span><span class=cF0> (k=</span><span class=cFB>ac</span><span class=cF0>.num_fillins-1;k>=0;k--) {
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (tmpw->hits<=</span><span class=cFB>ac</span><span class=cF0>.fillin_hits[k])
|
||||
<a name="l70"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l71"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l72"></a> </span><span class=cFB>ac</span><span class=cF0>.fillin_matches[k+1]=</span><span class=cFB>ac</span><span class=cF0>.fillin_matches[k];
|
||||
<a name="l73"></a> </span><span class=cFB>ac</span><span class=cF0>.fillin_hits[k+1] =</span><span class=cFB>ac</span><span class=cF0>.fillin_hits[k];
|
||||
<a name="l74"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l75"></a> }
|
||||
<a name="l76"></a> </span><span class=cFB>ac</span><span class=cF0>.fillin_matches[k+1]=tmpw;
|
||||
<a name="l77"></a> </span><span class=cFB>ac</span><span class=cF0>.fillin_hits[k+1] =tmpw->hits;
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>ac</span><span class=cF0>.num_fillins<</span><span class=cF3>AC_FILLINS_NUM</span><span class=cF0>)
|
||||
<a name="l79"></a> </span><span class=cFB>ac</span><span class=cF0>.num_fillins++;
|
||||
<a name="l80"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l81"></a>}
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACPutChoices</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *focus_l,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e,</span><span class=cF9>CTask</span><span class=cF0> *focus_task,
|
||||
<a name="l84"></a> </span><span class=cF1>Bool</span><span class=cF0> force_refresh)
|
||||
<a name="l85"></a>{
|
||||
<a name="l86"></a> </span><span class=cF9>I64</span><span class=cF0> i,data_col;
|
||||
<a name="l87"></a> </span><span class=cF1>U8</span><span class=cF0> *buf,*buf1,*src=</span><span class=cF3>NULL</span><span class=cF0>,*st;
|
||||
<a name="l88"></a> </span><span class=cF9>CHashAC</span><span class=cF0> *tmpw;
|
||||
<a name="l89"></a> </span><span class=cF1>F64</span><span class=cF0> timeout_time=</span><span class=cF5>tS</span><span class=cF0>+0.5;
|
||||
<a name="l90"></a> </span><span class=cF9>CHashSrcSym</span><span class=cF0> *tmph;
|
||||
<a name="l91"></a>
|
||||
<a name="l92"></a> src=</span><span class=cF5>DocScanLine</span><span class=cF0>(focus_l,doc_e,&data_col);
|
||||
<a name="l93"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(focus_l);
|
||||
<a name="l94"></a> i=</span><span class=cF5>StrLen</span><span class=cF0>(src);
|
||||
<a name="l95"></a> buf =</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>MaxI64</span><span class=cF7>(</span><span class=cF0>i+1,256</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l96"></a> buf1=</span><span class=cF5>MAlloc</span><span class=cF0>(</span><span class=cF5>MaxI64</span><span class=cF7>(</span><span class=cF0>i+1,256</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l97"></a> </span><span class=cF1>if</span><span class=cF0> (data_col==-1)
|
||||
<a name="l98"></a> data_col=0;
|
||||
<a name="l99"></a> data_col=</span><span class=cF5>ACPriorWordInStr</span><span class=cF0>(src,buf,data_col,256);
|
||||
<a name="l100"></a> </span><span class=cFB>ac</span><span class=cF0>.partial_len=</span><span class=cF5>StrLen</span><span class=cF0>(buf);
|
||||
<a name="l101"></a> data_col=</span><span class=cF5>ACSkipCrap</span><span class=cF0>(src,data_col);
|
||||
<a name="l102"></a> data_col=</span><span class=cF5>ACPriorWordInStr</span><span class=cF0>(src,buf1,data_col,256);
|
||||
<a name="l103"></a>
|
||||
<a name="l104"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cFB>ac</span><span class=cF0>.cur_word || </span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cFB>ac</span><span class=cF0>.cur_word,buf</span><span class=cF7>)</span><span class=cF0> || force_refresh) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l105"></a> st=</span><span class=cFB>ac</span><span class=cF0>.cur_word;
|
||||
<a name="l106"></a> </span><span class=cFB>ac</span><span class=cF0>.cur_word=</span><span class=cF5>AStrNew</span><span class=cF0>(buf);
|
||||
<a name="l107"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l108"></a> </span><span class=cFB>ac</span><span class=cF0>.num_fillins=0;
|
||||
<a name="l109"></a> </span><span class=cF1>if</span><span class=cF0> (*</span><span class=cFB>ac</span><span class=cF0>.cur_word)
|
||||
<a name="l110"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<=</span><span class=cFB>ac</span><span class=cF0>.hash_table->mask && </span><span class=cF5>tS</span><span class=cF0><timeout_time;i++) {
|
||||
<a name="l111"></a> tmpw=</span><span class=cFB>ac</span><span class=cF0>.hash_table->body[i];
|
||||
<a name="l112"></a> </span><span class=cF1>while</span><span class=cF0> (tmpw) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l113"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>MemCmp</span><span class=cF7>(</span><span class=cFB>ac</span><span class=cF0>.cur_word,tmpw->str,</span><span class=cF5>StrLen</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.cur_word)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l114"></a> </span><span class=cF5>ACFillInAdd</span><span class=cF0>(tmpw);
|
||||
<a name="l115"></a> tmpw=tmpw->next;
|
||||
<a name="l116"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l117"></a> }
|
||||
<a name="l118"></a> </span><span class=cF5>ACDocRst</span><span class=cF0>(51,13);
|
||||
<a name="l119"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>ac</span><span class=cF0>.cur_word && *</span><span class=cFB>ac</span><span class=cF0>.cur_word) {
|
||||
<a name="l120"></a> </span><span class=cF6>"$PURPLE$Word:%s$FG$\n"</span><span class=cF0>,</span><span class=cFB>ac</span><span class=cF0>.cur_word;
|
||||
<a name="l121"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>ac</span><span class=cF0>.num_fillins;i++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l122"></a> st=</span><span class=cFB>ac</span><span class=cF0>.fillin_matches[i]->str;
|
||||
<a name="l123"></a> </span><span class=cF6>"$GREEN$F%02d$FG$ "</span><span class=cF0>,i+1;
|
||||
<a name="l124"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l125"></a> </span><span class=cF7>(</span><span class=cF0>tmph=</span><span class=cF5>HashFind</span><span class=cF0>(st,focus_task->hash_table,</span><span class=cF3>HTG_SRC_SYM</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l126"></a> tmph->src_link) {
|
||||
<a name="l127"></a> </span><span class=cF1>if</span><span class=cF0> (tmph->type&</span><span class=cF3>HTF_PUBLIC</span><span class=cF0>)
|
||||
<a name="l128"></a> </span><span class=cF6>"$RED$"</span><span class=cF0>;
|
||||
<a name="l129"></a> </span><span class=cF6>"$TX+UL+L+PU,\"%$Q\",A=\"%s\"$$FG$\n"</span><span class=cF0>,st,tmph->src_link;
|
||||
<a name="l130"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l131"></a> </span><span class=cF6>"%s\n"</span><span class=cF0>,st;
|
||||
<a name="l132"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>acd</span><span class=cF0>.has_words)
|
||||
<a name="l134"></a> </span><span class=cF5>ACDDictWordsAdd</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.cur_word);
|
||||
<a name="l135"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF6>"::/Doc/StandBy.DD.Z"</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l136"></a> </span><span class=cF5>Type</span><span class=cF0>(</span><span class=cF6>"::/Doc/StandBy.DD.Z"</span><span class=cF0>,0);
|
||||
<a name="l137"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l138"></a> </span><span class=cF5>Free</span><span class=cF0>(src);
|
||||
<a name="l139"></a> </span><span class=cF5>Free</span><span class=cF0>(buf);
|
||||
<a name="l140"></a> </span><span class=cF5>Free</span><span class=cF0>(buf1);
|
||||
<a name="l141"></a>}
|
||||
<a name="l142"></a>
|
||||
<a name="l143"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACTaskNormal</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> sc,</span><span class=cF9>I64</span><span class=cF0> last_sc,
|
||||
<a name="l144"></a> </span><span class=cF9>CTask</span><span class=cF0> *focus_task,</span><span class=cF9>CTask</span><span class=cF0> *original_focus_task)
|
||||
<a name="l145"></a>{
|
||||
<a name="l146"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l147"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
|
||||
<a name="l148"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>doc=</span><span class=cF5>DocPut</span><span class=cF0>(focus_task)</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l149"></a> focus_task!=</span><span class=cF5>Fs</span><span class=cF0> && </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&focus_task->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l150"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l151"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0> && original_focus_task==</span><span class=cFB>sys_focus_task</span><span class=cF0> &&
|
||||
<a name="l152"></a> doc && doc==</span><span class=cF5>DocPut</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>doc_e=doc->cur_entry</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l153"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e==doc) doc_e=doc_e->last;
|
||||
<a name="l154"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e->last!=doc && </span><span class=cF7>(</span><span class=cF0>doc_e->type_u8==</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0> ||
|
||||
<a name="l155"></a> doc_e->type_u8==</span><span class=cF3>DOCT_SOFT_NEW_LINE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l156"></a> doc_e=doc_e->last;
|
||||
<a name="l157"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e->last->type_u8!=</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0> && doc_e->last!=doc)
|
||||
<a name="l158"></a> doc_e=doc_e->last;
|
||||
<a name="l159"></a> </span><span class=cF5>ACPutChoices</span><span class=cF0>(doc,doc_e,focus_task,</span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>sc!=last_sc</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l160"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l161"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l162"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l163"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l164"></a> </span><span class=cF5>WinZBufUpdate</span><span class=cF0>;
|
||||
<a name="l165"></a>}
|
||||
<a name="l166"></a>
|
||||
<a name="l167"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACTaskCtrl</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> sc,</span><span class=cF9>I64</span><span class=cF0> last_sc,
|
||||
<a name="l168"></a> </span><span class=cF9>CTask</span><span class=cF0> *focus_task,</span><span class=cF9>CTask</span><span class=cF0> *original_focus_task)
|
||||
<a name="l169"></a>{
|
||||
<a name="l170"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l171"></a> </span><span class=cF7>(</span><span class=cF0>focus_task->scroll_x || focus_task->scroll_y</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l172"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LBtr</span><span class=cF7>(</span><span class=cF0>&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l173"></a> </span><span class=cF5>WinZBufUpdate</span><span class=cF0>;
|
||||
<a name="l174"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l175"></a> </span><span class=cF1>if</span><span class=cF0> (sc!=last_sc) {
|
||||
<a name="l176"></a> </span><span class=cF1>if</span><span class=cF0> (sc&</span><span class=cF3>SCF_ALT</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l177"></a> </span><span class=cF5>ACDocRst</span><span class=cF0>(27,3);
|
||||
<a name="l178"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>original_focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l179"></a> !</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&original_focus_task->win_inhibit,</span><span class=cF3>WIf_SELF_KEY_DESC</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l180"></a> </span><span class=cF5>KeyMapFamily</span><span class=cF0>(original_focus_task,0,
|
||||
<a name="l181"></a> </span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>!(sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l182"></a> </span><span class=cF5>KeyMapCtrlAltFamily</span><span class=cF0>(
|
||||
<a name="l183"></a> </span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>!(sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l184"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>original_focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l185"></a> !</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&original_focus_task->win_inhibit,</span><span class=cF3>WIf_SELF_KEY_DESC</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l186"></a> </span><span class=cF5>ACDocRst</span><span class=cF0>(27,3);
|
||||
<a name="l187"></a> </span><span class=cF5>KeyMapFamily</span><span class=cF0>(original_focus_task,</span><span class=cF3>SCF_CTRL</span><span class=cF0>,
|
||||
<a name="l188"></a> </span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>!(sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l189"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l190"></a> }
|
||||
<a name="l191"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l192"></a> </span><span class=cF5>WinZBufUpdate</span><span class=cF0>;
|
||||
<a name="l193"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l194"></a>}
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACTaskAlt</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> sc,</span><span class=cF9>I64</span><span class=cF0> last_sc,
|
||||
<a name="l197"></a> </span><span class=cF9>CTask</span><span class=cF0> *,</span><span class=cF9>CTask</span><span class=cF0> *original_focus_task)
|
||||
<a name="l198"></a>{
|
||||
<a name="l199"></a> </span><span class=cF1>if</span><span class=cF0> (sc!=last_sc && </span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>original_focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l200"></a> !</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&original_focus_task->win_inhibit,</span><span class=cF3>WIf_SELF_KEY_DESC</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l201"></a> </span><span class=cF5>ACDocRst</span><span class=cF0>(27,3);
|
||||
<a name="l202"></a> </span><span class=cF5>KeyMapFamily</span><span class=cF0>(original_focus_task,</span><span class=cF3>SCF_ALT</span><span class=cF0>,
|
||||
<a name="l203"></a> </span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>!(sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF5>ToBool</span><span class=cF7>(</span><span class=cF0>sc&</span><span class=cF3>SCF_SHIFT</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l204"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l205"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l206"></a> </span><span class=cF5>WinZBufUpdate</span><span class=cF0>;
|
||||
<a name="l207"></a>}
|
||||
<a name="l208"></a>
|
||||
<a name="l209"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACTaskEndCB</span><span class=cF0>()
|
||||
<a name="l210"></a>{
|
||||
<a name="l211"></a> </span><span class=cFB>ac</span><span class=cF0>.task=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l212"></a> </span><span class=cF5>Exit</span><span class=cF0>;
|
||||
<a name="l213"></a>}
|
||||
<a name="l214"></a>
|
||||
<a name="l215"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ACTask</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0>)
|
||||
<a name="l216"></a>{
|
||||
<a name="l217"></a> </span><span class=cF9>CTask</span><span class=cF0> *focus_task,*original_focus_task;
|
||||
<a name="l218"></a> </span><span class=cF9>I64</span><span class=cF0> ch,scan_code=0,last_scan_code=0;
|
||||
<a name="l219"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l220"></a> </span><span class=cF5>Fs</span><span class=cF0>->task_end_cb=&</span><span class=cF5>ACTaskEndCB</span><span class=cF0>;
|
||||
<a name="l221"></a> </span><span class=cF5>DocTermNew</span><span class=cF0>;
|
||||
<a name="l222"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_SHOW</span><span class=cF0>);
|
||||
<a name="l223"></a> </span><span class=cF5>WinHorz</span><span class=cF0>(51,</span><span class=cF5>Fs</span><span class=cF0>->win_right);
|
||||
<a name="l224"></a> </span><span class=cF5>LBts</span><span class=cF0>(&</span><span class=cF5>Fs</span><span class=cF0>->display_flags,</span><span class=cF3>DISPLAYf_WIN_ON_TOP</span><span class=cF0>);
|
||||
<a name="l225"></a> </span><span class=cF5>Fs</span><span class=cF0>->win_inhibit=</span><span class=cF3>WIG_NO_FOCUS_TASK_DFT</span><span class=cF0>;
|
||||
<a name="l226"></a> </span><span class=cF5>Free</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.cur_word);
|
||||
<a name="l227"></a> </span><span class=cFB>ac</span><span class=cF0>.cur_word=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l228"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l229"></a> </span><span class=cF1>if</span><span class=cF0> (scan_code&</span><span class=cF7>(</span><span class=cF3>SCF_CTRL</span><span class=cF0>|</span><span class=cF3>SCF_ALT</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l230"></a> </span><span class=cF5>GetTSC</span><span class=cF0>></span><span class=cF5>KbdMsEvtTime</span><span class=cF0>+</span><span class=cFB>cnts</span><span class=cF0>.time_stamp_freq>>1) {
|
||||
<a name="l231"></a> last_scan_code=scan_code;
|
||||
<a name="l232"></a> scan_code=</span><span class=cFB>kbd</span><span class=cF0>.scan_code;
|
||||
<a name="l233"></a> }
|
||||
<a name="l234"></a> original_focus_task=focus_task=</span><span class=cFB>sys_focus_task</span><span class=cF0>;
|
||||
<a name="l235"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0> &&
|
||||
<a name="l236"></a> </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&focus_task->task_flags,</span><span class=cF3>TASKf_INPUT_FILTER_TASK</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l237"></a> focus_task=focus_task->parent_task;
|
||||
<a name="l238"></a> </span><span class=cF1>if</span><span class=cF0> (scan_code&</span><span class=cF3>SCF_CTRL</span><span class=cF0>)
|
||||
<a name="l239"></a> </span><span class=cF5>ACTaskCtrl</span><span class=cF0>(scan_code,last_scan_code,focus_task,original_focus_task);
|
||||
<a name="l240"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cF0>focus_task</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l241"></a> </span><span class=cF1>if</span><span class=cF0> (scan_code&</span><span class=cF3>SCF_ALT</span><span class=cF0>)
|
||||
<a name="l242"></a> </span><span class=cF5>ACTaskAlt</span><span class=cF0>(scan_code,last_scan_code,focus_task,original_focus_task);
|
||||
<a name="l243"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l244"></a> </span><span class=cF5>ACTaskNormal</span><span class=cF0>(scan_code,last_scan_code,focus_task,original_focus_task);
|
||||
<a name="l245"></a> }
|
||||
<a name="l246"></a> </span><span class=cF5>Sleep</span><span class=cF0>(333);
|
||||
<a name="l247"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>ScanMsg</span><span class=cF7>(</span><span class=cF0>&ch,,1<<</span><span class=cF3>MSG_KEY_DOWN</span><span class=cF7>)</span><span class=cF0> && </span><span class=cF7>(</span><span class=cF0>ch==</span><span class=cF3>CH_ESC</span><span class=cF0>||ch==</span><span class=cF3>CH_SHIFT_ESC</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l248"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l249"></a> doc=</span><span class=cF5>DocPut</span><span class=cF0>;
|
||||
<a name="l250"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l251"></a> </span><span class=cF1>if</span><span class=cF0> (doc->cur_entry->de_flags & </span><span class=cF3>DOCEF_LINK</span><span class=cF0>) {
|
||||
<a name="l252"></a> </span><span class=cF6>''</span><span class=cF0> </span><span class=cF3>CH_SPACE</span><span class=cF0>;
|
||||
<a name="l253"></a> doc->cur_entry=doc;
|
||||
<a name="l254"></a> }
|
||||
<a name="l255"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l256"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l257"></a>}
|
||||
<a name="l258"></a>
|
||||
<a name="l259"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>AutoComplete</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> val=</span><span class=cF3>OFF</span><span class=cF0>)
|
||||
<a name="l260"></a>{</span><span class=cF2>//Turn AutoComplete OFF or ON.</span><span class=cF0>
|
||||
<a name="l261"></a> </span><span class=cF1>Bool</span><span class=cF0> old_val=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l262"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>ac</span><span class=cF0>.flags,</span><span class=cF3>ACf_INIT_IN_PROGRESS</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l263"></a> </span><span class=cF5>Sleep</span><span class=cF0>(10);
|
||||
<a name="l264"></a> </span><span class=cF1>if</span><span class=cF0> (val) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l265"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_AUTO_COMPLETE</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l266"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cFB>ac</span><span class=cF0>.task</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l267"></a> old_val=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l268"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l269"></a> </span><span class=cFB>ac</span><span class=cF0>.task=</span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>ACTask</span><span class=cF0>,</span><span class=cF3>NULL</span><span class=cF0>,</span><span class=cF6>"AutoComplete"</span><span class=cF0>);
|
||||
<a name="l270"></a> </span><span class=cF5>TaskWait</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.task);
|
||||
<a name="l271"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l272"></a> </span><span class=cF5>WinToTop</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.task);
|
||||
<a name="l273"></a> }
|
||||
<a name="l274"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l275"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>TaskValidate</span><span class=cF7>(</span><span class=cFB>ac</span><span class=cF0>.task</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l276"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_run_level</span><span class=cF0>,</span><span class=cF3>RLf_AUTO_COMPLETE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l277"></a> old_val=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l278"></a> </span><span class=cF5>Kill</span><span class=cF0>(</span><span class=cFB>ac</span><span class=cF0>.task);
|
||||
<a name="l279"></a> </span><span class=cF5>DeathWait</span><span class=cF0>(&</span><span class=cFB>ac</span><span class=cF0>.task);
|
||||
<a name="l280"></a> }
|
||||
<a name="l281"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l282"></a> </span><span class=cF1>return</span><span class=cF0> old_val;
|
||||
<a name="l283"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
37
public/Wb/Adam/AutoComplete/MakeAC.HC.HTML
Executable file
37
public/Wb/Adam/AutoComplete/MakeAC.HC.HTML
Executable file
@ -0,0 +1,37 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF2>//See </span><a href="/Wb/Doc/AutoComplete.DD.HTML#l1"><span class=cF4>::/Doc/AutoComplete.DD</span></a><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF3>__DIR__</span><span class=cF0>);;
|
||||
<a name="l3"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"ACFill"</span><span class=cF0>
|
||||
<a name="l4"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"ACTask"</span><span class=cF0>
|
||||
<a name="l5"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"ACInit"</span><span class=cF0>
|
||||
<a name="l6"></a></span><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF6>".."</span><span class=cF0>);;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
103
public/Wb/Adam/CPURep.HC.HTML
Executable file
103
public/Wb/Adam/CPURep.HC.HTML
Executable file
@ -0,0 +1,103 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;Time/CPU Cycles;Processor"</span><span class=cF0>
|
||||
<a name="l2"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCPURep</span><span class=cF0>
|
||||
<a name="l3"></a>{
|
||||
<a name="l4"></a> </span><span class=cF1>Bool</span><span class=cF0> mp_start,mp_end;
|
||||
<a name="l5"></a> </span><span class=cF9>I64</span><span class=cF0> mp_not_done_flags,
|
||||
<a name="l6"></a> **swaps,
|
||||
<a name="l7"></a> **cycles;
|
||||
<a name="l8"></a>};
|
||||
<a name="l9"></a>
|
||||
<a name="l10"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MPCPURep</span><span class=cF0>(</span><span class=cF9>CCPURep</span><span class=cF0> *cr)
|
||||
<a name="l11"></a>{
|
||||
<a name="l12"></a> </span><span class=cF9>I64</span><span class=cF0> swaps=0,cycles_0,cycles_f;
|
||||
<a name="l13"></a> </span><span class=cF1>while</span><span class=cF0> (!cr->mp_start)
|
||||
<a name="l14"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l15"></a> cycles_0=</span><span class=cF5>GetTSC</span><span class=cF0>;
|
||||
<a name="l16"></a> </span><span class=cF1>while</span><span class=cF0> (!cr->mp_end) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l17"></a> swaps++;
|
||||
<a name="l18"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l19"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l20"></a> cycles_f=</span><span class=cF5>GetTSC</span><span class=cF0>;
|
||||
<a name="l21"></a> cr->swaps[</span><span class=cF5>Gs</span><span class=cF0>->num]=swaps;
|
||||
<a name="l22"></a> cr->cycles[</span><span class=cF5>Gs</span><span class=cF0>->num]=cycles_f-cycles_0;
|
||||
<a name="l23"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&cr->mp_not_done_flags,</span><span class=cF5>Gs</span><span class=cF0>->num);
|
||||
<a name="l24"></a>}
|
||||
<a name="l25"></a>
|
||||
<a name="l26"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>CPURep</span><span class=cF0>(</span><span class=cF1>Bool</span><span class=cF0> full=</span><span class=cF3>FALSE</span><span class=cF0>)
|
||||
<a name="l27"></a>{</span><span class=cF2>//Report number of cores and clock freq.</span><span class=cF0>
|
||||
<a name="l28"></a> </span><span class=cF9>I64</span><span class=cF0> i,total_swaps,total_cycles;
|
||||
<a name="l29"></a> </span><span class=cF1>F64</span><span class=cF0> t0,tf;
|
||||
<a name="l30"></a> </span><span class=cF9>CCPURep</span><span class=cF0> cr;
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (!full)
|
||||
<a name="l33"></a> </span><span class=cF6>"%03X Cores %6h?nHz\n"</span><span class=cF0>,</span><span class=cFB>mp_cnt</span><span class=cF0>,</span><span class=cF5>ToF64</span><span class=cF0>(</span><span class=cFB>cnts</span><span class=cF0>.time_stamp_freq);
|
||||
<a name="l34"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l35"></a> cr.swaps=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>I64</span><span class=cF7>)</span><span class=cF0>*</span><span class=cFB>mp_cnt</span><span class=cF0>);
|
||||
<a name="l36"></a> cr.cycles=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>I64</span><span class=cF7>)</span><span class=cF0>*</span><span class=cFB>mp_cnt</span><span class=cF0>);
|
||||
<a name="l37"></a> cr.mp_start=cr.mp_end=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l38"></a> cr.mp_not_done_flags=1<<</span><span class=cFB>mp_cnt</span><span class=cF0>-1;
|
||||
<a name="l39"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++)
|
||||
<a name="l40"></a> </span><span class=cF5>Spawn</span><span class=cF0>(&</span><span class=cF5>MPCPURep</span><span class=cF0>,&cr,</span><span class=cF3>NULL</span><span class=cF0>,i);
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a> t0=</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l43"></a> cr.mp_start=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l44"></a> </span><span class=cF5>Sleep</span><span class=cF0>(2000);
|
||||
<a name="l45"></a> cr.mp_end=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l46"></a> </span><span class=cF1>while</span><span class=cF0> (cr.mp_not_done_flags)
|
||||
<a name="l47"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l48"></a> tf=</span><span class=cF5>tS</span><span class=cF0>;
|
||||
<a name="l49"></a>
|
||||
<a name="l50"></a> </span><span class=cF6>"\n%03X Cores %6h?nHz\n"</span><span class=cF0>,</span><span class=cFB>mp_cnt</span><span class=cF0>,</span><span class=cF5>ToF64</span><span class=cF0>(</span><span class=cFB>cnts</span><span class=cF0>.time_stamp_freq);
|
||||
<a name="l51"></a> </span><span class=cF6>"\n Context\n"</span><span class=cF0>
|
||||
<a name="l52"></a> </span><span class=cF6>"CPU Swaps/s Cycles\n"</span><span class=cF0>
|
||||
<a name="l53"></a> </span><span class=cF6>"--- ------------- -----------------\n"</span><span class=cF0>;
|
||||
<a name="l54"></a> total_swaps=0;
|
||||
<a name="l55"></a> total_cycles=0;
|
||||
<a name="l56"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<</span><span class=cFB>mp_cnt</span><span class=cF0>;i++) {
|
||||
<a name="l57"></a> </span><span class=cF6>" %02X %13,d %17,d\n"</span><span class=cF0>,i,
|
||||
<a name="l58"></a> </span><span class=cF5>ToI64</span><span class=cF0>(cr.swaps[i]/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>),</span><span class=cF5>ToI64</span><span class=cF0>(cr.cycles[i]/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l59"></a> total_swaps+=cr.swaps[i];
|
||||
<a name="l60"></a> total_cycles+=cr.cycles[i];
|
||||
<a name="l61"></a> }
|
||||
<a name="l62"></a> </span><span class=cF6>"--- ------------- -----------------\n"</span><span class=cF0>;
|
||||
<a name="l63"></a> </span><span class=cF6>"%03X %13,d %17,d\n"</span><span class=cF0>,i,
|
||||
<a name="l64"></a> </span><span class=cF5>ToI64</span><span class=cF0>(total_swaps/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>),</span><span class=cF5>ToI64</span><span class=cF0>(total_cycles/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l65"></a> </span><span class=cF6>"Avg %13,d %17,d\n\n"</span><span class=cF0>,
|
||||
<a name="l66"></a> </span><span class=cF5>ToI64</span><span class=cF0>(total_swaps/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>/i),</span><span class=cF5>ToI64</span><span class=cF0>(total_cycles/</span><span class=cF7>(</span><span class=cF0>tf-t0</span><span class=cF7>)</span><span class=cF0>/i);
|
||||
<a name="l67"></a> </span><span class=cF6>"Avg Cycles/Swap: %12.6f\n"</span><span class=cF0>,</span><span class=cF5>ToF64</span><span class=cF0>(total_cycles)/total_swaps;
|
||||
<a name="l68"></a> </span><span class=cF6>"Avg Time/Swap : %12.6fns\n\n"</span><span class=cF0>,(tf-t0)*1000000000.0*i/total_swaps;
|
||||
<a name="l69"></a> </span><span class=cF5>Free</span><span class=cF0>(cr.swaps);
|
||||
<a name="l70"></a> </span><span class=cF5>Free</span><span class=cF0>(cr.cycles);
|
||||
<a name="l71"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l72"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
419
public/Wb/Adam/Ctrls/CtrlsA.HC.HTML
Executable file
419
public/Wb/Adam/Ctrls/CtrlsA.HC.HTML
Executable file
@ -0,0 +1,419 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0> *</span><span class=cF5>CtrlFindUnique</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *haystack_task,</span><span class=cF9>I64</span><span class=cF0> needle_type)
|
||||
<a name="l2"></a>{</span><span class=cF2>//Find task ctrl given </span><a href="/Wb/Kernel/KernelA.HH.HTML#l3041"><span class=cF4>ctrl_type</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l3"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l4"></a> c=haystack_task->next_ctrl;
|
||||
<a name="l5"></a> </span><span class=cF1>while</span><span class=cF0> (c!=&haystack_task->next_ctrl) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l6"></a> </span><span class=cF1>if</span><span class=cF0> (c->type==needle_type)
|
||||
<a name="l7"></a> </span><span class=cF1>return</span><span class=cF0> c;
|
||||
<a name="l8"></a> c=c->next;
|
||||
<a name="l9"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l10"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l11"></a>}
|
||||
<a name="l12"></a>
|
||||
<a name="l13"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>CtrlsUpdate</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l14"></a>{
|
||||
<a name="l15"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l16"></a> c=task->next_ctrl;
|
||||
<a name="l17"></a> </span><span class=cF1>while</span><span class=cF0> (c!=&task->next_ctrl) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l18"></a> </span><span class=cF1>if</span><span class=cF0> (c->update_derived_vals)
|
||||
<a name="l19"></a> (*c->update_derived_vals)(c);
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_BORDER</span><span class=cF0>) {
|
||||
<a name="l21"></a> c->scrn_left =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+task->pix_left+c->left-</span><span class=cF3>FONT_WIDTH</span><span class=cF0>;
|
||||
<a name="l22"></a> c->scrn_right =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+task->pix_left+c->right-</span><span class=cF3>FONT_WIDTH</span><span class=cF0>;
|
||||
<a name="l23"></a> c->scrn_top =</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+task->pix_top+c->top-</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;
|
||||
<a name="l24"></a> c->scrn_bottom=</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+task->pix_top+c->bottom-</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;
|
||||
<a name="l25"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l26"></a> c->scrn_left =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+task->pix_left+c->left;
|
||||
<a name="l27"></a> c->scrn_right =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+task->pix_left+c->right;
|
||||
<a name="l28"></a> c->scrn_top =</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+task->pix_top+c->top;
|
||||
<a name="l29"></a> c->scrn_bottom=</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+task->pix_top+c->bottom;
|
||||
<a name="l30"></a> }
|
||||
<a name="l31"></a> c=c->next;
|
||||
<a name="l32"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l33"></a>}
|
||||
<a name="l34"></a>
|
||||
<a name="l35"></a></span><span class=cFB>fp_update_ctrls</span><span class=cF0>=&</span><span class=cF5>CtrlsUpdate</span><span class=cF0>;
|
||||
<a name="l36"></a>
|
||||
<a name="l37"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>CtrlInsideRect</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y)
|
||||
<a name="l38"></a>{</span><span class=cF2>//scrn coordinates</span><span class=cF0>
|
||||
<a name="l39"></a> </span><span class=cF1>if</span><span class=cF0> (c->scrn_left<=x<=c->scrn_right &&
|
||||
<a name="l40"></a> c->scrn_top<=y<=c->scrn_bottom)
|
||||
<a name="l41"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l42"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l43"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l44"></a>}
|
||||
<a name="l45"></a>
|
||||
<a name="l46"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>Bool</span><span class=cF0> </span><span class=cF5>CtrlInside</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y)
|
||||
<a name="l47"></a>{</span><span class=cF2>//Is x,y inside a ctrl?</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l49"></a> </span><span class=cF1>if</span><span class=cF0> (c->inside_ctrl)
|
||||
<a name="l50"></a> </span><span class=cF1>return</span><span class=cF0> (*c->inside_ctrl)(c,x,y);
|
||||
<a name="l51"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l52"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF5>CtrlInsideRect</span><span class=cF0>(c,x,y);
|
||||
<a name="l53"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l54"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l55"></a>}
|
||||
<a name="l56"></a>
|
||||
<a name="l57"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawCtrls</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l58"></a>{
|
||||
<a name="l59"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l60"></a> </span><span class=cF9>CDC</span><span class=cF0> *dc=</span><span class=cF5>DCAlias</span><span class=cF0>(</span><span class=cFB>gr</span><span class=cF0>.dc2,task);
|
||||
<a name="l61"></a> c=task->next_ctrl;
|
||||
<a name="l62"></a> </span><span class=cF1>while</span><span class=cF0> (c!=&task->next_ctrl) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l63"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>) {
|
||||
<a name="l64"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_BORDER</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l65"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&task->display_flags,</span><span class=cF3>DISPLAYf_NO_BORDER</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l66"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l67"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l68"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&task->task_flags,</span><span class=cF3>TASKf_TASK_LOCK</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l69"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l70"></a>
|
||||
<a name="l71"></a> task->win_left--; </span><span class=cF2>//Allow drawing on border</span><span class=cF0>
|
||||
<a name="l72"></a> task->win_right++;
|
||||
<a name="l73"></a> task->win_top--;
|
||||
<a name="l74"></a> task->win_bottom++;
|
||||
<a name="l75"></a> </span><span class=cF5>WinDerivedValsUpdate</span><span class=cF0>(task);
|
||||
<a name="l76"></a>
|
||||
<a name="l77"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&task->task_flags,</span><span class=cF3>TASKf_TASK_LOCK</span><span class=cF0>);
|
||||
<a name="l78"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l79"></a>
|
||||
<a name="l80"></a> </span><span class=cF1>if</span><span class=cF0> (c->draw_it)
|
||||
<a name="l81"></a> (*c->draw_it)(dc,c);
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a> </span><span class=cF1>PUSHFD</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF1>CLI</span><span class=cF0>
|
||||
<a name="l85"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&task->task_flags,</span><span class=cF3>TASKf_TASK_LOCK</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l86"></a> </span><span class=cF1>PAUSE</span><span class=cF0>
|
||||
<a name="l87"></a>
|
||||
<a name="l88"></a> task->win_left++;
|
||||
<a name="l89"></a> task->win_right--;
|
||||
<a name="l90"></a> task->win_top++;
|
||||
<a name="l91"></a> task->win_bottom--;
|
||||
<a name="l92"></a> </span><span class=cF5>WinDerivedValsUpdate</span><span class=cF0>(task);
|
||||
<a name="l93"></a>
|
||||
<a name="l94"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&task->task_flags,</span><span class=cF3>TASKf_TASK_LOCK</span><span class=cF0>);
|
||||
<a name="l95"></a> </span><span class=cF1>POPFD</span><span class=cF0>
|
||||
<a name="l96"></a> }
|
||||
<a name="l97"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l98"></a> </span><span class=cF1>if</span><span class=cF0> (c->draw_it)
|
||||
<a name="l99"></a> (*c->draw_it)(dc,c);
|
||||
<a name="l100"></a> }
|
||||
<a name="l101"></a> c=c->next;
|
||||
<a name="l102"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l103"></a> </span><span class=cF5>DCDel</span><span class=cF0>(dc);
|
||||
<a name="l104"></a>}
|
||||
<a name="l105"></a>
|
||||
<a name="l106"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0> 8
|
||||
<a name="l107"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0> 4
|
||||
<a name="l108"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawWinScroll</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc,</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l109"></a>{
|
||||
<a name="l110"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> *s=c->state;
|
||||
<a name="l111"></a>
|
||||
<a name="l112"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>)
|
||||
<a name="l113"></a> dc->color=s->color>>4;
|
||||
<a name="l114"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l115"></a> dc->color=s->color&0xF;
|
||||
<a name="l116"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,c->left,c->top,c->right-c->left+1,c->bottom-c->top+1);
|
||||
<a name="l117"></a>
|
||||
<a name="l118"></a> </span><span class=cF1>if</span><span class=cF0> (c->flags&</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>)
|
||||
<a name="l119"></a> dc->color=s->color&0xF;
|
||||
<a name="l120"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l121"></a> dc->color=s->color>>4;
|
||||
<a name="l122"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,c->left+2,c->top+2,c->right-c->left+1-4,c->bottom-c->top+1-4);
|
||||
<a name="l123"></a>}
|
||||
<a name="l124"></a>
|
||||
<a name="l125"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinDerivedScrollValsUpdate</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l126"></a>{
|
||||
<a name="l127"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> *s=c->state;
|
||||
<a name="l128"></a> </span><span class=cF9>I64</span><span class=cF0> range;
|
||||
<a name="l129"></a> </span><span class=cF1>if</span><span class=cF0> (s->max<s->min) s->max=s->min;
|
||||
<a name="l130"></a> </span><span class=cF1>if</span><span class=cF0> (s->pos<s->min) s->pos=s->min;
|
||||
<a name="l131"></a> </span><span class=cF1>if</span><span class=cF0> (s->pos>s->max) s->pos=s->max;
|
||||
<a name="l132"></a> s->color=c->win_task->border_attr&0xF^0xF+
|
||||
<a name="l133"></a> (c->win_task->border_attr&0xF)<<4;
|
||||
<a name="l134"></a> range=s->max-s->min;
|
||||
<a name="l135"></a> </span><span class=cF1>if</span><span class=cF0> (!range) range=1;
|
||||
<a name="l136"></a> </span><span class=cF1>switch</span><span class=cF0> (c->type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l137"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CTRLT_WIN_HSCROLL</span><span class=cF0>:
|
||||
<a name="l138"></a> c->left =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+</span><span class=cF3>FONT_WIDTH</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>+
|
||||
<a name="l139"></a> (s->pos-s->min)*(c->win_task->pix_width+2*</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>
|
||||
<a name="l140"></a> -</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>)/range;
|
||||
<a name="l141"></a> c->right =c->left+</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>-1;
|
||||
<a name="l142"></a> c->top =</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>+
|
||||
<a name="l143"></a> (</span><span class=cF3>FONT_WIDTH</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>)/2+c->win_task->pix_height;
|
||||
<a name="l144"></a> c->bottom=c->top+</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>-1;
|
||||
<a name="l145"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l146"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CTRLT_WIN_VSCROLL</span><span class=cF0>:
|
||||
<a name="l147"></a> c->left =</span><span class=cFB>gr</span><span class=cF0>.pan_text_x+</span><span class=cF3>FONT_WIDTH</span><span class=cF0>+
|
||||
<a name="l148"></a> (</span><span class=cF3>FONT_WIDTH</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>)/2+c->win_task->pix_width;
|
||||
<a name="l149"></a> c->right =c->left+</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>-1;
|
||||
<a name="l150"></a> c->top =</span><span class=cFB>gr</span><span class=cF0>.pan_text_y+</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>+
|
||||
<a name="l151"></a> (s->pos-s->min)*(c->win_task->pix_height+
|
||||
<a name="l152"></a> 2*</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>)/range;
|
||||
<a name="l153"></a> c->bottom=c->top+</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>-1;
|
||||
<a name="l154"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l155"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l156"></a>}
|
||||
<a name="l157"></a>
|
||||
<a name="l158"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LeftClickHWinScroll</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> down)
|
||||
<a name="l159"></a>{
|
||||
<a name="l160"></a> </span><span class=cF9>CTask</span><span class=cF0> *task=c->win_task;
|
||||
<a name="l161"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> *s=c->state;
|
||||
<a name="l162"></a> </span><span class=cF9>I64</span><span class=cF0> range=task->pix_width+2*</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>;
|
||||
<a name="l163"></a> </span><span class=cF5>LBts</span><span class=cF0>(&s->flags,</span><span class=cF3>WSSf_SET_TO_POS</span><span class=cF0>);
|
||||
<a name="l164"></a> s->pos=(</span><span class=cF7>(</span><span class=cF0>x-(</span><span class=cF3>FONT_WIDTH</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>
|
||||
<a name="l165"></a> *</span><span class=cF7>(</span><span class=cF0>s->max-s->min+1</span><span class=cF7>)</span><span class=cF0>+range/2)/range+s->min;
|
||||
<a name="l166"></a> </span><span class=cF1>if</span><span class=cF0> (down)
|
||||
<a name="l167"></a> c->flags|=</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>;
|
||||
<a name="l168"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l169"></a> c->flags&=~</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>;
|
||||
<a name="l170"></a> </span><span class=cF1>if</span><span class=cF0> (c->update_derived_vals)
|
||||
<a name="l171"></a> (*c->update_derived_vals)(c);
|
||||
<a name="l172"></a>}
|
||||
<a name="l173"></a>
|
||||
<a name="l174"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LeftClickVWinScroll</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0> y,</span><span class=cF1>Bool</span><span class=cF0> down)
|
||||
<a name="l175"></a>{
|
||||
<a name="l176"></a> </span><span class=cF9>CTask</span><span class=cF0> *task=c->win_task;
|
||||
<a name="l177"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> *s=c->state;
|
||||
<a name="l178"></a> </span><span class=cF9>I64</span><span class=cF0> range=task->pix_height+2*</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_SIZE</span><span class=cF0>;
|
||||
<a name="l179"></a> </span><span class=cF5>LBts</span><span class=cF0>(&s->flags,</span><span class=cF3>WSSf_SET_TO_POS</span><span class=cF0>);
|
||||
<a name="l180"></a> s->pos=(</span><span class=cF7>(</span><span class=cF0>y-(</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>-</span><span class=cF3>WIN_SCROLL_BORDER_BONUS</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>
|
||||
<a name="l181"></a> *</span><span class=cF7>(</span><span class=cF0>s->max-s->min+1</span><span class=cF7>)</span><span class=cF0>+range/2)/range+s->min;
|
||||
<a name="l182"></a> </span><span class=cF1>if</span><span class=cF0> (down)
|
||||
<a name="l183"></a> c->flags|=</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>;
|
||||
<a name="l184"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l185"></a> c->flags&=~</span><span class=cF3>CTRLF_CLICKED</span><span class=cF0>;
|
||||
<a name="l186"></a> </span><span class=cF1>if</span><span class=cF0> (c->update_derived_vals)
|
||||
<a name="l187"></a> (*c->update_derived_vals)(c);
|
||||
<a name="l188"></a>}
|
||||
<a name="l189"></a>
|
||||
<a name="l190"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WheelChangeWinScroll</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> delta)
|
||||
<a name="l191"></a>{
|
||||
<a name="l192"></a> </span><span class=cF9>CWinScroll</span><span class=cF0> *s=c->state;
|
||||
<a name="l193"></a> </span><span class=cF5>LBts</span><span class=cF0>(&s->flags,</span><span class=cF3>WSSf_SET_TO_POS</span><span class=cF0>);
|
||||
<a name="l194"></a> s->pos+=delta;
|
||||
<a name="l195"></a> </span><span class=cF1>if</span><span class=cF0> (c->update_derived_vals)
|
||||
<a name="l196"></a> (*c->update_derived_vals)(c);
|
||||
<a name="l197"></a>}
|
||||
<a name="l198"></a>
|
||||
<a name="l199"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>WinScrollsInit</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task)
|
||||
<a name="l200"></a>{
|
||||
<a name="l201"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l202"></a>
|
||||
<a name="l203"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>CtrlFindUnique</span><span class=cF7>(</span><span class=cF0>task,</span><span class=cF3>CTRLT_WIN_HSCROLL</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l204"></a> c=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrl</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l205"></a> c->win_task=task;
|
||||
<a name="l206"></a> c->flags=</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>|</span><span class=cF3>CTRLF_BORDER</span><span class=cF0>|</span><span class=cF3>CTRLF_CAPTURE_LEFT_MS</span><span class=cF0>;
|
||||
<a name="l207"></a> c->type=</span><span class=cF3>CTRLT_WIN_HSCROLL</span><span class=cF0>;
|
||||
<a name="l208"></a> c->state=&task->horz_scroll;
|
||||
<a name="l209"></a> c->update_derived_vals=&</span><span class=cF5>WinDerivedScrollValsUpdate</span><span class=cF0>;
|
||||
<a name="l210"></a> c->draw_it=&</span><span class=cF5>DrawWinScroll</span><span class=cF0>;
|
||||
<a name="l211"></a> c->left_click=&</span><span class=cF5>LeftClickHWinScroll</span><span class=cF0>;
|
||||
<a name="l212"></a> </span><span class=cF5>QueIns</span><span class=cF0>(c,task->last_ctrl);
|
||||
<a name="l213"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l214"></a>
|
||||
<a name="l215"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>CtrlFindUnique</span><span class=cF7>(</span><span class=cF0>task,</span><span class=cF3>CTRLT_WIN_VSCROLL</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l216"></a> c=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrl</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l217"></a> c->win_task=task;
|
||||
<a name="l218"></a> c->flags=</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>|</span><span class=cF3>CTRLF_BORDER</span><span class=cF0>|</span><span class=cF3>CTRLF_CAPTURE_LEFT_MS</span><span class=cF0>;
|
||||
<a name="l219"></a> c->type=</span><span class=cF3>CTRLT_WIN_VSCROLL</span><span class=cF0>;
|
||||
<a name="l220"></a> c->state=&task->vert_scroll;
|
||||
<a name="l221"></a> c->update_derived_vals=&</span><span class=cF5>WinDerivedScrollValsUpdate</span><span class=cF0>;
|
||||
<a name="l222"></a> c->draw_it=&</span><span class=cF5>DrawWinScroll</span><span class=cF0>;
|
||||
<a name="l223"></a> c->left_click=&</span><span class=cF5>LeftClickVWinScroll</span><span class=cF0>;
|
||||
<a name="l224"></a> c->wheel_chg=&</span><span class=cF5>WheelChangeWinScroll</span><span class=cF0>;
|
||||
<a name="l225"></a> </span><span class=cF5>QueIns</span><span class=cF0>(c,task->last_ctrl);
|
||||
<a name="l226"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l227"></a> </span><span class=cF5>TaskDerivedValsUpdate</span><span class=cF0>(task);
|
||||
<a name="l228"></a>}
|
||||
<a name="l229"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0> 22
|
||||
<a name="l230"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0> 48
|
||||
<a name="l231"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VIEWANGLES_BORDER</span><span class=cF0> 2
|
||||
<a name="l232"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>VIEWANGLES_SNAP</span><span class=cF0> 2
|
||||
<a name="l233"></a>
|
||||
<a name="l234"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawViewAnglesCtrl</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc,</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l235"></a>{
|
||||
<a name="l236"></a> </span><span class=cF9>I64</span><span class=cF0> i,j;
|
||||
<a name="l237"></a> </span><span class=cF9>CViewAngles</span><span class=cF0> *s=c->state;
|
||||
<a name="l238"></a>
|
||||
<a name="l239"></a> dc->color=s->cbd;
|
||||
<a name="l240"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc, c->left,c->top,</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*4+3,
|
||||
<a name="l241"></a> </span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*2+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>);
|
||||
<a name="l242"></a> dc->color=s->cbg;
|
||||
<a name="l243"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc, c->left+</span><span class=cF3>VIEWANGLES_BORDER</span><span class=cF0>,c->top+</span><span class=cF3>VIEWANGLES_BORDER</span><span class=cF0>,
|
||||
<a name="l244"></a> </span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*4+3-2*</span><span class=cF3>VIEWANGLES_BORDER</span><span class=cF0>,
|
||||
<a name="l245"></a> </span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*2+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-2*</span><span class=cF3>VIEWANGLES_BORDER</span><span class=cF0>);
|
||||
<a name="l246"></a> dc->color=s->cfg;
|
||||
<a name="l247"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>,
|
||||
<a name="l248"></a> c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+
|
||||
<a name="l249"></a> </span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l250"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>,
|
||||
<a name="l251"></a> c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+
|
||||
<a name="l252"></a> </span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l253"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>,
|
||||
<a name="l254"></a> c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2,c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+
|
||||
<a name="l255"></a> </span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l256"></a> </span><span class=cF1>for</span><span class=cF0> (i=1;i<</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>+1;i+=2*</span><span class=cF3>VIEWANGLES_SNAP</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l257"></a> j=2-i/3&1;
|
||||
<a name="l258"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-j,c->bottom-</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i,
|
||||
<a name="l259"></a> c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+j,c->bottom
|
||||
<a name="l260"></a> -</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i);
|
||||
<a name="l261"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1-j,c->bottom-</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i,
|
||||
<a name="l262"></a> c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1+j,c->bottom
|
||||
<a name="l263"></a> -</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i);
|
||||
<a name="l264"></a> </span><span class=cF5>GrLine</span><span class=cF0>(dc,c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2-j,c->bottom-</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i,
|
||||
<a name="l265"></a> c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2+j,c->bottom
|
||||
<a name="l266"></a> -</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-i);
|
||||
<a name="l267"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l268"></a>
|
||||
<a name="l269"></a> dc->color=s->cx;
|
||||
<a name="l270"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l271"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-</span><span class=cF7>(</span><span class=cF0>1+</span><span class=cF3>FONT_HEIGHT</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"X"</span><span class=cF0>);
|
||||
<a name="l272"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-3*</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l273"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>+3,
|
||||
<a name="l274"></a> </span><span class=cF6>"%3d"</span><span class=cF0>,s->sx*360/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>);
|
||||
<a name="l275"></a> i=c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>;
|
||||
<a name="l276"></a> </span><span class=cF1>if</span><span class=cF0> (s->sx></span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2)
|
||||
<a name="l277"></a> j=-</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2+s->sx;
|
||||
<a name="l278"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l279"></a> j=s->sx+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2;
|
||||
<a name="l280"></a> j=c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1-j;
|
||||
<a name="l281"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-3,j-2,7,5);
|
||||
<a name="l282"></a> dc->color=s->cx^8;
|
||||
<a name="l283"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-2,j-1,5,3);
|
||||
<a name="l284"></a>
|
||||
<a name="l285"></a> dc->color=s->cy;
|
||||
<a name="l286"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1-</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l287"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-</span><span class=cF7>(</span><span class=cF0>1+</span><span class=cF3>FONT_HEIGHT</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"Y"</span><span class=cF0>);
|
||||
<a name="l288"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1-3*</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l289"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>+3,
|
||||
<a name="l290"></a> </span><span class=cF6>"%3d"</span><span class=cF0>,s->sy*360/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>);
|
||||
<a name="l291"></a> i=c->left+2*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+1;
|
||||
<a name="l292"></a> </span><span class=cF1>if</span><span class=cF0> (s->sy></span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2)
|
||||
<a name="l293"></a> j=-</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2+s->sy;
|
||||
<a name="l294"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l295"></a> j=s->sy+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2;
|
||||
<a name="l296"></a> j=c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1-j;
|
||||
<a name="l297"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-3,j-2,7,5);
|
||||
<a name="l298"></a> dc->color=s->cy^8;
|
||||
<a name="l299"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-2,j-1,5,3);
|
||||
<a name="l300"></a>
|
||||
<a name="l301"></a> dc->color=s->cz;
|
||||
<a name="l302"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2-</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l303"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>-</span><span class=cF7>(</span><span class=cF0>1+</span><span class=cF3>FONT_HEIGHT</span><span class=cF7>)</span><span class=cF0>,</span><span class=cF6>"Z"</span><span class=cF0>);
|
||||
<a name="l304"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2-3*</span><span class=cF3>FONT_WIDTH</span><span class=cF0>/2,
|
||||
<a name="l305"></a> c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>+3,
|
||||
<a name="l306"></a> </span><span class=cF6>"%3d"</span><span class=cF0>,s->sz*360/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>);
|
||||
<a name="l307"></a> i=c->left+3*</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+2;
|
||||
<a name="l308"></a> </span><span class=cF1>if</span><span class=cF0> (s->sz></span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2)
|
||||
<a name="l309"></a> j=-</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2+s->sz;
|
||||
<a name="l310"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l311"></a> j=s->sz+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2;
|
||||
<a name="l312"></a> j=c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1-j;
|
||||
<a name="l313"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-3,j-2,7,5);
|
||||
<a name="l314"></a> dc->color=s->cz^8;
|
||||
<a name="l315"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,i-2,j-1,5,3);
|
||||
<a name="l316"></a>}
|
||||
<a name="l317"></a>
|
||||
<a name="l318"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>UpdateDerivedViewAnglesCtrl</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l319"></a>{
|
||||
<a name="l320"></a> </span><span class=cF9>CViewAngles</span><span class=cF0> *s=c->state;
|
||||
<a name="l321"></a> c->left=c->win_task->pix_width-(</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*4+3);
|
||||
<a name="l322"></a> c->right=c->left+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*4+3;
|
||||
<a name="l323"></a> c->top=c->win_task->pix_height-(</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*2+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>);
|
||||
<a name="l324"></a> c->bottom=c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF0>*2+</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>;
|
||||
<a name="l325"></a> s->sx=</span><span class=cF5>ClampI64</span><span class=cF0>(</span><span class=cF5>RoundI64</span><span class=cF7>(</span><span class=cF0>s->sx,</span><span class=cF3>VIEWANGLES_SNAP</span><span class=cF7>)</span><span class=cF0>,0,</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l326"></a> s->sy=</span><span class=cF5>ClampI64</span><span class=cF0>(</span><span class=cF5>RoundI64</span><span class=cF7>(</span><span class=cF0>s->sy,</span><span class=cF3>VIEWANGLES_SNAP</span><span class=cF7>)</span><span class=cF0>,0,</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l327"></a> s->sz=</span><span class=cF5>ClampI64</span><span class=cF0>(</span><span class=cF5>RoundI64</span><span class=cF7>(</span><span class=cF0>s->sz,</span><span class=cF3>VIEWANGLES_SNAP</span><span class=cF7>)</span><span class=cF0>,0,</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1);
|
||||
<a name="l328"></a> s->ax=2*</span><span class=cF3>pi</span><span class=cF0>*s->sx/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>;
|
||||
<a name="l329"></a> s->ay=2*</span><span class=cF3>pi</span><span class=cF0>*s->sy/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>;
|
||||
<a name="l330"></a> s->az=2*</span><span class=cF3>pi</span><span class=cF0>*s->sz/</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>;
|
||||
<a name="l331"></a>}
|
||||
<a name="l332"></a>
|
||||
<a name="l333"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LeftClickViewAngles</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y,</span><span class=cF1>Bool</span><span class=cF0>)
|
||||
<a name="l334"></a>{
|
||||
<a name="l335"></a> </span><span class=cF9>CViewAngles</span><span class=cF0> *s=c->state;
|
||||
<a name="l336"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l337"></a> i=</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>-1-(y-</span><span class=cF7>(</span><span class=cF0>c->top+</span><span class=cF3>VIEWANGLES_SPACING</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l338"></a> </span><span class=cF1>if</span><span class=cF0> (i>=</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2)
|
||||
<a name="l339"></a> i-=</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2;
|
||||
<a name="l340"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l341"></a> i+=</span><span class=cF3>VIEWANGLES_RANGE</span><span class=cF0>/2;
|
||||
<a name="l342"></a> </span><span class=cF1>if</span><span class=cF0> (x<c->left+</span><span class=cF7>(</span><span class=cF0>c->right-c->left</span><span class=cF7>)</span><span class=cF0>/3)
|
||||
<a name="l343"></a> s->sx=i;
|
||||
<a name="l344"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (x<c->left+2*</span><span class=cF7>(</span><span class=cF0>c->right-c->left</span><span class=cF7>)</span><span class=cF0>/3)
|
||||
<a name="l345"></a> s->sy=i;
|
||||
<a name="l346"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l347"></a> s->sz=i;
|
||||
<a name="l348"></a> </span><span class=cF1>if</span><span class=cF0> (c->update_derived_vals)
|
||||
<a name="l349"></a> (*c->update_derived_vals)(c);
|
||||
<a name="l350"></a>}
|
||||
<a name="l351"></a>
|
||||
<a name="l352"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0> *</span><span class=cF5>ViewAnglesNew</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l353"></a>{</span><span class=cF2>//Create view angle ctrl. See </span><a href="/Wb/Demo/Graphics/Shading.HC.HTML#l1"><span class=cF4>::/Demo/Graphics/Shading.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l354"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l355"></a> </span><span class=cF9>CViewAngles</span><span class=cF0> *s;
|
||||
<a name="l356"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l357"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>c=</span><span class=cF5>CtrlFindUnique</span><span class=cF0>(task,</span><span class=cF3>CTRLT_VIEWING_ANGLES</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l358"></a> s=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CViewAngles</span><span class=cF7>)</span><span class=cF0>,task);
|
||||
<a name="l359"></a> c=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrl</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l360"></a> s->cbd=</span><span class=cF3>BLUE</span><span class=cF0>;
|
||||
<a name="l361"></a> s->cbg=</span><span class=cF3>LTBLUE</span><span class=cF0>;
|
||||
<a name="l362"></a> s->cfg=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l363"></a> s->cx=</span><span class=cF3>LTGREEN</span><span class=cF0>;
|
||||
<a name="l364"></a> s->cy=</span><span class=cF3>GREEN</span><span class=cF0>;
|
||||
<a name="l365"></a> s->cz=</span><span class=cF3>LTGREEN</span><span class=cF0>;
|
||||
<a name="l366"></a> c->win_task=task;
|
||||
<a name="l367"></a> c->flags=</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>|</span><span class=cF3>CTRLF_CAPTURE_LEFT_MS</span><span class=cF0>;
|
||||
<a name="l368"></a> c->type=</span><span class=cF3>CTRLT_VIEWING_ANGLES</span><span class=cF0>;
|
||||
<a name="l369"></a> c->state=s;
|
||||
<a name="l370"></a> c->draw_it=&</span><span class=cF5>DrawViewAnglesCtrl</span><span class=cF0>;
|
||||
<a name="l371"></a> c->left_click=&</span><span class=cF5>LeftClickViewAngles</span><span class=cF0>;
|
||||
<a name="l372"></a> c->update_derived_vals=&</span><span class=cF5>UpdateDerivedViewAnglesCtrl</span><span class=cF0>;
|
||||
<a name="l373"></a> </span><span class=cF5>QueIns</span><span class=cF0>(c,task->last_ctrl);
|
||||
<a name="l374"></a> </span><span class=cF5>TaskDerivedValsUpdate</span><span class=cF0>(task);
|
||||
<a name="l375"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l376"></a> </span><span class=cF1>return</span><span class=cF0> c;
|
||||
<a name="l377"></a>}
|
||||
<a name="l378"></a>
|
||||
<a name="l379"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>ViewAnglesDel</span><span class=cF0>(</span><span class=cF9>CTask</span><span class=cF0> *task=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l380"></a>{</span><span class=cF2>//Free view angle ctrl.</span><span class=cF0>
|
||||
<a name="l381"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *c;
|
||||
<a name="l382"></a> </span><span class=cF1>if</span><span class=cF0> (!task) task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l383"></a> </span><span class=cF1>if</span><span class=cF0> (c=</span><span class=cF5>CtrlFindUnique</span><span class=cF7>(</span><span class=cF0>task,</span><span class=cF3>CTRLT_VIEWING_ANGLES</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l384"></a> </span><span class=cF5>QueRem</span><span class=cF0>(c);
|
||||
<a name="l385"></a> </span><span class=cF5>Free</span><span class=cF0>(c->state);
|
||||
<a name="l386"></a> </span><span class=cF5>Free</span><span class=cF0>(c);
|
||||
<a name="l387"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l388"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
122
public/Wb/Adam/Ctrls/CtrlsBttn.HC.HTML
Executable file
122
public/Wb/Adam/Ctrls/CtrlsBttn.HC.HTML
Executable file
@ -0,0 +1,122 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BTTN_BORDER</span><span class=cF0> 2
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>BTF_DONT_FREE</span><span class=cF0> 1
|
||||
<a name="l4"></a>
|
||||
<a name="l5"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CCtrlBttnState</span><span class=cF0>
|
||||
<a name="l6"></a>{
|
||||
<a name="l7"></a> </span><span class=cF9>I64</span><span class=cF0> state,num_states,flags;
|
||||
<a name="l8"></a> </span><span class=cF1>U8</span><span class=cF0> *state_texts;
|
||||
<a name="l9"></a> </span><span class=cF9>CColorROPU32</span><span class=cF0> *state_colors;
|
||||
<a name="l10"></a>};
|
||||
<a name="l11"></a>
|
||||
<a name="l12"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DrawCtrlBttn</span><span class=cF0>(</span><span class=cF9>CDC</span><span class=cF0> *dc,</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l13"></a>{
|
||||
<a name="l14"></a> </span><span class=cF9>CCtrlBttnState</span><span class=cF0> *s=c->state;
|
||||
<a name="l15"></a> </span><span class=cF9>I64</span><span class=cF0> l;
|
||||
<a name="l16"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l17"></a>
|
||||
<a name="l18"></a> dc->color=</span><span class=cF3>BLACK</span><span class=cF0>;
|
||||
<a name="l19"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,c->left,c->top,c->right-c->left+1,c->bottom-c->top+1);
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>st=</span><span class=cF5>LstSub</span><span class=cF0>(s->state,s->state_texts)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l21"></a> st=s->state_texts;
|
||||
<a name="l22"></a> dc->color=s->state_colors[s->state];
|
||||
<a name="l23"></a> l=</span><span class=cF5>StrLen</span><span class=cF0>(st);
|
||||
<a name="l24"></a> </span><span class=cF5>GrRect</span><span class=cF0>(dc,c->left+</span><span class=cF3>BTTN_BORDER</span><span class=cF0>,c->top+</span><span class=cF3>BTTN_BORDER</span><span class=cF0>,
|
||||
<a name="l25"></a> c->right-c->left+1-</span><span class=cF3>BTTN_BORDER</span><span class=cF0>*2,
|
||||
<a name="l26"></a> c->bottom-c->top+1-</span><span class=cF3>BTTN_BORDER</span><span class=cF0>*2);
|
||||
<a name="l27"></a> dc->color=s->state_colors[s->state]^(</span><span class=cF3>WHITE</span><span class=cF0><<16+</span><span class=cF3>WHITE</span><span class=cF0>);
|
||||
<a name="l28"></a> </span><span class=cF5>GrPrint</span><span class=cF0>(dc,</span><span class=cF7>(</span><span class=cF0>c->left+c->right+1-l*</span><span class=cF3>FONT_WIDTH</span><span class=cF7>)</span><span class=cF0>>>1,
|
||||
<a name="l29"></a> </span><span class=cF7>(</span><span class=cF0>c->top+c->bottom+1-</span><span class=cF3>FONT_HEIGHT</span><span class=cF7>)</span><span class=cF0>>>1,</span><span class=cF6>"%s"</span><span class=cF0>,st);
|
||||
<a name="l30"></a>}
|
||||
<a name="l31"></a>
|
||||
<a name="l32"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LeftClickCtrlBttn</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c,</span><span class=cF9>I64</span><span class=cF0>,</span><span class=cF9>I64</span><span class=cF0>,</span><span class=cF1>Bool</span><span class=cF0> down)
|
||||
<a name="l33"></a>{
|
||||
<a name="l34"></a> </span><span class=cF9>CCtrlBttnState</span><span class=cF0> *s=c->state;
|
||||
<a name="l35"></a> </span><span class=cF1>if</span><span class=cF0> (down) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l36"></a> s->state++;
|
||||
<a name="l37"></a> </span><span class=cF1>if</span><span class=cF0> (s->state==s->num_states)
|
||||
<a name="l38"></a> s->state=0;
|
||||
<a name="l39"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l40"></a>}
|
||||
<a name="l41"></a>
|
||||
<a name="l42"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>CCtrl</span><span class=cF0> *</span><span class=cF5>CtrlBttnNew</span><span class=cF0>(</span><span class=cF9>I64</span><span class=cF0> x,</span><span class=cF9>I64</span><span class=cF0> y,</span><span class=cF9>I64</span><span class=cF0> width=-1,</span><span class=cF9>I64</span><span class=cF0> height=-1,
|
||||
<a name="l43"></a> </span><span class=cF9>I64</span><span class=cF0> num_states=1,</span><span class=cF1>U8</span><span class=cF0> *state_texts,
|
||||
<a name="l44"></a> </span><span class=cF9>I32</span><span class=cF0> *state_colors,</span><span class=cF9>CCtrlBttnState</span><span class=cF0> *_s=</span><span class=cF3>NULL</span><span class=cF0>)
|
||||
<a name="l45"></a>{</span><span class=cF2>//Create bttn ctrl. See </span><a href="/Wb/Apps/Strut/Strut.HC.HTML#l1"><span class=cF4>::/Apps/Strut/Strut.HC</span></a><span class=cF2>.</span><span class=cF0>
|
||||
<a name="l46"></a> </span><span class=cF9>CCtrl</span><span class=cF0> *res;
|
||||
<a name="l47"></a> </span><span class=cF9>CCtrlBttnState</span><span class=cF0> *s;
|
||||
<a name="l48"></a> </span><span class=cF9>I64</span><span class=cF0> i,j,l;
|
||||
<a name="l49"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
|
||||
<a name="l50"></a> </span><span class=cF1>if</span><span class=cF0> (width<0) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l51"></a> l=1;
|
||||
<a name="l52"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<num_states;i++)
|
||||
<a name="l53"></a> </span><span class=cF1>if</span><span class=cF0> (st=</span><span class=cF5>LstSub</span><span class=cF7>(</span><span class=cF0>i,state_texts</span><span class=cF7>)</span><span class=cF0>) {
|
||||
<a name="l54"></a> j=</span><span class=cF5>StrLen</span><span class=cF0>(st);
|
||||
<a name="l55"></a> </span><span class=cF1>if</span><span class=cF0> (j>l) l=j;
|
||||
<a name="l56"></a> }
|
||||
<a name="l57"></a> width=</span><span class=cF3>BTTN_BORDER</span><span class=cF0>*4+l*</span><span class=cF3>FONT_WIDTH</span><span class=cF0>;
|
||||
<a name="l58"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l59"></a> </span><span class=cF1>if</span><span class=cF0> (height<0) height=</span><span class=cF3>BTTN_BORDER</span><span class=cF0>*4+</span><span class=cF3>FONT_HEIGHT</span><span class=cF0>;
|
||||
<a name="l60"></a> res=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrl</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l61"></a> </span><span class=cF1>if</span><span class=cF0> (_s) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l62"></a> s=_s;
|
||||
<a name="l63"></a> </span><span class=cF5>MemSet</span><span class=cF0>(s,0,</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrlBttnState</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l64"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l65"></a> s=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCtrlBttnState</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l66"></a> s->flags=</span><span class=cF3>BTF_DONT_FREE</span><span class=cF0>;
|
||||
<a name="l67"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l68"></a> s->num_states=num_states;
|
||||
<a name="l69"></a> s->state_texts=state_texts;
|
||||
<a name="l70"></a> s->state_colors=state_colors;
|
||||
<a name="l71"></a> res->win_task=</span><span class=cF5>Fs</span><span class=cF0>;
|
||||
<a name="l72"></a> res->flags=</span><span class=cF3>CTRLF_SHOW</span><span class=cF0>;
|
||||
<a name="l73"></a> res->type=</span><span class=cF3>CTRLT_GENERIC</span><span class=cF0>;
|
||||
<a name="l74"></a> res->state=s;
|
||||
<a name="l75"></a> res->draw_it=&</span><span class=cF5>DrawCtrlBttn</span><span class=cF0>;
|
||||
<a name="l76"></a> res->left_click=&</span><span class=cF5>LeftClickCtrlBttn</span><span class=cF0>;
|
||||
<a name="l77"></a> res->left=x;
|
||||
<a name="l78"></a> res->top=y;
|
||||
<a name="l79"></a> res->right=res->left+width-1;
|
||||
<a name="l80"></a> res->bottom=res->top+height-1;
|
||||
<a name="l81"></a> </span><span class=cF5>QueIns</span><span class=cF0>(res,</span><span class=cF5>Fs</span><span class=cF0>->last_ctrl);
|
||||
<a name="l82"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l83"></a>}
|
||||
<a name="l84"></a>
|
||||
<a name="l85"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>CtrlBttnDel</span><span class=cF0>(</span><span class=cF9>CCtrl</span><span class=cF0> *c)
|
||||
<a name="l86"></a>{</span><span class=cF2>//Free bttn ctrl.</span><span class=cF0>
|
||||
<a name="l87"></a> </span><span class=cF5>QueRem</span><span class=cF0>(c);
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>c->flags&</span><span class=cF3>BTF_DONT_FREE</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l89"></a> </span><span class=cF5>Free</span><span class=cF0>(c->state);
|
||||
<a name="l90"></a> </span><span class=cF5>Free</span><span class=cF0>(c);
|
||||
<a name="l91"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
245
public/Wb/Adam/Ctrls/CtrlsSlider.HC.HTML
Executable file
245
public/Wb/Adam/Ctrls/CtrlsSlider.HC.HTML
Executable file
@ -0,0 +1,245 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTemplateCSSlider</span><span class=cF0>
|
||||
<a name="l2"></a>{
|
||||
<a name="l3"></a> </span><span class=cF9>CTemplateCSSlider</span><span class=cF0> *next,*last;
|
||||
<a name="l4"></a> </span><span class=cF1>U8</span><span class=cF0> *name;
|
||||
<a name="l5"></a> </span><span class=cF9>I64</span><span class=cF0> num;
|
||||
<a name="l6"></a>};
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a></span><span class=cF1>class</span><span class=cF0> </span><span class=cF9>CTemplateCS</span><span class=cF0>
|
||||
<a name="l9"></a>{
|
||||
<a name="l10"></a> </span><span class=cF9>CTemplateCSSlider</span><span class=cF0> *next_slider,*last_slider;
|
||||
<a name="l11"></a> </span><span class=cF9>I64</span><span class=cF0> num_sliders,range,spacing,border;
|
||||
<a name="l12"></a> </span><span class=cF1>U8</span><span class=cF0> *glbl_name;
|
||||
<a name="l13"></a>};
|
||||
<a name="l14"></a>
|
||||
<a name="l15"></a></span><span class=cF9>CTemplateCS</span><span class=cF0> *</span><span class=cF5>CtrlSliderGet</span><span class=cF0>()
|
||||
<a name="l16"></a>{
|
||||
<a name="l17"></a> </span><span class=cF9>CTemplateCSSlider</span><span class=cF0> *tmps;
|
||||
<a name="l18"></a> </span><span class=cF1>U8</span><span class=cF0> *st,pmt[</span><span class=cF3>STR_LEN</span><span class=cF0>];
|
||||
<a name="l19"></a> </span><span class=cF9>CTemplateCS</span><span class=cF0> *res=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CTemplateCS</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a> </span><span class=cF6>"$PURPLE$Ctrl Slider$FG$\n\n"</span><span class=cF0>;
|
||||
<a name="l22"></a>
|
||||
<a name="l23"></a> res->glbl_name=</span><span class=cF5>GetStr</span><span class=cF0>(</span><span class=cF6>"Glbl Struct Name (ENTER for No Glbl):"</span><span class=cF0>);
|
||||
<a name="l24"></a> res->range=</span><span class=cF5>GetI64</span><span class=cF0> (</span><span class=cF6>"Range (%4d):"</span><span class=cF0>,30);
|
||||
<a name="l25"></a> res->spacing=</span><span class=cF5>GetI64</span><span class=cF0>(</span><span class=cF6>"Spacing (%4d):"</span><span class=cF0>,20);
|
||||
<a name="l26"></a> res->border=</span><span class=cF5>GetI64</span><span class=cF0> (</span><span class=cF6>"Border (%4d):"</span><span class=cF0>,2);
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a> res->next_slider=res->last_slider=&res->next_slider;
|
||||
<a name="l29"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF5>StrPrint</span><span class=cF0>(pmt,</span><span class=cF6>"Slider #%d Name:"</span><span class=cF0>,res->num_sliders+1);
|
||||
<a name="l31"></a> st=</span><span class=cF5>GetStr</span><span class=cF0>(pmt);
|
||||
<a name="l32"></a> </span><span class=cF1>if</span><span class=cF0> (!*st) {
|
||||
<a name="l33"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l34"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l35"></a> }
|
||||
<a name="l36"></a> tmps=</span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CTemplateCSSlider</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l37"></a> tmps->name=st;
|
||||
<a name="l38"></a> </span><span class=cF5>QueIns</span><span class=cF0>(tmps,res->last_slider);
|
||||
<a name="l39"></a> tmps->num=res->num_sliders++;
|
||||
<a name="l40"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l41"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l42"></a>}
|
||||
<a name="l43"></a>
|
||||
<a name="l44"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>TemplateCtrlSlider</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l45"></a>{
|
||||
<a name="l46"></a> </span><span class=cF9>CTask</span><span class=cF0> *task;
|
||||
<a name="l47"></a> </span><span class=cF9>CTemplateCS</span><span class=cF0> *m=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l48"></a> </span><span class=cF9>CTemplateCSSlider</span><span class=cF0> *tmps;
|
||||
<a name="l49"></a> </span><span class=cF9>I64</span><span class=cF0> i;
|
||||
<a name="l50"></a>
|
||||
<a name="l51"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l52"></a> </span><span class=cF5>DocRecalc</span><span class=cF0>(doc);
|
||||
<a name="l53"></a> </span><span class=cF5>DocCaptureUndo</span><span class=cF0>(doc,</span><span class=cF3>TRUE</span><span class=cF0>);
|
||||
<a name="l54"></a>
|
||||
<a name="l55"></a> task=</span><span class=cF5>User</span><span class=cF0>(</span><span class=cF6>"CTemplateCS **_m=0x%X;*_m=CtrlSliderGet;\n"</span><span class=cF0>,&m);
|
||||
<a name="l56"></a> </span><span class=cF1>while</span><span class=cF0> (!m)
|
||||
<a name="l57"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l58"></a>
|
||||
<a name="l59"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l60"></a></span><span class=cF6>"#define SLIDER_RANGE\t%d</span><span class=cF0>
|
||||
<a name="l61"></a></span><span class=cF6>#define SLIDER_SPACING\t%d</span><span class=cF0>
|
||||
<a name="l62"></a></span><span class=cF6>#define SLIDER_BORDER\t%d</span><span class=cF0>
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a></span><span class=cF6>class CSliderState</span><span class=cF0>
|
||||
<a name="l65"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l66"></a></span><span class=cF6>"</span><span class=cF0>,m->range,m->spacing,m->border);
|
||||
<a name="l67"></a>
|
||||
<a name="l68"></a> tmps=m->next_slider;
|
||||
<a name="l69"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l70"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" I64 %s;\n"</span><span class=cF0>,tmps->name);
|
||||
<a name="l71"></a> tmps=tmps->next;
|
||||
<a name="l72"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l73"></a> </span><span class=cF1>if</span><span class=cF0> (*m->glbl_name)
|
||||
<a name="l74"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"} %s;\n"</span><span class=cF0>,m->glbl_name);
|
||||
<a name="l75"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l76"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"};\n"</span><span class=cF0>);
|
||||
<a name="l77"></a>
|
||||
<a name="l78"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l79"></a></span><span class=cF6>"</span><span class=cF0>
|
||||
<a name="l80"></a></span><span class=cF6>U0 DrawCtrlSlider(CDC *dc,CCtrl *c)</span><span class=cF0>
|
||||
<a name="l81"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l82"></a></span><span class=cF6> CSliderState *s=c->state;</span><span class=cF0>
|
||||
<a name="l83"></a>
|
||||
<a name="l84"></a></span><span class=cF6> dc->color=LTRED;</span><span class=cF0>
|
||||
<a name="l85"></a></span><span class=cF6> GrRect(dc, c->left,c->top,%d*SLIDER_SPACING+%d,SLIDER_SPACING*2+SLIDER_RANGE);</span><span class=cF0>
|
||||
<a name="l86"></a></span><span class=cF6> dc->color=BLUE;</span><span class=cF0>
|
||||
<a name="l87"></a></span><span class=cF6> GrRect(dc, c->left+SLIDER_BORDER,c->top+SLIDER_BORDER,</span><span class=cF0>
|
||||
<a name="l88"></a></span><span class=cF6> %d*SLIDER_SPACING+%d-2*SLIDER_BORDER,SLIDER_SPACING*2</span><span class=cF0>
|
||||
<a name="l89"></a></span><span class=cF6> +SLIDER_RANGE-2*SLIDER_BORDER);</span><span class=cF0>
|
||||
<a name="l90"></a></span><span class=cF6> dc->color=BLACK;</span><span class=cF0>
|
||||
<a name="l91"></a></span><span class=cF6>"</span><span class=cF0>,m->num_sliders+1,m->num_sliders,m->num_sliders+1,m->num_sliders);
|
||||
<a name="l92"></a>
|
||||
<a name="l93"></a> </span><span class=cF1>for</span><span class=cF0> (i=0;i<m->num_sliders;i++)
|
||||
<a name="l94"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l95"></a></span><span class=cF6>" GrLine(dc,c->left+%d*SLIDER_SPACING+%d,c->top+SLIDER_SPACING,</span><span class=cF0>
|
||||
<a name="l96"></a></span><span class=cF6> c->left+%d*SLIDER_SPACING+%d,c->top+SLIDER_SPACING+SLIDER_RANGE-1);</span><span class=cF0>
|
||||
<a name="l97"></a></span><span class=cF6>"</span><span class=cF0>,i+1,i,i+1,i);
|
||||
<a name="l98"></a>
|
||||
<a name="l99"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" dc->color=LTRED;\n"</span><span class=cF0>);
|
||||
<a name="l100"></a>
|
||||
<a name="l101"></a> tmps=m->next_slider;
|
||||
<a name="l102"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l103"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l104"></a></span><span class=cF6>" GrPrint(dc,c->left+%d*SLIDER_SPACING+%d-FONT_WIDTH/2,</span><span class=cF0>
|
||||
<a name="l105"></a></span><span class=cF6> c->top+SLIDER_SPACING+SLIDER_RANGE+3,</span><span class=cF0>
|
||||
<a name="l106"></a></span><span class=cF6> \"%%d\",s->%s*10/SLIDER_RANGE);\n"</span><span class=cF0>,
|
||||
<a name="l107"></a> tmps->num+1,tmps->num,tmps->name);
|
||||
<a name="l108"></a> tmps=tmps->next;
|
||||
<a name="l109"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l110"></a>
|
||||
<a name="l111"></a> tmps=m->next_slider;
|
||||
<a name="l112"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l113"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l114"></a> </span><span class=cF6>" GrRect(dc,c->left+%d*SLIDER_SPACING+%d-3,"</span><span class=cF0>
|
||||
<a name="l115"></a> </span><span class=cF6>"c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->%s-2,7,5);\n"</span><span class=cF0>,
|
||||
<a name="l116"></a> tmps->num+1,tmps->num,tmps->name);
|
||||
<a name="l117"></a> tmps=tmps->next;
|
||||
<a name="l118"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l119"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" dc->color=YELLOW;\n"</span><span class=cF0>);
|
||||
<a name="l120"></a>
|
||||
<a name="l121"></a> tmps=m->next_slider;
|
||||
<a name="l122"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l123"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" GrRect(dc,c->left+%d*SLIDER_SPACING+%d-2,"</span><span class=cF0>
|
||||
<a name="l124"></a> </span><span class=cF6>"c->top+SLIDER_SPACING+SLIDER_RANGE-1-s->%s-1,5,3);\n"</span><span class=cF0>,
|
||||
<a name="l125"></a> tmps->num+1,tmps->num,tmps->name);
|
||||
<a name="l126"></a> tmps=tmps->next;
|
||||
<a name="l127"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l128"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l129"></a></span><span class=cF6>"}</span><span class=cF0>
|
||||
<a name="l130"></a>
|
||||
<a name="l131"></a></span><span class=cF6>U0 UpdateDerivedCtrlSlider(CCtrl *c)</span><span class=cF0>
|
||||
<a name="l132"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l133"></a></span><span class=cF6> CSliderState *s=c->state;</span><span class=cF0>
|
||||
<a name="l134"></a></span><span class=cF6> c->left=c->win_task->pix_width/2-(SLIDER_SPACING*3+2)/2;</span><span class=cF0>
|
||||
<a name="l135"></a></span><span class=cF6> c->right=c->left+%d*SLIDER_SPACING+%d;</span><span class=cF0>
|
||||
<a name="l136"></a></span><span class=cF6> c->top=c->win_task->pix_height/2-(SLIDER_SPACING*2+SLIDER_RANGE)/2;</span><span class=cF0>
|
||||
<a name="l137"></a></span><span class=cF6> c->bottom=c->top+SLIDER_SPACING*2+SLIDER_RANGE;</span><span class=cF0>
|
||||
<a name="l138"></a></span><span class=cF6>"</span><span class=cF0>,m->num_sliders+1,m->num_sliders);
|
||||
<a name="l139"></a>
|
||||
<a name="l140"></a> tmps=m->next_slider;
|
||||
<a name="l141"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l142"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" s->%s=ClampI64(s->%s,0,SLIDER_RANGE-1);\n"</span><span class=cF0>,
|
||||
<a name="l143"></a> tmps->name,tmps->name);
|
||||
<a name="l144"></a> tmps=tmps->next;
|
||||
<a name="l145"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l146"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l147"></a></span><span class=cF6>"}</span><span class=cF0>
|
||||
<a name="l148"></a>
|
||||
<a name="l149"></a></span><span class=cF6>U0 LeftClickSlider(CCtrl *c,I64 x,I64 y,Bool down)</span><span class=cF0>
|
||||
<a name="l150"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l151"></a></span><span class=cF6> no_warn down;</span><span class=cF0>
|
||||
<a name="l152"></a></span><span class=cF6> CSliderState *s=c->state;</span><span class=cF0>
|
||||
<a name="l153"></a></span><span class=cF6>"</span><span class=cF0>);
|
||||
<a name="l154"></a>
|
||||
<a name="l155"></a> tmps=m->next_slider;
|
||||
<a name="l156"></a> </span><span class=cF1>while</span><span class=cF0> (tmps!=&m->next_slider) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l157"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" "</span><span class=cF0>);
|
||||
<a name="l158"></a> </span><span class=cF1>if</span><span class=cF0> (tmps!=m->next_slider)
|
||||
<a name="l159"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"else "</span><span class=cF0>);
|
||||
<a name="l160"></a> </span><span class=cF1>if</span><span class=cF0> (tmps->next==&m->next_slider)
|
||||
<a name="l161"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"\n"</span><span class=cF0>);
|
||||
<a name="l162"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l163"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>"if (x<c->left+%d*SLIDER_SPACING+%d+SLIDER_SPACING/2)\n"</span><span class=cF0>,
|
||||
<a name="l164"></a> tmps->num+1,tmps->num);
|
||||
<a name="l165"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" s->%s=SLIDER_RANGE-1-(y-(c->top+SLIDER_SPACING));\n"</span><span class=cF0>,
|
||||
<a name="l166"></a> tmps->name);
|
||||
<a name="l167"></a> tmps=tmps->next;
|
||||
<a name="l168"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l169"></a>
|
||||
<a name="l170"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l171"></a></span><span class=cF6>" if (c->update_derived_vals)</span><span class=cF0>
|
||||
<a name="l172"></a></span><span class=cF6> (*c->update_derived_vals)(c);</span><span class=cF0>
|
||||
<a name="l173"></a></span><span class=cF6>}</span><span class=cF0>
|
||||
<a name="l174"></a>
|
||||
<a name="l175"></a></span><span class=cF6>CCtrl *SliderNew()</span><span class=cF0>
|
||||
<a name="l176"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l177"></a></span><span class=cF6> CCtrl *c=CAlloc(sizeof(CCtrl));</span><span class=cF0>
|
||||
<a name="l178"></a></span><span class=cF6> c->win_task=Fs;</span><span class=cF0>
|
||||
<a name="l179"></a></span><span class=cF6> c->flags=CTRLF_SHOW|CTRLF_CAPTURE_LEFT_MS;</span><span class=cF0>
|
||||
<a name="l180"></a></span><span class=cF6> c->type=CTRLT_GENERIC;</span><span class=cF0>
|
||||
<a name="l181"></a></span><span class=cF6>"</span><span class=cF0>);
|
||||
<a name="l182"></a> </span><span class=cF1>if</span><span class=cF0> (*m->glbl_name)
|
||||
<a name="l183"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" c->state=&%s;\n"</span><span class=cF0>
|
||||
<a name="l184"></a> </span><span class=cF6>" MemSet(&%s,0,sizeof(CSliderState));\n"</span><span class=cF0>,m->glbl_name,m->glbl_name);
|
||||
<a name="l185"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l186"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc, </span><span class=cF6>" c->state=CAlloc(sizeof(CSliderState));\n"</span><span class=cF0>);
|
||||
<a name="l187"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l188"></a></span><span class=cF6>" c->draw_it=&DrawCtrlSlider;</span><span class=cF0>
|
||||
<a name="l189"></a></span><span class=cF6> c->left_click=&LeftClickSlider;</span><span class=cF0>
|
||||
<a name="l190"></a></span><span class=cF6> c->update_derived_vals=&UpdateDerivedCtrlSlider;</span><span class=cF0>
|
||||
<a name="l191"></a></span><span class=cF6> QueIns(c,Fs->last_ctrl);</span><span class=cF0>
|
||||
<a name="l192"></a></span><span class=cF6> TaskDerivedValsUpdate;</span><span class=cF0>
|
||||
<a name="l193"></a></span><span class=cF6> return c;</span><span class=cF0>
|
||||
<a name="l194"></a></span><span class=cF6>}</span><span class=cF0>
|
||||
<a name="l195"></a>
|
||||
<a name="l196"></a></span><span class=cF6>U0 SliderDel(CCtrl *c)</span><span class=cF0>
|
||||
<a name="l197"></a></span><span class=cF6>{</span><span class=cF0>
|
||||
<a name="l198"></a></span><span class=cF6> QueRem(c);</span><span class=cF0>
|
||||
<a name="l199"></a></span><span class=cF6>"</span><span class=cF0>);
|
||||
<a name="l200"></a> </span><span class=cF1>if</span><span class=cF0> (!*m->glbl_name)
|
||||
<a name="l201"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,</span><span class=cF6>" Free(c->state);\n"</span><span class=cF0>);
|
||||
<a name="l202"></a> </span><span class=cF5>DocPrint</span><span class=cF0>(doc,
|
||||
<a name="l203"></a></span><span class=cF6>" Free(c);</span><span class=cF0>
|
||||
<a name="l204"></a></span><span class=cF6>}</span><span class=cF0>
|
||||
<a name="l205"></a></span><span class=cF6>"</span><span class=cF0>);
|
||||
<a name="l206"></a>
|
||||
<a name="l207"></a> </span><span class=cF5>Kill</span><span class=cF0>(task); </span><span class=cF2>//This frees memory.</span><span class=cF0>
|
||||
<a name="l208"></a>
|
||||
<a name="l209"></a> </span><span class=cF5>RegOneTimePopUp</span><span class=cF0>(</span><span class=cF3>ARf_MANAGE_SLIDER</span><span class=cF0>,
|
||||
<a name="l210"></a> </span><span class=cF6>"Modify the code to your heart's content.\n"</span><span class=cF0>
|
||||
<a name="l211"></a> </span><span class=cF6>"The code is no longer managed.\n"</span><span class=cF0>);
|
||||
<a name="l212"></a>
|
||||
<a name="l213"></a> </span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l214"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
39
public/Wb/Adam/Ctrls/MakeCtrls.HC.HTML
Executable file
39
public/Wb/Adam/Ctrls/MakeCtrls.HC.HTML
Executable file
@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF3>__DIR__</span><span class=cF0>);;
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Ctrls"</span><span class=cF0>
|
||||
<a name="l4"></a>#</span><span class=cF1>help_file</span><span class=cF0> </span><span class=cF6>"::/Doc/Ctrls"</span><span class=cF0>
|
||||
<a name="l5"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"CtrlsA"</span><span class=cF0>
|
||||
<a name="l6"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"CtrlsBttn"</span><span class=cF0>
|
||||
<a name="l7"></a>#</span><span class=cF1>include</span><span class=cF0> </span><span class=cF6>"CtrlsSlider"</span><span class=cF0>
|
||||
<a name="l8"></a></span><span class=cF5>Cd</span><span class=cF0>(</span><span class=cF6>".."</span><span class=cF0>);;
|
||||
</span></pre></body>
|
||||
</html>
|
||||
251
public/Wb/Adam/DevInfo.HC.HTML
Executable file
251
public/Wb/Adam/DevInfo.HC.HTML
Executable file
@ -0,0 +1,251 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"PCI;Processor;Devices;Info"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF2>//The file was downloaded from</span><span class=cF0>
|
||||
<a name="l4"></a></span><span class=cF2>//http://www.pcidatabase.com/reports.php?type=tab-delimeted</span><span class=cF0>
|
||||
<a name="l5"></a>
|
||||
<a name="l6"></a>#</span><span class=cF1>define</span><span class=cF0> </span><span class=cF3>PCI_DEV_FILE</span><span class=cF0> </span><span class=cF6>"::/Misc/PCIDevices.DD.Z"</span><span class=cF0>
|
||||
<a name="l7"></a>
|
||||
<a name="l8"></a></span><span class=cF2>/****</span><span class=cF0>
|
||||
<a name="l9"></a></span><span class=cF2>//1) Download http://www.pcidatabase.com/reports.php?type=tab-delimeted</span><span class=cF0>
|
||||
<a name="l10"></a></span><span class=cF2>//2) Rename to ::/Misc/PCIDevices.DD.Z</span><span class=cF0>
|
||||
<a name="l11"></a></span><span class=cF2>//3) ToDolDoc("::/Misc/PCIDevices.DD.Z");</span><span class=cF0>
|
||||
<a name="l12"></a></span><span class=cF2>//4) Edit and remove file header and tail</span><span class=cF0>
|
||||
<a name="l13"></a></span><span class=cF2>//5) Text find-and-replace "=0A=" with "". (Doesn't seem necessary anmore.)</span><span class=cF0>
|
||||
<a name="l14"></a></span><span class=cF2>//6) Run PCIDevFileGen(). (Doesn't seem necessary anmore.)</span><span class=cF0>
|
||||
<a name="l15"></a>
|
||||
<a name="l16"></a></span><span class=cF2>public U0 PCIDevFileGen()</span><span class=cF0>
|
||||
<a name="l17"></a></span><span class=cF2>{</span><span class=cF0>
|
||||
<a name="l18"></a></span><span class=cF2> Bool first=TRUE,del=FALSE,del2=FALSE,cont=FALSE;</span><span class=cF0>
|
||||
<a name="l19"></a></span><span class=cF2> CDoc *doc=DocRead(PCI_DEV_FILE,</span><span class=cF0>
|
||||
<a name="l20"></a> </span><span class=cF2>DOCF_PLAIN_TEXT|DOCF_DBL_DOLLARS|DOCF_NO_CURSOR);</span><span class=cF0>
|
||||
<a name="l21"></a></span><span class=cF2> CDocEntry *doc_e=doc->head.next,*doc_e2;</span><span class=cF0>
|
||||
<a name="l22"></a></span><span class=cF2> while (doc_e!=doc) {</span><span class=cF0>
|
||||
<a name="l23"></a></span><span class=cF2> doc_e2=doc_e->next;</span><span class=cF0>
|
||||
<a name="l24"></a></span><span class=cF2> if (first) {</span><span class=cF0>
|
||||
<a name="l25"></a></span><span class=cF2> if (doc_e->type_u8==DOCT_TEXT) {</span><span class=cF0>
|
||||
<a name="l26"></a> </span><span class=cF2>if (doc_e->tag[0]==';')</span><span class=cF0>
|
||||
<a name="l27"></a> </span><span class=cF2> del=TRUE;</span><span class=cF0>
|
||||
<a name="l28"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l29"></a></span><span class=cF2> first=FALSE;</span><span class=cF0>
|
||||
<a name="l30"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l31"></a></span><span class=cF2> if (doc_e->type_u8==DOCT_TEXT && doc_e->tag[StrLen(doc_e->tag)-1]=='=' &&</span><span class=cF0>
|
||||
<a name="l32"></a> </span><span class=cF2> doc_e2->type_u8==DOCT_NEW_LINE) {</span><span class=cF0>
|
||||
<a name="l33"></a></span><span class=cF2> doc_e->tag[StrLen(doc_e->tag)-1]=CH_SPACE;</span><span class=cF0>
|
||||
<a name="l34"></a></span><span class=cF2> cont=TRUE;</span><span class=cF0>
|
||||
<a name="l35"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l36"></a></span><span class=cF2> del2=del;</span><span class=cF0>
|
||||
<a name="l37"></a></span><span class=cF2> if (doc_e->type_u8==DOCT_NEW_LINE) {</span><span class=cF0>
|
||||
<a name="l38"></a></span><span class=cF2> first=TRUE;</span><span class=cF0>
|
||||
<a name="l39"></a></span><span class=cF2> del2=FALSE;</span><span class=cF0>
|
||||
<a name="l40"></a></span><span class=cF2> if (cont) {</span><span class=cF0>
|
||||
<a name="l41"></a> </span><span class=cF2>del=TRUE;</span><span class=cF0>
|
||||
<a name="l42"></a> </span><span class=cF2>cont=FALSE;</span><span class=cF0>
|
||||
<a name="l43"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l44"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l45"></a></span><span class=cF2> if (del)</span><span class=cF0>
|
||||
<a name="l46"></a></span><span class=cF2> DocEntryDel(doc,doc_e);</span><span class=cF0>
|
||||
<a name="l47"></a></span><span class=cF2> del=del2;</span><span class=cF0>
|
||||
<a name="l48"></a></span><span class=cF2> doc_e=doc_e2;</span><span class=cF0>
|
||||
<a name="l49"></a></span><span class=cF2> }</span><span class=cF0>
|
||||
<a name="l50"></a></span><span class=cF2> DocWrite(doc);</span><span class=cF0>
|
||||
<a name="l51"></a></span><span class=cF2>}</span><span class=cF0>
|
||||
<a name="l52"></a></span><span class=cF2>****/</span><span class=cF0>
|
||||
<a name="l53"></a>
|
||||
<a name="l54"></a></span><span class=cF2>//</span><a href="/Wb/Misc/PCIDevices.DD.HTML#l1"><span class=cF4>::/Misc/PCIDevices.DD</span></a><span class=cF0>
|
||||
<a name="l55"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>PCILookUpSingle</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> m,</span><span class=cF9>I64</span><span class=cF0> d,</span><span class=cF1>U8</span><span class=cF0> **_vendor,</span><span class=cF1>U8</span><span class=cF0> **_dev)
|
||||
<a name="l56"></a>{
|
||||
<a name="l57"></a> </span><span class=cF1>Bool</span><span class=cF0> first=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l58"></a> </span><span class=cF1>U8</span><span class=cF0> buf[8],*vendor=</span><span class=cF3>NULL</span><span class=cF0>,*</span><span class=cFB>dev</span><span class=cF0>=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l59"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=doc->head.next;
|
||||
<a name="l60"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l61"></a> </span><span class=cF1>if</span><span class=cF0> (first) {
|
||||
<a name="l62"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0> && doc_e->tag[0]!=</span><span class=cF6>';'</span><span class=cF0> &&
|
||||
<a name="l63"></a> </span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>doc_e->tag</span><span class=cF7>)</span><span class=cF0>>=4) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l64"></a> buf[0](</span><span class=cF9>U16</span><span class=cF0>)=</span><span class=cF6>'0x'</span><span class=cF0>;
|
||||
<a name="l65"></a> buf[2](</span><span class=cF9>U32</span><span class=cF0>)=doc_e->tag(</span><span class=cF9>U32</span><span class=cF0> *)[0];
|
||||
<a name="l66"></a> buf[6]=0;
|
||||
<a name="l67"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>buf</span><span class=cF7>)</span><span class=cF0>==m) {
|
||||
<a name="l68"></a> doc_e=doc_e->next->next;
|
||||
<a name="l69"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l70"></a> vendor=</span><span class=cF5>AStrNew</span><span class=cF0>(doc_e->tag);
|
||||
<a name="l71"></a> first=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l72"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l73"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l74"></a> }
|
||||
<a name="l75"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l76"></a> first=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l77"></a> }
|
||||
<a name="l78"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0>)
|
||||
<a name="l79"></a> first=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l80"></a> doc_e=doc_e->next;
|
||||
<a name="l81"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a> </span><span class=cF1>if</span><span class=cF0> (vendor) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l84"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) {
|
||||
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (first) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TAB</span><span class=cF0>) {
|
||||
<a name="l87"></a> doc_e=doc_e->next;
|
||||
<a name="l88"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0> && </span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>doc_e->tag</span><span class=cF7>)</span><span class=cF0>>=4) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l89"></a> buf[0](</span><span class=cF9>U16</span><span class=cF0>)=</span><span class=cF6>'0x'</span><span class=cF0>;
|
||||
<a name="l90"></a> buf[2](</span><span class=cF9>U32</span><span class=cF0>)=doc_e->tag(</span><span class=cF9>U32</span><span class=cF0> *)[0];
|
||||
<a name="l91"></a> buf[6]=0;
|
||||
<a name="l92"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Str2I64</span><span class=cF7>(</span><span class=cF0>buf</span><span class=cF7>)</span><span class=cF0>==d) {
|
||||
<a name="l93"></a> doc_e=doc_e->next->next;
|
||||
<a name="l94"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l95"></a> </span><span class=cFB>dev</span><span class=cF0>=</span><span class=cF5>AStrNew</span><span class=cF0>(doc_e->tag);
|
||||
<a name="l96"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l97"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l98"></a> }
|
||||
<a name="l99"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l100"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l101"></a> </span><span class=cF1>break</span><span class=cF0>;
|
||||
<a name="l102"></a> first=</span><span class=cF3>FALSE</span><span class=cF0>;
|
||||
<a name="l103"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l104"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->type_u8==</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0>)
|
||||
<a name="l105"></a> first=</span><span class=cF3>TRUE</span><span class=cF0>;
|
||||
<a name="l106"></a> doc_e=doc_e->next;
|
||||
<a name="l107"></a> }
|
||||
<a name="l108"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l109"></a>
|
||||
<a name="l110"></a> </span><span class=cF1>if</span><span class=cF0> (vendor)
|
||||
<a name="l111"></a> *_vendor=vendor;
|
||||
<a name="l112"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l113"></a> *_vendor=</span><span class=cF5>AStrNew</span><span class=cF0>(</span><span class=cF6>"Unknown"</span><span class=cF0>);
|
||||
<a name="l114"></a>
|
||||
<a name="l115"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>dev</span><span class=cF0>)
|
||||
<a name="l116"></a> *_dev=</span><span class=cFB>dev</span><span class=cF0>;
|
||||
<a name="l117"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l118"></a> *_dev=</span><span class=cF5>AStrNew</span><span class=cF0>(</span><span class=cF6>"Unknown"</span><span class=cF0>);
|
||||
<a name="l119"></a>}
|
||||
<a name="l120"></a>
|
||||
<a name="l121"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>PCILookUpDevs</span><span class=cF0>()
|
||||
<a name="l122"></a>{
|
||||
<a name="l123"></a> </span><span class=cF9>CPCIDev</span><span class=cF0> *tmppci;
|
||||
<a name="l124"></a> </span><span class=cF9>I64</span><span class=cF0> w1,w2,b,d,f,timeout=32*8*2;
|
||||
<a name="l125"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
|
||||
<a name="l126"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>dev</span><span class=cF0>.pci_head.next!=&</span><span class=cFB>dev</span><span class=cF0>.pci_head)
|
||||
<a name="l127"></a> </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l128"></a> doc=</span><span class=cF5>DocRead</span><span class=cF0>(</span><span class=cF3>PCI_DEV_FILE</span><span class=cF0>,</span><span class=cF3>DOCF_PLAIN_TEXT</span><span class=cF0>|</span><span class=cF3>DOCF_NO_CURSOR</span><span class=cF0>);
|
||||
<a name="l129"></a> </span><span class=cF1>for</span><span class=cF0> (b=0;b<</span><span class=cFB>sys_pci_busses</span><span class=cF0>;b++)
|
||||
<a name="l130"></a> </span><span class=cF1>for</span><span class=cF0> (d=0;d<32;d++)
|
||||
<a name="l131"></a> </span><span class=cF1>for</span><span class=cF0> (f=0;f<8;f++) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l132"></a> w1=</span><span class=cF5>PCIReadU16</span><span class=cF0>(b,d,f,0);
|
||||
<a name="l133"></a> </span><span class=cF1>if</span><span class=cF0> (w1!=0xFFFF) {
|
||||
<a name="l134"></a> tmppci=</span><span class=cF5>ACAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CPCIDev</span><span class=cF7>)</span><span class=cF0>);
|
||||
<a name="l135"></a> tmppci->bus=b;
|
||||
<a name="l136"></a> tmppci-></span><span class=cFB>dev</span><span class=cF0>=d;
|
||||
<a name="l137"></a> tmppci->fun=f;
|
||||
<a name="l138"></a> tmppci->vendor=w1;
|
||||
<a name="l139"></a> tmppci->dev_id=w2=</span><span class=cF5>PCIReadU16</span><span class=cF0>(b,d,f,2);
|
||||
<a name="l140"></a> tmppci->sub_code=</span><span class=cF5>PCIReadU8</span><span class=cF0>(b,d,f,0xA);
|
||||
<a name="l141"></a> tmppci->base_code=</span><span class=cF5>PCIReadU8</span><span class=cF0>(b,d,f,0xB);
|
||||
<a name="l142"></a> </span><span class=cF5>PCILookUpSingle</span><span class=cF0>(doc,w1,w2,&tmppci->vendor_str,&tmppci->dev_id_str);
|
||||
<a name="l143"></a> </span><span class=cF5>QueIns</span><span class=cF0>(tmppci,</span><span class=cFB>dev</span><span class=cF0>.pci_head.last);
|
||||
<a name="l144"></a> timeout=32*8*2;
|
||||
<a name="l145"></a> } </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFB>sys_pci_busses</span><span class=cF0>==256 && --timeout<=0)
|
||||
<a name="l146"></a> </span><span class=cF1>goto</span><span class=cF0> lud_done;
|
||||
<a name="l147"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l148"></a>lud_done:
|
||||
<a name="l149"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc);
|
||||
<a name="l150"></a>}
|
||||
<a name="l151"></a>
|
||||
<a name="l152"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>PCIRep</span><span class=cF0>()
|
||||
<a name="l153"></a>{</span><span class=cF2>//Report description of PCI devices.</span><span class=cF0>
|
||||
<a name="l154"></a> </span><span class=cF9>CPCIDev</span><span class=cF0> *tmppci;
|
||||
<a name="l155"></a> </span><span class=cF6>"PCI Busses:%d\n"</span><span class=cF0>,</span><span class=cFB>sys_pci_busses</span><span class=cF0>;
|
||||
<a name="l156"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>FileFind</span><span class=cF7>(</span><span class=cF3>PCI_DEV_FILE</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l157"></a> </span><span class=cF6>"You don't have the PCI device file.\n"</span><span class=cF0>;
|
||||
<a name="l158"></a> </span><span class=cF1>return</span><span class=cF0>;
|
||||
<a name="l159"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l160"></a> </span><span class=cF5>PCILookUpDevs</span><span class=cF0>;
|
||||
<a name="l161"></a> tmppci=</span><span class=cFB>dev</span><span class=cF0>.pci_head.next;
|
||||
<a name="l162"></a> </span><span class=cF1>while</span><span class=cF0> (tmppci!=&</span><span class=cFB>dev</span><span class=cF0>.pci_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l163"></a> </span><span class=cF6>"%02X:%02X:%01X %02X%02X $GREEN$%s $CYAN$%s$FG$\n"</span><span class=cF0>,
|
||||
<a name="l164"></a> tmppci->bus,tmppci-></span><span class=cFB>dev</span><span class=cF0>,tmppci->fun,
|
||||
<a name="l165"></a> tmppci->base_code,tmppci->sub_code,
|
||||
<a name="l166"></a> tmppci->vendor_str,tmppci->dev_id_str;
|
||||
<a name="l167"></a> tmppci=tmppci->next;
|
||||
<a name="l168"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l169"></a>}
|
||||
<a name="l170"></a>
|
||||
<a name="l171"></a>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"Info;Memory/Info"</span><span class=cF0>
|
||||
<a name="l172"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MemBIOSRep</span><span class=cF0>()
|
||||
<a name="l173"></a>{</span><span class=cF2>//Report the memory ranges reported by the BIOS at boot.</span><span class=cF0>
|
||||
<a name="l174"></a> </span><span class=cF9>U16</span><span class=cF0> *m01=</span><span class=cFD>MEM_E801</span><span class=cF0>;
|
||||
<a name="l175"></a> </span><span class=cF9>CMemE820</span><span class=cF0> *m20=</span><span class=cFD>MEM_E820</span><span class=cF0>;
|
||||
<a name="l176"></a> </span><span class=cF9>CMemRange</span><span class=cF0> *tmpmr;
|
||||
<a name="l177"></a> </span><span class=cF6>"Standard Addresses\n"</span><span class=cF0>
|
||||
<a name="l178"></a> </span><span class=cF6>"000A0000-000BFFFF VGA\n"</span><span class=cF0>
|
||||
<a name="l179"></a> </span><span class=cF6>"FEE00000-FEE00FFF See $LK,\"APIC\",A=\"MN:LAPIC_BASE\"$\n\n"</span><span class=cF0>
|
||||
<a name="l180"></a> </span><span class=cF6>"32 Bit Device Mem\n"</span><span class=cF0>;
|
||||
<a name="l181"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>LBts</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_DEV_MEM</span><span class=cF0>],0</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l182"></a> </span><span class=cF5>Yield</span><span class=cF0>;
|
||||
<a name="l183"></a> tmpmr=</span><span class=cFB>dev</span><span class=cF0>.mem32_head.next;
|
||||
<a name="l184"></a> </span><span class=cF1>while</span><span class=cF0> (tmpmr!=&</span><span class=cFB>dev</span><span class=cF0>.mem32_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l185"></a> </span><span class=cF6>"%02X:%016X-%016X\n"</span><span class=cF0>,
|
||||
<a name="l186"></a> tmpmr->type,tmpmr->base,tmpmr->base+tmpmr->size-1;
|
||||
<a name="l187"></a> tmpmr=tmpmr->next;
|
||||
<a name="l188"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l189"></a> </span><span class=cF5>LBtr</span><span class=cF0>(&</span><span class=cFB>sys_semas</span><span class=cF0>[</span><span class=cF3>SEMA_DEV_MEM</span><span class=cF0>],0);
|
||||
<a name="l190"></a>
|
||||
<a name="l191"></a> </span><span class=cF6>"\nBIOS Memory Report 15:E801\n"</span><span class=cF0>
|
||||
<a name="l192"></a> </span><span class=cF6>"01:0000000000000000-%016X\n"</span><span class=cF0>,0x100000+m01[0]<<10-1;
|
||||
<a name="l193"></a> </span><span class=cF6>"01:0000000001000000-%016X\n"</span><span class=cF0>,</span><span class=cF3>SYS_16MEG_AREA_LIMIT</span><span class=cF0>+m01[1]<<16-1;
|
||||
<a name="l194"></a>
|
||||
<a name="l195"></a> </span><span class=cF1>if</span><span class=cF0> (m20->type) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l196"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l197"></a> </span><span class=cF6>"BIOS Memory Report 15:E820\n"</span><span class=cF0>;
|
||||
<a name="l198"></a> </span><span class=cF1>while</span><span class=cF0> (m20->type) {
|
||||
<a name="l199"></a> </span><span class=cF6>"%02X:%016X-%016X\n"</span><span class=cF0>,m20->type,m20->base,m20->base+m20->len-1;
|
||||
<a name="l200"></a> m20++;
|
||||
<a name="l201"></a> }
|
||||
<a name="l202"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l203"></a>}
|
||||
<a name="l204"></a>
|
||||
<a name="l205"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>MemPageRep</span><span class=cF0>()
|
||||
<a name="l206"></a>{</span><span class=cF2>//Page Table Report.</span><span class=cF0>
|
||||
<a name="l207"></a> </span><span class=cF6>"MAPPED\t :%010X with "</span><span class=cF0>,</span><span class=cFB>mem_mapped_space</span><span class=cF0>;
|
||||
<a name="l208"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&</span><span class=cFB>mem_page_size</span><span class=cF0>,30</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l209"></a> </span><span class=cF6>"$RED$1GIG$FG$ pages\n"</span><span class=cF0>;
|
||||
<a name="l210"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l211"></a> </span><span class=cF6>"$RED$2MEG$FG$ pages\n"</span><span class=cF0>;
|
||||
<a name="l212"></a> </span><span class=cF6>"PML2\t :%010X 2MEG :%08X\n"</span><span class=cF0>,
|
||||
<a name="l213"></a> *</span><span class=cFD>MEM_PML2</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *),*</span><span class=cFD>MEM_2MEG_NUM</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *);
|
||||
<a name="l214"></a> </span><span class=cF6>"PML3\t :%010X 1GIG :%08X\n"</span><span class=cF0>,
|
||||
<a name="l215"></a> *</span><span class=cFD>MEM_PML3</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *),*</span><span class=cFD>MEM_1GIG_NUM</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *);
|
||||
<a name="l216"></a> </span><span class=cF6>"PML4\t :%010X 512GIG:%08X\n"</span><span class=cF0>,
|
||||
<a name="l217"></a> *</span><span class=cFD>MEM_PML4</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *),*</span><span class=cFD>MEM_512GIG_NUM</span><span class=cF0>(</span><span class=cF9>U64</span><span class=cF0> *);
|
||||
<a name="l218"></a> </span><span class=cF6>"FIXED_AREA:%010X\n"</span><span class=cF0>,</span><span class=cF3>SYS_FIXED_AREA</span><span class=cF0>;
|
||||
<a name="l219"></a> </span><span class=cF6>"HEAP_BASE :%010X\nHEAP_LIMIT:%010X\n"</span><span class=cF0>,</span><span class=cFB>mem_heap_base</span><span class=cF0>,</span><span class=cFB>mem_heap_limit</span><span class=cF0>;
|
||||
<a name="l220"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
173
public/Wb/Adam/DolDoc/DocBin.HC.HTML
Executable file
173
public/Wb/Adam/DolDoc/DocBin.HC.HTML
Executable file
@ -0,0 +1,173 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"DolDoc/Bin"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF9>CDocBin</span><span class=cF0> *</span><span class=cF5>DocBinFindNum</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *haystack_doc,</span><span class=cF9>I64</span><span class=cF0> needle_num)
|
||||
<a name="l4"></a>{
|
||||
<a name="l5"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *b=haystack_doc->bin_head.next;
|
||||
<a name="l6"></a> </span><span class=cF1>while</span><span class=cF0> (b!=&haystack_doc->bin_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l7"></a> </span><span class=cF1>if</span><span class=cF0> (b->num==needle_num)
|
||||
<a name="l8"></a> </span><span class=cF1>return</span><span class=cF0> b;
|
||||
<a name="l9"></a> b=b->next;
|
||||
<a name="l10"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l11"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l12"></a>}
|
||||
<a name="l13"></a>
|
||||
<a name="l14"></a></span><span class=cF9>CDocBin</span><span class=cF0> *</span><span class=cF5>DocBinFindTag</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *haystack_doc,</span><span class=cF1>U8</span><span class=cF0> *needle_tag)
|
||||
<a name="l15"></a>{
|
||||
<a name="l16"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *b;
|
||||
<a name="l17"></a> </span><span class=cF1>if</span><span class=cF0> (needle_tag) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l18"></a> b=haystack_doc->bin_head.next;
|
||||
<a name="l19"></a> </span><span class=cF1>while</span><span class=cF0> (b!=&haystack_doc->bin_head) {
|
||||
<a name="l20"></a> </span><span class=cF1>if</span><span class=cF0> (b->tag && !</span><span class=cF5>StrCmp</span><span class=cF7>(</span><span class=cF0>b->tag,needle_tag</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l21"></a> </span><span class=cF1>return</span><span class=cF0> b;
|
||||
<a name="l22"></a> b=b->next;
|
||||
<a name="l23"></a> }
|
||||
<a name="l24"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l25"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l26"></a>}
|
||||
<a name="l27"></a>
|
||||
<a name="l28"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocBinsValidate</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l29"></a>{
|
||||
<a name="l30"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock=</span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l31"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *b,*b1;
|
||||
<a name="l32"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e,*doc_e2;
|
||||
<a name="l33"></a> </span><span class=cF9>I64</span><span class=cF0> renum_num=0;
|
||||
<a name="l34"></a> b=doc->bin_head.next;
|
||||
<a name="l35"></a> </span><span class=cF1>while</span><span class=cF0> (b!=&doc->bin_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l36"></a> b->use_cnt=0;
|
||||
<a name="l37"></a> b->tmp_use_cnt=0;
|
||||
<a name="l38"></a> b->renum_num=-1;
|
||||
<a name="l39"></a> </span><span class=cF5>Free</span><span class=cF0>(b->tag);
|
||||
<a name="l40"></a> b->tag=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l41"></a> b=b->next;
|
||||
<a name="l42"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l43"></a> doc_e=doc->head.next;
|
||||
<a name="l44"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e!=doc) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> doc_e2=doc_e->next;
|
||||
<a name="l46"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_HAS_BIN</span><span class=cF0>) {
|
||||
<a name="l47"></a> </span><span class=cF1>if</span><span class=cF0> (b=doc_e->bin_data=</span><span class=cF5>DocBinFindNum</span><span class=cF7>(</span><span class=cF0>doc,doc_e->bin_num</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l48"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags & </span><span class=cF3>DOCEF_BIN_PTR_LINK</span><span class=cF0>)
|
||||
<a name="l49"></a> b->tmp_use_cnt=</span><span class=cF3>I32_MAX</span><span class=cF0>;
|
||||
<a name="l50"></a> </span><span class=cF1>if</span><span class=cF0> (!b->use_cnt++)
|
||||
<a name="l51"></a> b->renum_num=++renum_num;
|
||||
<a name="l52"></a> doc_e->bin_num=b->renum_num;
|
||||
<a name="l53"></a> </span><span class=cF1>if</span><span class=cF0> (!b->tag && doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag && *doc_e->tag)
|
||||
<a name="l54"></a> b->tag=</span><span class=cF5>StrNew</span><span class=cF0>(doc_e->tag,doc->mem_task);
|
||||
<a name="l55"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l56"></a> </span><span class=cF5>RawPrint</span><span class=cF0>(3000,</span><span class=cF6>"Bin Not Found"</span><span class=cF0>);
|
||||
<a name="l57"></a> doc_e->type=doc_e->de_flags=0;
|
||||
<a name="l58"></a> doc_e->type_u8=</span><span class=cF3>DOCT_ERROR</span><span class=cF0>;
|
||||
<a name="l59"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l60"></a> }
|
||||
<a name="l61"></a> doc_e=doc_e2;
|
||||
<a name="l62"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l63"></a>
|
||||
<a name="l64"></a> b=doc->bin_head.next;
|
||||
<a name="l65"></a> doc->cur_bin_num=1;
|
||||
<a name="l66"></a> </span><span class=cF1>while</span><span class=cF0> (b!=&doc->bin_head) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l67"></a> b1=b->next;
|
||||
<a name="l68"></a> </span><span class=cF1>if</span><span class=cF0> (!b->use_cnt) {
|
||||
<a name="l69"></a> </span><span class=cF5>QueRem</span><span class=cF0>(b);
|
||||
<a name="l70"></a> </span><span class=cF5>Free</span><span class=cF0>(b->data);
|
||||
<a name="l71"></a> </span><span class=cF5>Free</span><span class=cF0>(b);
|
||||
<a name="l72"></a> } </span><span class=cF1>else</span><span class=cF0> {
|
||||
<a name="l73"></a> b->num=b->renum_num;
|
||||
<a name="l74"></a> </span><span class=cF1>if</span><span class=cF0> (b->num>=doc->cur_bin_num)
|
||||
<a name="l75"></a> doc->cur_bin_num=b->num+1;
|
||||
<a name="l76"></a> }
|
||||
<a name="l77"></a> b=b1;
|
||||
<a name="l78"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l79"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
||||
<a name="l80"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l81"></a>}
|
||||
<a name="l82"></a>
|
||||
<a name="l83"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>DocBinDel</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocBin</span><span class=cF0> *b)
|
||||
<a name="l84"></a>{
|
||||
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (doc && b && b->use_cnt) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l86"></a> b->use_cnt--;
|
||||
<a name="l87"></a> </span><span class=cF1>if</span><span class=cF0> (!b->use_cnt) {
|
||||
<a name="l88"></a> </span><span class=cF5>QueRem</span><span class=cF0>(b);
|
||||
<a name="l89"></a> </span><span class=cF5>Free</span><span class=cF0>(b->tag);
|
||||
<a name="l90"></a> </span><span class=cF5>Free</span><span class=cF0>(b->data);
|
||||
<a name="l91"></a> </span><span class=cF5>Free</span><span class=cF0>(b);
|
||||
<a name="l92"></a> }
|
||||
<a name="l93"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l94"></a> </span><span class=cF5>RawPrint</span><span class=cF0>(3000,</span><span class=cF6>"DocBinDel"</span><span class=cF0>);
|
||||
<a name="l95"></a>}
|
||||
<a name="l96"></a>
|
||||
<a name="l97"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>DocBinPtrRst</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e)
|
||||
<a name="l98"></a>{
|
||||
<a name="l99"></a> </span><span class=cF1>U8</span><span class=cF0> *st,*st2;
|
||||
<a name="l100"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc2;
|
||||
<a name="l101"></a> </span><span class=cF9>CDocBin</span><span class=cF0> *tmpb,*tmpb2;
|
||||
<a name="l102"></a> </span><span class=cF9>I64</span><span class=cF0> i,bin_num=0;
|
||||
<a name="l103"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags&</span><span class=cF3>DOCEF_HAS_BIN</span><span class=cF0> &&
|
||||
<a name="l104"></a> doc_e->bin_ptr_link && </span><span class=cF5>StrLen</span><span class=cF7>(</span><span class=cF0>doc_e->bin_ptr_link</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l105"></a> bin_num=doc_e->bin_num;
|
||||
<a name="l106"></a> st=</span><span class=cF5>StrNew</span><span class=cF0>(doc_e->bin_ptr_link);
|
||||
<a name="l107"></a> st2=</span><span class=cF5>StrNew</span><span class=cF0>(st);
|
||||
<a name="l108"></a> </span><span class=cF5>StrLastRem</span><span class=cF0>(st,</span><span class=cF6>","</span><span class=cF0>,st2);
|
||||
<a name="l109"></a> i=</span><span class=cF5>Str2I64</span><span class=cF0>(st2);
|
||||
<a name="l110"></a> </span><span class=cF1>if</span><span class=cF0> (i>0||*st2) {
|
||||
<a name="l111"></a> doc2=</span><span class=cF5>DocRead</span><span class=cF0>(st);
|
||||
<a name="l112"></a> </span><span class=cF1>if</span><span class=cF0> (i>0 && </span><span class=cF7>(</span><span class=cF0>tmpb2=</span><span class=cF5>DocBinFindNum</span><span class=cF0>(doc2,i)</span><span class=cF7>)</span><span class=cF0> ||
|
||||
<a name="l113"></a> i==0 && </span><span class=cF7>(</span><span class=cF0>tmpb2=</span><span class=cF5>DocBinFindTag</span><span class=cF0>(doc2,st2)</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l114"></a> i=1;
|
||||
<a name="l115"></a> </span><span class=cF1>if</span><span class=cF0> (bin_num>0) {
|
||||
<a name="l116"></a> </span><span class=cF1>if</span><span class=cF0> (tmpb=</span><span class=cF5>DocBinFindNum</span><span class=cF7>(</span><span class=cF0>doc,bin_num</span><span class=cF7>)</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l117"></a> i=tmpb->use_cnt;
|
||||
<a name="l118"></a> </span><span class=cF5>DocBinDel</span><span class=cF0>(doc,tmpb);
|
||||
<a name="l119"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l120"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l121"></a> bin_num=doc->cur_bin_num++;
|
||||
<a name="l122"></a> tmpb=</span><span class=cF5>MAllocIdent</span><span class=cF0>(tmpb2,doc->mem_task);
|
||||
<a name="l123"></a> tmpb->use_cnt=i;
|
||||
<a name="l124"></a> tmpb->data=</span><span class=cF5>MAllocIdent</span><span class=cF0>(tmpb2->data,doc->mem_task);
|
||||
<a name="l125"></a> tmpb->num=bin_num;
|
||||
<a name="l126"></a> doc_e->bin_data=tmpb;
|
||||
<a name="l127"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e->de_flags&</span><span class=cF3>DOCEF_TAG</span><span class=cF0> && doc_e->tag && *doc_e->tag)
|
||||
<a name="l128"></a> tmpb->tag=</span><span class=cF5>StrNew</span><span class=cF0>(doc_e->tag,doc->mem_task);
|
||||
<a name="l129"></a> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l130"></a> tmpb->tag=</span><span class=cF3>NULL</span><span class=cF0>;
|
||||
<a name="l131"></a> </span><span class=cF5>QueIns</span><span class=cF0>(tmpb,doc->bin_head.last);
|
||||
<a name="l132"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l133"></a> bin_num=0;
|
||||
<a name="l134"></a> </span><span class=cF5>DocDel</span><span class=cF0>(doc2);
|
||||
<a name="l135"></a> } </span><span class=cF1>else</span><span class=cF0>
|
||||
<a name="l136"></a> bin_num=0;
|
||||
<a name="l137"></a> </span><span class=cF5>Free</span><span class=cF0>(st2);
|
||||
<a name="l138"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
|
||||
<a name="l139"></a> doc_e->bin_num=bin_num;
|
||||
<a name="l140"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l141"></a> </span><span class=cF1>return</span><span class=cF0> bin_num;
|
||||
<a name="l142"></a>}
|
||||
</span></pre></body>
|
||||
</html>
|
||||
683
public/Wb/Adam/DolDoc/DocChar.HC.HTML
Executable file
683
public/Wb/Adam/DolDoc/DocChar.HC.HTML
Executable file
@ -0,0 +1,683 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="generator" content="TempleOS V5.03">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
<link rel="stylesheet" href="/style/templeos.css">
|
||||
<script src="/script/templeos.js"></script>
|
||||
<style type="text/css">
|
||||
.cF0{color:#000000;background-color:#ffffff;}
|
||||
.cF1{color:#0000aa;background-color:#ffffff;}
|
||||
.cF2{color:#00aa00;background-color:#ffffff;}
|
||||
.cF3{color:#00aaaa;background-color:#ffffff;}
|
||||
.cF4{color:#aa0000;background-color:#ffffff;}
|
||||
.cF5{color:#aa00aa;background-color:#ffffff;}
|
||||
.cF6{color:#aa5500;background-color:#ffffff;}
|
||||
.cF7{color:#aaaaaa;background-color:#ffffff;}
|
||||
.cF8{color:#555555;background-color:#ffffff;}
|
||||
.cF9{color:#5555ff;background-color:#ffffff;}
|
||||
.cFA{color:#55ff55;background-color:#ffffff;}
|
||||
.cFB{color:#55ffff;background-color:#ffffff;}
|
||||
.cFC{color:#ff5555;background-color:#ffffff;}
|
||||
.cFD{color:#ff55ff;background-color:#ffffff;}
|
||||
.cFE{color:#ffff55;background-color:#ffffff;}
|
||||
.cFF{color:#ffffff;background-color:#ffffff;}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<pre id="content">
|
||||
<a name="l1"></a><span class=cF0>#</span><span class=cF1>help_index</span><span class=cF0> </span><span class=cF6>"DolDoc/Editor"</span><span class=cF0>
|
||||
<a name="l2"></a>
|
||||
<a name="l3"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>EdCurU8</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc)
|
||||
<a name="l4"></a>{</span><span class=cF2>//Return cur U8. See </span><a href="/Wb/Adam/DolDoc/DocCodeTools.HC.HTML#l387"><span class=cF4>EdRenumAsm</span></a><span class=cF2> for an example.</span><span class=cF0>
|
||||
<a name="l5"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock=</span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l6"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry;
|
||||
<a name="l7"></a> </span><span class=cF9>I64</span><span class=cF0> res=-1;
|
||||
<a name="l8"></a> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TEXT</span><span class=cF0> &&
|
||||
<a name="l9"></a> doc_ce->min_col<=doc->cur_col<doc_ce->max_col)
|
||||
<a name="l10"></a> res=doc_ce->tag[doc->cur_col];
|
||||
<a name="l11"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_TAB</span><span class=cF0>)
|
||||
<a name="l12"></a> res=</span><span class=cF6>'\t'</span><span class=cF0>;
|
||||
<a name="l13"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_ce->type_u8==</span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0> ||
|
||||
<a name="l14"></a> doc_ce->type_u8==</span><span class=cF3>DOCT_SOFT_NEW_LINE</span><span class=cF0>)
|
||||
<a name="l15"></a> res=</span><span class=cF6>'\n'</span><span class=cF0>;
|
||||
<a name="l16"></a> </span><span class=cF1>if</span><span class=cF0> (unlock)
|
||||
<a name="l17"></a> </span><span class=cF5>DocUnlock</span><span class=cF0>(doc);
|
||||
<a name="l18"></a> </span><span class=cF1>return</span><span class=cF0> res;
|
||||
<a name="l19"></a>}
|
||||
<a name="l20"></a>
|
||||
<a name="l21"></a></span><span class=cF1>public</span><span class=cF0> </span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>EdCursorLeft</span><span class=cF0>(</span><span class=cF9>CDoc</span><span class=cF0> *doc,</span><span class=cF9>I64</span><span class=cF0> sc=</span><span class=cF3>I64_MIN</span><span class=cF0>)
|
||||
<a name="l22"></a>{</span><span class=cF2>//Move cursor left. Might need a call to </span><a href="/Wb/Adam/DolDoc/DocRecalc.HC.HTML#l256"><span class=cF4>DocRecalc</span></a><span class=cF2>().</span><span class=cF0>
|
||||
<a name="l23"></a></span><span class=cF2>//See </span><a href="/Wb/Adam/DolDoc/DocCodeTools.HC.HTML#l387"><span class=cF4>EdRenumAsm</span></a><span class=cF2> for an example.</span><span class=cF0>
|
||||
<a name="l24"></a> </span><span class=cF1>U8</span><span class=cF0> *dst;
|
||||
<a name="l25"></a> </span><span class=cF1>Bool</span><span class=cF0> unlock=</span><span class=cF5>DocLock</span><span class=cF0>(doc);
|
||||
<a name="l26"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_ce=doc->cur_entry,*original_ce=doc_ce,*doc_ne;
|
||||
<a name="l27"></a> </span><span class=cF9>I64</span><span class=cF0> cc=doc->cur_col,y=doc_ce->y;
|
||||
<a name="l28"></a> </span><span class=cF1>if</span><span class=cF0> (sc!=</span><span class=cF3>I64_MIN</span><span class=cF0>) sc=sc.u32[0];
|
||||
<a name="l29"></a> </span><span class=cF1>if</span><span class=cF0> (sc>=0 && sc&</span><span class=cF3>SCF_CTRL</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l30"></a> </span><span class=cF1>while</span><span class=cF0> (doc_ce->last!=doc && </span><span class=cF7>(</span><span class=cF0>doc_ce->last->y==y ||
|
||||
<a name="l31"></a> doc_ce->de_flags & (</span><span class=cF3>DOCEF_SKIP</span><span class=cF0>|</span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF0>)</span><span class=cF7>)</span><span class=cF0>)
|
||||
<a name="l32"></a> doc_ce=doc_ce->last; </span><span class=cF2>//TODO: sel? recurse?</span><span class=cF0>
|
||||
<a name="l33"></a> cc=doc_ce->min_col;
|
||||
<a name="l34"></a> </span><span class=cF7>}</span><span class=cF0> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l35"></a> </span><span class=cF1>if</span><span class=cF0> (cc>doc_ce->min_col) {
|
||||
<a name="l36"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsEditableText</span><span class=cF7>(</span><span class=cF0>doc_ce</span><span class=cF7>)</span><span class=cF0> && cc<doc_ce->max_col) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l37"></a> dst=doc_ce->tag+cc;
|
||||
<a name="l38"></a> doc_ne=</span><span class=cF5>DocEntryNewTag</span><span class=cF0>(doc,doc_ce,dst);
|
||||
<a name="l39"></a> *dst=0;
|
||||
<a name="l40"></a> doc_ce->max_col=cc;
|
||||
<a name="l41"></a> </span><span class=cF5>QueIns</span><span class=cF0>(doc_ne,doc_ce);
|
||||
<a name="l42"></a> </span><span class=cF7>}</span><span class=cF0>
|
||||
<a name="l43"></a> cc--;
|
||||
<a name="l44"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>IsEditableText</span><span class=cF7>(</span><span class=cF0>doc_ce</span><span class=cF7>)</span><span class=cF0> && cc>doc_ce->min_col) </span><span class=cF7>{</span><span class=cF0>
|
||||
<a name="l45"></a> dst=doc_ce->tag+cc;
|
||||
<a name="l46"></a> doc_ne=</span><span class=cF5>DocEntryNewTag</span><span class=cF0>(doc,doc_ce,dst);
|
||||
<a name="l47"></a> *dst=0;
|
||||
<a name="l48"></a> doc_ce->max_col=cc;
|
||||
<a name="l49"></a> </span><span class=cF5>QueIns</span><span class=cF0>(doc_ne,doc_ce);
|
||||