| OLD | NEW | 
|    1 /** |    1 /** | 
|    2  * \file handle.h The "install session" is the context for all custom installati
     on behavior. |    2  * \file handle.h The "install session" is the context for all custom installati
     on behavior. | 
|    3  */ |    3  */ | 
|    4  |    4  | 
|    5 #ifndef HANDLE_H |    5 #ifndef HANDLE_H | 
|    6 #define HANDLE_H |    6 #define HANDLE_H | 
|    7  |    7  | 
|    8 #include "windows.h" |    8 #include "windows.h" | 
|    9 #include "msi.h" |    9 #include "msi.h" | 
|   10  |   10  | 
| (...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  134    |  134    | 
|  135 public: |  135 public: | 
|  136   /** |  136   /** | 
|  137    * Conversion operator to underlying handle type. |  137    * Conversion operator to underlying handle type. | 
|  138    */ |  138    */ | 
|  139   operator T() |  139   operator T() | 
|  140   { |  140   { | 
|  141     return _handle ; |  141     return _handle ; | 
|  142   } |  142   } | 
|  143  |  143  | 
 |  144   /** | 
 |  145    * Error thrown when initialize or assigning a null handle against policy. | 
 |  146    * | 
 |  147    * Note that this error is a logic_error, not a runtime error. | 
 |  148    * If it's against policy for a handle to be null, it's an error for the calle
     r to try to make it null. | 
 |  149    * Policy enforcment here is not a substitute for good error handling by the c
     aller. | 
 |  150    * In many cases, the caller ought to be throwing windows_api_error. | 
 |  151    */ | 
|  144   struct null_handle_error |  152   struct null_handle_error | 
|  145     : public std::runtime_error |  153     : public std::logic_error | 
|  146   { |  154   { | 
|  147     null_handle_error() |  155     null_handle_error() | 
|  148       : std::runtime_error( "May not initialize with null handle" )  |  156       : std::logic_error( "May not initialize with null handle" )  | 
|  149     {} |  157     {} | 
|  150   } ; |  158   } ; | 
|  151 } ; |  159 } ; | 
|  152  |  160  | 
|  153 /* |  161 /* | 
|  154  * Handle class |  162  * Handle class | 
|  155  */ |  163  */ | 
|  156 template< |  164 template< | 
|  157   class T, |  165   class T, | 
|  158   template <class> class Null_Policy, |  166   template <class> class Null_Policy, | 
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  247    * The check for a non-zero handle compiles out conditionally based on Null_Po
     licy. |  255    * The check for a non-zero handle compiles out conditionally based on Null_Po
     licy. | 
|  248    * The specific function used to close the handle is given by the Destruction_
     Policy. |  256    * The specific function used to close the handle is given by the Destruction_
     Policy. | 
|  249    */ |  257    */ | 
|  250   ~handle() |  258   ~handle() | 
|  251   { |  259   { | 
|  252     if ( Null_Policy< T >::prohibited_always() || ( _handle != 0 ) ) { |  260     if ( Null_Policy< T >::prohibited_always() || ( _handle != 0 ) ) { | 
|  253       Destruction_Policy< T >::close( _handle ) ; |  261       Destruction_Policy< T >::close( _handle ) ; | 
|  254     } |  262     } | 
|  255   } |  263   } | 
|  256  |  264  | 
 |  265   /** | 
 |  266    * Expose the underlying handle type. | 
 |  267    */ | 
 |  268   typedef T handle_type ; | 
|  257 } ; |  269 } ; | 
|  258  |  270  | 
|  259 //------------------------------------------------------- |  271 //------------------------------------------------------- | 
|  260 // Common instantiations of handle |  272 // Common instantiations of handle | 
|  261 //------------------------------------------------------- |  273 //------------------------------------------------------- | 
|  262 typedef handle< HANDLE, Disallow_Null, Windows_Generic_Destruction > Windows_Han
     dle ; |  274 typedef handle< HANDLE, Disallow_Null, Windows_Generic_Destruction > Windows_Han
     dle ; | 
|  263  |  275  | 
|  264 #endif |  276 #endif | 
| OLD | NEW |