/* 1 if the object is readonly from lisp */
unsigned int lisp_readonly :1;
-
-#ifdef UTF2000
- /* The `older field is a flag that indicates whether this lcrecord
- is on a "older storage". */
- unsigned int older :1;
-#endif
};
struct lrecord_implementation;
int lrecord_type_index (const struct lrecord_implementation *implementation);
-#ifdef UTF2000
-#define set_lheader_implementation(header,imp) do { \
- struct lrecord_header* SLI_header = (header); \
- SLI_header->type = (imp)->lrecord_type_index; \
- SLI_header->mark = 0; \
- SLI_header->older = 0; \
- SLI_header->c_readonly = 0; \
- SLI_header->lisp_readonly = 0; \
-} while (0)
-#define set_lheader_older_implementation(header,imp) do { \
- struct lrecord_header* SLI_header = (header); \
- SLI_header->type = (imp)->lrecord_type_index; \
- SLI_header->mark = 0; \
- SLI_header->older = 1; \
- SLI_header->c_readonly = 0; \
- SLI_header->lisp_readonly = 0; \
-} while (0)
-#else
#define set_lheader_implementation(header,imp) do { \
struct lrecord_header* SLI_header = (header); \
SLI_header->type = (imp)->lrecord_type_index; \
SLI_header->c_readonly = 0; \
SLI_header->lisp_readonly = 0; \
} while (0)
-#endif
struct lcrecord_header
{
lrecord_type_coding_system,
lrecord_type_char_table,
lrecord_type_char_table_entry,
- lrecord_type_char_id_table,
lrecord_type_byte_table,
lrecord_type_uint16_byte_table,
lrecord_type_uint8_byte_table,
lrecord_type_pgresult,
lrecord_type_devmode,
lrecord_type_mswindows_dialog_id,
+ lrecord_type_case_table,
+ lrecord_type_free, /* only used for "free" lrecords */
+ lrecord_type_undefined, /* only used for debugging */
lrecord_type_last_built_in_type /* must be last */
};
#define MARK_RECORD_HEADER(lheader) ((void) ((lheader)->mark = 1))
#define UNMARK_RECORD_HEADER(lheader) ((void) ((lheader)->mark = 0))
-#define OLDER_RECORD_P(obj) (XRECORD_LHEADER (obj)->older)
-#define OLDER_RECORD_HEADER_P(lheader) ((lheader)->older)
-
-
#define C_READONLY_RECORD_HEADER_P(lheader) ((lheader)->c_readonly)
#define LISP_READONLY_RECORD_HEADER_P(lheader) ((lheader)->lisp_readonly)
#define SET_C_READONLY_RECORD_HEADER(lheader) do { \
An array of Lisp objects or pointers to lrecords.
The third element is the count.
- XD_LO_RESET_NIL
- Lisp objects which will be reset to Qnil when dumping. Useful for cleaning
- up caches.
-
XD_LO_LINK
Link in a linked list of objects of the same type.
enum lrecord_description_type {
XD_LISP_OBJECT_ARRAY,
XD_LISP_OBJECT,
- XD_LO_RESET_NIL,
XD_LO_LINK,
XD_OPAQUE_PTR,
XD_STRUCT_PTR,
#define alloc_lcrecord_type(type, lrecord_implementation) \
((type *) alloc_lcrecord (sizeof (type), lrecord_implementation))
-#ifdef UTF2000
-void *
-alloc_older_lcrecord (size_t size, const struct lrecord_implementation *);
-
-#define alloc_older_lcrecord_type(type, lrecord_implementation) \
- ((type *) alloc_older_lcrecord (sizeof (type), lrecord_implementation))
-#endif
-
/* Copy the data from one lcrecord structure into another, but don't
overwrite the header information. */