| www.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: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
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |