MACHINE Rename_Vffnc(VALUE,rcdsiz)
SEES Bool_TYPE, String_TYPE
CONSTANTS Rename_UnPack, Rename_CHARperWORD
PROPERTIES
Rename_UnPack : (NAT +-> VALUE) --> STRING &
Rename_CHARperWORD = 4
VARIABLES Rename_Vfnc
INVARIANT Rename_Vfnc: 1..rcdsiz +-> VALUE
INITIALISATION Rename_Vfnc := {}
OPERATIONS
bb <-- Rename_TST_FLD_FNC(ff) =
PRE
ff: NAT
THEN
bb:=bool(ff:1..rcdsiz)
END;
bb <-- Rename_DEF_FNC(ff) =
PRE
ff: 1..rcdsiz
THEN
bb:=bool(ff:dom(Rename_Vfnc))
END;
bb,dd <-- Rename_FREE_FNC =
IF (1..rcdsiz )- dom(Rename_Vfnc) /= {} THEN
bb := TRUE ||
dd :: (1..rcdsiz) - dom(Rename_Vfnc)
ELSE
bb := FALSE ||
dd :: 1..rcdsiz
END;
Rename_STO_FNC(ff,vv) =
PRE
ff:1..rcdsiz &
vv:VALUE
THEN
Rename_Vfnc(ff):=vv
END;
Rename_RMV_FNC(ff) =
PRE
ff:dom(Rename_Vfnc)
THEN
Rename_Vfnc:={ff} <<| Rename_Vfnc
END;
vv <-- Rename_VAL_FNC(ff) =
PRE
ff:dom(Rename_Vfnc)
THEN
vv:=Rename_Vfnc(ff)
END;
bb <-- Rename_EQL_FNC(ff,vv) =
PRE
vv:VALUE &
ff:dom(Rename_Vfnc)
THEN
bb:=bool(Rename_Vfnc(ff)=vv)
END;
bb <-- Rename_NEQ_FNC(ff,vv) =
PRE
vv:VALUE &
ff:dom(Rename_Vfnc)
THEN
bb:=bool(Rename_Vfnc(ff)/=vv)
END;
/********************* Additional FFNC facilities ************************/
Rename_MOV_FFNC(ii,jj,ll) =
PRE
ii: 1..rcdsiz &
jj: 1..rcdsiz &
ll : 1..rcdsiz &
ii..(ii+ll-1) /\ jj..(jj+ll-1) = {} &
jj..(jj+ll-1) <: 1..rcdsiz &
ii..(ii+ll-1) <: dom(Rename_Vfnc)
THEN
ANY newsegment WHERE
newsegment : (jj..(jj+ll-1)) --> VALUE &
newsegment = %xx.(xx:jj..(jj+ll-1)|Rename_Vfnc(ii+(jj-xx)))
THEN
Rename_Vfnc := Rename_Vfnc <+ newsegment
END
END;
Rename_OVR_FFNC(ii,ll,aa) =
PRE
ii: 1..rcdsiz &
ll: 1..rcdsiz &
ii..(ii+ll-1) <: 1..rcdsiz &
aa: STRING &
ll * Rename_CHARperWORD > size(aa)
THEN
ANY newsegment WHERE
newsegment : (ii..(ii+ll-1)) --> VALUE &
Rename_UnPack(newsegment) = aa
THEN
Rename_Vfnc := Rename_Vfnc <+ newsegment
END
END;
Rename_OVR_LIT_FFNC(ii,ll,aa) =
PRE
ii: 1..rcdsiz &
ll: 1..rcdsiz &
ii..(ii+ll-1) <: 1..rcdsiz &
aa: STRING &
size(aa) < 1000 &
ll * Rename_CHARperWORD > size(aa)
THEN
ANY newsegment WHERE
newsegment : (ii..(ii+ll-1)) --> VALUE &
Rename_UnPack(newsegment) = aa
THEN
Rename_Vfnc := Rename_Vfnc <+ newsegment
END
END;
vv <-- Rename_XTR_FFNC(ii,ll) =
PRE
ii: 1..rcdsiz &
ll: 1..rcdsiz &
ll <= 250 &
ii..(ii+ll-1) <: dom(Rename_Vfnc)
THEN
ANY str WHERE
str : STRING &
str = Rename_UnPack( (ii..(ii+ll-1))<<|Rename_Vfnc )
THEN
vv := str
END
END;
bb <-- Rename_EQL_FFNC(ii,ll,vv) =
PRE
ii: 1..rcdsiz &
ll : 1..rcdsiz &
ii..(ii+ll-1) <: dom(Rename_Vfnc) &
vv: STRING
THEN
bb := bool( Rename_UnPack( (ii..(ii+ll-1))<<|Rename_Vfnc ) = vv)
END;
/************** save/restore host byte order **************/
Rename_SAV_FNC = BEGIN skip END;
Rename_RST_FNC =
BEGIN
Rename_Vfnc :: 1..rcdsiz +-> VALUE
END;
/************** save/restore network byte order **************/
Rename_SAVN_FNC = BEGIN skip END;
Rename_RSTN_FNC =
BEGIN
Rename_Vfnc :: 1..rcdsiz +-> VALUE
END
END
Analysed Constructs
Hypertext Constructs Page
On-line Help
Help Contents Page
Index
Document Last Updated: Wed Aug 25 17:36:22 1999

B-Toolkit Beta 4.55