Pascal News
Pascal News
Pascal News
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
1~57<br />
1~58<br />
1~59<br />
1~60<br />
1~61<br />
1~62<br />
1~63<br />
1~6~<br />
1~65<br />
1~66<br />
1~67<br />
1~68<br />
1~69<br />
1~70<br />
1471<br />
1~72<br />
1~73<br />
1~74<br />
1~75<br />
1~76<br />
1~77<br />
1~78<br />
1479<br />
1~80<br />
1~81<br />
1482<br />
1~83<br />
1484<br />
1485<br />
1487<br />
1488<br />
1~89<br />
1~90<br />
1~91<br />
1~92<br />
1~93<br />
149~<br />
1~95<br />
1496<br />
1~97<br />
1~98<br />
1~99<br />
1500<br />
1501<br />
1502<br />
1503<br />
150~<br />
1505<br />
1507<br />
1508<br />
1510<br />
1511<br />
1512<br />
function compat(p,q :sp) :twostruct;<br />
begin compat: =noteq;<br />
if eqstruct(p,q) then compat:=eq else<br />
begin p:=desub(p); q:=desub(q);<br />
if eqstruct(p,q) then compat:=subeq else<br />
if p' .form=q' .fopm then<br />
case p~ .form of<br />
scalar:<br />
if (p=intptr) and (q=realptr) then compat =ir else<br />
if (p=realptr) and (q=intptr) then compat =ri else<br />
if (p=intptr) and (q=longptr) then compat =il else<br />
if (p=longptr) and (q=intptr) then compat:=11 else<br />
if (p=longptr) and (q=realptr) then compat:=lr else<br />
if (p=realptr) and (q=longptr) then compat:=rl else<br />
pointer:<br />
if (p=nl1ptr) or (q=nilptr) then compat:=eq;<br />
power:<br />
if p=emptyset then compat:=es else<br />
if q=emptyset then compat: =se else<br />
if compat(p' .elset,q' .elset) = maxint-sz then begin error(+017); lc:=O end;<br />
if (not pack) or (sz>1) then if odd(1c) then lc:=lc+1;<br />
address: =10;<br />
Ie! =!c+sz<br />
end;<br />
function reserve( s :integer): integer;<br />
var r :lnteger;<br />
begin r:=address(b.lc,s,false); genreg(r,s,100); reserve:=r;<br />
if b.lc>lcmax then lcmax:=b.lc<br />
end;<br />
f'unction arraysizeCfsp:sp; pack:boolean):integer;<br />
var sZ,min,max,tot,n:integer;<br />
begin sz:=sizeof(fsp' .aeltype);<br />
if not pack then sz:=even(sz);<br />
if bounds(fsp' .inxtype,min,max) then; {we checked before}<br />
dlbno:=dlbno+1; fsp' .arpos.lv:=O; fsp' .arpos.ad:=dlbno;<br />
gendlb(dlbno); gen1(ps rom,min); gencst(max-min);<br />
gencstCsz); genend; -<br />
n: =max-mln+ 1; tot: =sz*n;<br />
if szO then if tot div sz n then begin error(+018); tot:=O end;<br />
arraysize :=tot<br />
end:<br />
procedure treewalk(fip:ip);<br />
var lsp:sp; l:integer;<br />
begin<br />
if fipnil then<br />
begin treewalk( fip' ,llink); treewalk( fip' .rlink);<br />
if fip'.klass=vars then<br />
begin if not (used in fip' .iflag) then errid(-(+019),fip' .name);<br />
if not (assigned in fip' .ifl~g) then errid(-(+020) ,fip' .name);<br />
lsp: =fip' .idtype;<br />
if not (noreg in fip' .iflag) then<br />
genreg( rip' • vpos .ad ,sizeof( lsp) ,ord(formof( lsp, [pointer 1»);<br />
if lspnil then if wi thfile in lsp' .sflag then<br />
if lsp' .form=files then<br />
if level=1 then<br />
begin<br />
for i: =2 to argc do with argyl i] do<br />
z:<br />
m<br />
:E:<br />
tn<br />
....<br />