added default hash for nil, true, false
This commit is contained in:
parent
6a5ff66580
commit
d08370f73f
@ -1914,32 +1914,38 @@ static moo_pfrc_t pf_hash (moo_t* moo, moo_ooi_t nargs)
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
{
|
{
|
||||||
int type;
|
if (rcv == moo->_nil) hv = 0;
|
||||||
|
else if (rcv == moo->_true) hv = 1;
|
||||||
MOO_ASSERT (moo, MOO_OOP_IS_POINTER(rcv));
|
else if (rcv == moo->_false) hv = 2;
|
||||||
type = MOO_OBJ_GET_FLAGS_TYPE(rcv);
|
else
|
||||||
switch (type)
|
|
||||||
{
|
{
|
||||||
case MOO_OBJ_TYPE_BYTE:
|
int type;
|
||||||
hv = moo_hashbytes(((moo_oop_byte_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case MOO_OBJ_TYPE_CHAR:
|
MOO_ASSERT (moo, MOO_OOP_IS_POINTER(rcv));
|
||||||
hv = moo_hashoochars (((moo_oop_char_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
type = MOO_OBJ_GET_FLAGS_TYPE(rcv);
|
||||||
break;
|
switch (type)
|
||||||
|
{
|
||||||
|
case MOO_OBJ_TYPE_BYTE:
|
||||||
|
hv = moo_hashbytes(((moo_oop_byte_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
||||||
|
break;
|
||||||
|
|
||||||
case MOO_OBJ_TYPE_HALFWORD:
|
case MOO_OBJ_TYPE_CHAR:
|
||||||
hv = moo_hashhalfwords(((moo_oop_halfword_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
hv = moo_hashoochars (((moo_oop_char_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MOO_OBJ_TYPE_WORD:
|
case MOO_OBJ_TYPE_HALFWORD:
|
||||||
hv = moo_hashwords(((moo_oop_word_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
hv = moo_hashhalfwords(((moo_oop_halfword_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
case MOO_OBJ_TYPE_WORD:
|
||||||
/* MOO_OBJ_TYPE_OOP, ... */
|
hv = moo_hashwords(((moo_oop_word_t)rcv)->slot, MOO_OBJ_GET_SIZE(rcv));
|
||||||
moo_seterrbfmt(moo, MOO_ENOIMPL, "no builtin hash implemented for %O", rcv); /* TODO: better error code? */
|
break;
|
||||||
return MOO_PF_FAILURE;
|
|
||||||
|
default:
|
||||||
|
/* MOO_OBJ_TYPE_OOP, ... */
|
||||||
|
moo_seterrbfmt(moo, MOO_ENOIMPL, "no builtin hash implemented for %O", rcv); /* TODO: better error code? */
|
||||||
|
return MOO_PF_FAILURE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user