libt2n: (tomj) make result_container's has_exception and has_result a bit more robust
[libt2n] / src / container.hxx
index f869166..560df1c 100644 (file)
@@ -49,26 +49,40 @@ 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 libt2n::command
@@ -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