--- 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)