From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 14541 invoked by alias); 29 Jan 2017 07:04:04 -0000 Mailing-List: contact kawa-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: kawa-owner@sourceware.org Received: (qmail 14456 invoked by uid 89); 29 Jan 2017 07:03:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.5 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy=counterparts X-HELO: aibo.runbox.com Received: from aibo.runbox.com (HELO aibo.runbox.com) (91.220.196.211) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Sun, 29 Jan 2017 07:03:47 +0000 Received: from [10.9.9.212] (helo=mailfront12.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1cXjWa-0003B9-35; Sun, 29 Jan 2017 08:03:44 +0100 Received: from 70-36-239-8.dsl.dynamic.fusionbroadband.com ([70.36.239.8] helo=localhost.localdomain) by mailfront12.runbox.com with esmtpsa (uid:757155 ) (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.82) id 1cXjWY-0003Ve-9N; Sun, 29 Jan 2017 08:03:42 +0100 Subject: Re: Missing feature or just differences with Guile for define-public To: scprotz References: Cc: kawa@sourceware.org From: Per Bothner Message-ID: Date: Sun, 29 Jan 2017 07:04:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2017-q1/txt/msg00040.txt.bz2 On 01/28/2017 10:07 PM, scprotz wrote: > So my guess is, from a functional point of view, 'define-public' is > essentially like 'extern' in C (exposing the function to the C/Gnome) > calls? > > I have already reviewed the C/C++ code in Aisleriot and converting it > from C to Java has been very easy so far (since GTK/Glib have very > similar counterparts in Java). I'm just trying to figure out how I'd > make the functional equivalent of a 'define-public' in a Kawa program > so that my Java app can call it, or is everything automatically > exposed as part of the compiled class once compiled by Kawa (i.e. > there would be a class called "api.class" and it would have a function > called "setFeatures"? Again, my exposure to Kawa specifically is > limited at this time, so just looking for pointers. > > If all defines are exposed as class objects (methods), then just > changing define-public to define might be good enough Guile's define-public is like a combination of Kawa's define and export. But in Kawa export is the default - assuming there is no explicit export (or equivalently module-export). You can generally remove 'define-module', optionally replace it with 'module-name'. If you see a use-module, you can replace it with an 'import' or a 'require'. (This are basically the same - import is more flexible, and is R7RS-compatible, so is usually preferred.) Lots of information in https://www.gnu.org/software/kawa/Module-classes.html and https://www.gnu.org/software/kawa/Importing.html . > (since define-public seems to be a guile-specific thing to expose functions > to C). I don't believe that is current. My understanding it's more like 'public' in Java. It not only exposes functions to C, but more importantly it exposes them to other modules. -- --Per Bothner per@bothner.com http://per.bothner.com/