delorie.com/archives/browse.cgi | search |
X-Authentication-Warning: | delorie.com: mail set sender to geda-user-bounces using -f |
X-Recipient: | geda-user AT delorie DOT com |
X-Original-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=gmail.com; s=20120113; | |
h=date:from:to:subject:message-id:mail-followup-to:mime-version | |
:content-disposition:user-agent; | |
bh=/nDgd2lR//ss/1PJepaarIXkzZbNl9JwrlIWQBs0APM=; | |
b=pvGYXc8ooL+p2qm9D0OGNJCUBGhhJYhkPrap4bAT9zweN/6qcEb9IOYjCJIX2lg6Vl | |
rhLLC3cfsdphWvp9DkZdY8TNKuAW9jiuoGW957bQiYgAVzfF4HhiK8kVBfGf40bFC3g+ | |
JIdwezoPeWAzDqJr9w5wxFI9OKnOcg3u1LGJkZfNmDntOPlwGgrRkPdlHDSK9vwiLU8S | |
Nmfs8kZ7DKgcZA7uzk6UUo7tCl6Ks/rPdKR3Ps5e3AzNmSqHJJBCEbwSC3Qb+n/QPSho | |
8wfAEpT1JjV92xujVVSASN/qz6kCVwrYsYtqNajSFlDB0Wqcn5Cu+dM1HbnGCb9ScPxi | |
/Ybg== | |
X-Google-DKIM-Signature: | v=1; a=rsa-sha256; c=relaxed/relaxed; |
d=1e100.net; s=20130820; | |
h=x-gm-message-state:date:from:to:subject:message-id:mail-followup-to | |
:mime-version:content-disposition:user-agent; | |
bh=/nDgd2lR//ss/1PJepaarIXkzZbNl9JwrlIWQBs0APM=; | |
b=Zl2rQK+FZf7906CducFPolAmCK277BV7xFoj+e84DwqHsvwRszt33AtjdPLthCG3xo | |
BfDs1B4t4xn09f2wny5XARBlZ9CVF9Zkci5MPCtsiZJT5c1Y4I3W2RtXuK/dQn/bL76g | |
YWmQt9HBc6e0YgmV/45hRTEzLg3ms2urUzvBKZpeW0WXGNGSNLfhVkpR6xZ1rqEbJMUP | |
qMpX5ZJfbbyNb1yyHSMIxo4mfuaDHhhXB4AE7oGvSDXqGVMeh0jHyo7QtK2xAjyNYdDv | |
BFX+7rkWZEFO4xSJMPmdu2sHl1WjXrKgP+jQ09iIUsx2+ULpKBrp7L/2Ep1xnavGVqoc | |
fctw== | |
X-Gm-Message-State: | AEkoouuVON6p61rSdlM8oseaZdokI485m81Rdx3Dh7UbLlY8kNGJ5HBmORwJfDlM7wyL+A== |
X-Received: | by 10.25.169.213 with SMTP id s204mr5586732lfe.57.1469327779259; |
Sat, 23 Jul 2016 19:36:19 -0700 (PDT) | |
Date: | Sun, 24 Jul 2016 05:36:16 +0300 |
From: | "Vladimir Zhbanov (vzhbanov AT gmail DOT com) [via geda-user AT delorie DOT com]" <geda-user AT delorie DOT com> |
To: | geda-user AT delorie DOT com |
Subject: | [geda-user] gEDA and xml/sxml |
Message-ID: | <20160724023616.GJ17595@localhost.localdomain> |
Mail-Followup-To: | geda-user AT delorie DOT com |
MIME-Version: | 1.0 |
User-Agent: | Mutt/1.5.23 (2014-03-12) |
Reply-To: | geda-user AT delorie DOT com |
Some time ago I was reading about sxml and decided to try to build it some day. Sxml is scheme representation of XML which is more simple. Say, you could represent schematic as: (schematic name (@ params) (page1) (page2) ... ) And every page as: (page page-name (@ params) (symbols (symbol1) (symbol2) ...) objects) where objects are just primitives and symbols we usually have in our schematics. Roland's effort caused me to try to work on it and I decided, if I do something useful during my week at work, I'll continue to work on it. It occured to be not so difficult as I expected. About three hours was needed to write the page->sxml conversion procedure based on what we now have in libgeda, and about three days (including reading on XML, fighting against bugs in libpango, which seem to be uncurable, searching for workarounds, and fighting against bugs in guile itself, which seem to be fixed in later versions ;-)). I should admit, the bug with bytevectors in guile 2.0.11 has not allowed me to do the last step: to transform a bytevector written as sxml back to a picture. I've just commited the last piece of code where I attempted to win pictures, but it doesn't work with my sample picture, yielding an error with some strange message about wrong byte conversion. (I know the way to work-around it, but it is not important now.) Anyway, any help is appreciated. Now, you may see, that almost all schematic primitives (excluding pictures) are easily converted to and from sxml. For that, I used the simplest scheme procedure in the tree folding species `pre-post-order'. There exist much more powerful and slightly more complex alternatives like foldt and foldts and their variations we could use, too. Anyway, I have to learn more scheme and XML to do things better. The rough code is yet at [1]. If you look at it, you'll see the gui-something-procedure at the end which I used to check things working in Emacs Geiser, that is, in another thread, and it occured, some low-level C libraries are not thread-safe. So, basically, I used gdk-threeds-enter, then the function I need, and then gdk-threeds-leave to work-around the issue. So the result I have is both yes and no, but more yes than no :-) I've not read Roland's code and documentation yet, but am hoping we could join our efforts to make things better in gEDA. What do you think, dear users and developers? [1] https://github.com/vzh/geda-gaf/tree/sxml -- Vladimir
webmaster | delorie software privacy |
Copyright © 2019 by DJ Delorie | Updated Jul 2019 |