annotate swig/xtract.i @ 138:cfb8a5f6ea06

removing unneeded %newobject decl newobject is only for management of a returned object -- it cannot handle nested structures that need complicated teardown
author Tej Chajed <tchajed+github@gmail.com>
date Sun, 02 Dec 2012 13:51:23 -0600
parents b1c5efe11560
children 7fbca00c2c05
rev   line source
jamie@87 1 %module xtract
jamie@133 2 %include typemaps.i
jamie@87 3 %include carrays.i
jamie@87 4
jamie@87 5 %{
jamie@87 6 #include "xtract/xtract_scalar.h"
jamie@103 7 #include "xtract/xtract_vector.h"
jamie@107 8 #include "xtract/xtract_helper.h"
jamie@110 9 #include "xtract/xtract_macros.h"
jamie@110 10 #include "xtract/xtract_delta.h"
jamie@103 11 #include "xtract/libxtract.h"
jamie@87 12 %}
jamie@87 13
jamie@134 14 /*
jamie@133 15 %typemap(javabase) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [],
jamie@133 16 SWIGTYPE (CLASS::*) "SWIG"
jamie@133 17
jamie@133 18 %typemap(javacode) SWIGTYPE, SWIGTYPE *, SWIGTYPE &, SWIGTYPE [],
jamie@133 19 SWIGTYPE (CLASS::*) %{
jamie@133 20 protected long getPointer() {
jamie@133 21 return swigCPtr;
jamie@133 22 }
jamie@133 23 %}
jamie@134 24 */
jamie@110 25 /* Helper functions */
jamie@110 26 %inline %{
jamie@110 27
jamie@133 28 void *floata_to_voidp(float f[])
jamie@133 29 {
jamie@133 30 return (void *)f;
jamie@133 31 }
jamie@133 32
jamie@110 33 xtract_function_descriptor_t
jamie@110 34 *get_descriptor(xtract_function_descriptor_t *fd, int i){
jamie@110 35
jamie@110 36 return &fd[i];
jamie@110 37 }
jamie@110 38
jamie@110 39 /* Return a pointer to memory allocated for a mel filterbank */
jamie@110 40 xtract_mel_filter *create_filterbank(int n_filters, int blocksize){
jamie@110 41
jamie@110 42 float **filters;
jamie@110 43 xtract_mel_filter *mf;
jamie@110 44 int n, N;
jamie@110 45
jamie@110 46 N = blocksize;
jamie@110 47
jamie@110 48 mf = malloc(sizeof(xtract_mel_filter));
jamie@110 49 mf->n_filters = n_filters;
jamie@110 50
jamie@110 51 filters = (float **)malloc(n_filters * sizeof(float *));
jamie@110 52
jamie@110 53 for(n = 0; n < n_filters; n++)
jamie@110 54 filters[n] = (float *)malloc(N * sizeof(float));
jamie@110 55
jamie@110 56 mf->filters = filters;
jamie@110 57
jamie@110 58 return mf;
jamie@110 59
jamie@110 60 }
jamie@110 61
jamie@110 62 /* Free a mel filterbank */
jamie@110 63 void destroy_filterbank(xtract_mel_filter *filterbank){
jamie@110 64
jamie@110 65 int i = filterbank->n_filters;
jamie@110 66 float **filters;
jamie@110 67
jamie@110 68 filters = filterbank->filters;
jamie@110 69
jamie@110 70 while(i--)
jamie@110 71 free(filters[i]);
jamie@110 72
jamie@110 73 free(filters);
jamie@110 74
jamie@110 75 free(filterbank);
jamie@110 76
jamie@110 77 }
jamie@110 78
jamie@110 79 /* Eventually this should be deprecated */
jamie@110 80 /* void destroy_filterbank_explicit(float **filterbank, int n_filters){
jamie@110 81
jamie@110 82 int i = n_filters;
jamie@110 83
jamie@110 84 while(i--)
jamie@110 85 free(filterbank[i]);
jamie@110 86
jamie@110 87 free(filterbank);
jamie@110 88 }
jamie@110 89 */
jamie@110 90
jamie@110 91
jamie@110 92
jamie@110 93 %}
jamie@110 94
jamie@110 95
jamie@88 96 %array_class(float, floatArray);
jamie@110 97 %array_class(int, intArray);
jamie@87 98 %apply float *OUTPUT { float *result };
jamie@134 99
jamie@134 100 /* %apply float[] {const float *data}; */
jamie@133 101
jamie@87 102
jamie@103 103 %ignore xtract;
jamie@103 104
jamie@87 105 %include "xtract/xtract_scalar.h"
jamie@103 106
jamie@110 107 /* We have to put xtract_delta declarations inline because it contains a mixture of vector and scalar functions */
jamie@110 108 %inline %{
jamie@110 109
jamie@110 110 int xtract_flux(const float *data, const int N, const void *argv , float *result);
jamie@110 111 int xtract_lnorm(const float *data, const int N, const void *argv , float *result);
jamie@110 112
jamie@110 113 %}
jamie@110 114
jamie@103 115 %clear float *result;
jamie@103 116
jamie@110 117 %inline %{
jamie@110 118
jamie@110 119 int xtract_difference_vector(const float *data, const int N, const void *argv, float *result);
jamie@110 120
jamie@110 121 %}
jamie@110 122
jamie@103 123 %include "xtract/xtract_vector.h"
jamie@107 124 %include "xtract/xtract_helper.h"
jamie@110 125 %include "xtract/xtract_macros.h"
jamie@103 126 %include "xtract/libxtract.h"
jamie@110 127
jamie@110 128