documentation updated; changes for Field::ID

This commit is contained in:
Marty Kraimer
2012-08-17 06:45:20 -04:00
parent 6a86496385
commit 66fb300873
106 changed files with 2659 additions and 6458 deletions

View File

@@ -163,6 +163,7 @@ public:
DefaultPVArray(ScalarArrayConstPtr const & scalarArray);
virtual ~DefaultPVArray();
virtual void setCapacity(size_t capacity);
virtual void setLength(size_t length);
virtual size_t get(size_t offset, size_t length, PVArrayData<T> &data) ;
virtual size_t put(size_t offset,size_t length, const_pointer from,
size_t fromOffset);
@@ -221,15 +222,33 @@ void DefaultPVArray<T>::setCapacity(size_t capacity)
return;
}
size_t length = PVArray::getLength();
std::vector<T> array(capacity);
size_t num = PVArray::getLength();
if(num>capacity) num = capacity;
if(length>capacity) length = capacity;
std::vector<T> array;
array.reserve(capacity);
array.resize(length);
T * from = get();
for (size_t i=0; i<num; i++) array[i] = from[i];
for (size_t i=0; i<length; i++) array[i] = from[i];
value->swap(array);
PVArray::setCapacityLength(capacity,length);
}
template<typename T>
void DefaultPVArray<T>::setLength(size_t length)
{
if(PVArray::getLength()==length) return;
size_t capacity = PVArray::getCapacity();
if(length>capacity) {
if(!PVArray::isCapacityMutable()) {
std::string message("not capacityMutable");
PVField::message(message, errorMessage);
return;
}
setCapacity(length);
}
value->resize(length);
PVArray::setCapacityLength(capacity,length);
}
template<typename T>
size_t DefaultPVArray<T>::get(size_t offset, size_t len, PVArrayData<T> &data)
{
@@ -266,6 +285,7 @@ size_t DefaultPVArray<T>::put(size_t offset,size_t len,
if(len<=0) return 0;
}
length = newlength;
setLength(length);
}
pvalue = get();
for(size_t i=0;i<len;i++) {