def encode_call(self, call):
<EOL>if call is None:<EOL><INDENT>return None<EOL><DEDENT>itokens = call.split(self._callables_separator)<EOL>otokens = []<EOL>for itoken in itokens:<EOL><INDENT>otoken = self._clut.get(itoken, None)<EOL>if not otoken:<EOL><INDENT>otoken = str(len(self._clut))<EOL>self._clut[itoken] = otoken<EOL><DEDENT>otokens.append(otoken)<EOL><DEDENT>return self._callables_separator.join(otokens)<EOL>
Replace callables with tokens to reduce object memory footprint.

A callable token is an integer that denotes the order in which the
callable was encountered by the encoder, i.e. the first callable
encoded is assigned token 0, the second callable encoded is assigned
token 1, etc.

:param call: Callable name
:type  call: string

:rtype: string