is not hard but just requires moving that stuff out of that file. */
static Lisp_Object
-mark_range_table (Lisp_Object obj, void (*markobj) (Lisp_Object))
+mark_range_table (Lisp_Object obj)
{
struct Lisp_Range_Table *rt = XRANGE_TABLE (obj);
int i;
for (i = 0; i < Dynarr_length (rt->entries); i++)
- (markobj) (Dynarr_at (rt->entries, i).val);
+ mark_object (Dynarr_at (rt->entries, i).val);
return Qnil;
}
return hash;
}
+static const struct lrecord_description rte_description_1[] = {
+ { XD_LISP_OBJECT, offsetof(range_table_entry, val), 1 },
+ { XD_END }
+};
+
+static const struct struct_description rte_description = {
+ sizeof(range_table_entry),
+ rte_description_1
+};
+
+static const struct lrecord_description rted_description_1[] = {
+ XD_DYNARR_DESC(range_table_entry_dynarr, &rte_description),
+ { XD_END }
+};
+
+static const struct struct_description rted_description = {
+ sizeof(range_table_entry_dynarr),
+ rted_description_1
+};
+
+static const struct lrecord_description range_table_description[] = {
+ { XD_STRUCT_PTR, offsetof(struct Lisp_Range_Table, entries), 1, &rted_description },
+ { XD_END }
+};
+
DEFINE_LRECORD_IMPLEMENTATION ("range-table", range_table,
mark_range_table, print_range_table, 0,
range_table_equal, range_table_hash,
+ range_table_description,
struct Lisp_Range_Table);
\f
/************************************************************************/
{
Lisp_Object obj;
struct Lisp_Range_Table *rt = alloc_lcrecord_type (struct Lisp_Range_Table,
- lrecord_range_table);
+ &lrecord_range_table);
rt->entries = Dynarr_new (range_table_entry);
XSETRANGE_TABLE (obj, rt);
return obj;
CHECK_RANGE_TABLE (old_table);
rt = XRANGE_TABLE (old_table);
- rtnew = alloc_lcrecord_type (struct Lisp_Range_Table, lrecord_range_table);
+ rtnew = alloc_lcrecord_type (struct Lisp_Range_Table, &lrecord_range_table);
rtnew->entries = Dynarr_new (range_table_entry);
Dynarr_add_many (rtnew->entries, Dynarr_atp (rt->entries, 0),
(pos, table, default_))
{
struct Lisp_Range_Table *rt;
- EMACS_INT po;
CHECK_RANGE_TABLE (table);
rt = XRANGE_TABLE (table);
CHECK_INT_COERCE_CHAR (pos);
- po = XINT (pos);
- return get_range_table (po, Dynarr_length (rt->entries),
+ return get_range_table (XINT (pos), Dynarr_length (rt->entries),
Dynarr_atp (rt->entries, 0), default_);
}