'Generate output variables to a specialization,
i.e. pointers that are used to return values.'

def _get_outcallvars(self, outtypes, c):

    (outcallvars, tmpvars, casts) = ([], [], [])
    start = (len(self.outvars) - len(outtypes))
    outvars = self.outvars[start:]
    for (n, (var, outtype)) in enumerate(zip(outvars, outtypes)):
        if (c and (outtype == 'double    complex')):
            tmp = 'tmp{}'.format(n)
            tmpvars.append(tmp)
            outcallvars.append('&{}'.format(tmp))
            tmpcast = double_complex_from_npy_cdouble(tmp)
            casts.append('{}[0]    =    {}'.format(var, tmpcast))
        else:
            outcallvars.append('{}'.format(var))
    return (outcallvars, tmpvars, casts)
