Exemplo n.º 1
0
HOT_FUNC
Array &Array::mergeImpl(ArrayData *data, ArrayData::ArrayOp op) {
  if (m_px == nullptr || data == nullptr) {
    throw BadArrayMergeException();
  }
  if (!data->empty()) {
    if (op != ArrayData::Merge && m_px->empty()) {
      ArrayBase::operator=(data);
    } else if (m_px != data || op == ArrayData::Merge) {
      ArrayData *escalated = m_px->append(data, op, m_px->getCount() > 1);
      if (escalated != m_px) ArrayBase::operator=(escalated);
    }
  } else if (op == ArrayData::Merge) {
    m_px->renumber();
  }
  return *this;
}
Exemplo n.º 2
0
Array Array::operator+(CVarRef var) const {
    if (var.getType() != KindOfArray) {
        throw BadArrayMergeException();
    }
    return operator+(var.getArrayData());
}