libt2n: (tomj) make result_container's has_exception and has_result a bit more robust
[libt2n] / src / container.hxx
index 710a07e..560df1c 100644 (file)
@@ -33,7 +33,7 @@
 namespace libt2n
 {
 
-/** @brief contains the result (return value or exception) of a executed command
+/** @brief contains the result (return value as libt2n::result or an libt2n::t2n_exception) of a executed command
 */
 class result_container
 {
@@ -49,29 +49,43 @@ class result_container
 
     public:
         result_container()
-            { res=0; ex=0; }
+            : res(NULL)
+            , ex(NULL)
+            , result_type(regular)
+        {
+        }
 
         result_container(result *_res)
-            { set_result(_res); }
+            : res(_res)
+            , ex(NULL)
+            , result_type(regular)
+        {
+        }
+
         result_container(t2n_exception *_ex)
-            { set_exception(_ex); }
+            : res(NULL)
+            , ex(_ex)
+            , result_type(exception)
+        {
+        }
 
         ~result_container();
 
         void set_result(result *_res)
             { res=_res; ex=0; result_type=regular; }
+
         void set_exception(t2n_exception *_ex)
             { res=0; ex=_ex; result_type=exception; }
 
         result* get_result(void);
 
         bool has_exception()
-            { return (result_type==exception); }
+            { return (result_type==exception && ex != NULL); }
         bool has_result()
-            { return (result_type==regular); }
+            { return (result_type==regular && res != NULL); }
 };
 
-/** @brief contains a command
+/** @brief contains a libt2n::command
 */
 class command_container
 {
@@ -84,9 +98,12 @@ class command_container
 
     public:
         command_container()
-            { cmd=0; }
+            : cmd(NULL)
+        {}
+
         command_container(command *_cmd)
-            { cmd=_cmd; }
+            : cmd(_cmd)
+        {}
 
         ~command_container();
 
@@ -100,5 +117,7 @@ class command_container
 BOOST_CLASS_TRACKING(libt2n::result_container, boost::serialization::track_never)
 BOOST_CLASS_TRACKING(libt2n::command_container, boost::serialization::track_never)
 
+#include "container.tcc"
+
 #endif