Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/tools/inspect/unnamed_namespace_check.cpp @ 32

Last change on this file since 32 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 1.6 KB
Line 
1//  unnamed_namespace_check -----------------------------------------//
2
3//  Copyright Gennaro Prota 2006.
4//
5//  Distributed under the Boost Software License, Version 1.0.
6//  (See accompanying file LICENSE_1_0.txt or copy at
7//  http://www.boost.org/LICENSE_1_0.txt)
8
9#include "boost/regex.hpp"
10#include "boost/lexical_cast.hpp"
11#include "unnamed_namespace_check.hpp"
12
13
14namespace
15{
16
17  boost::regex unnamed_namespace_regex(
18     "namespace\\s(\\?\\?<|\\{)" // trigraph ??< or {
19  );
20
21} // unnamed namespace (ironical? :-)
22
23
24
25namespace boost
26{
27  namespace inspect
28  {
29   unnamed_namespace_check::unnamed_namespace_check() : m_errors(0)
30   {
31     register_signature( ".h" );
32     register_signature( ".hh" ); // just in case
33     register_signature( ".hpp" );
34     register_signature( ".hxx" ); // just in case
35     register_signature( ".inc" );
36     register_signature( ".ipp" );
37     register_signature( ".inl" );
38   }
39
40   void unnamed_namespace_check::inspect(
41      const string & library_name,
42      const path & full_path,   // example: c:/foo/boost/filesystem/path.hpp
43      const string & contents )     // contents of file to be inspected
44    {
45      if (contents.find( "boostinspect:" "nounnamed" ) != string::npos) return;
46
47
48      boost::sregex_iterator cur(contents.begin(), contents.end(), unnamed_namespace_regex), end;
49      for( ; cur != end; ++cur, ++m_errors )
50      {
51        const string::size_type
52         ln = std::count( contents.begin(), (*cur)[0].first, '\n' ) + 1;
53
54        error( library_name, full_path, string(name()) + " unnamed namespace at line "
55            + lexical_cast<string>(ln) );
56      }
57
58
59    }
60  } // namespace inspect
61} // namespace boost
62
63
Note: See TracBrowser for help on using the repository browser.