aboutsummaryrefslogtreecommitdiffstats
path: root/ext/win32ole/win32ole_variant.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/win32ole/win32ole_variant.c')
-rw-r--r--ext/win32ole/win32ole_variant.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/ext/win32ole/win32ole_variant.c b/ext/win32ole/win32ole_variant.c
index ef5227b5c9..308e555e4e 100644
--- a/ext/win32ole/win32ole_variant.c
+++ b/ext/win32ole/win32ole_variant.c
@@ -1,5 +1,10 @@
#include "win32ole.h"
+struct olevariantdata {
+ VARIANT realvar;
+ VARIANT var;
+};
+
static void olevariant_free(struct olevariantdata *pvar);
static void ole_val2olevariantdata(VALUE val, VARTYPE vt, struct olevariantdata *pvar);
static void ole_val2variant_err(VALUE val, VARIANT *var);
@@ -665,6 +670,14 @@ folevariant_set_value(VALUE self, VALUE val)
}
void
+ole_variant2variant(VALUE val, VARIANT *var)
+{
+ struct olevariantdata *pvar;
+ Data_Get_Struct(val, struct olevariantdata, pvar);
+ VariantCopy(var, &(pvar->var));
+}
+
+void
Init_win32ole_variant(void)
{
cWIN32OLE_VARIANT = rb_define_class("WIN32OLE_VARIANT", rb_cObject);