src/helpers.hpp
branchcpp_gui
changeset 6261 5fd6b1cfa424
parent 5984 fbef81292ff9
child 6268 4b5241e5dd10
--- a/src/helpers.hpp	Sun Feb 18 19:55:35 2007 +0000
+++ b/src/helpers.hpp	Mon Feb 19 20:04:27 2007 +0000
@@ -161,6 +161,27 @@
 	return (T)val;
 }
 
+/**
+* Zero initialization end marker.
+* @see ZeroInitBegin for usage.
+*/
+struct ZeroInitEnd {
+};
+
+/**
+ * Zero initialization begin marker. When you need to initialize struct/class members by
+ * memset(&m_first_member, 0, ((byte*)&m_last_member) - ((byte*)&m_first_member + sizeof(m_last_member));
+ * place ZeroInitBegin before m_first_member, place ZeroInitEnd after m_last_member, call ZeroInitBegin
+ * constructor give him ZeroInitEnd& as parameter. This will clear whole area between them using memset.
+ * @see ZeroInitEnd
+ */
+struct ZeroInitBegin {
+	ZeroInitBegin(const ZeroInitEnd &end)
+	{
+		memset(this, 0, ((byte*)&end) - ((byte*)this));
+	}
+};
+
 #else // __cplusplus
 
 #define DECLARE_POSTFIX_INCREMENT(E)