www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2021/07/13/13:13:47

X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f
X-Recipient: geda-user AT delorie DOT com
Date: Tue, 13 Jul 2021 19:12:46 +0200 (CEST)
From: Roland Lutz <rlutz AT hedmen DOT org>
To: "Peter Stuge (peter AT stuge DOT se) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com>
Subject: Re: [geda-user] xorn details, perhaps
In-Reply-To: <20210713161819.8055.qmail@stuge.se>
Message-ID: <alpine.DEB.2.21.2107131844270.16617@nimbus>
References: <A054EE4E-3819-42C7-9B56-B3644AD8AC39 AT noqsi DOT com> <YOf62YVLNddlPKR7 AT lepton> <20210712180102 DOT 5944 DOT qmail AT stuge DOT se> <CAM2RGhSPHcRRGuAHEaaD1o325e65W9NDBBJ6TLqBJo6zmw5-PQ AT mail DOT gmail DOT com> <20210712205217 DOT 13208 DOT qmail AT stuge DOT se> <4B51DA49-4F6E-41C7-9E39-32DEE10C1586 AT noqsi DOT com>
<20210713161819 DOT 8055 DOT qmail AT stuge DOT se>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Reply-To: geda-user AT delorie DOT com
Errors-To: nobody AT delorie DOT com
X-Mailing-List: geda-user AT delorie DOT com
X-Unsubscribes-To: listserv AT delorie DOT com

On Tue, 13 Jul 2021, Peter Stuge (peter AT stuge DOT se) [via 
geda-user AT delorie DOT com] wrote:
> Roland, please correct me if this is inaccurate.
>
> I understand xorn to mean the C++, C and Python code that works with
> instances of the expanded data model which covers all geda-gaf can do.

The stress is important: the data model covers that which all of geda-gaf 
can work with (in contrast to: all that geda-gaf can work with).

Consider you are writing a script that generates a symbol for a given 
subschematic.  This script would have to create box, text, and pin 
objects, add them to a symbol file, and then either write the symbol file 
to disk or pass it on to gschem or gnetlist.  If the data structure for a 
pin object contained fields specific to UI or netlisting concepts, the 
code would have to have knowledge of both gschem and gnetlist in order to 
populate these fields correctly.  But since the data model only contains 
fields that any part of gEDA/gaf knows how to work with--like positions 
and text values--any part can work with these objects without having to 
bother with others' concepts.

> The C++ code is libxornstorage, which implements objects, attributes,
> object revisions, selections along with common operations.

Yes.  It ensures these are always in a sane state, so bugs in one part of 
gEDA/gaf won't cause unrelated problems in another part.  Note that while 
libxornstorage is implemented in C++, it has a plain C API.

> The C code bridges libxornstorage and Guile(!) to CPython.

Exactly.

> The Python code is the gnetlist, gaf and xorn commands and all the
> gnetlist backends, one of which (gnet_guile) uses the C bridge to Guile
> to run an existing backend written in Scheme.

Yes, but the "gaf" command is not part of that list.

> I understand that Roland has put significant effort into ensuring
> that this last feature is reliably backwards compatible. I overlooked
> the feature previously in this thread - sorry about that. :\

I did so.  Not just existing Guile backends work with gnetlist, also a 
significant portion of custom Guile code is supported.  (I'm curious if 
anyone actually uses that feature, though.)

Roland

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019