all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Paul Eggert <eggert@cs.ucla.edu>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Dmitry Antipov <dmantipov@yandex.ru>, 12215@debbugs.gnu.org
Subject: bug#12215: CSET is unnecessarily confusing
Date: Wed, 22 Aug 2012 09:35:24 -0700	[thread overview]
Message-ID: <50350A4C.5050103@cs.ucla.edu> (raw)
In-Reply-To: <jwvk3wrxdqp.fsf-monnier+emacs@gnu.org>

On 08/22/2012 06:27 AM, Stefan Monnier wrote:
>> That does avoid the ambiguity but it's pretty weird.
> Less weird than CSET (XCHAR_TABLE (char_table), parent, parent),
> and avoids the duplication of code we have with set_char_table_foobar.

True in both cases.  I suppose the notation could grow on one.

A few other thoughts.  First, why would we need multiple setter
macros (CSET, BSET, etc.)?  Why can't we have just one macro?
That is, why does CSET (P, .FIELD, VAL) care what P's type is?
Surely one generic macro will do.

Second, why does the setter need the pointer to the start of
the object, as well as a pointer to the field that's changing?
Doesn't the latter suffice in a copying collector?  That is,
why can't we just turn this into something like:

   fset (&XCHAR_TABLE (char_table)->parent, parent);

?  That's shorter and simpler and avoids the need for a macro.

Third, I agree with Stefan that it'd be reasonable to put all
this setter stuff into a branch, and I'll volunteer to do
that (i.e., change back to plain assignments in the trunk,
and create a new branch called "gc" or whatever).  But I recall
that Dmitry had serious qualms about that so I would like to
hear his opinion.





  reply	other threads:[~2012-08-22 16:35 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-08-17  0:04 bug#12215: CSET is unnecessarily confusing Paul Eggert
2012-08-17  4:12 ` Dmitry Antipov
2012-08-21 16:55 ` Stefan Monnier
2012-08-22  3:25   ` Paul Eggert
2012-08-22 13:27     ` Stefan Monnier
2012-08-22 16:35       ` Paul Eggert [this message]
2012-08-22 16:50         ` Dmitry Antipov
2012-08-23  7:02           ` Paul Eggert
2012-08-23 12:26         ` Stefan Monnier
2012-08-23 14:40           ` Paul Eggert
2012-08-24  3:46           ` Chong Yidong
2012-08-24  3:57             ` Paul Eggert
2012-08-24  4:26               ` Dmitry Antipov
2012-08-24 15:10             ` Stefan Monnier
2012-08-24 17:19               ` Paul Eggert
2012-08-24 17:27                 ` Tom Tromey
2012-08-24 18:11                   ` Paul Eggert
2012-08-24 21:12                     ` Stefan Monnier
2012-08-25  0:17                       ` Paul Eggert
2012-08-25  1:58                         ` Stefan Monnier
2012-08-26  5:05                           ` Paul Eggert
2012-08-21 17:55 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50350A4C.5050103@cs.ucla.edu \
    --to=eggert@cs.ucla.edu \
    --cc=12215@debbugs.gnu.org \
    --cc=dmantipov@yandex.ru \
    --cc=monnier@iro.umontreal.ca \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.