diff --git a/src/factory/FieldCreateFactory.cpp b/src/factory/FieldCreateFactory.cpp index 6742758..1d20323 100644 --- a/src/factory/FieldCreateFactory.cpp +++ b/src/factory/FieldCreateFactory.cpp @@ -1418,7 +1418,7 @@ FieldConstPtr FieldCreate::deserialize(ByteBuffer* buffer, DeserializableControl } // TODO replace with non-locking singleton pattern -FieldCreatePtr FieldCreate::getFieldCreate() +const FieldCreatePtr& FieldCreate::getFieldCreate() { LOCAL_STATIC_LOCK; static FieldCreatePtr fieldCreate; @@ -1456,10 +1456,6 @@ FieldCreate::FieldCreate() variantUnionArray = sua; } -FieldCreatePtr getFieldCreate() { - return FieldCreate::getFieldCreate(); -} - }} namespace std{ diff --git a/src/factory/PVDataCreateFactory.cpp b/src/factory/PVDataCreateFactory.cpp index d62715e..cc04346 100644 --- a/src/factory/PVDataCreateFactory.cpp +++ b/src/factory/PVDataCreateFactory.cpp @@ -602,7 +602,7 @@ PVUnionPtr PVDataCreate::createPVUnion(PVUnionPtr const & unionToClone) // TODO not thread-safe (local static initializers) // TODO replace with non-locking singleton pattern -PVDataCreatePtr PVDataCreate::getPVDataCreate() +const PVDataCreatePtr& PVDataCreate::getPVDataCreate() { static PVDataCreatePtr pvDataCreate; static Mutex mutex; @@ -615,10 +615,6 @@ PVDataCreatePtr PVDataCreate::getPVDataCreate() return pvDataCreate; } -PVDataCreatePtr getPVDataCreate() { - return PVDataCreate::getPVDataCreate(); -} - }} namespace std{ diff --git a/src/factory/StandardField.cpp b/src/factory/StandardField.cpp index 14c7b65..bee743e 100644 --- a/src/factory/StandardField.cpp +++ b/src/factory/StandardField.cpp @@ -644,7 +644,7 @@ StructureConstPtr StandardField::enumeratedAlarm() return enumeratedAlarmField; } -StandardFieldPtr StandardField::getStandardField() +const StandardFieldPtr &StandardField::getStandardField() { static StandardFieldPtr standardFieldCreate; static Mutex mutex; @@ -658,10 +658,4 @@ StandardFieldPtr StandardField::getStandardField() return standardFieldCreate; } - - -StandardFieldPtr getStandardField() { - return StandardField::getStandardField(); -} - }} diff --git a/src/pv/pvData.h b/src/pv/pvData.h index d34c080..37e1e03 100644 --- a/src/pv/pvData.h +++ b/src/pv/pvData.h @@ -1484,7 +1484,7 @@ public: * get the singleton * @return The PVDataCreate implementation */ - static PVDataCreatePtr getPVDataCreate(); + static const PVDataCreatePtr &getPVDataCreate(); /** * Create a PVField using given Field introspection data. @@ -1650,7 +1650,9 @@ private: * * @ingroup pvcontainer */ -epicsShareExtern PVDataCreatePtr getPVDataCreate(); +FORCE_INLINE const PVDataCreatePtr& getPVDataCreate() { + return PVDataCreate::getPVDataCreate(); +} bool epicsShareExtern operator==(const PVField&, const PVField&); diff --git a/src/pv/pvIntrospect.h b/src/pv/pvIntrospect.h index b8fe5b8..be57a6e 100644 --- a/src/pv/pvIntrospect.h +++ b/src/pv/pvIntrospect.h @@ -1060,7 +1060,7 @@ private: */ class epicsShareClass FieldCreate { public: - static FieldCreatePtr getFieldCreate(); + static const FieldCreatePtr &getFieldCreate(); /** * Create a new instance of in-line @c Field builder. * @return a new instance of a @c FieldBuilder. @@ -1214,7 +1214,9 @@ private: * Get the single class that implements FieldCreate, * @return The fieldCreate factory. */ -epicsShareExtern FieldCreatePtr getFieldCreate(); +FORCE_INLINE const FieldCreatePtr& getFieldCreate() { + return FieldCreate::getFieldCreate(); +} /** Define a compile time mapping from * type to enum value. diff --git a/src/pv/standardField.h b/src/pv/standardField.h index 807b823..af4145b 100644 --- a/src/pv/standardField.h +++ b/src/pv/standardField.h @@ -66,7 +66,7 @@ public: * getStandardField returns the singleton. * @return Shared pointer to StandardField. */ - static StandardFieldPtr getStandardField(); + static const StandardFieldPtr& getStandardField(); ~StandardField(); /** Create a structure that has a scalar value field. * @param type The type. @@ -250,7 +250,9 @@ private: //friend StandardFieldPtr getStandardField(); }; -epicsShareExtern StandardFieldPtr getStandardField(); +FORCE_INLINE const StandardFieldPtr& getStandardField() { + return StandardField::getStandardField(); +} }} #endif /* STANDARDFIELD_H */