Mercurial > hg > xemacs-beta
comparison src/device.c @ 5140:e5380fdaf8f1
merge
| author | Ben Wing <ben@xemacs.org> |
|---|---|
| date | Sat, 13 Mar 2010 05:38:34 -0600 |
| parents | a9c41067dd88 |
| children | f965e31a35f0 |
comparison
equal
deleted
inserted
replaced
| 5139:a48ef26d87ee | 5140:e5380fdaf8f1 |
|---|---|
| 1 /* Generic device functions. | 1 /* Generic device functions. |
| 2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. | 2 Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. |
| 3 Copyright (C) 1994, 1995 Free Software Foundation, Inc. | 3 Copyright (C) 1994, 1995 Free Software Foundation, Inc. |
| 4 Copyright (C) 1995, 1996, 2002 Ben Wing. | 4 Copyright (C) 1995, 1996, 2002, 2010 Ben Wing. |
| 5 | 5 |
| 6 This file is part of XEmacs. | 6 This file is part of XEmacs. |
| 7 | 7 |
| 8 XEmacs is free software; you can redistribute it and/or modify it | 8 XEmacs is free software; you can redistribute it and/or modify it |
| 9 under the terms of the GNU General Public License as published by the | 9 under the terms of the GNU General Public License as published by the |
| 167 if (DEVICE_LIVE_P (d) && !NILP (DEVICE_CONNECTION (d))) | 167 if (DEVICE_LIVE_P (d) && !NILP (DEVICE_CONNECTION (d))) |
| 168 write_fmt_string_lisp (printcharfun, " on %S", 1, DEVICE_CONNECTION (d)); | 168 write_fmt_string_lisp (printcharfun, " on %S", 1, DEVICE_CONNECTION (d)); |
| 169 write_fmt_string (printcharfun, " 0x%x>", d->header.uid); | 169 write_fmt_string (printcharfun, " 0x%x>", d->header.uid); |
| 170 } | 170 } |
| 171 | 171 |
| 172 DEFINE_LRECORD_IMPLEMENTATION ("device", device, | 172 DEFINE_NODUMP_LISP_OBJECT ("device", device, |
| 173 0, /*dumpable-flag*/ | 173 mark_device, print_device, 0, 0, 0, |
| 174 mark_device, print_device, 0, 0, 0, | 174 device_description, |
| 175 device_description, | 175 struct device); |
| 176 struct device); | |
| 177 | 176 |
| 178 int | 177 int |
| 179 valid_device_class_p (Lisp_Object class_) | 178 valid_device_class_p (Lisp_Object class_) |
| 180 { | 179 { |
| 181 return !NILP (memq_no_quit (class_, Vdevice_class_list)); | 180 return !NILP (memq_no_quit (class_, Vdevice_class_list)); |
| 199 } | 198 } |
| 200 | 199 |
| 201 static void | 200 static void |
| 202 nuke_all_device_slots (struct device *d, Lisp_Object zap) | 201 nuke_all_device_slots (struct device *d, Lisp_Object zap) |
| 203 { | 202 { |
| 204 ZERO_LCRECORD (d); | 203 zero_nonsized_lisp_object (wrap_device (d)); |
| 205 | 204 |
| 206 #define MARKED_SLOT(x) d->x = zap; | 205 #define MARKED_SLOT(x) d->x = zap; |
| 207 #include "devslots.h" | 206 #include "devslots.h" |
| 208 } | 207 } |
| 209 | 208 |
| 210 static struct device * | 209 static struct device * |
| 211 allocate_device (Lisp_Object console) | 210 allocate_device (Lisp_Object console) |
| 212 { | 211 { |
| 213 Lisp_Object device; | 212 Lisp_Object obj = ALLOC_NORMAL_LISP_OBJECT (device); |
| 214 struct device *d = ALLOC_LCRECORD_TYPE (struct device, &lrecord_device); | 213 struct device *d = XDEVICE (obj); |
| 215 struct gcpro gcpro1; | 214 struct gcpro gcpro1; |
| 216 | 215 |
| 217 device = wrap_device (d); | 216 GCPRO1 (obj); |
| 218 GCPRO1 (device); | |
| 219 | 217 |
| 220 nuke_all_device_slots (d, Qnil); | 218 nuke_all_device_slots (d, Qnil); |
| 221 | 219 |
| 222 d->console = console; | 220 d->console = console; |
| 223 d->infd = d->outfd = -1; | 221 d->infd = d->outfd = -1; |
| 1396 /************************************************************************/ | 1394 /************************************************************************/ |
| 1397 | 1395 |
| 1398 void | 1396 void |
| 1399 syms_of_device (void) | 1397 syms_of_device (void) |
| 1400 { | 1398 { |
| 1401 INIT_LRECORD_IMPLEMENTATION (device); | 1399 INIT_LISP_OBJECT (device); |
| 1402 | 1400 |
| 1403 DEFSUBR (Fvalid_device_class_p); | 1401 DEFSUBR (Fvalid_device_class_p); |
| 1404 DEFSUBR (Fdevice_class_list); | 1402 DEFSUBR (Fdevice_class_list); |
| 1405 | 1403 |
| 1406 DEFSUBR (Fdfw_device); | 1404 DEFSUBR (Fdfw_device); |
