% $Id: UniqueNames.oz,v 1.3 2009/01/10 18:46:07 leavens Exp $ % Unique names % AUTHOR: Gary T. Leavens % Representation % ::= declare fun {UniqueNames PrefixChar} %% ENSURES: Result is an object that can be used as a source of unique %% names with the given prefix character LastIssued = {NewCell ~1} fun {UniqueName} %% ENSURES: Result is a new unique name LastIssued := @LastIssued+1 {StringToAtom PrefixChar|{IntToString @LastIssued}} end fun {ExtendName Name} %% ENSURES: Result is a new unique name based on Name LastIssued := @LastIssued+1 {StringToAtom {Append {AtomToString Name} &_|{IntToString @LastIssued}}} end in un(uniquename:UniqueName extendname:ExtendName) end