[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: User-defined record types
From: |
Lars Brinkhoff |
Subject: |
Re: User-defined record types |
Date: |
Tue, 14 Mar 2017 14:25:50 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) |
Stefan Monnier wrote:
>> diff --git a/src/data.c b/src/data.c
>> index ae8dd97..eceb752 100644
>> --- a/src/data.c
>> +++ b/src/data.c
>> @@ -267,6 +267,7 @@ static void swap_in_symval_forwarding (struct
>> Lisp_Symbol *,
>> case PVEC_MUTEX: return Qmutex;
>> case PVEC_CONDVAR: return Qcondition_variable;
>> case PVEC_TERMINAL: return Qterminal;
>> + case PVEC_RECORD: return AREF (object, 0);
>> /* "Impossible" cases. */
>> case PVEC_XWIDGET:
>> case PVEC_OTHER:
>
> `type-of` is expected to return a symbol. So the above code implies
> that `record` objects should have a symbol their slot 0 and that this
> symbol should be the record's type name.
Right. Fmake_record does check that slot 0 is initialized to a symbol.
> Currently EIEIO and `cl-defstruct` indeed puts a symbol in slot 0 but
> this symbol is not exactly the struct type, so returning AREF (object,
> 0) wouldn't return quite the right value.
I don't understand everything about cl-defstruct, and even less about
Emacs flavor of generic functions or EIEIO. I have a patch which
demostrates how to make cl-defstruct create record instances if you
explicitly ask for it. It does put the type name in slot 0.
If you pass (:named foo) to cl-defstruct, foo will be put in list or
vector slot 0, so I suppose that should work for records too.
If you don't use the :named option, it seems there will be no type
information in the instances.
- Re: Elisp printer, (continued)
- Re: Elisp printer, Tom Tromey, 2017/03/07
- Re: Elisp printer, Stefan Monnier, 2017/03/07
- Re: Elisp printer, Tom Tromey, 2017/03/08
- Re: Elisp printer, Stefan Monnier, 2017/03/08
- Re: Elisp printer, Lars Brinkhoff, 2017/03/08
- Re: Elisp printer, Stefan Monnier, 2017/03/08
- Re: Elisp printer, Lars Brinkhoff, 2017/03/09
- User-defined record types, Lars Brinkhoff, 2017/03/14
- Re: User-defined record types, Lars Brinkhoff, 2017/03/14
- Message not available
- Message not available
- Re: User-defined record types,
Lars Brinkhoff <=
- Re: User-defined record types, Lars Brinkhoff, 2017/03/14
- Re: User-defined record types, Stefan Monnier, 2017/03/14
- Re: User-defined record types, Lars Brinkhoff, 2017/03/14
- Re: User-defined record types, Stefan Monnier, 2017/03/15
- Re: User-defined record types, Lars Brinkhoff, 2017/03/15
- Re: User-defined record types, Stefan Monnier, 2017/03/15
- Re: User-defined record types, Lars Brinkhoff, 2017/03/15
- Re: User-defined record types, Stefan Monnier, 2017/03/15
- Re: User-defined record types, Lars Brinkhoff, 2017/03/15
- Re: User-defined record types, Stefan Monnier, 2017/03/15