Exemple #1
0
newtRef NcMultiply(newtRefArg r1, newtRefArg r2)
{
    bool	real;

    if (! NewtArgsIsNumber(r1, r2, &real))
		return NewtThrow0(kNErrNotANumber);

    if (real)
    {
        double real1;
        double real2;

        real1 = NewtRefToReal(r1);
        real2 = NewtRefToReal(r2);

        return NewtMakeReal(real1 * real2);
    }
    else
    {
        int32_t	int1;
        int32_t	int2;

        int1 = NewtRefToInteger(r1);
        int2 = NewtRefToInteger(r2);

        return NewtMakeInteger(int1 * int2);
    }
}
Exemple #2
0
newtRef NcDivide(newtRefArg r1, newtRefArg r2)
{
    bool	real;

    if (! NewtArgsIsNumber(r1, r2, &real))
		return NewtThrow0(kNErrNotANumber);

    if (real)
    {
        double real1;
        double real2;

        real1 = NewtRefToReal(r1);
        real2 = NewtRefToReal(r2);

        if (real2 == 0.0)
            return NewtThrow(kNErrDiv0, r2);

        return NewtMakeReal(real1 / real2);
    }
    else
    {
        int32_t	int1;
        int32_t	int2;

        int1 = NewtRefToInteger(r1);
        int2 = NewtRefToInteger(r2);

        if (int2 == 0)
            return NewtThrow(kNErrDiv0, r2);

        return NewtMakeInteger(int1 / int2);
    }
}
Exemple #3
0
newtRef NsStrCat(newtRefArg rcvr, newtRefArg str, newtRefArg v)
{
	char	wk[32];
    char *	s = NULL;

    switch (NewtGetRefType(v, true))
    {
        case kNewtInt30:
        case kNewtInt32:
            {
                int	n;

                n = (int)NewtRefToInteger(v);
                sprintf(wk, "%d", n);
                s = wk;
            }
            break;

        case kNewtReal:
            {
                double	n;

                n = NewtRefToReal(v);
                sprintf(wk, "%f", n);
                s = wk;
            }
            break;

        case kNewtCharacter:
			{
				int		c;

				c = NewtRefToCharacter(v);
                sprintf(wk, "%c", c);
                s = wk;
			}
            break;

        case kNewtSymbol:
            {
                newtSymDataRef	sym;

                sym = NewtRefToSymbol(v);
                s = sym->name;
            }
            break;

        case kNewtString:
            s = NewtRefToString(v);
            break;
    }

    if (s != NULL)
        NewtStrCat(str, s);

    return str;
}