/* -*- C -*- */ /** * Author : Pierre Schnizer */ %{ #include %} %rename(Combination) gsl_combination_struct; %feature("autodoc"); struct gsl_combination_struct { %immutable; /* size_t n; size_t k; size_t *data; */ }; %feature("autodoc") gsl_combination_struct "bla bla" "more blah blah"; %extend gsl_combination_struct{ %rename(__getitem__) get_item; %rename(__len__) get_k; gsl_combination_struct(const size_t n, const size_t k) { return gsl_combination_calloc(n,k); } ~gsl_combination_struct() { gsl_combination_free(self); } size_t get_item(const size_t i){ return gsl_combination_get(self, i); } size_t k(){ return gsl_combination_k(self); } size_t n(){ return gsl_combination_n(self); } void init_first() { gsl_combination_init_first(self); } void init_last() { gsl_combination_init_last(self); } int valid(){ return gsl_combination_valid(self); } int next(){ /* returns gsl_success or gsl_failure. Should gsl_failure translate to an exception? */ return gsl_combination_next(self); } int prev(){ /* returns gsl_success or gsl_failure. Should gsl_failure translate to an exception? */ return gsl_combination_prev(self); } PyObject *tolist(){ PyObject *a_list = NULL, *a_int; long size = 0, i; size = (long) gsl_combination_k(self); a_list = PyList_New(size); if (a_list == NULL) return NULL; for(i=0; idata; for(i=0; i