packages feed

fudgets-0.18.3: hsrc/ghc-dialogue/cfundefs.h

#define SETI(ctype,fhtype,p1,i1,field,v1) \
  void seti_##ctype##_##field(ctype p[],int i,typeof(p[i].field) v) \
    BODY({ p[i].field=v; })

#define SINDEX(ctype,p1,i1,v1) \
  void sindex_##ctype(ctype p[],int i,typeof(p[i]) v) \
    BODY({ p[i]=v; })

/*(_casm_ ``((ctype *)%0)[%1]=%2;'' (p) (i) (v) :: IO ())*/

#define SET(ctype,fhtype,p1,field,v1) \
  void set_##ctype##_##field(ctype *p,typeof(p->field) v) \
    BODY({ p->field=v; })

#define SETWa(swa,field,v) SET(XSetWindowAttributes,Int,swa,field,v)
#define SETWaXID(swa,field,v) SET(XSetWindowAttributes,XID,swa,field,v)

/* (_casm_ ``((ctype *)%0)->field=%1;'' (addrOf (p)) (v) :: IO ())*/

#define GET(ctype,rhtype,p1,field) \
  typeof(((ctype *)0)->field) get_##ctype##_##field(ctype *p) \
    BODY({ return p->field; })

#define GETC(ctype,crtype,rhtype,p1,field) \
  crtype get_##ctype##_##field(ctype *p) \
    BODY({ return p->field; })

/* (_casm_ `` %r = ((ctype *)%0)->field; '' (addrOf (p))) */

#define AGET(ctype,rhtype,p1,field) \
  typeof(&(((ctype *)0)->field)) aget_##ctype##_##field(ctype *p) \
    BODY({ return &(((ctype *)p)->field); })

/* (_casm_ `` %r = &(((ctype *)%0)->field); '' ((p)::HT(ctype))) */

#define INDEX(ctype) \
  ctype *index_##ctype(ctype *p,int i) \
    BODY({ return p+i; })

/* (\pP iI -> _casm_ ``%r = (ctype *)%0 + (int)%1;'' ((pP) :: HT(ctype)) iI) */

#define CINDEX(t) \
  t cindex_##t(t p[],int i) \
    BODY({ return p[i]; })

/* (\pP iI -> _casm_ ``%r = ((t *)%0)[(int)%1];'' pP iI) */

#define CCONST(c)  int const_##c(void) BODY({ return (c);})
#define CWORD32(c) int const_##c(void) BODY({ return (c);})