Mercurial > hg > xemacs-beta
comparison src/objects.c @ 424:11054d720c21 r21-2-20
Import from CVS: tag r21-2-20
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:26:11 +0200 |
parents | 41dbb7a9d5f2 |
children |
comparison
equal
deleted
inserted
replaced
423:28d9c139be4c | 424:11054d720c21 |
---|---|
55 ****************************************************************************/ | 55 ****************************************************************************/ |
56 | 56 |
57 Lisp_Object Qcolor_instancep; | 57 Lisp_Object Qcolor_instancep; |
58 | 58 |
59 static Lisp_Object | 59 static Lisp_Object |
60 mark_color_instance (Lisp_Object obj, void (*markobj) (Lisp_Object)) | 60 mark_color_instance (Lisp_Object obj) |
61 { | 61 { |
62 struct Lisp_Color_Instance *c = XCOLOR_INSTANCE (obj); | 62 struct Lisp_Color_Instance *c = XCOLOR_INSTANCE (obj); |
63 markobj (c->name); | 63 mark_object (c->name); |
64 if (!NILP (c->device)) /* Vthe_null_color_instance */ | 64 if (!NILP (c->device)) /* Vthe_null_color_instance */ |
65 MAYBE_DEVMETH (XDEVICE (c->device), mark_color_instance, (c, markobj)); | 65 MAYBE_DEVMETH (XDEVICE (c->device), mark_color_instance, (c)); |
66 | 66 |
67 return c->device; | 67 return c->device; |
68 } | 68 } |
69 | 69 |
70 static void | 70 static void |
104 { | 104 { |
105 struct Lisp_Color_Instance *c1 = XCOLOR_INSTANCE (obj1); | 105 struct Lisp_Color_Instance *c1 = XCOLOR_INSTANCE (obj1); |
106 struct Lisp_Color_Instance *c2 = XCOLOR_INSTANCE (obj2); | 106 struct Lisp_Color_Instance *c2 = XCOLOR_INSTANCE (obj2); |
107 | 107 |
108 return (c1 == c2) || | 108 return (c1 == c2) || |
109 ((EQ (c1->device, c2->device)) && | 109 (EQ (c1->device, c2->device) && |
110 DEVICEP (c1->device) && | 110 DEVICEP (c1->device) && |
111 HAS_DEVMETH_P (XDEVICE (c1->device), color_instance_equal) && | 111 HAS_DEVMETH_P (XDEVICE (c1->device), color_instance_equal) && |
112 DEVMETH (XDEVICE (c1->device), color_instance_equal, (c1, c2, depth))); | 112 DEVMETH (XDEVICE (c1->device), color_instance_equal, (c1, c2, depth))); |
113 } | 113 } |
114 | 114 |
235 | 235 |
236 static Lisp_Object font_instance_truename_internal (Lisp_Object xfont, | 236 static Lisp_Object font_instance_truename_internal (Lisp_Object xfont, |
237 Error_behavior errb); | 237 Error_behavior errb); |
238 | 238 |
239 static Lisp_Object | 239 static Lisp_Object |
240 mark_font_instance (Lisp_Object obj, void (*markobj) (Lisp_Object)) | 240 mark_font_instance (Lisp_Object obj) |
241 { | 241 { |
242 struct Lisp_Font_Instance *f = XFONT_INSTANCE (obj); | 242 struct Lisp_Font_Instance *f = XFONT_INSTANCE (obj); |
243 | 243 |
244 markobj (f->name); | 244 mark_object (f->name); |
245 if (!NILP (f->device)) /* Vthe_null_font_instance */ | 245 if (!NILP (f->device)) /* Vthe_null_font_instance */ |
246 MAYBE_DEVMETH (XDEVICE (f->device), mark_font_instance, (f, markobj)); | 246 MAYBE_DEVMETH (XDEVICE (f->device), mark_font_instance, (f)); |
247 | 247 |
248 return f->device; | 248 return f->device; |
249 } | 249 } |
250 | 250 |
251 static void | 251 static void |
487 COLOR_SPECIFIER_FACE (color) = Qnil; | 487 COLOR_SPECIFIER_FACE (color) = Qnil; |
488 COLOR_SPECIFIER_FACE_PROPERTY (color) = Qnil; | 488 COLOR_SPECIFIER_FACE_PROPERTY (color) = Qnil; |
489 } | 489 } |
490 | 490 |
491 static void | 491 static void |
492 color_mark (Lisp_Object obj, void (*markobj) (Lisp_Object)) | 492 color_mark (Lisp_Object obj) |
493 { | 493 { |
494 struct Lisp_Specifier *color = XCOLOR_SPECIFIER (obj); | 494 struct Lisp_Specifier *color = XCOLOR_SPECIFIER (obj); |
495 | 495 |
496 markobj (COLOR_SPECIFIER_FACE (color)); | 496 mark_object (COLOR_SPECIFIER_FACE (color)); |
497 markobj (COLOR_SPECIFIER_FACE_PROPERTY (color)); | 497 mark_object (COLOR_SPECIFIER_FACE_PROPERTY (color)); |
498 } | 498 } |
499 | 499 |
500 /* No equal or hash methods; ignore the face the color is based off | 500 /* No equal or hash methods; ignore the face the color is based off |
501 of for `equal' */ | 501 of for `equal' */ |
502 | 502 |
665 FONT_SPECIFIER_FACE (font) = Qnil; | 665 FONT_SPECIFIER_FACE (font) = Qnil; |
666 FONT_SPECIFIER_FACE_PROPERTY (font) = Qnil; | 666 FONT_SPECIFIER_FACE_PROPERTY (font) = Qnil; |
667 } | 667 } |
668 | 668 |
669 static void | 669 static void |
670 font_mark (Lisp_Object obj, void (*markobj) (Lisp_Object)) | 670 font_mark (Lisp_Object obj) |
671 { | 671 { |
672 struct Lisp_Specifier *font = XFONT_SPECIFIER (obj); | 672 struct Lisp_Specifier *font = XFONT_SPECIFIER (obj); |
673 | 673 |
674 markobj (FONT_SPECIFIER_FACE (font)); | 674 mark_object (FONT_SPECIFIER_FACE (font)); |
675 markobj (FONT_SPECIFIER_FACE_PROPERTY (font)); | 675 mark_object (FONT_SPECIFIER_FACE_PROPERTY (font)); |
676 } | 676 } |
677 | 677 |
678 /* No equal or hash methods; ignore the face the font is based off | 678 /* No equal or hash methods; ignore the face the font is based off |
679 of for `equal' */ | 679 of for `equal' */ |
680 | 680 |
872 FACE_BOOLEAN_SPECIFIER_FACE (face_boolean) = Qnil; | 872 FACE_BOOLEAN_SPECIFIER_FACE (face_boolean) = Qnil; |
873 FACE_BOOLEAN_SPECIFIER_FACE_PROPERTY (face_boolean) = Qnil; | 873 FACE_BOOLEAN_SPECIFIER_FACE_PROPERTY (face_boolean) = Qnil; |
874 } | 874 } |
875 | 875 |
876 static void | 876 static void |
877 face_boolean_mark (Lisp_Object obj, void (*markobj) (Lisp_Object)) | 877 face_boolean_mark (Lisp_Object obj) |
878 { | 878 { |
879 struct Lisp_Specifier *face_boolean = XFACE_BOOLEAN_SPECIFIER (obj); | 879 struct Lisp_Specifier *face_boolean = XFACE_BOOLEAN_SPECIFIER (obj); |
880 | 880 |
881 markobj (FACE_BOOLEAN_SPECIFIER_FACE (face_boolean)); | 881 mark_object (FACE_BOOLEAN_SPECIFIER_FACE (face_boolean)); |
882 markobj (FACE_BOOLEAN_SPECIFIER_FACE_PROPERTY (face_boolean)); | 882 mark_object (FACE_BOOLEAN_SPECIFIER_FACE_PROPERTY (face_boolean)); |
883 } | 883 } |
884 | 884 |
885 /* No equal or hash methods; ignore the face the face-boolean is based off | 885 /* No equal or hash methods; ignore the face the face-boolean is based off |
886 of for `equal' */ | 886 of for `equal' */ |
887 | 887 |
1034 | 1034 |
1035 /* Qcolor, Qfont defined in general.c */ | 1035 /* Qcolor, Qfont defined in general.c */ |
1036 defsymbol (&Qface_boolean, "face-boolean"); | 1036 defsymbol (&Qface_boolean, "face-boolean"); |
1037 } | 1037 } |
1038 | 1038 |
1039 static const struct lrecord_description color_specifier_description[] = { | |
1040 { XD_LISP_OBJECT, specifier_data_offset + offsetof(struct color_specifier, face), 2 }, | |
1041 { XD_END } | |
1042 }; | |
1043 | |
1044 static const struct lrecord_description font_specifier_description[] = { | |
1045 { XD_LISP_OBJECT, specifier_data_offset + offsetof(struct font_specifier, face), 2 }, | |
1046 { XD_END } | |
1047 }; | |
1048 | |
1049 static const struct lrecord_description face_boolean_specifier_description[] = { | |
1050 { XD_LISP_OBJECT, specifier_data_offset + offsetof(struct face_boolean_specifier, face), 2 }, | |
1051 { XD_END } | |
1052 }; | |
1053 | |
1039 void | 1054 void |
1040 specifier_type_create_objects (void) | 1055 specifier_type_create_objects (void) |
1041 { | 1056 { |
1042 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (color, "color", "color-specifier-p"); | 1057 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (color, "color", "color-specifier-p"); |
1043 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (font, "font", "font-specifier-p"); | 1058 INITIALIZE_SPECIFIER_TYPE_WITH_DATA (font, "font", "font-specifier-p"); |
1068 SPECIFIER_HAS_METHOD (font, validate_matchspec); | 1083 SPECIFIER_HAS_METHOD (font, validate_matchspec); |
1069 #endif | 1084 #endif |
1070 } | 1085 } |
1071 | 1086 |
1072 void | 1087 void |
1073 vars_of_objects (void) | 1088 reinit_specifier_type_create_objects (void) |
1074 { | 1089 { |
1075 staticpro (&Vthe_null_color_instance); | 1090 REINITIALIZE_SPECIFIER_TYPE (color); |
1091 REINITIALIZE_SPECIFIER_TYPE (font); | |
1092 REINITIALIZE_SPECIFIER_TYPE (face_boolean); | |
1093 } | |
1094 | |
1095 void | |
1096 reinit_vars_of_objects (void) | |
1097 { | |
1098 staticpro_nodump (&Vthe_null_color_instance); | |
1076 { | 1099 { |
1077 struct Lisp_Color_Instance *c = | 1100 struct Lisp_Color_Instance *c = |
1078 alloc_lcrecord_type (struct Lisp_Color_Instance, &lrecord_color_instance); | 1101 alloc_lcrecord_type (struct Lisp_Color_Instance, &lrecord_color_instance); |
1079 c->name = Qnil; | 1102 c->name = Qnil; |
1080 c->device = Qnil; | 1103 c->device = Qnil; |
1081 c->data = 0; | 1104 c->data = 0; |
1082 | 1105 |
1083 XSETCOLOR_INSTANCE (Vthe_null_color_instance, c); | 1106 XSETCOLOR_INSTANCE (Vthe_null_color_instance, c); |
1084 } | 1107 } |
1085 | 1108 |
1086 staticpro (&Vthe_null_font_instance); | 1109 staticpro_nodump (&Vthe_null_font_instance); |
1087 { | 1110 { |
1088 struct Lisp_Font_Instance *f = | 1111 struct Lisp_Font_Instance *f = |
1089 alloc_lcrecord_type (struct Lisp_Font_Instance, &lrecord_font_instance); | 1112 alloc_lcrecord_type (struct Lisp_Font_Instance, &lrecord_font_instance); |
1090 f->name = Qnil; | 1113 f->name = Qnil; |
1091 f->device = Qnil; | 1114 f->device = Qnil; |
1097 f->proportional_p = 0; | 1120 f->proportional_p = 0; |
1098 | 1121 |
1099 XSETFONT_INSTANCE (Vthe_null_font_instance, f); | 1122 XSETFONT_INSTANCE (Vthe_null_font_instance, f); |
1100 } | 1123 } |
1101 } | 1124 } |
1125 | |
1126 void | |
1127 vars_of_objects (void) | |
1128 { | |
1129 reinit_vars_of_objects (); | |
1130 } |