Merge -r 127928:132243 from trunk
[official-gcc.git] / libstdc++-v3 / doc / doxygen / stdheader.cc
bloba5145419b04c28423253d52f94a13d082aeeb8a2
1 // This is a slow larval-stage kludge to help massage the generated man
2 // pages. It's used like this:
3 const char* const usage =
4 "\nTakes on stdin, whitespace-separated words of the form\n"
5 "\n"
6 " [bits/]stl_foo.h\n"
7 " [bits/]std_foo.h\n"
8 "\n"
9 "and writes on stdout the nearest matching standard header name.\n"
10 "\n"
11 "Takes no command-line arguments.\n"
12 "\n";
14 #include <string>
15 #include <map>
16 #include <iostream>
18 typedef std::map<std::string, std::string> Map;
20 Map headers;
22 void init_map()
24 // Enter the glamourous world of data entry!! Maintain these!
25 headers["algo.h"] = "algorithm";
26 headers["algobase.h"] = "algorithm";
27 headers["algorithm.h"] = "algorithm";
28 headers["heap.h"] = "algorithm";
29 headers["bitset.h"] = "bitset";
30 headers["complex.h"] = "complex";
31 //headers["construct.h"] stl_construct.h entirely internal
32 headers["deque.h"] = "deque";
33 headers["deque.tcc"] = "deque";
34 headers["fstream.h"] = "fstream";
35 headers["fstream.tcc"] = "fstream";
36 headers["function.h"] = "functional";
37 headers["functional.h"] = "functional";
38 headers["iomanip.h"] = "iomanip";
39 headers["basic_ios.h"] = "ios";
40 headers["basic_ios.tcc"] = "ios";
41 headers["ios.h"] = "ios";
42 headers["iosfwd.h"] = "iosfwd";
43 headers["iostream.h"] = "iostream";
44 headers["istream.h"] = "istream";
45 headers["istream.tcc"] = "istream";
46 headers["iterator.h"] = "iterator";
47 headers["iterator_base_funcs.h"] = "iterator";
48 headers["iterator_base_types.h"] = "iterator";
49 headers["stream_iterator.h"] = "iterator";
50 headers["streambuf_iterator.h"] = "iterator";
51 headers["limits.h"] = "limits";
52 headers["list.h"] = "list";
53 headers["list.tcc"] = "list";
54 headers["codecvt.h"] = "locale";
55 headers["locale.h"] = "locale";
56 headers["localefwd.h"] = "locale";
57 headers["locale_classes.h"] = "locale";
58 headers["locale_facets.h"] = "locale";
59 headers["locale_facets.tcc"] = "locale";
60 headers["map.h"] = "map";
61 headers["multimap.h"] = "map";
62 headers["memory.h"] = "memory";
63 headers["allocator.h"] = "memory";
64 headers["raw_storage_iter.h"] = "memory";
65 headers["tempbuf.h"] = "memory";
66 headers["uninitialized.h"] = "memory";
67 headers["numeric.h"] = "numeric";
68 headers["ostream.h"] = "ostream";
69 headers["ostream.tcc"] = "ostream";
70 headers["queue.h"] = "queue";
71 headers["set.h"] = "set";
72 headers["multiset.h"] = "set";
73 headers["sstream.h"] = "sstream";
74 headers["sstream.tcc"] = "sstream";
75 headers["stack.h"] = "stack";
76 headers["functexcept.h"] = "stdexcept";
77 headers["stdexcept.h"] = "stdexcept";
78 headers["streambuf.h"] = "streambuf";
79 headers["streambuf.tcc"] = "streambuf";
80 headers["string.h"] = "string";
81 headers["char_traits.h"] = "string";
82 headers["postypes.h"] = "string";
83 headers["basic_string.h"] = "string";
84 headers["basic_string.tcc"] = "string";
85 headers["tree.h"] = "backward/tree.h";
86 headers["pair.h"] = "utility";
87 headers["utility.h"] = "utility";
88 headers["relops.h"] = "utility";
89 headers["gslice.h"] = "valarray";
90 headers["gslice_array.h"] = "valarray";
91 headers["indirect_array.h"] = "valarray";
92 headers["mask_array.h"] = "valarray";
93 headers["slice_array.h"] = "valarray";
94 headers["valarray.h"] = "valarray";
95 headers["valarray_after.h"] = "valarray";
96 headers["valarray_before.h"] = "valarray";
97 headers["valarray_array.h"] = "valarray";
98 headers["valarray_array.tcc"] = "valarray";
99 headers["valarray_meta.h"] = "valarray";
100 headers["bvector.h"] = "vector";
101 headers["vector.h"] = "vector";
102 headers["vector.tcc"] = "vector";
104 //headers["concurrence.h"] who knows
105 //headers["atomicity.h"] who knows
107 // C wrappers -- probably was an easier way to do these, but oh well
108 headers["cassert.h"] = "cassert";
109 headers["cctype.h"] = "cctype";
110 headers["cerrno.h"] = "cerrno";
111 headers["cfloat.h"] = "cfloat";
112 headers["climits.h"] = "climits";
113 headers["clocale.h"] = "clocale";
114 headers["cmath.h"] = "cmath";
115 headers["csetjmp.h"] = "csetjmp";
116 headers["csignal.h"] = "csignal";
117 headers["cstdarg.h"] = "cstdarg";
118 headers["cstddef.h"] = "cstddef";
119 headers["cstdio.h"] = "cstdio";
120 headers["cstdlib.h"] = "cstdlib";
121 headers["cstring.h"] = "cstring";
122 headers["ctime.h"] = "ctime";
123 headers["cwchar.h"] = "cwchar";
124 headers["cwctype.h"] = "cwctype";
128 void do_word (std::string const& longheader)
130 std::string::size_type start = 0;
132 // if it doesn't contain a "." then it's already a std header
133 if (longheader.find(".") == std::string::npos)
135 std::cout << longheader << '\n';
136 return;
139 if (longheader.substr(start,5) == "bits/") start += 5;
140 if ((longheader.substr(start,4) == "stl_") ||
141 (longheader.substr(start,4) == "std_"))
143 start += 4;
146 // come on, gdb, find `p' already...
147 const char* p = longheader.substr(start).c_str();
148 Map::iterator word = headers.find(p);
149 if (word != headers.end())
150 std::cout << word->second << '\n';
151 else std::cout << "MAYBE_AN_ERROR_MESSAGE_HERE\n";
155 int main (int argc, char**)
157 if (argc > 1)
159 std::cerr << usage;
160 exit(0);
163 init_map();
165 std::string w;
166 while (std::cin >> w)
167 do_word (w);