Add EndPointReference#selector_names and EndPointReference#clone
diff --git a/bindings/ruby/tests/epr.rb b/bindings/ruby/tests/epr.rb
index 4971fcc..706bc1c 100644
--- a/bindings/ruby/tests/epr.rb
+++ b/bindings/ruby/tests/epr.rb
@@ -67,9 +67,12 @@
assert_equal "Microsoft", epr1.selector("Vendor")
assert_equal "Microsoft", epr1.selector(:Vendor)
+ # Check selector_names
+ expected = { "Name" => "Windows", "Vendor" => "Microsoft" }
+ assert_equal expected.keys.sort, epr1.selector_names.sort
+
# Check iterator
count = 0
- expected = { "Name" => "Windows", "Vendor" => "Microsoft" }
epr1.each do |k,v|
count += 1;
expected.delete(k) if expected[k] == v
diff --git a/bindings/wsman-epr.i b/bindings/wsman-epr.i
index ed59503..e879ce5 100644
--- a/bindings/wsman-epr.i
+++ b/bindings/wsman-epr.i
@@ -68,6 +68,14 @@
epr_destroy( $self );
}
+#if defined(SWIGRUBY)
+ %newobject clone;
+ /* clone the EndPointReference instance */
+ epr_t *clone(epr_t *epr) {
+ return epr_copy(epr);
+ }
+#endif
+
/*
* Add selector as key/value pair
*
@@ -144,6 +152,22 @@
return wsman_epr_selector_by_name($self, name);
}
+ /*
+ * Return list of selector names
+ */
+#if defined(SWIGRUBY)
+ VALUE selector_names(void) {
+ int i;
+ VALUE ary = rb_ary_new2($self->refparams.selectorset.count);
+ Selector *p = $self->refparams.selectorset.selectors;
+ for (i = 0; i < $self->refparams.selectorset.count; i++) {
+ rb_ary_store(ary, i, SWIG_FromCharPtr(p->name));
+ ++p;
+ }
+ return ary;
+ }
+#endif
+
#if defined(SWIGRUBY)
/* enumerate over selectors as key,value pairs */
void each() {