changed how to calculate the mid point in a binary search loop
This commit is contained in:
parent
68a7118fb2
commit
1dff630fdd
@ -8,6 +8,17 @@ class Exception(Apex)
|
|||||||
{
|
{
|
||||||
var signalContext, handlerContext, messageText.
|
var signalContext, handlerContext, messageText.
|
||||||
|
|
||||||
|
(*
|
||||||
|
TODO: can i convert 'thisProcess primError' to a relevant exception?
|
||||||
|
var(#class) primExceptTable.
|
||||||
|
|
||||||
|
method(#class) forPrimitiveError: no
|
||||||
|
{
|
||||||
|
^self.primExceptTable at: no
|
||||||
|
}
|
||||||
|
*)
|
||||||
|
|
||||||
|
|
||||||
method(#class) signal
|
method(#class) signal
|
||||||
{
|
{
|
||||||
^self new signal
|
^self new signal
|
||||||
|
@ -804,13 +804,17 @@ int moo_genpfmethods (moo_t* moo, moo_mod_t* mod, moo_oop_class_t _class, const
|
|||||||
|
|
||||||
moo_pfbase_t* moo_findpfbase (moo_t* moo, moo_pfinfo_t* pfinfo, moo_oow_t pfcount, const moo_ooch_t* name, moo_oow_t namelen)
|
moo_pfbase_t* moo_findpfbase (moo_t* moo, moo_pfinfo_t* pfinfo, moo_oow_t pfcount, const moo_ooch_t* name, moo_oow_t namelen)
|
||||||
{
|
{
|
||||||
int left, right, mid, n;
|
moo_oow_t left, right, mid;
|
||||||
|
int n;
|
||||||
|
|
||||||
|
/* binary search */
|
||||||
|
|
||||||
left = 0; right = pfcount - 1;
|
left = 0; right = pfcount - 1;
|
||||||
|
|
||||||
while (left <= right)
|
while (left <= right)
|
||||||
{
|
{
|
||||||
mid = (left + right) / 2;
|
/*mid = (left + right) / 2;*/
|
||||||
|
mid = left + ((right - left) / 2);
|
||||||
|
|
||||||
n = moo_compoocharsoocstr (name, namelen, pfinfo[mid].mthname);
|
n = moo_compoocharsoocstr (name, namelen, pfinfo[mid].mthname);
|
||||||
if (n < 0) right = mid - 1;
|
if (n < 0) right = mid - 1;
|
||||||
@ -895,7 +899,6 @@ void* moo_getobjtrailer (moo_t* moo, moo_oop_t obj, moo_oow_t* size)
|
|||||||
return MOO_OBJ_GET_TRAILER_BYTE(obj);
|
return MOO_OBJ_GET_TRAILER_BYTE(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
moo_oop_t moo_findclass (moo_t* moo, moo_oop_set_t nsdic, const moo_ooch_t* name)
|
moo_oop_t moo_findclass (moo_t* moo, moo_oop_set_t nsdic, const moo_ooch_t* name)
|
||||||
{
|
{
|
||||||
moo_oop_association_t ass;
|
moo_oop_association_t ass;
|
||||||
|
@ -1281,8 +1281,8 @@ enum moo_synerrnum_t
|
|||||||
MOO_SYNERR_CLASSDUPL, /* duplicate class */
|
MOO_SYNERR_CLASSDUPL, /* duplicate class */
|
||||||
MOO_SYNERR_CLASSCONTRA, /* contradictory class */
|
MOO_SYNERR_CLASSCONTRA, /* contradictory class */
|
||||||
MOO_SYNERR_CLASSNAMEINVAL, /* wrong class name */
|
MOO_SYNERR_CLASSNAMEINVAL, /* wrong class name */
|
||||||
MOO_SYNERR_CLASSTRSIZE, /* non-pointer class inheriting a superclass with trailer size set */
|
MOO_SYNERR_CLASSTRSIZE, /* non-pointer class now allowed to inherit a superclass with trailer size set */
|
||||||
MOO_SYNERR_CLASSFINAL, /* cannot inherit a #final class */
|
MOO_SYNERR_CLASSFINAL, /* now allowed to inherit a #final class */
|
||||||
MOO_SYNERR_VARDCLBANNED, /* variable declaration not allowed */
|
MOO_SYNERR_VARDCLBANNED, /* variable declaration not allowed */
|
||||||
MOO_SYNERR_MODIFIER, /* modifier expected */
|
MOO_SYNERR_MODIFIER, /* modifier expected */
|
||||||
MOO_SYNERR_MODIFIERINVAL, /* wrong modifier */
|
MOO_SYNERR_MODIFIERINVAL, /* wrong modifier */
|
||||||
|
Loading…
Reference in New Issue
Block a user