Index: installer/src/installer-lib/installer-lib.h |
=================================================================== |
--- a/installer/src/installer-lib/installer-lib.h |
+++ b/installer/src/installer-lib/installer-lib.h |
@@ -2,113 +2,113 @@ |
* \file handle.h The "install session" is the context for all custom installation behavior. |
*/ |
-#ifndef INSTALLER_LIB_H |
-#define INSTALLER_LIB_H |
- |
-#include <stdexcept> |
-#include <sstream> |
- |
-/** |
-* Standard runtime error for failure of Windows API calls. |
-* |
-* The design purpose of this class is to consistently report the details of a failed API call, with an eye toward logging. |
-* All the arguments passed to the constructor appear in what(). |
-* In addition the return value of GetLastError() appears. |
-* |
-* All the types for the constructors are generic. |
-* Any type that works with the output operator '<<' of a stream will work. |
-* |
-* \par Example |
-* For a simple error, where there's not much to add over the API call and the error code itself, just omit the second argument. |
-* \code |
-* throw windows_api_error( "MsiDatabaseOpenView", "ERROR_BAD_QUERY_SYNTAX" ) |
-* \endcode |
-* |
-* \par |
-* Sometimes you don't have a symbolic error code. |
-* This example uses a numeric error and a clarifying message. |
-* \code |
-* throw windows_api_error( "MsiOpenDatabaseW", x, "MSI database is on file system" ) |
-* \endcode |
-*/ |
-class windows_api_error |
- : public std::runtime_error |
-{ |
- template< class T1, class T2, class T3 > |
- static std::string make_message( T1 api_function, T2 error_code, T3 message ) |
- { |
- std::ostringstream r, t ; |
- std::string s ; |
- |
- t << api_function ; |
- s = t.str() ; |
- if ( s.empty() ) |
- { |
- s = "<unspecified>" ; |
- } |
- r << s << " returned " ; |
- |
- t = std::ostringstream() ; |
- t << error_code ; |
- s = t.str() ; |
- if ( s.empty() ) |
- { |
- s = "<unknown>" ; |
- } |
- r << s << " with last error code " << ::GetLastError() ; |
- |
- t = std::ostringstream() ; |
- t << message ; |
- s = t.str() ; |
- if ( ! s.empty() ) |
- { |
- r << ": " << s ; |
- } |
- |
- return r.str() ; |
- } |
- |
-public: |
- /** |
- * Constructor with additional message. |
- * |
- * \param api_function |
- * The name of the API function that returned an error code or a null handle. |
- * \param error_code |
- * The error code that the function returned, either symbolic or numeric. |
- * Will be zero when the function returned a null handle. |
- * \param message |
- * Extra message to clarify the error |
- */ |
- template< class T1, class T2, class T3 > |
- windows_api_error( T1 api_function, T2 error_code, T3 message ) |
- : std::runtime_error( make_message( api_function, error_code, message ) ) |
- {} |
- |
- /** |
- * Constructor without anything extra. |
- * |
- * \param api_function |
- * The name of the API function that returned an error code or a null handle. |
- * \param error_code |
- * The error code that the function returned, either symbolic or numeric. |
- * Will be zero when the function returned a null handle. |
- */ |
- template< class T1, class T2 > |
- windows_api_error( T1 api_function, T2 error_code ) |
- : std::runtime_error( make_message( api_function, error_code, "" ) ) |
- {} |
-} ; |
- |
-/** |
-*/ |
-class not_yet_supported |
- : public std::runtime_error |
-{ |
-public: |
- not_yet_supported( std::string message ) |
- : std::runtime_error( "Not yet supported: " + message ) |
- {} |
-} ; |
- |
-#endif |
+#ifndef INSTALLER_LIB_H |
+#define INSTALLER_LIB_H |
+ |
+#include <stdexcept> |
+#include <sstream> |
+ |
+/** |
+* Standard runtime error for failure of Windows API calls. |
+* |
+* The design purpose of this class is to consistently report the details of a failed API call, with an eye toward logging. |
+* All the arguments passed to the constructor appear in what(). |
+* In addition the return value of GetLastError() appears. |
+* |
+* All the types for the constructors are generic. |
+* Any type that works with the output operator '<<' of a stream will work. |
+* |
+* \par Example |
+* For a simple error, where there's not much to add over the API call and the error code itself, just omit the second argument. |
+* \code |
+* throw WindowsApiError( "MsiDatabaseOpenView", "ERROR_BAD_QUERY_SYNTAX" ) |
+* \endcode |
+* |
+* \par |
+* Sometimes you don't have a symbolic error code. |
+* This example uses a numeric error and a clarifying message. |
+* \code |
+* throw WindowsApiError( "MsiOpenDatabaseW", x, "MSI database is on file system" ) |
+* \endcode |
+*/ |
+class WindowsApiError |
+ : public std::runtime_error |
+{ |
+ template< class T1, class T2, class T3 > |
+ static std::string MakeMessage( T1 apiFunction, T2 errorCode, T3 message ) |
+ { |
+ std::ostringstream r, t ; |
+ std::string s ; |
+ |
+ t << apiFunction ; |
+ s = t.str() ; |
+ if ( s.empty() ) |
+ { |
+ s = "<unspecified>" ; |
+ } |
+ r << s << " returned " ; |
+ |
+ t = std::ostringstream() ; |
+ t << errorCode ; |
+ s = t.str() ; |
+ if ( s.empty() ) |
+ { |
+ s = "<unknown>" ; |
+ } |
+ r << s << " with last error code " << ::GetLastError() ; |
+ |
+ t = std::ostringstream() ; |
+ t << message ; |
+ s = t.str() ; |
+ if ( ! s.empty() ) |
+ { |
+ r << ": " << s ; |
+ } |
+ |
+ return r.str() ; |
+ } |
+ |
+public: |
+ /** |
+ * Constructor with additional message. |
+ * |
+ * \param apiFunction |
+ * The name of the API function that returned an error code or a null handle. |
+ * \param errorCode |
+ * The error code that the function returned, either symbolic or numeric. |
+ * Will be zero when the function returned a null handle. |
+ * \param message |
+ * Extra message to clarify the error |
+ */ |
+ template< class T1, class T2, class T3 > |
+ WindowsApiError( T1 apiFunction, T2 errorCode, T3 message ) |
+ : std::runtime_error( MakeMessage( apiFunction, errorCode, message ) ) |
+ {} |
+ |
+ /** |
+ * Constructor without anything extra. |
+ * |
+ * \param apiFunction |
+ * The name of the API function that returned an error code or a null handle. |
+ * \param errorCode |
+ * The error code that the function returned, either symbolic or numeric. |
+ * Will be zero when the function returned a null handle. |
+ */ |
+ template< class T1, class T2 > |
+ WindowsApiError( T1 apiFunction, T2 errorCode) |
+ : std::runtime_error( MakeMessage( apiFunction, errorCode, "" ) ) |
+ {} |
+} ; |
+ |
+/** |
+*/ |
+class NotYetSupported |
+ : public std::runtime_error |
+{ |
+public: |
+ NotYetSupported( std::string message ) |
+ : std::runtime_error( "Not yet supported: " + message ) |
+ {} |
+} ; |
+ |
+#endif |