@@ -375,90 +375,62 @@ struct ScalarStorageOps<std::string> {
375375 * @ingroup pvcontainer
376376 */
377377template <typename T>
378- class epicsShareClass PVScalarValue : public PVScalar {
378+ class PVScalarValue : public PVScalar {
379379 typedef detail::ScalarStorageOps<T> storage_t ;
380380public:
381381 POINTER_DEFINITIONS (PVScalarValue);
382382 typedef T value_type;
383383 typedef T* pointer;
384384 typedef const T* const_pointer;
385385
386- static const ScalarType typeCode;
386+ epicsShareClass static const ScalarType typeCode;
387387
388388 /* *
389389 * Destructor
390390 */
391- virtual ~PVScalarValue ();
391+ epicsShareClass virtual ~PVScalarValue ();
392392 /* *
393393 * Get the value.
394394 * @return The value.
395395 */
396- typename storage_t ::arg_type get () const { return storage. value ; }
396+ epicsShareClass typename storage_t ::arg_type get () const ;
397397 /* *
398398 * Put a new value into the PVScalar.
399399 * @param value The value.
400400 */
401- inline void put (typename storage_t ::arg_type v) {
402- storage.store (v);
403- PVField::postPut ();
404- }
401+ epicsShareClass void put (typename storage_t ::arg_type v);
405402
406- virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE;
403+ epicsShareClass virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE;
407404
408405 // get operator
409406 // double value; doubleField >>= value;
410407 // NOTE: virtual is needed for MS C++ compiler to get this operator exported
411- virtual void operator >>=(T& value) const ;
408+ epicsShareClass virtual void operator >>=(T& value) const ;
412409
413410 // put operator
414411 // double value = 12.8; doubleField <<= value;
415412 // NOTE: virtual is needed for MS C++ compiler to get this operator exported
416- virtual void operator <<=(typename storage_t ::arg_type value);
417-
418- template <typename T1>
419- inline T1 getAs () const {
420- T1 result (castUnsafe<T1,T>(get ()));
421- return result;
422- }
423-
424- template <typename T1>
425- inline void putFrom (typename detail::ScalarStorageOps<T1>::arg_type val) {
426- put (castUnsafe<T,T1>(val));
427- }
413+ epicsShareClass virtual void operator <<=(typename storage_t ::arg_type value);
428414
429- inline void putFrom (const AnyScalar& v) {
430- // the template form of putFrom() hides the base class AnyScalar overload
431- PVScalar::putFrom (v);
432- }
415+ template <typename T1> epicsShareClass T1 getAs () const ;
416+ template <typename T1> epicsShareClass void putFrom (typename detail::ScalarStorageOps<T1>::arg_type val);
417+ epicsShareClass void putFrom (const AnyScalar& v);
433418
434- virtual void assign (const PVScalar& scalar) OVERRIDE FINAL;
435- virtual void copy (const PVScalar& from) OVERRIDE FINAL;
436- virtual void copyUnchecked (const PVScalar& from) OVERRIDE FINAL;
419+ epicsShareClass virtual void assign (const PVScalar& scalar) OVERRIDE FINAL;
420+ epicsShareClass virtual void copy (const PVScalar& from) OVERRIDE FINAL;
421+ epicsShareClass virtual void copyUnchecked (const PVScalar& from) OVERRIDE FINAL;
437422
438- virtual void serialize (ByteBuffer *pbuffer,
423+ epicsShareClass virtual void serialize (ByteBuffer *pbuffer,
439424 SerializableControl *pflusher) const OVERRIDE;
440- virtual void deserialize (ByteBuffer *pbuffer,
425+ epicsShareClass virtual void deserialize (ByteBuffer *pbuffer,
441426 DeserializableControl *pflusher) OVERRIDE FINAL;
442427
443428protected:
444- explicit PVScalarValue (ScalarConstPtr const & scalar)
445- : PVScalar(scalar), storage() {}
446- virtual void getAs (void * result, ScalarType rtype) const OVERRIDE FINAL
447- {
448- const T src = get ();
449- castUnsafeV (1 , rtype, result, typeCode, (const void *)&src);
450- }
429+ epicsShareClass explicit PVScalarValue (ScalarConstPtr const & scalar);
430+ epicsShareClass virtual void getAs (void * result, ScalarType rtype) const OVERRIDE FINAL;
451431public:
452- virtual void getAs (AnyScalar& v) const OVERRIDE FINAL
453- {
454- v = get ();
455- }
456- virtual void putFrom (const void *src, ScalarType stype) OVERRIDE FINAL
457- {
458- T result;
459- castUnsafeV (1 , typeCode, (void *)&result, stype, src);
460- put (result);
461- }
432+ epicsShareClass virtual void getAs (AnyScalar& v) const OVERRIDE FINAL;
433+ epicsShareClass virtual void putFrom (const void *src, ScalarType stype) OVERRIDE FINAL;
462434protected:
463435
464436 friend class PVDataCreate ;
@@ -518,21 +490,21 @@ typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr;
518490 *
519491 * @ingroup pvcontainer
520492 */
521- class epicsShareClass PVString : public PVScalarValue<std::string>, SerializableArray {
493+ class PVString : public PVScalarValue <std::string>, SerializableArray {
522494public:
523495 /* *
524496 * Destructor
525497 */
526- virtual ~PVString () {}
498+ epicsShareClass virtual ~PVString ();
527499
528- virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE FINAL;
500+ epicsShareClass virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE FINAL;
529501
530- virtual void serialize (ByteBuffer *pbuffer,
502+ epicsShareClass virtual void serialize (ByteBuffer *pbuffer,
531503 SerializableControl *pflusher) const OVERRIDE FINAL;
532- virtual void serialize (ByteBuffer *pbuffer,
504+ epicsShareClass virtual void serialize (ByteBuffer *pbuffer,
533505 SerializableControl *pflusher, size_t offset, size_t count) const OVERRIDE FINAL;
534506protected:
535- explicit PVString (ScalarConstPtr const & scalar);
507+ epicsShareClass explicit PVString (ScalarConstPtr const & scalar);
536508
537509 friend class PVDataCreate ;
538510 EPICS_NOT_COPYABLE (PVString)
@@ -1172,7 +1144,7 @@ namespace detail {
11721144 * @ingroup pvcontainer
11731145 */
11741146template <typename T>
1175- class epicsShareClass PVValueArray : public detail::PVVectorStorage<T,PVScalarArray> {
1147+ class PVValueArray : public detail ::PVVectorStorage<T,PVScalarArray> {
11761148 typedef detail::PVVectorStorage<T,PVScalarArray> base_t ;
11771149public:
11781150 POINTER_DEFINITIONS (PVValueArray);
@@ -1185,40 +1157,40 @@ class epicsShareClass PVValueArray : public detail::PVVectorStorage<T,PVScalarAr
11851157 typedef ::epics::pvData::shared_vector<const T> const_svector;
11861158
11871159
1188- static const ScalarType typeCode;
1160+ epicsShareClass static const ScalarType typeCode;
11891161
11901162 /* *
11911163 * Destructor
11921164 */
1193- virtual ~PVValueArray ();
1165+ epicsShareClass virtual ~PVValueArray ();
11941166
11951167 /* *
11961168 * Get introspection interface.
11971169 */
1198- virtual ArrayConstPtr getArray () const OVERRIDE FINAL;
1170+ epicsShareClass virtual ArrayConstPtr getArray () const OVERRIDE FINAL;
11991171
1200- virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE FINAL;
1201- virtual std::ostream& dumpValue (std::ostream& o, size_t index) const OVERRIDE FINAL;
1172+ epicsShareClass virtual std::ostream& dumpValue (std::ostream& o) const OVERRIDE FINAL;
1173+ epicsShareClass virtual std::ostream& dumpValue (std::ostream& o, size_t index) const OVERRIDE FINAL;
12021174
1203- virtual size_t getLength () const OVERRIDE FINAL { return value. size ();}
1204- virtual size_t getCapacity () const OVERRIDE FINAL { return value. capacity ();}
1175+ epicsShareClass virtual size_t getLength () const OVERRIDE FINAL;
1176+ epicsShareClass virtual size_t getCapacity () const OVERRIDE FINAL;
12051177
1206- virtual void setCapacity (size_t capacity) OVERRIDE FINAL;
1207- virtual void setLength (size_t length) OVERRIDE FINAL;
1178+ epicsShareClass virtual void setCapacity (size_t capacity) OVERRIDE FINAL;
1179+ epicsShareClass virtual void setLength (size_t length) OVERRIDE FINAL;
12081180
1209- virtual const_svector view () const OVERRIDE FINAL { return value;}
1210- virtual void swap (const_svector &other) OVERRIDE FINAL;
1211- virtual void replace (const const_svector& next) OVERRIDE FINAL;
1181+ epicsShareClass virtual const_svector view () const OVERRIDE FINAL;
1182+ epicsShareClass virtual void swap (const_svector &other) OVERRIDE FINAL;
1183+ epicsShareClass virtual void replace (const const_svector& next) OVERRIDE FINAL;
12121184
12131185 // from Serializable
1214- virtual void serialize (ByteBuffer *pbuffer,SerializableControl *pflusher) const OVERRIDE FINAL;
1215- virtual void deserialize (ByteBuffer *pbuffer,DeserializableControl *pflusher) OVERRIDE FINAL;
1216- virtual void serialize (ByteBuffer *pbuffer,
1186+ epicsShareClass virtual void serialize (ByteBuffer *pbuffer,SerializableControl *pflusher) const OVERRIDE FINAL;
1187+ epicsShareClass virtual void deserialize (ByteBuffer *pbuffer,DeserializableControl *pflusher) OVERRIDE FINAL;
1188+ epicsShareClass virtual void serialize (ByteBuffer *pbuffer,
12171189 SerializableControl *pflusher, size_t offset, size_t count) const OVERRIDE FINAL;
12181190
12191191protected:
1220- virtual void _getAsVoid (epics::pvData::shared_vector<const void >& out) const OVERRIDE FINAL;
1221- virtual void _putFromVoid (const epics::pvData::shared_vector<const void >& in) OVERRIDE FINAL;
1192+ epicsShareClass virtual void _getAsVoid (epics::pvData::shared_vector<const void >& out) const OVERRIDE FINAL;
1193+ epicsShareClass virtual void _putFromVoid (const epics::pvData::shared_vector<const void >& in) OVERRIDE FINAL;
12221194
12231195 explicit PVValueArray (ScalarArrayConstPtr const & scalar);
12241196 const_svector value;
0 commit comments