Index: installer/src/installer-lib/record.h |
=================================================================== |
new file mode 100644 |
--- /dev/null |
+++ b/installer/src/installer-lib/record.h |
@@ -0,0 +1,72 @@ |
+/** |
+ * \file session.h The "install session" is the context for all custom installation behavior. |
+ */ |
+ |
+#ifndef RECORD_H |
+#define RECORD_H |
+ |
+#include <string> |
+#include "windows.h" |
+#include "msi.h" |
+ |
+/** |
+ * An abstract record entity. |
+ * It represents both records in the installation database and as argument vectors for API functions. |
+ * |
+ * The ordinary constructor creates a free-standing record. |
+ * It takes only the number of fields in the created record. |
+ * The fields of the record are dynamically typed according to how they're assigned. |
+ * |
+ * Other constructors encapsulate records that are bound to databases. |
+ * |
+ * \par Invariant |
+ * - _handle is not null |
+ * - _handle is represents an open record obtained from MsiCreateRecord |
+ * |
+ * \sa http://msdn.microsoft.com/en-us/library/windows/desktop/aa372881%28v=vs.85%29.aspx |
+ * Windows Installer on MSDN: "Working with Records" |
+ */ |
+class Record { |
+public: |
+ /** |
+ * Ordinary constructor creates a free-standing record. |
+ * Use this for creating argument vectors. |
+ * |
+ * \param[in] n_fields |
+ * Number of fields in the created record. |
+ */ |
+ Record( unsigned int n_fields ) ; |
+ |
+ /** |
+ * Destructor |
+ */ |
+ ~Record() ; |
+ |
+ /** |
+ * Assign a string to a record |
+ * |
+ * \param[in] field_index |
+ * Index into the record as a vector of fields |
+ * \param[in] value |
+ * String to write into the field |
+ */ |
+ void assign_string( unsigned int field_index, std::wstring value ) ; |
+ |
+ /** |
+ * Handle accessor. |
+ */ |
+ MSIHANDLE handle() { return _handle ; } |
+ |
+private: |
+ /** |
+ * The handle for the record as a Windows Installer resource. |
+ */ |
+ MSIHANDLE _handle ; |
+ |
+ /** |
+ * The number of fields in the record. |
+ */ |
+ unsigned int n_fields ; |
+}; |
+ |
+#endif |