summaryrefslogtreecommitdiff
path: root/libstdc++-v3/doc/doxygen/stdheader.cc
diff options
context:
space:
mode:
Diffstat (limited to 'libstdc++-v3/doc/doxygen/stdheader.cc')
-rw-r--r--libstdc++-v3/doc/doxygen/stdheader.cc171
1 files changed, 171 insertions, 0 deletions
diff --git a/libstdc++-v3/doc/doxygen/stdheader.cc b/libstdc++-v3/doc/doxygen/stdheader.cc
new file mode 100644
index 000000000..8bcb1a059
--- /dev/null
+++ b/libstdc++-v3/doc/doxygen/stdheader.cc
@@ -0,0 +1,171 @@
+// This is a slow larval-stage kludge to help massage the generated man
+// pages. It's used like this:
+const char* const usage =
+"\nTakes on stdin, whitespace-separated words of the form\n"
+"\n"
+" [bits/]stl_foo.h\n"
+" [bits/]std_foo.h\n"
+"\n"
+"and writes on stdout the nearest matching standard header name.\n"
+"\n"
+"Takes no command-line arguments.\n"
+"\n";
+
+#include <cstdlib>
+#include <string>
+#include <map>
+#include <iostream>
+
+typedef std::map<std::string, std::string> Map;
+
+Map headers;
+
+void init_map()
+{
+ // Enter the glamourous world of data entry!! Maintain these!
+ headers["algo.h"] = "algorithm";
+ headers["algobase.h"] = "algorithm";
+ headers["algorithm.h"] = "algorithm";
+ headers["heap.h"] = "algorithm";
+ headers["bitset.h"] = "bitset";
+ headers["complex.h"] = "complex";
+ //headers["construct.h"] stl_construct.h entirely internal
+ headers["deque.h"] = "deque";
+ headers["deque.tcc"] = "deque";
+ headers["fstream.h"] = "fstream";
+ headers["fstream.tcc"] = "fstream";
+ headers["function.h"] = "functional";
+ headers["functional.h"] = "functional";
+ headers["iomanip.h"] = "iomanip";
+ headers["basic_ios.h"] = "ios";
+ headers["basic_ios.tcc"] = "ios";
+ headers["ios.h"] = "ios";
+ headers["iosfwd.h"] = "iosfwd";
+ headers["iostream.h"] = "iostream";
+ headers["istream.h"] = "istream";
+ headers["istream.tcc"] = "istream";
+ headers["iterator.h"] = "iterator";
+ headers["iterator_base_funcs.h"] = "iterator";
+ headers["iterator_base_types.h"] = "iterator";
+ headers["stream_iterator.h"] = "iterator";
+ headers["streambuf_iterator.h"] = "iterator";
+ headers["limits.h"] = "limits";
+ headers["list.h"] = "list";
+ headers["list.tcc"] = "list";
+ headers["codecvt.h"] = "locale";
+ headers["locale.h"] = "locale";
+ headers["localefwd.h"] = "locale";
+ headers["locale_classes.h"] = "locale";
+ headers["locale_facets.h"] = "locale";
+ headers["locale_facets.tcc"] = "locale";
+ headers["map.h"] = "map";
+ headers["multimap.h"] = "map";
+ headers["memory.h"] = "memory";
+ headers["allocator.h"] = "memory";
+ headers["raw_storage_iter.h"] = "memory";
+ headers["tempbuf.h"] = "memory";
+ headers["uninitialized.h"] = "memory";
+ headers["numeric.h"] = "numeric";
+ headers["ostream.h"] = "ostream";
+ headers["ostream.tcc"] = "ostream";
+ headers["queue.h"] = "queue";
+ headers["set.h"] = "set";
+ headers["multiset.h"] = "set";
+ headers["sstream.h"] = "sstream";
+ headers["sstream.tcc"] = "sstream";
+ headers["stack.h"] = "stack";
+ headers["functexcept.h"] = "stdexcept";
+ headers["stdexcept.h"] = "stdexcept";
+ headers["streambuf.h"] = "streambuf";
+ headers["streambuf.tcc"] = "streambuf";
+ headers["string.h"] = "string";
+ headers["char_traits.h"] = "string";
+ headers["postypes.h"] = "string";
+ headers["basic_string.h"] = "string";
+ headers["basic_string.tcc"] = "string";
+ headers["tree.h"] = "backward/tree.h";
+ headers["pair.h"] = "utility";
+ headers["utility.h"] = "utility";
+ headers["relops.h"] = "utility";
+ headers["gslice.h"] = "valarray";
+ headers["gslice_array.h"] = "valarray";
+ headers["indirect_array.h"] = "valarray";
+ headers["mask_array.h"] = "valarray";
+ headers["slice_array.h"] = "valarray";
+ headers["valarray.h"] = "valarray";
+ headers["valarray_after.h"] = "valarray";
+ headers["valarray_before.h"] = "valarray";
+ headers["valarray_array.h"] = "valarray";
+ headers["valarray_array.tcc"] = "valarray";
+ headers["valarray_meta.h"] = "valarray";
+ headers["bvector.h"] = "vector";
+ headers["vector.h"] = "vector";
+ headers["vector.tcc"] = "vector";
+
+ //headers["concurrence.h"] who knows
+ //headers["atomicity.h"] who knows
+
+ // C wrappers -- probably was an easier way to do these, but oh well
+ headers["cassert.h"] = "cassert";
+ headers["cctype.h"] = "cctype";
+ headers["cerrno.h"] = "cerrno";
+ headers["cfloat.h"] = "cfloat";
+ headers["climits.h"] = "climits";
+ headers["clocale.h"] = "clocale";
+ headers["cmath.h"] = "cmath";
+ headers["csetjmp.h"] = "csetjmp";
+ headers["csignal.h"] = "csignal";
+ headers["cstdarg.h"] = "cstdarg";
+ headers["cstddef.h"] = "cstddef";
+ headers["cstdio.h"] = "cstdio";
+ headers["cstdlib.h"] = "cstdlib";
+ headers["cstring.h"] = "cstring";
+ headers["ctime.h"] = "ctime";
+ headers["cwchar.h"] = "cwchar";
+ headers["cwctype.h"] = "cwctype";
+}
+
+
+void do_word (std::string const& longheader)
+{
+ std::string::size_type start = 0;
+
+ // if it doesn't contain a "." then it's already a std header
+ if (longheader.find(".") == std::string::npos)
+ {
+ std::cout << longheader << '\n';
+ return;
+ }
+
+ if (longheader.substr(start,5) == "bits/") start += 5;
+ if ((longheader.substr(start,4) == "stl_") ||
+ (longheader.substr(start,4) == "std_"))
+ {
+ start += 4;
+ }
+
+ // come on, gdb, find `p' already...
+ const char* p = longheader.substr(start).c_str();
+ Map::iterator word = headers.find(p);
+ if (word != headers.end())
+ std::cout << word->second << '\n';
+ else std::cout << "MAYBE_AN_ERROR_MESSAGE_HERE\n";
+}
+
+
+int main (int argc, char**)
+{
+ if (argc > 1)
+ {
+ std::cerr << usage;
+ std::exit(0);
+ }
+
+ init_map();
+
+ std::string w;
+ while (std::cin >> w)
+ do_word (w);
+}
+
+