class MANGLE


Flattened version is here

Ancestors
CS_COMPONENT



Public


Readable Attributes
attr forbidden:FSET{STR};
**** Strings which may not be used as identifiers

Writable Attributes
attr forbidden:FSET{STR};
**** Strings which may not be used as identifiers

Features
Cify(c:CHAR):STR
**** return an escaped version of c suitable for C.
Cify(arg:STR):STR
**** transform a string into a '\' escaped version suitable for C.
create(p:PROG):SAME
dispose_namespace(ns:$OB)
**** The namespace 'ns' isn't going to be used in the future, so it's okay to get rid of it now.
forbid(s:STR)
**** make sure this identifier never gets used
force_mangle(ob:$OB, s:STR, ns:$OB)
**** see to it that a particular object gets a particular name. if this is not possible, that is an error. 'ns' is the namespace to use.
genlocal(ns:$OB):STR
**** generate a unique identifier used for intermediate results
genother(ns:$OB):STR
**** generate a unique identifier for anything
mangle(ob,ns:$OB):STR
**** Generate unique id that C will be happy with for each unique $OB. Truncates at 24 chars and then puts in number in rightmost part to ensure is unique, if necessary. Also drops any non-alphanumerics.
space(ns:$OB):NAMESPACE
**** The namespace associated with some object. If it doesn't exist yet, make one.


Private

attr global_space:NAMESPACE;
attr global_space:NAMESPACE;
attr namespaces:FMAP{$OB,NAMESPACE};
attr namespaces:FMAP{$OB,NAMESPACE};
attr used_by_local:FSET{STR};
attr used_by_local:FSET{STR};