41 long nreq = outnReq ? *outnReq : 1;
42 if(!inraw || nreq <= 0 ||
INVALID_DB_REQ(outdbf))
return S_db_errArg;
46 pvd::PVField::const_shared_pointer in(inraw);
52 if(!in)
return S_db_errArg;
57 char *outsbuf = (
char*)outbuf;
64 if(!index)
return S_db_badField;
78 if(ival < strs.size()) {
81 const std::string& sval = strs[ival];
83 memcpy(outbuf, sval.c_str(), slen);
100 arr.
slice(0, nreq*elemsize);
101 nreq = arr.
size()/elemsize;
104 char *outsbuf = (
char*)outbuf;
113 memcpy(outsbuf, strs[
i].c_str(), slen);
114 outsbuf[slen] =
'\0';
125 }
else if(in->getField()->getType() ==
pvd::scalar) {
126 char *outsbuf = (
char*)outbuf;
135 memcpy(outbuf, val.
as<std::string>().c_str(), len);
146 memcpy(outbuf, temp.c_str(), len);
FORCE_INLINE std::tr1::shared_ptr< PVField > getSubField(A a)
PVScalar is the base class for each scalar field.
#define assert(exp)
Declare that a condition should be true.
size_t elementSize(ScalarType id)
gives sizeof(T) where T depends on the scalar type id.
pointer data() const
Return Base pointer.
#define INVALID_DB_REQ(x)
ScalarType type() const
Type code of contained value. Or (ScalarType)-1 is empty.
void getAs(shared_vector< const T > &out) const
template class for all extensions of PVArray.
Base class for a scalarArray.
Data interface for a structure,.
size_t size() const
Number of elements visible through this vector.
epicsShareExtern void castUnsafeV(size_t count, ScalarType to, void *dest, ScalarType from, const void *src)
void slice(size_t offset, size_t length=(size_t)-1)
Reduce the view of this shared_vector.
LIBCOM_API int epicsStdCall epicsSnprintf(char *str, size_t size, const char *format,...) EPICS_PRINTF_STYLE(3
::epics::pvData::shared_vector< const T > const_svector