aboutsummaryrefslogtreecommitdiffstats
path: root/src/print.c
diff options
context:
space:
mode:
authorAurélien Aptel2015-11-16 00:42:14 +0100
committerTed Zlatanov2015-11-18 14:24:06 -0500
commitf69cd6bfa114ea02f3d10ddb2fe809a26eafb9a4 (patch)
tree05788868cfcc5fda30d37a83e18de6aab8b1735b /src/print.c
parent435cf35bcc28ab4220764dff7874f477310d9a48 (diff)
downloademacs-f69cd6bfa114ea02f3d10ddb2fe809a26eafb9a4.tar.gz
emacs-f69cd6bfa114ea02f3d10ddb2fe809a26eafb9a4.zip
Add new User Pointer (User_Ptr) type
* src/lisp.h: Add new Lisp_Misc_User_Ptr type. (XUSER_PTR): New User_Ptr accessor. * src/alloc.c (make_user_ptr): New function. (mark_object, sweep_misc): Handle Lisp_Misc_User_Ptr. * src/data.c (Ftype_of): Return 'user-ptr' for user pointer. (Fuser-ptrp): New user pointer type predicate function. (syms_of_data): New 'user-ptrp', 'user-ptr' symbol. New 'user-ptrp' subr. * src/print.c (print_object): Add printer for User_Ptr type.
Diffstat (limited to 'src/print.c')
-rw-r--r--src/print.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/print.c b/src/print.c
index 6f868ceff84..420e6f55b4c 100644
--- a/src/print.c
+++ b/src/print.c
@@ -1990,6 +1990,19 @@ print_object (Lisp_Object obj, Lisp_Object printcharfun, bool escapeflag)
1990 printchar ('>', printcharfun); 1990 printchar ('>', printcharfun);
1991 break; 1991 break;
1992 1992
1993#ifdef HAVE_MODULES
1994 case Lisp_Misc_User_Ptr:
1995 {
1996 print_c_string ("#<user-ptr ", printcharfun);
1997 int i = sprintf (buf, "ptr=%p finalizer=%p",
1998 XUSER_PTR (obj)->p,
1999 XUSER_PTR (obj)->finalizer);
2000 strout (buf, i, i, printcharfun);
2001 printchar ('>', printcharfun);
2002 break;
2003 }
2004#endif
2005
1993 case Lisp_Misc_Finalizer: 2006 case Lisp_Misc_Finalizer:
1994 print_c_string ("#<finalizer", printcharfun); 2007 print_c_string ("#<finalizer", printcharfun);
1995 if (NILP (XFINALIZER (obj)->function)) 2008 if (NILP (XFINALIZER (obj)->function))