mathed11.diff from Andre

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1484 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Lars Gullik Bjønnes 2001-02-12 11:25:44 +00:00
parent 11e5e09d3b
commit 408b556ed9
4 changed files with 25 additions and 17 deletions

View File

@ -1,3 +1,8 @@
2001-02-12 André Pönitz <poenitz@htwm.de>
* array.[hC]: replace private variable maxsize_ with call
to bf_.size()
2001-02-09 Lars Gullik Bjønnes <larsbj@lyx.org>
* array.h: made all variables private, removed friend, added new

View File

@ -40,7 +40,14 @@ void MathedArray::last(int l)
int MathedArray::maxsize() const
{
return maxsize_;
return static_cast<int>(bf_.size());
}
void MathedArray::need_size(int needed)
{
if (needed >= maxsize())
resize(needed);
}
@ -51,15 +58,14 @@ void MathedArray::resize(int newsize)
newsize += ARRAY_STEP - (newsize % ARRAY_STEP);
bf_.resize(newsize);
if (last_ >= newsize) last_ = newsize - 1;
maxsize_ = newsize;
bf_[last_] = 0;
}
MathedArray::MathedArray(int size)
{
maxsize_ = (size < ARRAY_MIN_SIZE) ? ARRAY_MIN_SIZE : size;
bf_.resize(maxsize_);
int newsize = (size < ARRAY_MIN_SIZE) ? ARRAY_MIN_SIZE : size;
bf_.resize(newsize);
last_ = 0;
}
@ -67,9 +73,7 @@ MathedArray::MathedArray(int size)
void MathedArray::move(int p, int shift)
{
if (p <= last_) {
if (last_ + shift >= maxsize_) {
resize(last_ + shift);
}
need_size(last_ + shift);
memmove(&bf_[p + shift], &bf_[p], last_ - p);
last_ += shift;
bf_[last_] = 0;
@ -117,8 +121,11 @@ byte & MathedArray::operator[](int i)
void MathedArray::insert(int pos, byte c)
{
if (pos < 0) pos = last_;
if (pos >= maxsize_)
resize(maxsize_ + ARRAY_STEP);
// I think this should be replaced by need_size(pos). Note that the
// current code looks troublesome if pos > maxsize() + ARRAY_STEP.
if (pos >= maxsize())
resize(maxsize() + ARRAY_STEP);
bf_[pos] = c;
if (pos >= last_)
last_ = pos + 1;

View File

@ -91,13 +91,13 @@ public:
void resize(int newsize);
///
int maxsize() const;
/// Make sure we can access at least \a needed elements
void need_size(int needed);
private:
/// Buffer
buffer_type bf_;
/// Last position inserted.
int last_;
/// Max size of the array.
int maxsize_;
};
#endif

View File

@ -194,9 +194,7 @@ void MathedIter::Insert(byte c, MathedTextCodes t)
if (pos < array->last())
array->move(pos, shift);
else {
if (array->last() + shift >= array->maxsize()) {
array->resize(array->last() + shift);
}
array->need_size(array->last() + shift);
array->last(array->last() + shift);
(*array)[array->last()] = '\0';
}
@ -230,9 +228,7 @@ void MathedIter::split(int shift)
array->move(pos, shift);
if (fg) (*array)[pos + shift - 1] = fcode;
} else {
if (array->last() + shift >= array->maxsize()) {
array->resize(array->last() + shift);
}
array->need_size(array->last() + shift);
array->last(array->last() + shift);
}
(*array)[array->last()] = '\0';