Esempio n. 1
0
ArrayData *VectorString::insert(ssize_t pos, CVarRef v, bool copy) {
  if (!v.isString()) {
    ArrayData *ret = NEW(VectorVariant)(this);
    ret->insert(pos, v, false);
    return ret;
  }

  if (copy) {
    ArrayData* ret = NEW(VectorString)(this);
    ret->insert(pos, v, false);
    return ret;
  }

  if (pos >= size()) {
    return append(v, false);
  }
  if (pos < 0) pos = 0;

  m_elems.insert(pos, v.toString());
  return NULL;
}
Esempio n. 2
0
ArrayData *VectorVariant::insert(ssize_t pos, CVarRef v, bool copy) {
  if (pos >= size()) {
    return append(v, false);
  }

  if (copy) {
    ArrayData* ret = NEW(VectorVariant)(this);
    ret->insert(pos, v, false);
    return ret;
  }

  if (pos == ArrayData::invalid_index) pos = 0;

  m_elems.insert(pos, ArrayFuncs::element(v));
  return NULL;
}
Esempio n. 3
0
ArrayData *MapVariant::insert(ssize_t pos, CVarRef v, bool copy) {
  if (pos >= size()) {
    return append(v, false);
  }
  if (pos < 0) pos = 0;

  if (copy) {
    ArrayData* ret = NEW(MapVariant)(this);
    ret->insert(pos, v, false);
    return ret;
  }

  insertKey(pos);
  m_elems.insert(pos, ArrayFuncs::element(v));
  return NULL;
}