From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Matt Wette Newsgroups: gmane.lisp.guile.user Subject: Re: type friction C <-> scheme Date: Sun, 11 Jun 2017 11:01:40 -0700 Message-ID: <8D9D11EA-92C0-4129-80D3-1962A3AC383B@gmail.com> References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 (Mac OS X Mail 10.3 \(3273\)) Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: quoted-printable X-Trace: blaine.gmane.org 1497204133 16099 195.159.176.226 (11 Jun 2017 18:02:13 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sun, 11 Jun 2017 18:02:13 +0000 (UTC) Cc: guile-user@gnu.org To: Catonano Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Sun Jun 11 20:02:08 2017 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dK7Bf-0003dQ-PJ for guile-user@m.gmane.org; Sun, 11 Jun 2017 20:02:08 +0200 Original-Received: from localhost ([::1]:34838 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dK7Bh-0001Sm-Ot for guile-user@m.gmane.org; Sun, 11 Jun 2017 14:02:09 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:52313) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dK7BM-0001SO-A2 for guile-user@gnu.org; Sun, 11 Jun 2017 14:01:49 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dK7BJ-0007je-5p for guile-user@gnu.org; Sun, 11 Jun 2017 14:01:48 -0400 Original-Received: from mail-pf0-x236.google.com ([2607:f8b0:400e:c00::236]:35851) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dK7BI-0007jH-Sl for guile-user@gnu.org; Sun, 11 Jun 2017 14:01:45 -0400 Original-Received: by mail-pf0-x236.google.com with SMTP id x63so43844271pff.3 for ; Sun, 11 Jun 2017 11:01:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H6DfGGbcUfC/P5HYXYKrVSjcxJJg/Q9dbNcDj1l46sw=; b=jkM745lMNeB1C0gUEI/id/3MdP2wocVnbZrxU0G0SMNroIzdx9ZdeqM4IMdHGFzX2j /qmFhOqO6SQId5xDP1sBRtf3WjdyKG5pZg9ZI6rxW75ZF0XXOkSpJZAz4SEznoFWJtNh N7Gapd7LvMRupr5T3Tdt3JzKXkDJ8mn6E31NTV8ft6mc8IFO8sg+fHGXFhs1v6IGrCLq 0ZkJDBVo5dIoFAEj2YjqFqOwOUICFbGasIatpzDENQmaFbZ6zpZSb7ij1fcYGFbodUjG +Sy/svAYZ6fVmjQ3wn77vsJV/2EIAXoZTwRcgsJESsH05n15UGRHZ1mRIAh4V/m3hcGu m4QA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=H6DfGGbcUfC/P5HYXYKrVSjcxJJg/Q9dbNcDj1l46sw=; b=PbRPhrlm6NGjSwU7i4ZyPKV3FKgz8cYlhGDwILvsQB5fYRKSaQAIhxKZRIs9EDWt7g 8fkZGNO9SyYin7psLC2USWGkmZNWOoJUXptL2LtdM5zZQYCoQlI5fPnYNwq/Lw1GRyP0 bWg+JCnracGAuLhlr5mrsokR/6HSZjc85Fn1xqhMV1HZLgKfq2HkL84j0AWMF7YMWJlF A/AplR1VEn2C+hdVejfsl4nByhTm9yt+mqX+tCpVi7NHkyVKCf6xFw4CAoShZK4N5dgH HJi2YGFSgC10/gqjmcUnhRUksEfKGXVfUT5xWaG7fqCXuCd0DFjUqayMiQ4+8W3+APxd 4SeA== X-Gm-Message-State: AODbwcBVwSNuu0HGAcFHzWPyJ5sAkiWKtfTHaBJF22ShiT4Ctru2w4ha jV4YwZeojKaHhMjlqQQ= X-Received: by 10.84.254.73 with SMTP id a9mr28122917pln.64.1497204103856; Sun, 11 Jun 2017 11:01:43 -0700 (PDT) Original-Received: from [192.168.2.114] (216-165-236-44.championbroadband.com. [216.165.236.44]) by smtp.gmail.com with ESMTPSA id r77sm13540687pfg.95.2017.06.11.11.01.41 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 11 Jun 2017 11:01:42 -0700 (PDT) In-Reply-To: X-Mailer: Apple Mail (2.3273) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:400e:c00::236 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:13809 Archived-At: > On Jun 9, 2017, at 1:36 PM, Catonano wrote: >=20 > Here we go again >=20 > After successfully wrapping freexl_open, I can't do the same with > freexl_get_info Note that my fyi-helper is not working yet, but here is the current = output if I feed it freexl.h ;; ;; auto-generated by ffi-help.scm ;; (define-module (freexl) #:use-module (ffi-help) #:use-module ((system foreign) #:prefix ffi:) #:use-module ((bytestructures guile) #:prefix bs:) ) (define bs:struct bs:bs:struct) (define lib-link (dynamic-link #f)) (define (lib-func name) (dynamic-func name lib-link)) ;; (struct . "FreeXL_CellValue_str") ;; ... failed. ;; "FreeXL_CellValue" ;; typedef struct FreeXL_CellValue_str FreeXL_CellValue; (define-std-pointer-wrapper FreeXL_CellValue*) ;; "freexl_version" ;; extern const char *freexl_version(void); (define freexl_version (let ((f (ffi:pointer->procedure '* (lib-func "freexl_version") (list)))) (lambda () (let () (identity (f)))))) (export freexl_version) ;; "freexl_open" ;; extern int freexl_open(const char *path, const void **xls_handle); (define freexl_open (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_open") (list '* '*)))) (lambda (path xls_handle) (let ((~path (identity path)) (~xls_handle (identity xls_handle))) (f ~path ~xls_handle))))) (export freexl_open) ;; "freexl_open_info" ;; extern int freexl_open_info(const char *path, const void = **xls_handle); (define freexl_open_info (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_open_info") (list '* '*)))) (lambda (path xls_handle) (let ((~path (identity path)) (~xls_handle (identity xls_handle))) (f ~path ~xls_handle))))) (export freexl_open_info) ;; "freexl_close" ;; extern int freexl_close(const void *xls_handle); (define freexl_close (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_close") (list '*)))) (lambda (xls_handle) (let ((~xls_handle (identity xls_handle))) (f ~xls_handle))))) (export freexl_close) ;; "freexl_get_info" ;; extern int freexl_get_info(const void *xls_handle, unsigned short = what,=20 ;; unsigned int *info); (define freexl_get_info (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_info") (list '* ffi:unsigned-short '*)))) (lambda (xls_handle what info) (let ((~xls_handle (identity xls_handle)) (~info (identity info))) (f ~xls_handle what ~info))))) (export freexl_get_info) ;; "freexl_get_worksheet_name" ;; extern int freexl_get_worksheet_name(const void *xls_handle, unsigned = short ;; sheet_index, const char **string); (define freexl_get_worksheet_name (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_worksheet_name") (list '* ffi:unsigned-short '*)))) (lambda (xls_handle sheet_index string) (let ((~xls_handle (identity xls_handle)) (~string (identity string))) (f ~xls_handle sheet_index ~string))))) (export freexl_get_worksheet_name) ;; "freexl_select_active_worksheet" ;; extern int freexl_select_active_worksheet(const void *xls_handle,=20 ;; unsigned short sheet_index); (define freexl_select_active_worksheet (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_select_active_worksheet") (list '* ffi:unsigned-short)))) (lambda (xls_handle sheet_index) (let ((~xls_handle (identity xls_handle))) (f ~xls_handle sheet_index))))) (export freexl_select_active_worksheet) ;; "freexl_get_active_worksheet" ;; extern int freexl_get_active_worksheet(const void *xls_handle,=20 ;; unsigned short *sheet_index); (define freexl_get_active_worksheet (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_active_worksheet") (list '* '*)))) (lambda (xls_handle sheet_index) (let ((~xls_handle (identity xls_handle)) (~sheet_index (identity sheet_index))) (f ~xls_handle ~sheet_index))))) (export freexl_get_active_worksheet) ;; "freexl_worksheet_dimensions" ;; extern int freexl_worksheet_dimensions(const void *xls_handle, = unsigned int ;; *rows, unsigned short *columns); (define freexl_worksheet_dimensions (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_worksheet_dimensions") (list '* '* '*)))) (lambda (xls_handle rows columns) (let ((~xls_handle (identity xls_handle)) (~rows (identity rows)) (~columns (identity columns))) (f ~xls_handle ~rows ~columns))))) (export freexl_worksheet_dimensions) ;; "freexl_get_SST_string" ;; extern int freexl_get_SST_string(const void *xls_handle, unsigned = short=20 ;; string_index, const char **string); (define freexl_get_SST_string (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_SST_string") (list '* ffi:unsigned-short '*)))) (lambda (xls_handle string_index string) (let ((~xls_handle (identity xls_handle)) (~string (identity string))) (f ~xls_handle string_index ~string))))) (export freexl_get_SST_string) ;; "freexl_get_FAT_entry" ;; extern int freexl_get_FAT_entry(const void *xls_handle, unsigned int=20= ;; sector_index, unsigned int *next_sector_index); (define freexl_get_FAT_entry (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_FAT_entry") (list '* ffi:unsigned-int '*)))) (lambda (xls_handle sector_index next_sector_index) (let ((~xls_handle (identity xls_handle)) (~next_sector_index (identity next_sector_index))) (f ~xls_handle sector_index ~next_sector_index))))) (export freexl_get_FAT_entry) ;; "freexl_get_cell_value" ;; extern int freexl_get_cell_value(const void *xls_handle, unsigned int = row,=20 ;; unsigned short column, FreeXL_CellValue *value); (define freexl_get_cell_value (let ((f (ffi:pointer->procedure ffi:int (lib-func "freexl_get_cell_value") (list '* ffi:unsigned-int ffi:unsigned-short '*)))) (lambda (xls_handle row column value) (let ((~xls_handle (identity xls_handle)) (~value (unwrap-FreeXL_CellValue* value))) (f ~xls_handle row column ~value))))) (export freexl_get_cell_value) ;; --- last line ---