factory methods avoid creating unnecessary temporaries
Avoid some ref. counter activity (still have global mutex...)
This commit is contained in:
@@ -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{
|
||||
|
||||
@@ -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{
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
+4
-2
@@ -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&);
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user