summaryrefslogtreecommitdiffstats
path: root/libmsi/msipriv.h
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2012-12-10 00:01:22 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2012-12-11 11:23:19 +0100
commitae4c81e4fca5bb5816b5cbabb17a7dcc22f58a3b (patch)
tree76012c4f3d176b748961c24f96e87724804f260a /libmsi/msipriv.h
parent0ffc9bc6e55b5e42766e68fb6cc087f6cbead6e0 (diff)
downloadmsitools-ae4c81e4fca5bb5816b5cbabb17a7dcc22f58a3b.tar.gz
msitools-ae4c81e4fca5bb5816b5cbabb17a7dcc22f58a3b.tar.xz
msitools-ae4c81e4fca5bb5816b5cbabb17a7dcc22f58a3b.zip
convert to GObject
Diffstat (limited to 'libmsi/msipriv.h')
-rw-r--r--libmsi/msipriv.h56
1 files changed, 22 insertions, 34 deletions
diff --git a/libmsi/msipriv.h b/libmsi/msipriv.h
index d9fb5e8..b085e27 100644
--- a/libmsi/msipriv.h
+++ b/libmsi/msipriv.h
@@ -59,24 +59,13 @@ typedef struct _LibmsiTable LibmsiTable;
struct string_table;
typedef struct string_table string_table;
-struct _LibmsiObject;
-typedef struct _LibmsiObject LibmsiObject;
-
-typedef VOID (*msihandledestructor)( LibmsiObject * );
-
-struct _LibmsiObject
-{
- unsigned magic;
- LONG refcount;
- msihandledestructor destructor;
-};
-
#define MSI_INITIAL_MEDIA_TRANSFORM_OFFSET 10000
#define MSI_INITIAL_MEDIA_TRANSFORM_DISKID 30000
-typedef struct _LibmsiDatabase
+struct _LibmsiDatabase
{
- LibmsiObject hdr;
+ GObject parent;
+
IStorage *infile;
IStorage *outfile;
string_table *strings;
@@ -85,25 +74,27 @@ typedef struct _LibmsiDatabase
char *outpath;
bool rename_outpath;
bool patch;
- const char *mode;
+ const char *mode; /* FIXME: turn this into an enum */
unsigned media_transform_offset;
unsigned media_transform_disk_id;
struct list tables;
struct list transforms;
struct list streams;
struct list storages;
-} LibmsiDatabase;
+};
typedef struct _LibmsiView LibmsiView;
-typedef struct _LibmsiQuery
+struct _LibmsiQuery
{
- LibmsiObject hdr;
+ GObject parent;
+
LibmsiView *view;
unsigned row;
- LibmsiDatabase *db;
+ LibmsiDatabase *database;
+ gchar *query;
struct list mem;
-} LibmsiQuery;
+};
/* maybe we can use a Variant instead of doing it ourselves? */
typedef struct _LibmsiField
@@ -117,12 +108,13 @@ typedef struct _LibmsiField
} u;
} LibmsiField;
-typedef struct _LibmsiRecord
+struct _LibmsiRecord
{
- LibmsiObject hdr;
+ GObject parent;
+
unsigned count; /* as passed to libmsi_record_new */
- LibmsiField fields[1]; /* nb. array size is count+1 */
-} LibmsiRecord;
+ LibmsiField *fields; /* nb. array size is count+1 */
+};
typedef struct _column_info
{
@@ -284,13 +276,14 @@ typedef struct _LibmsiOLEVariant
};
} LibmsiOLEVariant;
-typedef struct _LibmsiSummaryInfo
+struct _LibmsiSummaryInfo
{
- LibmsiObject hdr;
+ GObject parent;
+
LibmsiDatabase *database;
unsigned update_count;
LibmsiOLEVariant property[MSI_MAX_PROPS];
-} LibmsiSummaryInfo;
+};
extern const char clsid_msi_transform[16];
extern const char clsid_msi_database[16];
@@ -315,11 +308,6 @@ typedef struct {
unsigned msi_strcpy_to_awstring( const WCHAR *str, awstring *awbuf, unsigned *sz );
-/* handle functions */
-extern void *alloc_msiobject(unsigned size, msihandledestructor destroy );
-extern void msiobj_addref(LibmsiObject *);
-extern int msiobj_release(LibmsiObject *);
-
extern void free_cached_tables( LibmsiDatabase *db );
extern unsigned _libmsi_database_commit_tables( LibmsiDatabase *db, unsigned bytes_per_strref );
@@ -361,7 +349,7 @@ extern void append_storage_to_db( LibmsiDatabase *db, IStorage *stg );
extern unsigned _libmsi_database_commit_storages( LibmsiDatabase *db );
/* record internals */
-extern void _libmsi_record_destroy( LibmsiObject * );
+extern void _libmsi_record_destroy( LibmsiRecord * );
extern unsigned _libmsi_record_set_IStream( LibmsiRecord *, unsigned, IStream *);
extern unsigned _libmsi_record_get_IStream( const LibmsiRecord *, unsigned, IStream **);
extern const WCHAR *_libmsi_record_get_string_raw( const LibmsiRecord *, unsigned );
@@ -381,7 +369,7 @@ extern WCHAR *encode_streamname(bool bTable, const WCHAR *in);
extern void decode_streamname(const WCHAR *in, WCHAR *out);
/* database internals */
-extern LibmsiResult _libmsi_database_start_transaction(LibmsiDatabase *db, const char *szPersist);
+extern LibmsiResult _libmsi_database_start_transaction(LibmsiDatabase *db);
extern LibmsiResult _libmsi_database_open(LibmsiDatabase *db);
extern LibmsiResult _libmsi_database_close(LibmsiDatabase *db, bool committed);
unsigned msi_create_stream( LibmsiDatabase *db, const WCHAR *stname, IStream *stm );