⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tobstack.cc

📁 早期freebsd实现
💻 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++] = (char *)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 = (char *)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";}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -