|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T t
Length: 1579 (0x62b) Types: TextFile Names: »tObstack.cc«
└─⟦a05ed705a⟧ Bits:30007078 DKUUG GNU 2/12/89 └─⟦cc8755de2⟧ »./libg++-1.36.1.tar.Z« └─⟦23757c458⟧ └─⟦this⟧ »libg++/tests/tObstack.cc«
// This may look like C code, but it is really -*- C++ -*- /* a little test of Obstacks Thu Feb 18 11:16:28 1988 Doug Lea (dl at rocky.oswego.edu) */ #include <assert.h> #define tassert(ex) {if ((ex)) cerr << #ex << "\n"; \ else _assert(#ex, __FILE__,__LINE__); } #include <stream.h> #include <Obstack.h> #include <stddef.h> #include <ctype.h> main() { char* s[10000]; int n = 0; int got_one = 0; Obstack os; char c; s[n++] = os.copy("\nunique words:"); assert(os.OK()); assert(os.contains(s[0])); cout << "enter anything at all, end with an EOF(^D)\n"; while (cin.good() && n < 10000) { if (cin.get(c) && isalnum(c)) { got_one = 1; os.grow(c); } else if (got_one) { char* current = os.finish(0); for (int i = 0; i < n; ++i) // stupid, but this is only a test. { if (strcmp(s[i], current) == 0) { os.free(current); current = 0; break; } } if (current != 0) s[n++] = current; got_one = 0; } } assert(os.OK()); cout << s[0] << "\n"; for (int i = n - 1; i > 0; -- i) { assert(os.contains(s[i])); cout << s[i] << "\n"; os.free(s[i]); } assert(os.OK()); assert(os.contains(s[0])); cout << "\n\nObstack vars:\n"; cout << "alignment_mask = " << os.alignment_mask() << "\n"; cout << "chunk_size = " << os.chunk_size() << "\n"; cout << "size = " << os.size() << "\n"; cout << "room = " << os.room() << "\n"; cout << "\nend of test\n"; }