#define LA_MAPPING_BLINEAR  1
#define LA_MAPPING_BSCATTER 2

typedef struct 
{
  int   map_type; /* Used for quick comparison of mappings */

  void (*mu)(int I, int P, int N, void *extra, int *p, int *i);
                  /* Mapping of I->(p,i) */
  void (*mu_inv)(int p, int i, int P, int N, void *extra, int *I);
                  /* Inverse (p,i)->I:   */
  void (*local_len)(int p, int P, int N, void *extra, int *n);
                  /* # of coefficients mapped to each process: */
  void *extra;    /* for mapping-specific parameters */
} LA_Mapping;

/* some pre-defined mappings ... */
extern LA_Mapping *LA_Mapping_Blk_Linear, *LA_Mapping_Blk_Scatter,
                  *LA_Mapping_Linear, *LA_Mapping_Scatter;