binding a struct added by evhan on Fri Oct 16 03:54:14 2015

$ cat struct.c

struct tm {
   int tm_sec;         /* seconds,  range 0 to 59          */
   int tm_min;         /* minutes, range 0 to 59           */
   int tm_hour;        /* hours, range 0 to 23             */
   int tm_mday;        /* day of the month, range 1 to 31  */
   int tm_mon;         /* month, range 0 to 11             */
   int tm_year;        /* The number of years since 1900   */
   int tm_wday;        /* day of the week, range 0 to 6    */
   int tm_yday;        /* day in the year, range 0 to 365  */
   int tm_isdst;       /* daylight saving time             */
};

$ chicken-bind - -o - < struct.c

;;; GENERATED BY CHICKEN-BIND FROM -

(begin
  (define tm-tm_sec
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_sec);"))
  (define tm-tm_min
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_min);"))
  (define tm-tm_hour
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_hour);"))
  (define tm-tm_mday
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_mday);"))
  (define tm-tm_mon
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_mon);"))
  (define tm-tm_year
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_year);"))
  (define tm-tm_wday
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_wday);"))
  (define tm-tm_yday
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_yday);"))
  (define tm-tm_isdst
    (foreign-lambda*
      integer
      (((c-pointer (struct "tm")) s))
      "return(s->tm_isdst);"))
  (define make-tm
    (foreign-lambda*
      (c-pointer (struct "tm"))
      ((integer tm_sec)
       (integer tm_min)
       (integer tm_hour)
       (integer tm_mday)
       (integer tm_mon)
       (integer tm_year)
       (integer tm_wday)
       (integer tm_yday)
       (integer tm_isdst))
      "struct tm *tmp_ =  (struct tm *)C_malloc(sizeof(struct tm));\ntmp_->tm_sec = tm_sec;\ntmp_->tm_min = tm_min;\ntmp_->tm_hour = tm_hour;\ntmp_->tm_mday = tm_mday;\ntmp_->tm_mon = tm_mon;\ntmp_->tm_year = tm_year;\ntmp_->tm_wday = tm_wday;\ntmp_->tm_yday = tm_yday;\ntmp_->tm_isdst = tm_isdst;\nreturn(tmp_);;\n")))

;;; END OF FILE