get rid of unnecessary copies for StringArray
This commit is contained in:
@@ -498,7 +498,7 @@ PVFieldPtr PVDataCreate::createPVField(PVFieldPtr const & fieldToClone)
|
||||
{
|
||||
PVStructurePtr pvStructure
|
||||
= static_pointer_cast<PVStructure>(fieldToClone);
|
||||
StringArray fieldNames = pvStructure->getStructure()->getFieldNames();
|
||||
StringArray const & fieldNames = pvStructure->getStructure()->getFieldNames();
|
||||
PVFieldPtrArray pvFieldPtrArray = pvStructure->getPVFields();
|
||||
return createPVStructure(fieldNames,pvFieldPtrArray);
|
||||
}
|
||||
|
||||
@@ -32,19 +32,20 @@ AlarmSeverity AlarmSeverityFunc::getSeverity(int value)
|
||||
throw std::logic_error(String("should never get here"));
|
||||
}
|
||||
|
||||
StringArray AlarmSeverityFunc::getSeverityNames()
|
||||
StringArrayPtr AlarmSeverityFunc::getSeverityNames()
|
||||
{
|
||||
static size_t severityCount = 5;
|
||||
static StringArray severityNames;
|
||||
static StringArrayPtr severityNames;
|
||||
static Mutex mutex;
|
||||
Lock xx(mutex);
|
||||
if(severityNames.size()==0) {
|
||||
severityNames.reserve(severityCount);
|
||||
severityNames.push_back("NONE");
|
||||
severityNames.push_back("MINOR");
|
||||
severityNames.push_back("MAJOR");
|
||||
severityNames.push_back("INVALID");
|
||||
severityNames.push_back("UNDEFINED");
|
||||
if(severityNames.get()==NULL) {
|
||||
severityNames = StringArrayPtr(new StringArray());
|
||||
severityNames->reserve(severityCount);
|
||||
severityNames->push_back("NONE");
|
||||
severityNames->push_back("MINOR");
|
||||
severityNames->push_back("MAJOR");
|
||||
severityNames->push_back("INVALID");
|
||||
severityNames->push_back("UNDEFINED");
|
||||
}
|
||||
return severityNames;
|
||||
}
|
||||
@@ -79,22 +80,23 @@ AlarmStatus AlarmStatusFunc::getStatus(int value)
|
||||
throw std::logic_error(String("should never get here"));
|
||||
}
|
||||
|
||||
StringArray AlarmStatusFunc::getStatusNames()
|
||||
StringArrayPtr AlarmStatusFunc::getStatusNames()
|
||||
{
|
||||
static size_t statusCount = 8;
|
||||
static StringArray statusNames;
|
||||
static StringArrayPtr statusNames;
|
||||
static Mutex mutex;
|
||||
Lock xx(mutex);
|
||||
if(statusNames.size()==0) {
|
||||
statusNames.reserve(statusCount);
|
||||
statusNames.push_back("NONE");
|
||||
statusNames.push_back("DEVICE");
|
||||
statusNames.push_back("DRIVER");
|
||||
statusNames.push_back("RECORD");
|
||||
statusNames.push_back("DB");
|
||||
statusNames.push_back("CONF");
|
||||
statusNames.push_back("UNDEFINED");
|
||||
statusNames.push_back("CLIENT");
|
||||
if(statusNames.get()==NULL) {
|
||||
statusNames = StringArrayPtr(new StringArray());
|
||||
statusNames->reserve(statusCount);
|
||||
statusNames->push_back("NONE");
|
||||
statusNames->push_back("DEVICE");
|
||||
statusNames->push_back("DRIVER");
|
||||
statusNames->push_back("RECORD");
|
||||
statusNames->push_back("DB");
|
||||
statusNames->push_back("CONF");
|
||||
statusNames->push_back("UNDEFINED");
|
||||
statusNames->push_back("CLIENT");
|
||||
}
|
||||
return statusNames;
|
||||
}
|
||||
|
||||
@@ -27,14 +27,14 @@ extern const size_t severityCount;
|
||||
class AlarmSeverityFunc {
|
||||
public:
|
||||
static AlarmSeverity getSeverity(int value);
|
||||
static StringArray getSeverityNames();
|
||||
static StringArrayPtr getSeverityNames();
|
||||
};
|
||||
|
||||
extern const size_t statusCount;
|
||||
class AlarmStatusFunc {
|
||||
public:
|
||||
static AlarmStatus getStatus(int value);
|
||||
static StringArray getStatusNames();
|
||||
static StringArrayPtr getStatusNames();
|
||||
};
|
||||
|
||||
class Alarm {
|
||||
|
||||
@@ -91,14 +91,13 @@ bool PVEnumerated::choicesMutable()
|
||||
return pvChoices->isImmutable();
|
||||
}
|
||||
|
||||
StringArray PVEnumerated:: getChoices()
|
||||
StringArrayPtr const & PVEnumerated:: getChoices()
|
||||
{
|
||||
if(pvIndex.get()==NULL ) {
|
||||
throw std::logic_error(notAttached);
|
||||
}
|
||||
StringArrayData data;
|
||||
pvChoices->get(0,pvChoices->getLength(),data);
|
||||
return data.data;
|
||||
return pvChoices->getSharedVector();
|
||||
}
|
||||
|
||||
int32 PVEnumerated::getNumberChoices()
|
||||
|
||||
@@ -30,7 +30,7 @@ public:
|
||||
int32 getIndex();
|
||||
String getChoice();
|
||||
bool choicesMutable();
|
||||
StringArray getChoices();
|
||||
StringArrayPtr const & getChoices();
|
||||
int32 getNumberChoices();
|
||||
bool setChoices(StringArray & choices);
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user