size_t Convert::fromStringArray(PVScalarArrayPtr const &pv, size_t offset, size_t length, StringArray const & from, size_t fromOffset) { size_t alen = pv->getLength(); if(offset==0 && length>=alen) { // replace all existing elements assert(from.size()>=fromOffset+length); PVStringArray::svector data(length); std::copy(from.begin()+fromOffset, from.begin()+fromOffset+length, data.begin()); PVStringArray::const_svector temp(freeze(data)); pv->putFrom<string>(temp); return length; } else { // partial update. throw std::runtime_error("fromStringArray: partial update not implemented"); } }
int64 NTNDArray::getValueSize() { int64 size = 0; PVScalarArrayPtr storedValue = getValue()->get<PVScalarArray>(); if (!storedValue.get()) { size = storedValue->getLength()*getValueTypeSize(); } return size; }