int RefCollection::indexOf()

in libs/core/RefCollection.cpp [105:129]


int RefCollection::indexOf(uint32_t x, int start)
{
    if (!in_range(start))
        return -1;

    if (isString())
    {
      StringData *xx = (StringData*)x;
      for (int i = start; i < data_length; ++i) {
        StringData *ee = (StringData*)data_storage[i];
        if (xx->len == ee->len && strncmp(xx->data, ee->data, xx->len) == 0)
          return (int)i;
      }
    }
    else
    {
        for (int i = start; i < data_length; ++i) {
            if ((uint32_t)data_storage[i] == x) {
                return (int)i;
            }
        }
    }

    return -1;
}