Build system improvements
[ustl.git] / bvt / bvt06.cc
blob1620857c22c3e8250ff71e58ee84227ef8dd9e6d
1 // This file is part of the ustl library, an STL implementation.
2 //
3 // Copyright (C) 2005 by Mike Sharov <msharov@users.sourceforge.net>
4 // This file is free software, distributed under the MIT License.
5 //
7 #include "stdtest.h"
9 void PrintBlock (const cmemlink& l)
11 const int* numbers = reinterpret_cast<const int*>(l.begin());
12 const size_t nNumbers = l.size() / sizeof(int);
13 for (size_t i = 0; i < nNumbers; ++ i)
14 cout << numbers[i] << ' ';
15 cout << endl;
18 void TestObjectVector (void)
20 vector<memblock> v;
21 const size_t nNumbers = 1000;
22 int numbers [nNumbers];
23 const size_t nLinks = 10;
24 cmemlink links [nLinks];
25 for (size_t i = 0; i < nNumbers; ++ i)
26 numbers[i] = i;
27 uoff_t offset = 0;
28 for (size_t l = 0; l < nLinks; ++ l) {
29 links[l].link (numbers + offset, l * sizeof(int));
30 offset += l;
31 v.push_back (memblock(links[l]));
33 cout.format ("---\nvector<memblock> of %zu elements:\n---\n", v.size());
34 for_each (v.begin(), v.end(), &PrintBlock);
35 cout.format ("---\nsize() = %zu, max_size() = ", v.size());
36 if (v.max_size() == SIZE_MAX / sizeof(memblock))
37 cout << "SIZE_MAX/elsize";
38 else
39 cout << v.max_size();
40 static const char tf[2][6]={"false","true"};
41 cout.format (", empty() = %s\n", tf[v.empty()]);
42 v.push_back (memblock(5));
43 cout.format ("back()->size() = %zu\n", v.back().size());
44 v.back().resize (40);
45 cout.format ("back()->size() = %zu\n", v.back().size());
46 v.pop_back();
47 PrintBlock (v.back());
48 vector<memblock> cache;
49 cache.assign (v.begin(), v.end());
50 v.clear();
51 v.assign (cache.begin(), cache.end());
52 v.erase (v.begin() + 5, 2);
53 v.erase (v.end() - 1, 1);
54 v.erase (v.end(), size_t(0));
55 cout.format ("---\nvector of %zu elements backwards:\n---\n", v.size());
56 for_each (v.rbegin(), v.rend(), &PrintBlock);
57 cout << "---\n";
60 StdBvtMain (TestObjectVector)