1 // Copyright Ralf W. Grosse-Kunstleve 2006.
2 // Distributed under the Boost Software License, Version 1.0. (See
3 // accompanying file LICENSE_1_0.txt or copy at
4 // http://www.boost.org/LICENSE_1_0.txt)
5 #ifndef DOCSTRING_OPTIONS_RWGK20060111_HPP
6 # define DOCSTRING_OPTIONS_RWGK20060111_HPP
7 
8 #include <boost/python/object/function.hpp>
9 
10 namespace boost { namespace python {
11 
12 // Note: the static data members are defined in object/function.cpp
13 
14 class BOOST_PYTHON_DECL docstring_options : boost::noncopyable
15 {
16   public:
docstring_options(bool show_all=true)17       docstring_options(bool show_all=true)
18       {
19           previous_show_user_defined_ = show_user_defined_;
20           previous_show_py_signatures_ = show_py_signatures_;
21           previous_show_cpp_signatures_ = show_cpp_signatures_;
22           show_user_defined_ = show_all;
23           show_cpp_signatures_ = show_all;
24           show_py_signatures_ = show_all;
25       }
26 
docstring_options(bool show_user_defined,bool show_signatures)27       docstring_options(bool show_user_defined, bool show_signatures)
28       {
29           previous_show_user_defined_ = show_user_defined_;
30           previous_show_cpp_signatures_ = show_cpp_signatures_;
31           previous_show_py_signatures_ = show_py_signatures_;
32           show_user_defined_ = show_user_defined;
33           show_cpp_signatures_ = show_signatures;
34           show_py_signatures_ = show_signatures;
35       }
36 
docstring_options(bool show_user_defined,bool show_py_signatures,bool show_cpp_signatures)37       docstring_options(bool show_user_defined, bool show_py_signatures, bool show_cpp_signatures)
38       {
39           previous_show_user_defined_ = show_user_defined_;
40           previous_show_cpp_signatures_ = show_cpp_signatures_;
41           previous_show_py_signatures_ = show_py_signatures_;
42           show_user_defined_ = show_user_defined;
43           show_cpp_signatures_ = show_cpp_signatures;
44           show_py_signatures_ = show_py_signatures;
45       }
46 
~docstring_options()47       ~docstring_options()
48       {
49           show_user_defined_ = previous_show_user_defined_;
50           show_cpp_signatures_ = previous_show_cpp_signatures_;
51           show_py_signatures_ = previous_show_py_signatures_;
52       }
53 
54       void
disable_user_defined()55       disable_user_defined() { show_user_defined_ = false; }
56 
57       void
enable_user_defined()58       enable_user_defined() { show_user_defined_ = true; }
59 
60       void
disable_py_signatures()61       disable_py_signatures()
62       {
63         show_py_signatures_ = false;
64       }
65 
66       void
enable_py_signatures()67       enable_py_signatures()
68       {
69         show_py_signatures_ = true;
70       }
71 
72       void
disable_cpp_signatures()73       disable_cpp_signatures()
74       {
75         show_cpp_signatures_ = false;
76       }
77 
78       void
enable_cpp_signatures()79       enable_cpp_signatures()
80       {
81         show_cpp_signatures_ = true;
82       }
83 
84       void
disable_signatures()85       disable_signatures()
86       {
87         show_cpp_signatures_ = false;
88         show_py_signatures_ = false;
89       }
90 
91       void
enable_signatures()92       enable_signatures()
93       {
94         show_cpp_signatures_ = true;
95         show_py_signatures_ = true;
96       }
97 
98       void
disable_all()99       disable_all()
100       {
101         show_user_defined_ = false;
102         show_cpp_signatures_ = false;
103         show_py_signatures_ = false;
104       }
105 
106       void
enable_all()107       enable_all()
108       {
109         show_user_defined_ = true;
110         show_cpp_signatures_ = true;
111         show_py_signatures_ = true;
112       }
113 
114       friend struct objects::function;
115 
116   private:
117       static volatile bool show_user_defined_;
118       static volatile bool show_cpp_signatures_;
119       static volatile bool show_py_signatures_;
120       bool previous_show_user_defined_;
121       bool previous_show_cpp_signatures_;
122       bool previous_show_py_signatures_;
123 };
124 
125 }} // namespace boost::python
126 
127 #endif // DOCSTRING_OPTIONS_RWGK20060111_HPP
128