Example #1
0
File: test.cpp Project: ASPP/numba
int main() {
	TypeManager tm;
	Type t_int32 = tm.get("int32");
	Type t_float = tm.get("float");
	Type t_int64 = tm.get("int64");

	tm.addConversion(t_int32, t_float);
	tm.addConversion(t_float, t_int32);
	tm.addConversion(t_float, t_int64);
	tm.addPromotion(t_int32, t_int64);

	cout << "int32 -> float " 
		 << TCCString(tm.isCompatible(tm.get("int32"), tm.get("float"))) 
		 << EOL;
	cout << "int32 -> int64 " 
	     << TCCString(tm.isCompatible(tm.get("int32"), tm.get("int64")))
	     << EOL;

	Type sig[] = {t_int32, t_float};
	Type ovsigs[] = {
		t_float, t_float,
		t_int64, t_int64,
		t_int32, t_float,
	};

	int sel = tm.selectOverload(sig, ovsigs, 2, 3);

	cout << "Selected " << sel << '\n';


	
	return 0;
}
Example #2
0
PyObject*
check_compatible(PyObject* self, PyObject* args)
{
    PyObject *tmcap;
    int from, to;
    if (!PyArg_ParseTuple(args, "Oii", &tmcap, &from, &to)) {
        return NULL;
    }

    TypeManager *tm = unwrap_TypeManager(tmcap);
    if(!tm) {
        BAD_TM_ARGUMENT;
        return NULL;
    }

    switch(tm->isCompatible(Type(from), Type(to))){
    case TCC_EXACT:
        return PyString_FromString("exact");
    case TCC_PROMOTE:
        return PyString_FromString("promote");
    case TCC_CONVERT_SAFE:
        return PyString_FromString("safe");
        case TCC_CONVERT_UNSAFE:
        return PyString_FromString("unsafe");
    default:
        Py_RETURN_NONE;
    }
}