Exemplo n.º 1
0
/* wstring EchoWstring (in wstring s); */
NS_IMETHODIMP
rbXPCOMTest::EchoWstring(const PRUnichar *s, PRUnichar **_retval)
{
    if(!s)
    {
        *_retval = nsnull;
        return NS_OK;
    }

    size_t size = wstring_len(s) + sizeof(PRUnichar);
    *_retval = (PRUnichar*) nsMemory::Clone(s, size);
    return *_retval ? NS_OK : NS_ERROR_OUT_OF_MEMORY;
}
Exemplo n.º 2
0
/* void EchoArrayWCHAR_STR (in PRUint32 size, [array, size_is (size)] in wstring i, [array, size_is (size)] out wstring o); */
NS_IMETHODIMP
rbXPCOMTest::EchoArrayWCHAR_STR(PRUint32 size, const PRUnichar **i, PRUnichar ***o)
{
    if(!i)
    {
        *o = nsnull;
        return NS_OK;
    }

    PRUnichar **array = (PRUnichar**) nsMemory::Alloc(sizeof(PRUnichar*) * size);
    if(!array)
    {
        *o = nsnull;
        return NS_ERROR_OUT_OF_MEMORY;
    }
    PRUint32 idx, idx2;
    for(idx = 0; idx < size; idx++)
    {
        if(!i[idx])
        {
            array[idx] = nsnull;
            continue;
        }
        size_t size = wstring_len(i[idx]) + sizeof(PRUnichar);
        PRUnichar *clone = (PRUnichar*) nsMemory::Clone(i[idx], size);

        if(!clone)
            break;
        else
            array[idx] = clone;
    }
    if(idx < size)
    {
        for(idx2 = 0; idx2 < idx; idx2++)
            if(array[idx2])
                nsMemory::Free(array[idx2]);
        nsMemory::Free(array);
        *o = nsnull;
        return NS_ERROR_OUT_OF_MEMORY;
    }
    *o = array;
    return NS_OK;
}
Exemplo n.º 3
0
int				ft_printf_wstring(va_list ap, t_printf_flags *flags)
{
	int		*str;
	int		prec;
	int		l_prec;
	int		len;
	char	marg;

	str = va_arg(ap, int*);
	len = wstring_len(str);
	prec = (flags->precision >= 0) ? flags->precision : -1;
	l_prec = (prec > 0) ? w_prec(str, prec, &prec) : 0;
	len = (prec >= 0 && prec < len) ? prec : len;
	marg = (flags->FLAGS_ZERO) ? '0' : ' ';
	if (!flags->FLAGS_DASH)
		ft_printf_margin(marg, flags->width - len);
	if (!str)
		ft_printf_buffer("(null)", BUF_WRITE);
	else
		write_wstring(str, prec, l_prec);
	if (flags->FLAGS_DASH)
		ft_printf_margin(' ', flags->width - len);
	return (0);
}