!! Simple useful array functions 0.1. Copyright 1999 Evin Robertson.  May be
!! used, modified, and distributed without restriction.  Absolutely no warranty
!! of any type is provided for this library.

[ barray_contains addr len num   n;
  for(n = 0: n < len: n++)
     if(num == addr->n)
        rtrue;
  rfalse;
];

[ warray_contains addr len num   n;
  for(n = 0: n < len: n++)
     if(num == addr-->n)
        rtrue;
  rfalse;
];

[ parray_contains obj prop num;
  return warray_contains(obj.&prop, obj.#prop / 2, num);
];

[ barray_contains_non addr len num   n;
  for(n = 0: n < len: n++)
     if(num ~= addr->n)
        rtrue;
  rfalse;
];

[ warray_contains_non addr len num   n;
  for(n = 0: n < len: n++)
     if(num ~= addr-->n)
        rtrue;
  rfalse;
];

[ parray_contains_non obj prop num;
  return warray_contains_non(obj.&prop, obj.#prop / 2, num);
];

[ barray_random addr len;
  return addr->(random(len) - 1);
];

[ warray_random addr len;
  return addr-->(random(len) - 1);
];

[ parray_random obj prop;
  return warray_random(obj.&prop, obj.#prop / 2);
];