wsman-filter.i filter declarations for openwsman swig bindings
%rename(Filter) filter_t; %nodefault filter_t; typedef struct {
char *resultClass; char *assocClass;
} filter_t;
if defined(SWIGRUBY) %{
Build associators (type == 0) or references (type == 1) filter / static int associators_references( void *filter, int type, VALUE epr_v, VALUE assocClass_v, VALUE resultClass_v, VALUE role_v, VALUE resultRole_v, VALUE resultProp_v, VALUE propNum_v) { epr_t *epr = NULL; const char *assocClass = as_string(assocClass_v); const char *resultClass = as_string(resultClass_v); const char *role = as_string(role_v); const char *resultRole = as_string(resultRole_v); char **resultProp = NULL; int propNum = 0; int res; KLASS_DECL(SwigClassEndPointReference,SWIGTYPE_p_epr_t); if (CLASS_OF(epr_v) == KLASS_OF(SwigClassEndPointReference)) { SWIG_ConvertPtr(epr_v, (void **)&epr, SWIGTYPE_p_epr_t, 0); } else { epr = epr_from_string(as_string(epr_v)); } if (!NIL_P(resultProp_v)) { int i; if (TYPE(resultProp_v) != T_ARRAY) { SWIG_exception( SWIG_ArgError(resultProp_v), Ruby_Format_TypeError( "", "Array", "resultProp", 6, resultProp_v ) ); } resultProp = (char **)calloc(RARRAY_LEN(resultProp_v), sizeof(char *)); for (i = 0; i < RARRAY_LEN(resultProp_v); ++i) { resultProp[i] = (char *)as_string(rb_ary_entry(resultProp_v, i)); ++propNum; } } res = filter_set_assoc((filter_t *)filter, epr, type, assocClass, resultClass, role, resultRole, resultProp, propNum); if (resultProp) free(resultProp); return res; }
%} endif
/*
Document-class: Filter Filter are evaluated on the server side and help to reduce the amount of processing and information transport. There are five basic ways to filter associations references XPath CQL (CIM query language) WQL (WS-Management query language) Openwsman does not do any filter processing by itself but passes it to the backend CIMOM. Support for filters and query languages thus depends on the used CIMOM. /
%extend filter_t {
/* Create empty filter / filter_t() { return filter_initialize(); } ~filter_t() { filter_destroy( $self ); }
if defined(SWIGJAVA)
%typemap(in) (char **resultProp, const int propNum) { int i = 0; $2 = (*jenv)->GetArrayLength(jenv, $input); $1 = (char **) malloc(($2+1)*sizeof(char *)); /* make a copy of each string for (i = 0; i<$2; i++) { jstring j_string = (jstring)(*jenv)->GetObjectArrayElement(jenv, $input, i); const char * c_string = (*jenv)->GetStringUTFChars(jenv, j_string, 0); $1[i] = malloc((strlen(c_string)+1)*sizeof(char)); strcpy($1[i], c_string); (*jenv)->ReleaseStringUTFChars(jenv, j_string, c_string); (*jenv)->DeleteLocalRef(jenv, j_string); } $1[i] = 0; }
/* This cleans up the memory we malloc'd before the function call */
%typemap(freearg) (char **resultProp, const int propNum) { int i; for (i=0; i<$2-1; i++) free($1[i]); free($1); } %typemap(jni) (char **resultProp, const int propNum) "jobjectArray" %typemap(jtype) (char **resultProp, const int propNum) "String[]" %typemap(jstype) (char **resultProp, const int propNum) "String[]" %typemap(javain) (char **resultProp, const int propNum) "$javainput"
endif if defined(SWIGRUBY)
/* Set associators filter call-seq: filter.associators(end_point_reference, assoc_class_name, result_class_name, role, result_role, result_prop[], prop_num) / int associators( VALUE epr_v = Qnil, VALUE assocClass_v = Qnil, VALUE resultClass_v = Qnil, VALUE role_v = Qnil, VALUE resultRole_v = Qnil, VALUE resultProp_v = Qnil, VALUE propNum_v = Qnil) { return associators_references( $self, 0, epr_v, assocClass_v, resultClass_v, role_v, resultRole_v, resultProp_v, propNum_v); }
else
int associators( epr_t *epr, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, char **resultProp, const int propNum) { return filter_set_assoc($self, epr, 0, assocClass, resultClass, role, resultRole, resultProp, propNum); }
endif if defined(SWIGRUBY)
/* Set references filter call-seq: filter.references(end_point_reference, assoc_class_name, result_class_name, role, result_role, result_prop[], prop_num) / int references( VALUE epr_v = Qnil, VALUE assocClass_v = Qnil, VALUE resultClass_v = Qnil, VALUE role_v = Qnil, VALUE resultRole_v = Qnil, VALUE resultProp_v = Qnil, VALUE propNum_v = Qnil) { return associators_references( $self, 1, epr_v, assocClass_v, resultClass_v, role_v, resultRole_v, resultProp_v, propNum_v); }
else
int references( epr_t *epr, const char *assocClass, const char *resultClass, const char *role, const char *resultRole, char **resultProp, const int propNum) { return filter_set_assoc($self, epr, 1, assocClass, resultClass, role, resultRole, resultProp, propNum); }
endif
/* Set simple dialect/query filter call-seq: filter.simple(dialect, query) / int simple(const char *dialect, const char *query) { return filter_set_simple($self, dialect, query ); } /* Set XPath filter call-seq: filter.xpath(query) / int xpath(const char *query) { return filter_set_simple($self, WSM_XPATH_FILTER_DIALECT, query ); } /* Set CQL (CIM query language) filter call-seq: filter.cql(query) / int cql(const char *query) { return filter_set_simple($self, WSM_CQL_FILTER_DIALECT, query ); } /* Set WQL (WS-Management query language) filter call-seq: filter.wql(query) / int wql(const char *query) { return filter_set_simple($self, WSM_WQL_FILTER_DIALECT, query ); }
}