diff options
Diffstat (limited to 'ACE/contrib/utility/Documentation/ExH')
16 files changed, 896 insertions, 0 deletions
diff --git a/ACE/contrib/utility/Documentation/ExH/Compound.hpp.html b/ACE/contrib/utility/Documentation/ExH/Compound.hpp.html new file mode 100644 index 00000000000..b8996f89552 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Compound.hpp.html @@ -0,0 +1,50 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +Compound.hpp</title> +<link rel="stylesheet" href="../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Utility/ExH/Compound.hpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=keyword>namespace </span><span class=identifier>Utility +</span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>ExH + </span><span class=special>{ + </span><span class=keyword>template </span><span class=special><</span><span class=keyword>typename </span><span class=identifier>Type</span><span class=special>, </span><span class=keyword>typename </span><span class=identifier>Base</span><span class=special>> + </span><span class=keyword>class </span><span class=identifier>Compound </span><span class=special>: </span><span class=keyword>public </span><span class=keyword>virtual </span><span class=identifier>Base + </span><span class=special>{ + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>explicit + </span><span class=identifier>Compound </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>explicit + </span><span class=identifier>Compound </span><span class=special>(</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>template </span><span class=special><</span><span class=keyword>typename </span><span class=identifier>T</span><span class=special>> + </span><span class=keyword>explicit + </span><span class=identifier>Compound </span><span class=special>(</span><span class=identifier>T </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=identifier>Compound </span><span class=special>(</span><span class=identifier>Compound </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>virtual + </span><span class=special>~</span><span class=identifier>Compound </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>public</span><span class=special>: + </span><span class=identifier>Compound</span><span class=special>& + </span><span class=keyword>operator</span><span class=special>= </span><span class=special>(</span><span class=identifier>Compound </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>protected</span><span class=special>: + </span><span class=identifier>Compound </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + </span><span class=special>}; + </span><span class=special>} +</span><span class=special>} + +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Example/Makefile b/ACE/contrib/utility/Documentation/ExH/Example/Makefile new file mode 100644 index 00000000000..e0188a81fbf --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Example/Makefile @@ -0,0 +1,26 @@ +# file : Documentation/ExH/Example/Makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Documentation.pre.rules) + +vpath %.cpp $(root)/Example/ExH/BadCast +vpath %.cpp $(root)/Example/ExH/Compound +vpath %.cpp $(root)/Example/ExH/HelloWorld +vpath %.cpp $(root)/Example/ExH/LogicToSystem + +doc_translation_units := bad_cast.cpp \ + compound.cpp \ + hello_world.cpp \ + logic_to_system.cpp + +DOC_FLAGS := -css $(root)/Documentation/Style/CXX.css + +$(call include, $(root)/BuildRules/Documentation.post.rules) + +# $Id$ diff --git a/ACE/contrib/utility/Documentation/ExH/Example/bad_cast.cpp.html b/ACE/contrib/utility/Documentation/ExH/Example/bad_cast.cpp.html new file mode 100644 index 00000000000..ba5044e358a --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Example/bad_cast.cpp.html @@ -0,0 +1,63 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +bad_cast.cpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Example/ExH/BadCast/bad_cast.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=preprocessor>#include "Utility/ExH/System/Exception.hpp" + +</span><span class=preprocessor>#include <iostream> + +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cerr</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>; + + +</span><span class=keyword>struct </span><span class=identifier>A +</span><span class=special>{ + </span><span class=keyword>virtual + </span><span class=special>~</span><span class=identifier>A</span><span class=special>() </span><span class=special>{} +</span><span class=special>}; + +</span><span class=keyword>struct </span><span class=identifier>B +</span><span class=special>{ + </span><span class=keyword>void + </span><span class=identifier>foo </span><span class=special>() </span><span class=special>{} +</span><span class=special>}; + +</span><span class=keyword>void +</span><span class=identifier>foo </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) +</span><span class=special>{ + </span><span class=identifier>A </span><span class=identifier>a</span><span class=special>; + + </span><span class=identifier>A</span><span class=special>& </span><span class=identifier>ar </span><span class=special>(</span><span class=identifier>a</span><span class=special>); + + </span><span class=identifier>B</span><span class=special>& </span><span class=identifier>br </span><span class=special>(</span><span class=keyword>dynamic_cast</span><span class=special><</span><span class=identifier>B</span><span class=special>&> </span><span class=special>(</span><span class=identifier>ar</span><span class=special>)); + + </span><span class=identifier>br</span><span class=special>.</span><span class=identifier>foo </span><span class=special>(); +</span><span class=special>} + +</span><span class=keyword>int +</span><span class=identifier>main </span><span class=special>() +</span><span class=special>{ + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=identifier>foo </span><span class=special>(); + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>ex</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Utility::ExH::System::Exception: " + </span><span class=special><< </span><span class=identifier>ex</span><span class=special>.</span><span class=identifier>what </span><span class=special>() + </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} +</span><span class=special>} +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Example/compound.cpp.html b/ACE/contrib/utility/Documentation/ExH/Example/compound.cpp.html new file mode 100644 index 00000000000..40ecf71eee9 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Example/compound.cpp.html @@ -0,0 +1,153 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +compound.cpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Example/ExH/Compound/compound.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=preprocessor>#include "Utility/ExH/Compound.hpp" +</span><span class=preprocessor>#include "Utility/ExH/System/Exception.hpp" +</span><span class=preprocessor>#include "Utility/ExH/Logic/DescriptiveException.hpp" + +</span><span class=comment>// Include some helper converters to allow exception initialization +// with std::ostringstream + +</span><span class=preprocessor>#include "Utility/ExH/StringStreamConverter.hpp" + +</span><span class=preprocessor>#include <iostream> + +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cerr</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>ostringstream</span><span class=special>; + +</span><span class=keyword>using </span><span class=keyword>namespace </span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>; + +</span><span class=comment>// Here are our components + +</span><span class=keyword>class </span><span class=identifier>Base +</span><span class=special>{ +</span><span class=keyword>public</span><span class=special>: + + </span><span class=comment>// + // Exception definitions. + // + + // Base logic exception class for component. + </span><span class=keyword>class </span><span class=identifier>Exception_ </span><span class=special>{}; + </span><span class=keyword>typedef + </span><span class=identifier>Compound </span><span class=special><</span><span class=identifier>Exception_</span><span class=special>, </span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>DescriptiveException</span><span class=special>> + </span><span class=identifier>Exception</span><span class=special>; + + </span><span class=keyword>class </span><span class=identifier>InvalidArgument_ </span><span class=special>{}; + </span><span class=keyword>typedef + </span><span class=identifier>Compound </span><span class=special><</span><span class=identifier>InvalidArgument_</span><span class=special>, </span><span class=identifier>Exception</span><span class=special>> + </span><span class=identifier>InvalidArgument</span><span class=special>; + + </span><span class=keyword>class </span><span class=identifier>NotInitialized_ </span><span class=special>{}; + </span><span class=keyword>typedef + </span><span class=identifier>Compound </span><span class=special><</span><span class=identifier>NotInitialized_</span><span class=special>, </span><span class=identifier>Exception</span><span class=special>> + </span><span class=identifier>NotInitialized</span><span class=special>; + +</span><span class=keyword>public</span><span class=special>: + + </span><span class=keyword>void + </span><span class=identifier>foo </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>str</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>InvalidArgument</span><span class=special>, </span><span class=identifier>NotInitialized</span><span class=special>) + </span><span class=special>{ + </span><span class=comment>// This is just an example. + + </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>str </span><span class=special>== </span><span class=number>0</span><span class=special>) + </span><span class=special>{ + </span><span class=keyword>throw </span><span class=identifier>InvalidArgument </span><span class=special>(</span><span class=string>"Base::foo: first parameter is zero."</span><span class=special>); + </span><span class=special>} + </span><span class=keyword>else + </span><span class=special>{ + </span><span class=identifier>ostringstream </span><span class=identifier>ostr</span><span class=special>; + </span><span class=identifier>ostr </span><span class=special><< </span><span class=string>"Base::foo [this = " </span><span class=special><< </span><span class=keyword>this </span><span class=special><< </span><span class=string>"]: object is not initialized."</span><span class=special>; + + </span><span class=keyword>throw </span><span class=identifier>NotInitialized </span><span class=special>(</span><span class=identifier>ostr</span><span class=special>); + </span><span class=special>} + </span><span class=special>} + + + </span><span class=comment>// We don't know what implementation may decide to throw so + // we allow to throw System exception and any logic exception + // derived from Base::Exception + </span><span class=keyword>virtual </span><span class=keyword>void + </span><span class=identifier>vfoo </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>Exception</span><span class=special>, </span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) </span><span class=special>= </span><span class=number>0</span><span class=special>; +</span><span class=special>}; + +</span><span class=keyword>class </span><span class=identifier>Derived </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Base +</span><span class=special>{ +</span><span class=keyword>public</span><span class=special>: + + </span><span class=comment>// Define some Derived-specific logic exception. + </span><span class=keyword>class </span><span class=identifier>NotImplemented_ </span><span class=special>{}; + </span><span class=keyword>typedef + </span><span class=identifier>Compound </span><span class=special><</span><span class=identifier>NotImplemented_</span><span class=special>, </span><span class=identifier>Exception</span><span class=special>> + </span><span class=identifier>NotImplemented</span><span class=special>; + +</span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>virtual </span><span class=keyword>void + </span><span class=identifier>vfoo </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>NotImplemented</span><span class=special>, </span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=identifier>str </span><span class=special>(</span><span class=string>"Derived::vfoo: not implemented yet."</span><span class=special>); + </span><span class=keyword>throw </span><span class=identifier>NotImplemented </span><span class=special>(</span><span class=identifier>str</span><span class=special>); + </span><span class=special>} +</span><span class=special>}; + +</span><span class=keyword>int +</span><span class=identifier>main </span><span class=special>() +</span><span class=special>{ + </span><span class=keyword>try + </span><span class=special>{ + + </span><span class=identifier>Derived </span><span class=identifier>d</span><span class=special>; + </span><span class=identifier>Base</span><span class=special>* </span><span class=identifier>pb </span><span class=special>(&</span><span class=identifier>d</span><span class=special>); + + </span><span class=comment>// We can use generic handler. + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=identifier>pb</span><span class=special>-></span><span class=identifier>vfoo </span><span class=special>(); + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Base</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>ex</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Base::Exception: " </span><span class=special><< </span><span class=identifier>ex</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} + + + </span><span class=comment>// Or use more precise control. + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=identifier>pb</span><span class=special>-></span><span class=identifier>foo </span><span class=special>(</span><span class=string>"hello"</span><span class=special>); + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Base</span><span class=special>::</span><span class=identifier>NotInitialized </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>ex</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Base::NotInitialized: " </span><span class=special><< </span><span class=identifier>ex</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} + + </span><span class=comment>// Or use application-level handler. + </span><span class=identifier>pb</span><span class=special>-></span><span class=identifier>foo </span><span class=special>(</span><span class=number>0</span><span class=special>); + + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>ex</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Logic::Exception: " </span><span class=special><< </span><span class=identifier>ex</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(...) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught unknown exception using catch-all handler" </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + +</span><span class=special>} +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html b/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html new file mode 100644 index 00000000000..3d2497f325e --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Example/hello_world.cpp.html @@ -0,0 +1,152 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +hello_world.cpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Example/ExH/HelloWorld/hello_world.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=preprocessor>#include <cstdlib> // for std::abort () + +</span><span class=preprocessor>#include <string> +</span><span class=preprocessor>#include <iostream> + +</span><span class=preprocessor>#include "Utility/ExH/System/Exception.hpp" +</span><span class=preprocessor>#include "Utility/ExH/Logic/Exception.hpp" + +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cerr</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cout</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>; + +</span><span class=keyword>using </span><span class=keyword>namespace </span><span class=identifier>Utility</span><span class=special>; + +</span><span class=keyword>class </span><span class=identifier>Application +</span><span class=special>{ +</span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>class </span><span class=identifier>Exception </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=special>{}; + + </span><span class=comment>// Hint: you may want to try again... + </span><span class=keyword>class </span><span class=identifier>FeelingDizzy </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Exception </span><span class=special>{}; + + </span><span class=keyword>class </span><span class=identifier>InvalidArg </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Exception </span><span class=special>{}; + +</span><span class=keyword>public</span><span class=special>: + </span><span class=identifier>Application </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>: </span><span class=comment>// The std::string c-tor may throw any kind of exceptions besides + // quite possible std::bad_alloc. + </span><span class=identifier>greeting_ </span><span class=special>(</span><span class=string>"Hello, world!"</span><span class=special>) + </span><span class=special>{ + </span><span class=special>} + + </span><span class=identifier>Application </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const </span><span class=special>* </span><span class=identifier>greeting</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>InvalidArg</span><span class=special>, + </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>: </span><span class=identifier>greeting_ </span><span class=special>(</span><span class=identifier>greeting </span><span class=special>== </span><span class=number>0 </span><span class=special>? </span><span class=string>"" </span><span class=special>: </span><span class=identifier>greeting</span><span class=special>) + </span><span class=special>{ + </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>greeting </span><span class=special>== </span><span class=number>0</span><span class=special>) </span><span class=keyword>throw </span><span class=identifier>InvalidArg </span><span class=special>(); + </span><span class=special>} + +</span><span class=keyword>public</span><span class=special>: + + </span><span class=keyword>void + </span><span class=identifier>run </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>FeelingDizzy</span><span class=special>, </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>{ + </span><span class=keyword>static </span><span class=keyword>unsigned </span><span class=keyword>int </span><span class=identifier>dizzy_count </span><span class=special>(</span><span class=number>0</span><span class=special>); + + </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>dizzy_count</span><span class=special>++ </span><span class=special>< </span><span class=number>5</span><span class=special>) </span><span class=keyword>throw </span><span class=identifier>FeelingDizzy </span><span class=special>(); + + </span><span class=comment>// The next line can throw full bucket of exceptions + // not to mention ios_base::failure. + </span><span class=identifier>cout </span><span class=special><< </span><span class=identifier>greeting_</span><span class=special>.</span><span class=identifier>c_str </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} + +</span><span class=keyword>private</span><span class=special>: + + </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=identifier>greeting_</span><span class=special>; +</span><span class=special>}; + + + +</span><span class=keyword>int +</span><span class=identifier>main </span><span class=special>() +</span><span class=special>{ + </span><span class=comment>// This is a catch-all layer that should be in use only + // if we are really in trouble. + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=comment>// This is a catch-system layer. Here we will catch exceptions like + // bad_alloc, etc. If we get here it means that nobody wanted/managed + // to recover from this kind of errors. + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=comment>// This is a catch-logic layer. If we get here it usually + // indicates an application logic error. + </span><span class=keyword>try + </span><span class=special>{ + + </span><span class=comment>// Ok, here we go about our application logic. + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=keyword>for </span><span class=special>(</span><span class=keyword>int </span><span class=identifier>i </span><span class=special>= </span><span class=number>0</span><span class=special>; </span><span class=identifier>i </span><span class=special>< </span><span class=number>10</span><span class=special>; </span><span class=identifier>i</span><span class=special>++) + </span><span class=special>{ + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=identifier>Application </span><span class=identifier>app </span><span class=special>(</span><span class=string>"Hi dude!"</span><span class=special>); + </span><span class=identifier>app</span><span class=special>.</span><span class=identifier>run </span><span class=special>(); + </span><span class=keyword>break</span><span class=special>; + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Application</span><span class=special>::</span><span class=identifier>FeelingDizzy </span><span class=keyword>const</span><span class=special>& </span><span class=special>) + </span><span class=special>{ + </span><span class=keyword>if </span><span class=special>(</span><span class=identifier>i </span><span class=special>== </span><span class=number>9</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Given up!" </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + </span><span class=keyword>else + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Application is feeling dizzy. Trying again..." + </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} + </span><span class=special>} + </span><span class=special>} + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Application</span><span class=special>::</span><span class=identifier>InvalidArg </span><span class=keyword>const</span><span class=special>& </span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Cought Application::InvalidArg : ...hmm... strange!" + </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>e</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Logic::Exception : " </span><span class=special><< </span><span class=identifier>e</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=keyword>const </span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>& </span><span class=identifier>e</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught System::Exception : " </span><span class=special><< </span><span class=identifier>e</span><span class=special>.</span><span class=identifier>what </span><span class=special>() </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(...) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught unknown exception using catch-all handler. " </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=keyword>return </span><span class=special>-</span><span class=number>1</span><span class=special>; + </span><span class=special>} + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(...) + </span><span class=special>{ + </span><span class=comment>// We get here in cases of some hard failure. For example when handling + // exception, operator << throws another exception. Usually application + // cannot handle such failures itself so we just propagate it futher. + </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>abort </span><span class=special>(); + </span><span class=special>} +</span><span class=special>} +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Example/logic_to_system.cpp.html b/ACE/contrib/utility/Documentation/ExH/Example/logic_to_system.cpp.html new file mode 100644 index 00000000000..d29794d4c2c --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Example/logic_to_system.cpp.html @@ -0,0 +1,69 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +logic_to_system.cpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Example/ExH/LogicToSystem/logic_to_system.cpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=preprocessor>#include "Utility/ExH/System/Exception.hpp" +</span><span class=preprocessor>#include "Utility/ExH/Logic/Exception.hpp" + +</span><span class=preprocessor>#include <iostream> + +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>cerr</span><span class=special>; +</span><span class=keyword>using </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>endl</span><span class=special>; + + +</span><span class=keyword>struct </span><span class=identifier>SubsystemA +</span><span class=special>{ + </span><span class=keyword>class </span><span class=identifier>Exception </span><span class=special>: </span><span class=keyword>public </span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>Logic</span><span class=special>::</span><span class=identifier>Exception </span><span class=special>{}; + + </span><span class=keyword>void + </span><span class=identifier>foo </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>{ + </span><span class=keyword>throw </span><span class=identifier>Exception </span><span class=special>(); + </span><span class=special>} +</span><span class=special>}; + + +</span><span class=keyword>struct </span><span class=identifier>SubsystemB +</span><span class=special>{ + </span><span class=keyword>void + </span><span class=identifier>foo </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(</span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>SubsystemA </span><span class=identifier>a</span><span class=special>; + </span><span class=identifier>a</span><span class=special>.</span><span class=identifier>foo </span><span class=special>(); + + </span><span class=comment>// Here SubsystemB is using SunsystemA but cannot (forgot, doesnt't + // want to, doesn't know how to, etc - pick your favorite) handle + // exception thrown by SubsystemA. As a result exception is + // 'converted' to System::Exception. + </span><span class=special>} +</span><span class=special>}; + + +</span><span class=keyword>int +</span><span class=identifier>main </span><span class=special>() +</span><span class=special>{ + </span><span class=keyword>try + </span><span class=special>{ + </span><span class=identifier>SubsystemB </span><span class=identifier>b</span><span class=special>; + </span><span class=identifier>b</span><span class=special>.</span><span class=identifier>foo </span><span class=special>(); + </span><span class=special>} + </span><span class=keyword>catch </span><span class=special>(</span><span class=identifier>Utility</span><span class=special>::</span><span class=identifier>ExH</span><span class=special>::</span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>ex</span><span class=special>) + </span><span class=special>{ + </span><span class=identifier>cerr </span><span class=special><< </span><span class=string>"Caught Utility::ExH::System::Exception: " + </span><span class=special><< </span><span class=identifier>ex</span><span class=special>.</span><span class=identifier>what </span><span class=special>() + </span><span class=special><< </span><span class=identifier>endl</span><span class=special>; + </span><span class=special>} +</span><span class=special>} +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Logic/DescriptiveException.hpp.html b/ACE/contrib/utility/Documentation/ExH/Logic/DescriptiveException.hpp.html new file mode 100644 index 00000000000..b54dbd30936 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Logic/DescriptiveException.hpp.html @@ -0,0 +1,61 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +DescriptiveException.hpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Utility/ExH/Logic/DescriptiveException.hpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=keyword>namespace </span><span class=identifier>Utility +</span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>ExH + </span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>Logic + </span><span class=special>{ + </span><span class=keyword>class </span><span class=identifier>DescriptiveException </span><span class=special>: </span><span class=keyword>public </span><span class=keyword>virtual </span><span class=identifier>Exception + </span><span class=special>{ + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>template </span><span class=special><</span><span class=keyword>typename </span><span class=identifier>T</span><span class=special>> + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>T </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>DescriptiveException </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>virtual + </span><span class=special>~</span><span class=identifier>DescriptiveException </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=identifier>DescriptiveException</span><span class=special>& + </span><span class=keyword>operator</span><span class=special>= </span><span class=special>(</span><span class=identifier>DescriptiveException </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>protected</span><span class=special>: + </span><span class=identifier>DescriptiveException </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>void + </span><span class=identifier>init </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>virtual </span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* + </span><span class=identifier>what </span><span class=special>() </span><span class=keyword>const </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>private</span><span class=special>: + </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>auto_ptr</span><span class=special><</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string</span><span class=special>> </span><span class=identifier>description_</span><span class=special>; + </span><span class=special>}; + </span><span class=special>} + </span><span class=special>} +</span><span class=special>} + +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Logic/Exception.hpp.html b/ACE/contrib/utility/Documentation/ExH/Logic/Exception.hpp.html new file mode 100644 index 00000000000..5b4b56aa46d --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Logic/Exception.hpp.html @@ -0,0 +1,43 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +Exception.hpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Utility/ExH/Logic/Exception.hpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=keyword>namespace </span><span class=identifier>Utility +</span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>ExH + </span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>Logic + </span><span class=special>{ + + </span><span class=comment>// Logic::Exception inherits from System::Exception for the + // following reason. Semantically for some part of the + // system particular instance of Logic::Exception may seem as + // opaque System::Exception and the only way to handle it would + // be to propagate it further. In other words Logic::Exception + // can be seemlesly "converted" to System::Exception if there is + // no part of the system interested in handling it. + // + + </span><span class=keyword>class </span><span class=identifier>Exception </span><span class=special>: </span><span class=keyword>public </span><span class=keyword>virtual </span><span class=identifier>System</span><span class=special>::</span><span class=identifier>Exception + </span><span class=special>{ + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>virtual + </span><span class=special>~</span><span class=identifier>Exception </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + </span><span class=special>}; + </span><span class=special>} + </span><span class=special>} +</span><span class=special>} + +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/Logic/Makefile b/ACE/contrib/utility/Documentation/ExH/Logic/Makefile new file mode 100644 index 00000000000..d2d48d406bf --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Logic/Makefile @@ -0,0 +1,20 @@ +# file : Documentation/ExH/Logic/Makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Documentation.pre.rules) + +vpath %.hpp $(root)/Utility/ExH/Logic + +doc_translation_units := Exception.hpp DescriptiveException.hpp + +DOC_FLAGS := --strip-preprocessor -css $(root)/Documentation/Style/CXX.css + +$(call include, $(root)/BuildRules/Documentation.post.rules) + +# $Id$ diff --git a/ACE/contrib/utility/Documentation/ExH/Makefile b/ACE/contrib/utility/Documentation/ExH/Makefile new file mode 100644 index 00000000000..c4a5bc5f6c0 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Makefile @@ -0,0 +1,16 @@ +# file : Documentation/ExH/Makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Recursion.pre.rules) + +target_makefile_list := Makefile.documentation +target_directory_list := Logic System Example + +$(call include, $(root)/BuildRules/Recursion.post.rules) +# $Id$ diff --git a/ACE/contrib/utility/Documentation/ExH/Makefile.documentation b/ACE/contrib/utility/Documentation/ExH/Makefile.documentation new file mode 100644 index 00000000000..3ebf1511555 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/Makefile.documentation @@ -0,0 +1,20 @@ +# file : Documentation/ExH/Make.doc.mk +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Documentation.pre.rules) + +vpath %.hpp $(root)/Utility/ExH + +doc_translation_units := Compound.hpp + +DOC_FLAGS := --strip-preprocessor -css $(root)/Documentation/Style/CXX.css + +$(call include, $(root)/BuildRules/Documentation.post.rules) + +# $Id$ diff --git a/ACE/contrib/utility/Documentation/ExH/News.xhtml b/ACE/contrib/utility/Documentation/ExH/News.xhtml new file mode 100644 index 00000000000..b86f821c992 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/News.xhtml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> + +<!-- + +file : Documentation/ExH/News.xhtml +author : Boris Kolpackov <boris@kolpackov.net> +copyright : Copyright (c) 2002-2003 Boris Kolpackov +license : http://kolpackov.net/license.html + +--> + +<head> + + <title>Exception Handling Library News</title> + + <meta name="author" content="Boris Kolpackov"/> + <meta name="copyright" content="© 2001-2003 Boris Kolpackov"/> + <meta name="keywords" content="news,C++,exception,handling,model"/> + <meta name="description" content="Exception Handling Library News"/> + + <link rel="stylesheet" type="text/css" href="../Style/Default.css"/> + +</head> + +<body> + +<h1>1.2.0</h1> + +<ul class="multiline"> + <li> + Fixed incorrect initialization of <code>DescriptiveException</code> with + <code>std::ostringstream</code> object. Thanks to Karen Aroutiounov + <karen@ipmce.ru> for reporting this. + </li> +</ul> + +<h1>1.1.0</h1> + +<ul class="multiline"> + <li>New regression test coverage.</li> +</ul> + +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/System/DescriptiveException.hpp.html b/ACE/contrib/utility/Documentation/ExH/System/DescriptiveException.hpp.html new file mode 100644 index 00000000000..fb6b35d4143 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/System/DescriptiveException.hpp.html @@ -0,0 +1,64 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +DescriptiveException.hpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Utility/ExH/System/DescriptiveException.hpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=keyword>namespace </span><span class=identifier>Utility +</span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>ExH + </span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>System + </span><span class=special>{ + </span><span class=keyword>class </span><span class=identifier>DescriptiveException </span><span class=special>: </span><span class=keyword>public </span><span class=keyword>virtual </span><span class=identifier>Exception + </span><span class=special>{ + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>std</span><span class=special>::</span><span class=identifier>string </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>template </span><span class=special><</span><span class=keyword>typename </span><span class=identifier>T</span><span class=special>> + </span><span class=keyword>explicit + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>T </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=identifier>DescriptiveException </span><span class=special>(</span><span class=identifier>DescriptiveException </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>virtual + </span><span class=special>~</span><span class=identifier>DescriptiveException </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=identifier>DescriptiveException</span><span class=special>& + </span><span class=keyword>operator</span><span class=special>= </span><span class=special>(</span><span class=identifier>DescriptiveException </span><span class=keyword>const</span><span class=special>& </span><span class=identifier>src</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>protected</span><span class=special>: + </span><span class=identifier>DescriptiveException </span><span class=special>() </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>void + </span><span class=identifier>init </span><span class=special>(</span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* </span><span class=identifier>description</span><span class=special>) </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>public</span><span class=special>: + </span><span class=keyword>virtual </span><span class=keyword>char </span><span class=keyword>const</span><span class=special>* + </span><span class=identifier>what </span><span class=special>() </span><span class=keyword>const </span><span class=keyword>throw </span><span class=special>(); + + </span><span class=keyword>private</span><span class=special>: + + </span><span class=keyword>static </span><span class=keyword>unsigned </span><span class=keyword>long </span><span class=keyword>const </span><span class=identifier>DESCRIPTION_SIZE </span><span class=special>= </span><span class=number>256</span><span class=special>; + + </span><span class=keyword>char </span><span class=identifier>description_ </span><span class=special>[</span><span class=identifier>DESCRIPTION_SIZE</span><span class=special>]; + </span><span class=special>}; + </span><span class=special>} + </span><span class=special>} +</span><span class=special>} + +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/System/Exception.hpp.html b/ACE/contrib/utility/Documentation/ExH/System/Exception.hpp.html new file mode 100644 index 00000000000..60d6bd733f5 --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/System/Exception.hpp.html @@ -0,0 +1,32 @@ +<html> +<head> +<!-- Generated by the Spirit (http://spirit.sf.net) C++ to HTML Converter --> +<title> +Exception.hpp</title> +<link rel="stylesheet" href="../../../Documentation/Style/CXX.css" type="text/css"></head> +<body> +<pre> +<span class=comment>// file : Utility/ExH/System/Exception.hpp +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2002-2003 Boris Kolpackov +// license : http://kolpackov.net/license.html + +</span><span class=keyword>namespace </span><span class=identifier>Utility +</span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>ExH + </span><span class=special>{ + </span><span class=keyword>namespace </span><span class=identifier>System + </span><span class=special>{ + </span><span class=comment>// This is the only way to make predefined exceptions like + // std::bad_alloc, etc to appear in the right place of the hierarchy. + // + + </span><span class=keyword>typedef </span><span class=identifier>std</span><span class=special>::</span><span class=identifier>exception </span><span class=identifier>Exception</span><span class=special>; + </span><span class=special>} + </span><span class=special>} +</span><span class=special>} + +</span></pre> +</body> +</html> +<!-- $Id$ --> diff --git a/ACE/contrib/utility/Documentation/ExH/System/Makefile b/ACE/contrib/utility/Documentation/ExH/System/Makefile new file mode 100644 index 00000000000..7c7bfbc8e8d --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/System/Makefile @@ -0,0 +1,20 @@ +# file : Documentation/ExH/System/Makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2002-2003 Boris Kolpackov +# license : http://kolpackov.net/license.html + +root := ../../.. + +include $(root)/BuildRules/Bootstrap.rules + +$(call include, $(root)/BuildRules/Documentation.pre.rules) + +vpath %.hpp $(root)/Utility/ExH/System + +doc_translation_units := Exception.hpp DescriptiveException.hpp + +DOC_FLAGS := --strip-preprocessor -css $(root)/Documentation/Style/CXX.css + +$(call include, $(root)/BuildRules/Documentation.post.rules) + +# $Id$ diff --git a/ACE/contrib/utility/Documentation/ExH/index.xhtml b/ACE/contrib/utility/Documentation/ExH/index.xhtml new file mode 100644 index 00000000000..c2d40d9fbaa --- /dev/null +++ b/ACE/contrib/utility/Documentation/ExH/index.xhtml @@ -0,0 +1,60 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> + +<!-- + +file : Documentation/ExH/index.xhtml +author : Boris Kolpackov <boris@kolpackov.net> +copyright : Copyright (c) 2002-2003 Boris Kolpackov +license : http://kolpackov.net/license.html + +--> + +<head> + + <title>Exception Handling Library</title> + + <meta name="author" content="Boris Kolpackov"/> + <meta name="copyright" content="© 2001-2003 Boris Kolpackov"/> + <meta name="keywords" content="C++,utility,exception,handling,model,ExH"/> + <meta name="description" content="Exception Handling Library"/> + + <link rel="stylesheet" type="text/css" href="../Style/Default.css"/> + +</head> + +<body> + +<h1>Introduction</h1> + +<p> +Exception Handling library was designed to promote consistent usage of +exceptions and exception handling mechanisms throughout the project. +For a quick overview of the basic idea you may want to look at some +examples.</p> + +<h1>Examples</h1> + +<ul class="menu"> + <li><a href="Example/bad_cast.cpp.html">bad_cast.cpp</a></li> + <li><a href="Example/compound.cpp.html">compound.cpp</a></li> + <li><a href="Example/hello_world.cpp.html">hello_world.cpp</a></li> + <li><a href="Example/logic_to_system.cpp.html">logic_to_system.cpp</a></li> +</ul> + +<h1>Definitions</h1> + +<p>Following are the definitions of the main blocks of the model:</p> + +<ul class="menu"> + <li><a href="Compound.hpp.html">ExH::Compound</a></li> + <li><a href="System/Exception.hpp.html">ExH::System::Exception</a></li> + <li><a href="System/DescriptiveException.hpp.html">ExH::System::DescriptiveException</a></li> + <li><a href="Logic/Exception.hpp.html">ExH::Logic::Exception</a></li> + <li><a href="Logic/DescriptiveException.hpp.html">ExH::Logic::DescriptiveException</a></li> +</ul> + +</body> +</html> +<!-- $Id$ --> |