#ifndef ROW_INCLUDED #define ROW_INCLUDED #include "basis.h" /* previously, s was allocated statically. However, the default size was pretty large for large values of KKMAX and the stack would overrun in linux. It is essential that dynamically allocated memory is freed after leaving the row_* subroutines, else there is memory fragmentation problems on machines without virtual memory paging. */ typedef struct { partype *s; /* np*length array containing combinations */ size_t s_length; /* memory allocated, in bytes */ size_t length; /* number of combinations */ int np; /* number of particles */ } interact; #define INTERACT_INIT {NULL,0,0,0} /* initialization for interact structure */ void row_glue(cbase *y, full_basis *bb, partype *x, int npx); void row_source(cbase *y, full_basis *bb, partype *x, int npx); void row_meson(cbase *y, full_basis *bb, partype *x, int npx); void row_heavy_light(cbase *y, full_basis *bb, partype *x, int npx); void row_memory(interact *y, size_t length); void free_row_memory(interact *s); #endif