tcode.sa
Generated by gen_html_sa_files from ICSI. Contact gomes@icsi.berkeley.edu for details
-- Copyright (C) 1989 1996 Kouji KODAMA
--
-- 1998/1 LongInt
-- 1997/8 un-oriented surface in S^4
-- 1996/10 LINUX version
-- Kouji Kodama 1989/8 FTL-Modula2 version
--
-- initialize knot data and other global variables.
-- Make crossing data and group relations from knot graphics data.
--
-- Set "TCode", "TLength", "Relator" and "RLength".
class VERTEXT
class VERTEXT is
attr companion:INT;
attr sep:VERTEXC;
attr gen:INT;
attr compo:INT;
attr linkPtr:INT;
create:SAME is
res:SAME:=new;
res.companion:=0.int;
res.sep:=#;
res.gen:=0.int;
res.compo:=0.int;
res.linkPtr:=0.int;
return res;
end;
create(s:VERTEXC):SAME is
res:SAME:=create; res.sep:=s; return res;
end;
create(c:INT):SAME is
res:SAME:=create; res.companion:=c; return res;
end;
clone:SAME is
res:SAME:=#;
res.companion:=companion;
res.sep:=sep.clone;
res.gen:=gen;
res.compo:=compo;
res.linkPtr:=linkPtr;
return res;
end;
end;
class TCODE
class TCODE is
include KCODE{VERTEXT} compoStart->kcode_compoStart;
include KCODE_CMP{VERTEXT} printD->kcode_cmp_printD;
printD is
cod:VERTEXC;
#OUT+"index: companion,gen,component,sep \n";
loop i::=0.upto!(k.size-1);
#OUT+i.str+":"+k[i].companion.str+","+k[i].gen.str+","+k[i].compo.str+",";
cod:=k[i].sep;
if VERTEXC::normal.in(cod) then #OUT+"n"; end;
if VERTEXC::ks.in(cod) then #OUT+"["; end;
if VERTEXC::ke.in(cod) then #OUT+"]"; end;
if VERTEXC::ts.in(cod) then #OUT+"("; end;
if VERTEXC::te.in(cod) then #OUT+")"; end;
if VERTEXC::band.in(cod) then #OUT+"b"; end;
if VERTEXC::crossing.in(cod) then #OUT+"c"; end;
if VERTEXC::under.in(cod) then #OUT+"u"; end;
if VERTEXC::over.in(cod) then #OUT+"o"; end;
if VERTEXC::positive.in(cod) then #OUT+"+"; end;
if VERTEXC::negative.in(cod) then #OUT+"-"; end;
if VERTEXC::endc.in(cod) then #OUT+"/"; end;
#OUT+"\n";
end;
end;
number_gen:CARD is
m:CARD:=0;
loop i::=k.ind!; m:=m.max(k[i].gen.card); end;
return m;
end;
compoStart(c:INT):INT is
-- start point of c-th component.
-- return position of "endc" if not exist.
i:INT:=0.int;
loop until!(~VERTEXC::ks.in([i].sep) or [i].compo=c);
i:=([i].companion.card+1).int;
end;
return i;
end;
end; -- class TCODE