MathArray::~MathArray()
{
for (int pos = 0; pos < size(); next(pos))
- if (MathIsInset(pos))
+ if (isInset(pos))
delete nextInset(pos);
}
replace(pos, nextInset(pos)->clone());
}
+MathArray::MathArray(MathArray const & array, int from, int to)
+ : bf_(array.bf_.begin() + from, array.bf_.begin() + to)
+{
+ for (int pos = 0; pos < size(); next(pos))
+ if (isInset(pos))
+ replace(pos, nextInset(pos)->clone());
+}
+
bool MathArray::next(int & pos) const
{
return nextInset(pos);
}
-byte MathArray::GetChar(int pos) const
+unsigned char MathArray::GetChar(int pos) const
{
return pos < size() ? bf_[pos + 1] : '\0';
}
memcpy(&bf_[pos + 1], &p, sizeof(p));
}
-void MathArray::insert(int pos, byte b, MathTextCodes t)
+void MathArray::insert(int pos, unsigned char b, MathTextCodes t)
{
bf_.insert(bf_.begin() + pos, 3, t);
bf_[pos + 1] = b;
insert(size(), p);
}
-void MathArray::push_back(byte b, MathTextCodes c)
+void MathArray::push_back(unsigned char b, MathTextCodes c)
{
insert(size(), b, c);
}
}
+void MathArray::erase()
+{
+ erase(0, size());
+}
+
+
void MathArray::erase(int pos)
{
if (pos < static_cast<int>(bf_.size()))
{
if (pos >= size())
return false;
- return MathIsInset(bf_[pos]);
+ return MathIsInset(static_cast<MathTextCodes>(bf_[pos]));
}
} else {
MathTextCodes fcode = GetCode(pos);
- byte c = GetChar(pos);
+ unsigned char c = GetChar(pos);
if (MathIsSymbol(fcode)) {
latexkeys const * l = lm_get_key_by_id(c, LM_TK_SYM);
Write(os, true);
}
+
+void MathArray::Validate(LaTeXFeatures & features) const
+{
+ for (int pos = 0; pos < size(); next(pos))
+ if (isInset(pos))
+ nextInset(pos)->Validate(features);
+}
+