*** __builtin__.java.orig Sun Jan 9 22:33:46 2005 --- __builtin__.java Sun Jan 9 22:28:40 2005 *************** *** 45,50 **** --- 45,52 ---- return __builtin__.tuple(arg1); case 11: return Py.newInteger(__builtin__.id(arg1)); + case 12: + return Py.newBoolean(__builtin__.bool(arg1)); default: throw argCountError(1); } *************** *** 138,143 **** --- 140,146 ---- dict.__setitem__("isinstance", new BuiltinFunctions("isinstance", 10, 2)); dict.__setitem__("id", new BuiltinFunctions("id", 11, 1)); + dict.__setitem__("bool", new BuiltinFunctions("bool", 12, 1)); dict.__setitem__("__import__", new ImportFunction()); dict.__delitem__("execfile_flags"); // -execfile_flags *************** *** 178,183 **** --- 181,200 ---- } } + public static boolean bool(PyObject o) { + boolean res; + + if(o == Py.None) + res = false; + else if(o.isNumberType()) + res = o.__nonzero__(); + else if(o.isMappingType() || o.isSequenceType()) + res = o.__len__() > 0; + else + res = true; + return res; + } + public static boolean callable(PyObject o) { return o.__findattr__("__call__") != null; }