www.delorie.com/archives/browse.cgi   search  
Mail Archives: geda-user/2015/09/11/17:41:42

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:references
:mime-version:content-type:content-disposition:in-reply-to
:user-agent;
bh=i8cYPKFXR0+TKCAbWiptP3uLhIqSmkcNfobbgA+LQkc=;
b=S/1j4FDXc6X4Mv2scGT9vABIGjP1cSlcAxmoTk5tKLEgwtBi6lHjBmlIQ4jxaekJf1
o5CX5UHTZEfk4wS6JDEnEWjxPc8oE/tJi34fcxmSKEmy3WgbNXjtgNxeRfMO7ms/AmjJ
0gpnkkEPhaXWsN+ZO4CI/izixgJEAcyWTrfkqtEgx/QEiBqfPIqGVynvQTFdyFnVItPD
fkcg1SPtOQGyNf3M20TA92sdn+7TADkSdyVlBcEqYN9VgvNKiSdkfRhScD6UouVvRrGb
4fJgLTPiWrKU+6O8+vZSRRW39LsQDRqthw3lLMssGltchFeLHxBkCcgIKUHqO8yXmBtJ
ODHQ==
X-Received: by 10.112.17.70 with SMTP id m6mr851504lbd.113.1442007683617;
Fri, 11 Sep 2015 14:41:23 -0700 (PDT)
Date: Sat, 12 Sep 2015 00:41:21 +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: Re: [geda-user] About reinventing the wheel, and how to avoid it
Message-ID: <20150911214120.GB7946@localhost.localdomain>
Mail-Followup-To: geda-user AT delorie DOT com
References: <alpine DOT DEB DOT 2 DOT 00 DOT 1509111150410 DOT 2482 AT lichen>
MIME-Version: 1.0
In-Reply-To: <alpine.DEB.2.00.1509111150410.2482@lichen>
User-Agent: Mutt/1.5.23 (2014-03-12)
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 Fri, Sep 11, 2015 at 04:06:36PM +0200, Roland Lutz wrote:
...
> Imagine the following SQL query:
> 
>     DELETE FROM objects WHERE radius = 0.;
> 
> Using Xorn as an example, you could either iterate over all objects, looking
> for circles and arcs wth a matching radius, and delete these objects:
> 
>     xorn_object_t *objects;
>     size_t count;
>     unsigned int i;
> 
>     xorn_get_objects(rev, &objects, &count);
> 
>     for (i = 0; i < count; i++) {
>         xorn_obtype_t type = xorn_get_object_type(rev, objects[i]);
> 
>         if (type == xornsch_obtype_circle &&
>             xornsch_get_circle_data(rev, objects[i])->radius == 0.)
>             xorn_delete_object(rev, objects[i]);
> 
>         if (type == xornsch_obtype_arc &&
>             xornsch_get_arc_data(rev, objects[i])->radius == 0.)
>             xorn_delete_object(rev, objects[i]);
>     }
> 
>     free(objects);

And that's an impenetrable code for the same in Guile:

  (use-modules (geda page))

  ; Checks if the OBJECT is a circle or an arc with zero radius
  (define (zero-radius-object? object)
    (or
      (and (circle? object) (= (circle-radius object) 0))
      (and (arc?    object) (= (arc-radius    object) 0))))

  (apply page-remove! (active-page)
         (filter
           zero-radius-object?
           (page-contents (active-page))))

Just about reinvention of the wheel. :-/

Cheers,
  Vladimir

- Raw text -


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