added DataField::clone()
This commit is contained in:
@@ -566,6 +566,10 @@ result_t SingleDataField::write(istringstream& input,
|
|||||||
return writeSymbols(input, offset, data);
|
return writeSymbols(input, offset, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StringDataField* StringDataField::clone()
|
||||||
|
{
|
||||||
|
return new StringDataField(*this);
|
||||||
|
}
|
||||||
|
|
||||||
result_t StringDataField::derive(string name, string comment,
|
result_t StringDataField::derive(string name, string comment,
|
||||||
string unit, const PartType partType,
|
string unit, const PartType partType,
|
||||||
@@ -979,6 +983,11 @@ NumberDataField::NumberDataField(const string name, const string comment,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NumberDataField* NumberDataField::clone()
|
||||||
|
{
|
||||||
|
return new NumberDataField(*this);
|
||||||
|
}
|
||||||
|
|
||||||
result_t NumberDataField::derive(string name, string comment,
|
result_t NumberDataField::derive(string name, string comment,
|
||||||
string unit, const PartType partType,
|
string unit, const PartType partType,
|
||||||
int divisor, map<unsigned int, string> values,
|
int divisor, map<unsigned int, string> values,
|
||||||
@@ -1159,6 +1168,11 @@ result_t NumberDataField::writeSymbols(istringstream& input,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
ValueListDataField* ValueListDataField::clone()
|
||||||
|
{
|
||||||
|
return new ValueListDataField(*this);
|
||||||
|
}
|
||||||
|
|
||||||
result_t ValueListDataField::derive(string name, string comment,
|
result_t ValueListDataField::derive(string name, string comment,
|
||||||
string unit, const PartType partType,
|
string unit, const PartType partType,
|
||||||
int divisor, map<unsigned int, string> values,
|
int divisor, map<unsigned int, string> values,
|
||||||
@@ -1305,6 +1319,15 @@ DataFieldSet::~DataFieldSet()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DataFieldSet* DataFieldSet::clone()
|
||||||
|
{
|
||||||
|
vector<SingleDataField*> fields;
|
||||||
|
for (vector<SingleDataField*>::iterator it = m_fields.begin(); it < m_fields.end(); it++) {
|
||||||
|
fields.push_back((*it)->clone());
|
||||||
|
}
|
||||||
|
return new DataFieldSet(m_name, m_comment, fields);
|
||||||
|
}
|
||||||
|
|
||||||
unsigned char DataFieldSet::getLength(PartType partType)
|
unsigned char DataFieldSet::getLength(PartType partType)
|
||||||
{
|
{
|
||||||
unsigned char length = 0;
|
unsigned char length = 0;
|
||||||
@@ -1493,6 +1516,14 @@ result_t DataFieldSet::write(istringstream& input,
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
DataFieldTemplates::DataFieldTemplates(DataFieldTemplates& other)
|
||||||
|
: FileReader<void*>::FileReader(false)
|
||||||
|
{
|
||||||
|
for (map<string, DataField*>::iterator it = other.m_fieldsByName.begin(); it != other.m_fieldsByName.end(); it++) {
|
||||||
|
m_fieldsByName[it->first] = it->second->clone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void DataFieldTemplates::clear()
|
void DataFieldTemplates::clear()
|
||||||
{
|
{
|
||||||
for (map<string, DataField*>::iterator it = m_fieldsByName.begin(); it != m_fieldsByName.end(); it++) {
|
for (map<string, DataField*>::iterator it = m_fieldsByName.begin(); it != m_fieldsByName.end(); it++) {
|
||||||
|
|||||||
@@ -156,6 +156,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~DataField() {}
|
virtual ~DataField() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clone this instance.
|
||||||
|
* @return a clone of this instance.
|
||||||
|
*/
|
||||||
|
virtual DataField* clone() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method for creating new instances.
|
* Factory method for creating new instances.
|
||||||
* @param it the iterator to traverse for the definition parts.
|
* @param it the iterator to traverse for the definition parts.
|
||||||
@@ -318,6 +324,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~SingleDataField() {}
|
virtual ~SingleDataField() {}
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual SingleDataField* clone() = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method for creating a new @a SingleDataField instance derived from a base type.
|
* Factory method for creating a new @a SingleDataField instance derived from a base type.
|
||||||
* @param typeNameStr the base type name string.
|
* @param typeNameStr the base type name string.
|
||||||
@@ -460,6 +469,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~StringDataField() {}
|
virtual ~StringDataField() {}
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual StringDataField* clone();
|
||||||
|
|
||||||
// @copydoc
|
// @copydoc
|
||||||
virtual result_t derive(string name, string comment,
|
virtual result_t derive(string name, string comment,
|
||||||
string unit, const PartType partType,
|
string unit, const PartType partType,
|
||||||
@@ -516,6 +528,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~NumericDataField() {}
|
virtual ~NumericDataField() {}
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual NumericDataField* clone() = 0;
|
||||||
|
|
||||||
// @copydoc
|
// @copydoc
|
||||||
virtual bool hasFullByteOffset(bool after);
|
virtual bool hasFullByteOffset(bool after);
|
||||||
|
|
||||||
@@ -576,6 +591,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~NumberDataField() {}
|
virtual ~NumberDataField() {}
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual NumberDataField* clone();
|
||||||
|
|
||||||
// @copydoc
|
// @copydoc
|
||||||
virtual result_t derive(string name, string comment,
|
virtual result_t derive(string name, string comment,
|
||||||
string unit, const PartType partType,
|
string unit, const PartType partType,
|
||||||
@@ -636,6 +654,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~ValueListDataField() {}
|
virtual ~ValueListDataField() {}
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual ValueListDataField* clone();
|
||||||
|
|
||||||
// @copydoc
|
// @copydoc
|
||||||
virtual result_t derive(string name, string comment,
|
virtual result_t derive(string name, string comment,
|
||||||
string unit, const PartType partType, int divisor,
|
string unit, const PartType partType, int divisor,
|
||||||
@@ -697,6 +718,9 @@ public:
|
|||||||
*/
|
*/
|
||||||
virtual ~DataFieldSet();
|
virtual ~DataFieldSet();
|
||||||
|
|
||||||
|
// @copydoc
|
||||||
|
virtual DataFieldSet* clone();
|
||||||
|
|
||||||
// @copydoc
|
// @copydoc
|
||||||
virtual unsigned char getLength(PartType partType);
|
virtual unsigned char getLength(PartType partType);
|
||||||
|
|
||||||
@@ -771,6 +795,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
DataFieldTemplates() : FileReader<void*>::FileReader(false) {}
|
DataFieldTemplates() : FileReader<void*>::FileReader(false) {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs a new copied instance.
|
||||||
|
* @param other the @a DataFieldTemplates to copy from.
|
||||||
|
*/
|
||||||
|
DataFieldTemplates(DataFieldTemplates& other);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor.
|
* Destructor.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user