コード例 #1
0
ファイル: vector_string.cpp プロジェクト: Neomeng/hiphop-php
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;
}
コード例 #2
0
ファイル: vector_variant.cpp プロジェクト: Neomeng/hiphop-php
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;
}
コード例 #3
0
ファイル: map_variant.cpp プロジェクト: Neomeng/hiphop-php
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;
}