py: Make long ints hashable.

Addresses issue #765.
This commit is contained in:
Damien George
2014-07-24 14:21:37 +01:00
parent 4ecb700fe3
commit ffe911d228
7 changed files with 45 additions and 0 deletions

View File

@@ -24,6 +24,7 @@
* THE SOFTWARE.
*/
#include <stdint.h>
#include <stdio.h>
#include <stdarg.h>
#include <assert.h>
@@ -33,6 +34,8 @@
#include "misc.h"
#include "qstr.h"
#include "obj.h"
#include "mpz.h"
#include "objint.h"
#include "runtime0.h"
#include "runtime.h"
#include "stackctrl.h"
@@ -152,6 +155,8 @@ mp_int_t mp_obj_hash(mp_obj_t o_in) {
return 1; // needs to hash to same as the integer 1, since True==1
} else if (MP_OBJ_IS_SMALL_INT(o_in)) {
return MP_OBJ_SMALL_INT_VALUE(o_in);
} else if (MP_OBJ_IS_TYPE(o_in, &mp_type_int)) {
return mp_obj_int_hash(o_in);
} else if (MP_OBJ_IS_STR(o_in) || MP_OBJ_IS_TYPE(o_in, &mp_type_bytes)) {
return mp_obj_str_get_hash(o_in);
} else if (MP_OBJ_IS_TYPE(o_in, &mp_type_NoneType)) {