static void
print_opaque (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
{
- CONST Lisp_Opaque *p = XOPAQUE (obj);
+ const Lisp_Opaque *p = XOPAQUE (obj);
char buf[200];
sprintf (buf, "#<INTERNAL OBJECT (XEmacs bug?) (opaque, size=%lu) 0x%lx>",
write_c_string (buf, printcharfun);
}
+inline static size_t
+aligned_sizeof_opaque (size_t opaque_size)
+{
+ return ALIGN_SIZE (offsetof (Lisp_Opaque, data) + opaque_size,
+ ALIGNOF (max_align_t));
+}
+
static size_t
-sizeof_opaque (CONST void *header)
+sizeof_opaque (const void *header)
{
- CONST Lisp_Opaque *p = (CONST Lisp_Opaque *) header;
- return offsetof (Lisp_Opaque, data) + p->size;
+ return aligned_sizeof_opaque (((const Lisp_Opaque *) header)->size);
}
/* Return an opaque object of size SIZE.
If DATA is OPAQUE_UNINIT, the object's data is uninitialized.
Else the object's data is initialized by copying from DATA. */
Lisp_Object
-make_opaque (size_t size, CONST void *data)
+make_opaque (const void *data, size_t size)
{
Lisp_Opaque *p = (Lisp_Opaque *)
- alloc_lcrecord (offsetof (Lisp_Opaque, data) + size, &lrecord_opaque);
+ alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque);
p->size = size;
if (data == OPAQUE_CLEAR)
static void
print_opaque_ptr (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
{
- CONST Lisp_Opaque_Ptr *p = XOPAQUE_PTR (obj);
+ const Lisp_Opaque_Ptr *p = XOPAQUE_PTR (obj);
char buf[200];
- sprintf (buf, "#<INTERNAL OBJECT (XEmacs bug?) (opaque_ptr, adr=0x%lx) 0x%lx>",
+ sprintf (buf, "#<INTERNAL OBJECT (XEmacs bug?) (opaque-ptr, adr=0x%lx) 0x%lx>",
(long)(p->ptr), (unsigned long) p);
write_c_string (buf, printcharfun);
}
return (unsigned long) XOPAQUE_PTR (obj)->ptr;
}
-DEFINE_LRECORD_IMPLEMENTATION ("opaque_ptr", opaque_ptr,
+DEFINE_LRECORD_IMPLEMENTATION ("opaque-ptr", opaque_ptr,
0, print_opaque_ptr, 0,
equal_opaque_ptr, hash_opaque_ptr, 0,
Lisp_Opaque_Ptr);
void
init_opaque_once_early (void)
{
+ INIT_LRECORD_IMPLEMENTATION (opaque);
+ INIT_LRECORD_IMPLEMENTATION (opaque_ptr);
+
reinit_opaque_once_early ();
}