Array: Move Join into the base class, available for programmers

This commit is contained in:
Michael Friedrich 2019-07-12 14:36:55 +02:00
parent d4393b6d54
commit 38b7f10e0e
3 changed files with 22 additions and 16 deletions

View File

@ -107,22 +107,7 @@ static Value ArrayJoin(const Value& separator)
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
Array::Ptr self = static_cast<Array::Ptr>(vframe->Self);
REQUIRE_NOT_NULL(self);
Value result;
bool first = true;
ObjectLock olock(self);
for (const Value& item : self) {
if (first) {
first = false;
} else {
result = result + separator;
}
result = result + item;
}
return result;
return self->Join(separator);
}
static Array::Ptr ArrayReverse()

View File

@ -297,6 +297,26 @@ String Array::ToString() const
return msgbuf.str();
}
Value Array::Join(const Value& separator) const
{
Value result;
bool first = true;
ObjectLock olock(this);
for (const Value& item : m_Data) {
if (first) {
first = false;
} else {
result = result + separator;
}
result = result + item;
}
return result;
}
Array::Ptr Array::Unique() const
{
std::set<Value> result;

View File

@ -94,6 +94,7 @@ public:
void Sort(bool overrideFrozen = false);
String ToString() const override;
Value Join(const Value& separator) const;
Array::Ptr Unique() const;
void Freeze();