]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/tools/inspect/inspector.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / tools / inspect / inspector.hpp
1 // inspector header --------------------------------------------------------//
2
3 // Copyright Beman Dawes 2002.
4 // Copyright Rene Rivera 2004.
5 // Copyright Gennaro Prota 2006.
6 //
7 // Distributed under the Boost Software License, Version 1.0.
8 // (See accompanying file LICENSE_1_0.txt or copy at
9 // http://www.boost.org/LICENSE_1_0.txt)
10
11 #ifndef BOOST_INSPECTOR_HPP
12 #define BOOST_INSPECTOR_HPP
13
14 #include <set>
15 #include <iostream>
16 #include <ostream>
17 #include <string>
18 #include "boost/filesystem/path.hpp"
19
20 using std::string;
21 using boost::filesystem::path;
22
23 namespace boost
24 {
25 namespace inspect
26 {
27 typedef std::set< string > string_set;
28
29 const char * line_break();
30
31 path search_root_path();
32
33 class inspector
34 {
35 protected:
36 inspector() {}
37
38 public:
39 virtual ~inspector() {}
40
41 virtual const char * name() const = 0; // example: "tab-check"
42 virtual const char * desc() const = 0; // example: "verify no tabs"
43
44 // always called:
45 virtual void inspect(
46 const string & /*library_name*/, // "filesystem"
47 const path & /*full_path*/ ) {} // "c:/foo/boost/filesystem/path.hpp"
48
49 // called only for registered leaf() signatures:
50 virtual void inspect(
51 const string & library_name, // "filesystem"
52 const path & full_path, // "c:/foo/boost/filesystem/path.hpp"
53 const string & contents ) // contents of file
54 = 0
55 ;
56
57 // called after all paths visited, but still in time to call error():
58 virtual void close() {}
59
60 // callback used by constructor to register leaf() signature.
61 // Signature can be a full file name (Jamfile) or partial (.cpp)
62 void register_signature( const string & signature );
63 const string_set & signatures() const { return m_signatures; }
64
65 // report error callback (from inspect(), close() ):
66 void error(
67 const string & library_name,
68 const path & full_path,
69 const string & msg,
70 int line_number =0 ); // 0 if not available or not applicable
71
72 private:
73 string_set m_signatures;
74 };
75
76 // for inspection of source code of one form or other
77 class source_inspector : public inspector
78 {
79 public:
80 // registers the basic set of known source signatures
81 source_inspector();
82 };
83
84 // for inspection of hypertext, specifically html
85 class hypertext_inspector : public inspector
86 {
87 public:
88 // registers the set of known html source signatures
89 hypertext_inspector();
90 };
91
92 inline string relative_to( const path & src_arg, const path & base_arg )
93 {
94 path base( base_arg );
95 base.normalize();
96 string::size_type pos( base.string().size() );
97 path src( src_arg.string().substr(pos) );
98 src.normalize();
99 return src.string().substr(1);
100 }
101
102 string impute_library( const path & full_dir_path );
103
104 }
105 }
106
107 #endif // BOOST_INSPECTOR_HPP
108