MODULE bss;
{substitute selection set routines}
PROCEDURE bssadd(ssnum: integer; ent: IN OUT entity); PUBLIC;
VAR
atr : attrib;
atval : integer;
BEGIN
IF NOT atr_entfind (ent, 'xxx', atr) THEN
atval := atr_int;
atr_init (atr,atval);
strassign (atr.name,'xxx');
atr_setint (atr, 0);
atr_add2ent (ent, atr);
END;
END bssadd;
PROCEDURE bssclear(ssnum: integer); PUBLIC;
VAR
mode : mode_type;
addr : entaddr;
ent : entity;
aname : str8;
atr : attrib;
BEGIN
aname := 'xxx';
mode_init (mode);
mode_lyr(mode, lyr_all);
addr:=ent_first(mode);
WHILE ent_get(ent, addr) DO
addr:=ent_next(ent, mode);
IF atr_entfind (ent, aname, atr) THEN
atr_delent (ent, atr);
END;
END;
END bssclear;
FUNCTION bssdel(ssnum: integer; ent: IN OUT entity): boolean;
PUBLIC;
VAR
atr_deleted : boolean;
atr : attrib;
aname : str8;
BEGIN
aname := 'xxx';
atr_deleted := false;
IF atr_entfind (ent, aname, atr) THEN
atr_delent (ent, atr);
atr_deleted := true;
END;
RETURN atr_deleted;
END bssdel;
FUNCTION bsslength(ssnum: integer): integer; PUBLIC;
VAR
mode : mode_type;
addr : entaddr;
ent : entity;
aname : str8;
n_of_atr : integer;
atr : attrib;
BEGIN
n_of_atr := 0;
aname := 'xxx';
mode_init (mode);
mode_lyr(mode, lyr_all);
addr:=ent_first(mode);
WHILE ent_get(ent, addr)DO
addr:=ent_next(ent, mode);
IF atr_entfind (ent, aname, atr) THEN
n_of_atr := n_of_atr + 1;
END;
END;
RETURN n_of_atr;
END bsslength;
FUNCTION bssmember(ssnum: integer; ent: IN OUT entity ): boolean;
PUBLIC;
VAR
is_member : boolean;
atr : attrib;
aname : str8;
BEGIN
is_member := false;
Strassign (aname, 'xxx');
IF atr_entfind (ent, aname, atr) THEN
is_member := true;
END;
RETURN is_member;
END bssmember;
END bss.
Declaration snippet:
PROCEDURE bssadd(ssnum: integer; ent: IN OUT entity); EXTERNAL;
PROCEDURE bssclear(ssnum: integer); EXTERNAL;
FUNCTION bssdel(ssnum: integer; ent: IN OUT entity): boolean;
EXTERNAL;
FUNCTION bsslength(ssnum: integer): integer; EXTERNAL;
FUNCTION bssmember(ssnum: integer; ent: IN OUT entity ): boolean;
EXTERNAL;
|