From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Matt Wette Newsgroups: gmane.lisp.guile.user Subject: Re: FFI questions Date: Fri, 15 May 2020 16:59:02 -0700 Message-ID: References: <6762c9b7-ad3d-3bf8-0b65-5d30bcb8ea38@gmail.com> <7454c9f4-4467-1302-0abe-a030da20a0c6@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="97307"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.7.0 To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Sat May 16 01:59:17 2020 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jZkEX-000PE5-AX for guile-user@m.gmane-mx.org; Sat, 16 May 2020 01:59:17 +0200 Original-Received: from localhost ([::1]:52468 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jZkEW-0003dH-04 for guile-user@m.gmane-mx.org; Fri, 15 May 2020 19:59:16 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33472) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZkEM-0003dA-OR for guile-user@gnu.org; Fri, 15 May 2020 19:59:06 -0400 Original-Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]:45152) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZkEL-0007UK-Lk for guile-user@gnu.org; Fri, 15 May 2020 19:59:06 -0400 Original-Received: by mail-pl1-x636.google.com with SMTP id u22so1542729plq.12 for ; Fri, 15 May 2020 16:59:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-transfer-encoding:content-language; bh=FVNAqMhuPrAocaH/T9jaofd+0kPkagaOwxA928C+A1c=; b=KsS34JXin+QdMatz8thlIaHzwFoUt5nsMrzAeJZd+sgqFaChNwo/2j1Hn5aiU0M6qv BEDAVrbDi/oGUqTK/sj4dybtQvQYoXfRArS5g1i0nrs+dDj+O3T8aCiyINSB5uYLv8Yr W4Z/5VaShH/tP+w4DraMDqQ9vrR51+IknTLAHFIL3a7fqG7q0oIVbW/FG+Z6SOgDVZ4G vFS2rkGeLogCDAYDTGvIXzn2PZZxC8D0M5lP00+S6NAzVooVYtHdkhdzWQH7YwqCfveM jY5n4gyrUJLwZeikXLlyQpiQLcBYHMWeYv7v/IpG+/RTys8Py7XvCrWaVOkkuGpGd+rL +Xrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-transfer-encoding :content-language; bh=FVNAqMhuPrAocaH/T9jaofd+0kPkagaOwxA928C+A1c=; b=CYfnInUCfxM7PQYtLC6mQEc1HryfzFD30WXIhtExpWhs9+JcrnOtUMlzzINohEhBJO D2KorfKnXrF+TLIpsRymHGEBKNGpb6bnI2Ig7m0Wb697oDY035HvURdcDSkz5oPCBEFG U5YiuHQwADo8qG6VACd7yzIEv/daqkSjI66jQXDwHCzck3OZFA0VGkuOvh0Q7IfTxsW2 J8bdY4iSFQcO1cyTVNjOJELhe551jFn5E0kozeqNK1MpL6ZjCTz+HP1qJqOHx+tE/ixe btcaV5flW2KY8UdtEkKYD3iXOucdoMX8mHoHVA0pz7Ll2p/8Ow1629+pCR44Nm7UhBGn Kcxw== X-Gm-Message-State: AOAM533fkkYtCre8T7Wxdg7sNbaU4iUjhzAdG6xwSla2nfILCQ2q632c 8HrCMvf9V3GZ+LnZFqO774bjnTtIf5k= X-Google-Smtp-Source: ABdhPJwdHPBXJqObRzu0hHuCFzlFr+jaW74S6X7SXB9ZbSU5yfvss3fuy8eXevS2KAqpq53/ZSkv/A== X-Received: by 2002:a17:90a:d56:: with SMTP id 22mr5704828pju.187.1589587143596; Fri, 15 May 2020 16:59:03 -0700 (PDT) Original-Received: from [192.168.2.183] (64-52-176-132.championbroadband.com. [64.52.176.132]) by smtp.gmail.com with ESMTPSA id n14sm2402937pjh.45.2020.05.15.16.59.02 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 15 May 2020 16:59:03 -0700 (PDT) In-Reply-To: <7454c9f4-4467-1302-0abe-a030da20a0c6@gmail.com> Content-Language: en-US Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=matt.wette@gmail.com; helo=mail-pl1-x636.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:16455 Archived-At: On 5/15/20 4:52 PM, Matt Wette wrote: > On 5/15/20 1:09 PM, Taylan Kammer wrote: >> >> The FFI Helper is by Matt Wette who also hangs around on this mailing >> list I believe. >> > > I think Taylan's suggestion on your first part is probably correct. > Bytestructures allows you to access and change structure members by name. > > Matt > And by the way, the FFI Helper has a "x11-xcb.ffi" file included. Here is the code generated for your procedure: (My converter says this returns int not void, btw.) ;; xcb_void_cookie_t xcb_change_window_attributes(xcb_connection_t *c, ;;     xcb_window_t window, uint32_t value_mask, const void *value_list); (define xcb_change_window_attributes   (let ((~xcb_change_window_attributes           (delay (fh-link-proc                    (list ffi:unsigned-int)                    "xcb_change_window_attributes"                    (list ffi-void* ffi:uint32 ffi:uint32 ffi-void*)                    ffi-x11-xcb-llibs))))     (lambda (c window value_mask value_list)       (let ((~c ((fht-unwrap xcb_connection_t*) c))             (~window (unwrap~fixed window))             (~value_mask (unwrap~fixed value_mask))             (~value_list (unwrap~pointer value_list)))         ((fht-wrap xcb_void_cookie_t)          ((force ~xcb_change_window_attributes)           ~c           ~window           ~value_mask           ~value_list))))))