diff options
author | sgeerken <devnull@localhost> | 2012-07-11 19:04:12 +0200 |
---|---|---|
committer | sgeerken <devnull@localhost> | 2012-07-11 19:04:12 +0200 |
commit | fa1c054f17f6c71a5314e4c3e638c15aa33ec09c (patch) | |
tree | 31d8b687d2ff7843b8b5aab0d473116d4df32184 | |
parent | 3cef8224ed1a1a3267adf5a5d3f1bdcf4c1b5eca (diff) |
NotSoSimpleVector is now working in the intended way.
-rw-r--r-- | lout/misc.hh | 12 | ||||
-rw-r--r-- | test/notsosimplevector.cc | 9 |
2 files changed, 15 insertions, 6 deletions
diff --git a/lout/misc.hh b/lout/misc.hh index f4d0f8de..f877c879 100644 --- a/lout/misc.hh +++ b/lout/misc.hh @@ -327,10 +327,12 @@ private: { if (startExtra != -1) { numMain += numExtra; + resizeMain (); memmove (arrayMain + startExtra + numExtra, arrayMain + startExtra, (numMain - (startExtra + numExtra)) * sizeof (T)); - memmove (arrayMain + startExtra, arrayExtra1, numExtra); + memmove (arrayMain + startExtra, arrayExtra1, numExtra * sizeof (T)); startExtra = -1; + numExtra = 0; } } @@ -387,10 +389,10 @@ public: assert (numInsert >= 0); // The following lines are a simple (but inefficient) replacement. - setSize (numMain + numInsert); - memmove (arrayMain + index + numInsert, arrayMain + index, - (numMain - index - numInsert) * sizeof (T)); - return; + //setSize (numMain + numInsert); + //memmove (arrayMain + index + numInsert, arrayMain + index, + // (numMain - index - numInsert) * sizeof (T)); + //return; if (this->startExtra == -1) { // simple case diff --git a/test/notsosimplevector.cc b/test/notsosimplevector.cc index 8d0d2657..228734ee 100644 --- a/test/notsosimplevector.cc +++ b/test/notsosimplevector.cc @@ -3,11 +3,18 @@ static void print (lout::misc::NotSoSimpleVector<int> *v) { for (int i = 0; i < v->size(); i++) { + // Uncomment für debugging, after making the respective members public. + //if (v->startExtra != -1 && i == v->startExtra + v->numExtra) + // printf (" ]"); if (i > 0) printf (", "); + //if (i == v->startExtra) + // printf ("[ "); + printf ("%d", v->get(i)); } - printf ("\n"); + + printf (" (%d elements)\n", v->size ()); } int main (int argc, char *argv[]) |