13 #define epicsExportSharedSymbols 16 using epics::pvData::castUnsafe;
23 static void noconvert()
25 throw std::runtime_error(
"castUnsafeV: Conversion not supported");
28 template<
typename TO,
typename FROM>
29 static void castVTyped(
size_t count,
void *draw,
const void *sraw)
32 const FROM *src=(FROM*)sraw;
37 for(
size_t i=0;
i<count;
i++) {
38 dest[
i] = castUnsafe<TO,FROM>(src[
i]);
40 }
catch (std::exception& ex) {
44 std::ostringstream os;
45 os <<
"failed to parse element at index " << (src - (FROM*)sraw);
46 os <<
": " << ex.what();
47 throw std::runtime_error(os.str());
55 static void copyV(
size_t count,
void *draw,
const void *sraw)
58 const T *src=(
const T*)sraw;
63 static void copyMem(
size_t count,
void *draw,
const void *sraw)
65 memcpy(draw, sraw, count*N);
70 namespace epics {
namespace pvData {
74 #define COPYMEM(N) copyMem<N>(count, dest, src) 75 #define CAST(TO, FROM) castVTyped<TO, FROM>(count, dest, src) 82 default: noconvert();
return;
269 case pvString: copyV<std::string>(count, dest, src);
return;
#define THROW_EXCEPTION2(TYPE, MSG)
TODO only here because of the Lockable.
void copy(PVValueArray< T > &pvFrom, size_t fromOffset, size_t fromStride, PVValueArray< T > &pvTo, size_t toOffset, size_t toStride, size_t count)
Copy a subarray from one scalar array to another.
epicsShareExtern void castUnsafeV(size_t count, ScalarType to, void *dest, ScalarType from, const void *src)