/* [<][>][^][v][top][bottom][index][help] */
DEFINITIONS
This source file includes following definitions.
- call_fallback_proc
- moplib__25ensure_generic_function
- moplib__25make_next_method
- moplib__25method_code
- moplib__25start_class_redefinitionX
- moplib__25commit_class_redefinitionX
- moplib__25check_class_binding
- moplib__25replace_class_bindingX
- moplib__25add_direct_subclassX
- moplib__25delete_direct_subclassX
- moplib__25add_direct_methodX
- moplib__25delete_direct_methodX
- moplib__25transplant_instanceX
- moplib_class_of
- moplib_current_class_of
- moplib_is_aP
- moplib_slot_ref
- moplib_slot_setX
- moplib_slot_boundP
- moplib_slot_ref_using_accessor
- moplib_slot_bound_using_accessorP
- moplib_slot_set_using_accessorX
- moplib_slot_initialize_using_accessorX
- moplib_instance_slot_ref
- moplib_instance_slot_set
- moplib_touch_instanceX
- Scm_Init_moplib
1 /* Generated by genstub. Do not edit. */
2 #define LIBGAUCHE_BODY
3 #include <gauche.h>
4 #if defined(__CYGWIN__) || defined(__MINGW32__)
5 #define SCM_CGEN_CONST /*empty*/
6 #else
7 #define SCM_CGEN_CONST const
8 #endif
9
10 #include <gauche/class.h>
11 #include <gauche/vminsn.h>
12
13 static ScmObj call_fallback_proc(ScmObj *args, int nargs, ScmGeneric *gf)
14 {
15 ScmObj proc = SCM_OBJ(gf->data);
16 ScmObj arglist = Scm_ArrayToList(args, nargs);
17 SCM_RETURN(Scm_VMApply(proc, arglist));
18 }
19
20 static ScmObj moplib__25ensure_generic_function(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
21 {
22 ScmObj name_scm;
23 ScmSymbol* name;
24 ScmObj module_scm;
25 ScmModule* module;
26 SCM_ENTER_SUBR("%ensure-generic-function");
27 name_scm = SCM_ARGREF(0);
28 if (!SCM_SYMBOLP(name_scm)) Scm_Error("symbol required, but got %S", name_scm);
29 name = SCM_SYMBOL(name_scm);
30 module_scm = SCM_ARGREF(1);
31 if (!SCM_MODULEP(module_scm)) Scm_Error("module required, but got %S", module_scm);
32 module = SCM_MODULE(module_scm);
33 {
34 ScmObj val = Scm_SymbolValue(module, name);
35 if (!Scm_TypeP(val, SCM_CLASS_GENERIC)) {
36 if (SCM_SUBRP(val) || SCM_CLOSUREP(val)) {
37 val = Scm_MakeBaseGeneric(SCM_OBJ(name), call_fallback_proc, val);
38 } else {
39 val = Scm_MakeBaseGeneric(SCM_OBJ(name), NULL, NULL);
40 }
41 }
42 Scm_Define(module, name, val);
43 SCM_RETURN(val);
44 }
45 }
46
47 static SCM_DEFINE_STRING_CONST(moplib__25ensure_generic_function__NAME, "%ensure-generic-function", 24, 24);
48 static SCM_DEFINE_SUBR(moplib__25ensure_generic_function__STUB, 2, 0, SCM_OBJ(&moplib__25ensure_generic_function__NAME), moplib__25ensure_generic_function, NULL, NULL);
49
50 static ScmObj moplib__25make_next_method(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
51 {
52 ScmObj gf_scm;
53 ScmObj gf;
54 ScmObj methods_scm;
55 ScmObj methods;
56 ScmObj args_scm;
57 ScmObj args;
58 SCM_ENTER_SUBR("%make-next-method");
59 gf_scm = SCM_ARGREF(0);
60 gf = (gf_scm);
61 methods_scm = SCM_ARGREF(1);
62 if (!SCM_LISTP(methods_scm)) Scm_Error("list required, but got %S", methods_scm);
63 methods = (methods_scm);
64 args_scm = SCM_ARGREF(2);
65 if (!SCM_LISTP(args_scm)) Scm_Error("list required, but got %S", args_scm);
66 args = (args_scm);
67 {
68 ScmObj mp, *argv; int nargs = Scm_Length(args);
69 if (!Scm_TypeP(gf, SCM_CLASS_GENERIC))
70 Scm_Error("generic function requied, but got %S", gf);
71 SCM_FOR_EACH(mp, methods) {
72 if (!Scm_TypeP(SCM_CAR(mp), SCM_CLASS_METHOD))
73 Scm_Error("method required, but got %S", SCM_CAR(mp));
74 }
75 argv = Scm_ListToArray(args, &nargs, NULL, TRUE);
76 SCM_RETURN(Scm_MakeNextMethod(SCM_GENERIC(gf), methods, argv, nargs, FALSE));
77 }
78 }
79
80 static SCM_DEFINE_STRING_CONST(moplib__25make_next_method__NAME, "%make-next-method", 17, 17);
81 static SCM_DEFINE_SUBR(moplib__25make_next_method__STUB, 3, 0, SCM_OBJ(&moplib__25make_next_method__NAME), moplib__25make_next_method, NULL, NULL);
82
83 static ScmObj moplib__25method_code(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
84 {
85 ScmObj method_scm;
86 ScmObj method;
87 SCM_ENTER_SUBR("%method-code");
88 method_scm = SCM_ARGREF(0);
89 method = (method_scm);
90 {
91 ScmMethod *m;
92 if (!Scm_TypeP(method, SCM_CLASS_METHOD))
93 Scm_Error("method required, but got %S", method);
94 m = SCM_METHOD(method);
95 if (m->func) SCM_RETURN(SCM_FALSE);
96 else SCM_RETURN(SCM_OBJ(m->data));
97 }
98 }
99
100 static SCM_DEFINE_STRING_CONST(moplib__25method_code__NAME, "%method-code", 12, 12);
101 static SCM_DEFINE_SUBR(moplib__25method_code__STUB, 1, 0, SCM_OBJ(&moplib__25method_code__NAME), moplib__25method_code, NULL, NULL);
102
103 static ScmObj moplib__25start_class_redefinitionX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
104 {
105 ScmObj k_scm;
106 ScmClass* k;
107 SCM_ENTER_SUBR("%start-class-redefinition!");
108 k_scm = SCM_ARGREF(0);
109 if (!SCM_CLASSP(k_scm)) Scm_Error("class required, but got %S", k_scm);
110 k = SCM_CLASS(k_scm);
111 {
112 Scm_StartClassRedefinition(k);
113 SCM_RETURN(SCM_UNDEFINED);
114 }
115 }
116
117 static SCM_DEFINE_STRING_CONST(moplib__25start_class_redefinitionX__NAME, "%start-class-redefinition!", 26, 26);
118 static SCM_DEFINE_SUBR(moplib__25start_class_redefinitionX__STUB, 1, 0, SCM_OBJ(&moplib__25start_class_redefinitionX__NAME), moplib__25start_class_redefinitionX, NULL, NULL);
119
120 static ScmObj moplib__25commit_class_redefinitionX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
121 {
122 ScmObj k_scm;
123 ScmClass* k;
124 ScmObj newk_scm;
125 ScmObj newk;
126 SCM_ENTER_SUBR("%commit-class-redefinition!");
127 k_scm = SCM_ARGREF(0);
128 if (!SCM_CLASSP(k_scm)) Scm_Error("class required, but got %S", k_scm);
129 k = SCM_CLASS(k_scm);
130 newk_scm = SCM_ARGREF(1);
131 newk = (newk_scm);
132 {
133 Scm_CommitClassRedefinition(k, newk);
134 SCM_RETURN(SCM_UNDEFINED);
135 }
136 }
137
138 static SCM_DEFINE_STRING_CONST(moplib__25commit_class_redefinitionX__NAME, "%commit-class-redefinition!", 27, 27);
139 static SCM_DEFINE_SUBR(moplib__25commit_class_redefinitionX__STUB, 2, 0, SCM_OBJ(&moplib__25commit_class_redefinitionX__NAME), moplib__25commit_class_redefinitionX, NULL, NULL);
140
141 static ScmObj moplib__25check_class_binding(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
142 {
143 ScmObj name_scm;
144 ScmObj name;
145 ScmObj module_scm;
146 ScmModule* module;
147 SCM_ENTER_SUBR("%check-class-binding");
148 name_scm = SCM_ARGREF(0);
149 name = (name_scm);
150 module_scm = SCM_ARGREF(1);
151 if (!SCM_MODULEP(module_scm)) Scm_Error("module required, but got %S", module_scm);
152 module = SCM_MODULE(module_scm);
153 {
154 {
155 ScmObj SCM_RESULT;
156 SCM_RESULT = Scm_CheckClassBinding(name, module);
157 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
158 }
159 }
160 }
161
162 static SCM_DEFINE_STRING_CONST(moplib__25check_class_binding__NAME, "%check-class-binding", 20, 20);
163 static SCM_DEFINE_SUBR(moplib__25check_class_binding__STUB, 2, 0, SCM_OBJ(&moplib__25check_class_binding__NAME), moplib__25check_class_binding, NULL, NULL);
164
165 static ScmObj moplib__25replace_class_bindingX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
166 {
167 ScmObj k_scm;
168 ScmClass* k;
169 ScmObj newk_scm;
170 ScmClass* newk;
171 SCM_ENTER_SUBR("%replace-class-binding!");
172 k_scm = SCM_ARGREF(0);
173 if (!SCM_CLASSP(k_scm)) Scm_Error("class required, but got %S", k_scm);
174 k = SCM_CLASS(k_scm);
175 newk_scm = SCM_ARGREF(1);
176 if (!SCM_CLASSP(newk_scm)) Scm_Error("class required, but got %S", newk_scm);
177 newk = SCM_CLASS(newk_scm);
178 {
179 Scm_ReplaceClassBinding(k, newk);
180 SCM_RETURN(SCM_UNDEFINED);
181 }
182 }
183
184 static SCM_DEFINE_STRING_CONST(moplib__25replace_class_bindingX__NAME, "%replace-class-binding!", 23, 23);
185 static SCM_DEFINE_SUBR(moplib__25replace_class_bindingX__STUB, 2, 0, SCM_OBJ(&moplib__25replace_class_bindingX__NAME), moplib__25replace_class_bindingX, NULL, NULL);
186
187 static ScmObj moplib__25add_direct_subclassX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
188 {
189 ScmObj super_scm;
190 ScmClass* super;
191 ScmObj sub_scm;
192 ScmClass* sub;
193 SCM_ENTER_SUBR("%add-direct-subclass!");
194 super_scm = SCM_ARGREF(0);
195 if (!SCM_CLASSP(super_scm)) Scm_Error("class required, but got %S", super_scm);
196 super = SCM_CLASS(super_scm);
197 sub_scm = SCM_ARGREF(1);
198 if (!SCM_CLASSP(sub_scm)) Scm_Error("class required, but got %S", sub_scm);
199 sub = SCM_CLASS(sub_scm);
200 {
201 Scm_AddDirectSubclass(super, sub);
202 SCM_RETURN(SCM_UNDEFINED);
203 }
204 }
205
206 static SCM_DEFINE_STRING_CONST(moplib__25add_direct_subclassX__NAME, "%add-direct-subclass!", 21, 21);
207 static SCM_DEFINE_SUBR(moplib__25add_direct_subclassX__STUB, 2, 0, SCM_OBJ(&moplib__25add_direct_subclassX__NAME), moplib__25add_direct_subclassX, NULL, NULL);
208
209 static ScmObj moplib__25delete_direct_subclassX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
210 {
211 ScmObj super_scm;
212 ScmClass* super;
213 ScmObj sub_scm;
214 ScmClass* sub;
215 SCM_ENTER_SUBR("%delete-direct-subclass!");
216 super_scm = SCM_ARGREF(0);
217 if (!SCM_CLASSP(super_scm)) Scm_Error("class required, but got %S", super_scm);
218 super = SCM_CLASS(super_scm);
219 sub_scm = SCM_ARGREF(1);
220 if (!SCM_CLASSP(sub_scm)) Scm_Error("class required, but got %S", sub_scm);
221 sub = SCM_CLASS(sub_scm);
222 {
223 Scm_DeleteDirectSubclass(super, sub);
224 SCM_RETURN(SCM_UNDEFINED);
225 }
226 }
227
228 static SCM_DEFINE_STRING_CONST(moplib__25delete_direct_subclassX__NAME, "%delete-direct-subclass!", 24, 24);
229 static SCM_DEFINE_SUBR(moplib__25delete_direct_subclassX__STUB, 2, 0, SCM_OBJ(&moplib__25delete_direct_subclassX__NAME), moplib__25delete_direct_subclassX, NULL, NULL);
230
231 static ScmObj moplib__25add_direct_methodX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
232 {
233 ScmObj super_scm;
234 ScmClass* super;
235 ScmObj m_scm;
236 ScmMethod* m;
237 SCM_ENTER_SUBR("%add-direct-method!");
238 super_scm = SCM_ARGREF(0);
239 if (!SCM_CLASSP(super_scm)) Scm_Error("class required, but got %S", super_scm);
240 super = SCM_CLASS(super_scm);
241 m_scm = SCM_ARGREF(1);
242 if (!SCM_METHODP(m_scm)) Scm_Error("method required, but got %S", m_scm);
243 m = SCM_METHOD(m_scm);
244 {
245 Scm_AddDirectMethod(super, m);
246 SCM_RETURN(SCM_UNDEFINED);
247 }
248 }
249
250 static SCM_DEFINE_STRING_CONST(moplib__25add_direct_methodX__NAME, "%add-direct-method!", 19, 19);
251 static SCM_DEFINE_SUBR(moplib__25add_direct_methodX__STUB, 2, 0, SCM_OBJ(&moplib__25add_direct_methodX__NAME), moplib__25add_direct_methodX, NULL, NULL);
252
253 static ScmObj moplib__25delete_direct_methodX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
254 {
255 ScmObj super_scm;
256 ScmClass* super;
257 ScmObj m_scm;
258 ScmMethod* m;
259 SCM_ENTER_SUBR("%delete-direct-method!");
260 super_scm = SCM_ARGREF(0);
261 if (!SCM_CLASSP(super_scm)) Scm_Error("class required, but got %S", super_scm);
262 super = SCM_CLASS(super_scm);
263 m_scm = SCM_ARGREF(1);
264 if (!SCM_METHODP(m_scm)) Scm_Error("method required, but got %S", m_scm);
265 m = SCM_METHOD(m_scm);
266 {
267 Scm_DeleteDirectMethod(super, m);
268 SCM_RETURN(SCM_UNDEFINED);
269 }
270 }
271
272 static SCM_DEFINE_STRING_CONST(moplib__25delete_direct_methodX__NAME, "%delete-direct-method!", 22, 22);
273 static SCM_DEFINE_SUBR(moplib__25delete_direct_methodX__STUB, 2, 0, SCM_OBJ(&moplib__25delete_direct_methodX__NAME), moplib__25delete_direct_methodX, NULL, NULL);
274
275 static ScmObj moplib__25transplant_instanceX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
276 {
277 ScmObj src_scm;
278 ScmObj src;
279 ScmObj dst_scm;
280 ScmObj dst;
281 SCM_ENTER_SUBR("%transplant-instance!");
282 src_scm = SCM_ARGREF(0);
283 src = (src_scm);
284 dst_scm = SCM_ARGREF(1);
285 dst = (dst_scm);
286 {
287 Scm_TransplantInstance(src, dst);
288 SCM_RETURN(SCM_UNDEFINED);
289 }
290 }
291
292 static SCM_DEFINE_STRING_CONST(moplib__25transplant_instanceX__NAME, "%transplant-instance!", 21, 21);
293 static SCM_DEFINE_SUBR(moplib__25transplant_instanceX__STUB, 2, 0, SCM_OBJ(&moplib__25transplant_instanceX__NAME), moplib__25transplant_instanceX, NULL, NULL);
294
295 static ScmObj moplib_class_of(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
296 {
297 ScmObj obj_scm;
298 ScmObj obj;
299 SCM_ENTER_SUBR("class-of");
300 obj_scm = SCM_ARGREF(0);
301 obj = (obj_scm);
302 {
303 {
304 ScmObj SCM_RESULT;
305 SCM_RESULT = Scm_VMClassOf(obj);
306 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
307 }
308 }
309 }
310
311 static SCM_DEFINE_STRING_CONST(moplib_class_of__NAME, "class-of", 8, 8);
312 static SCM_DEFINE_SUBR(moplib_class_of__STUB, 1, 0, SCM_OBJ(&moplib_class_of__NAME), moplib_class_of, NULL, NULL);
313
314 static ScmObj moplib_current_class_of(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
315 {
316 ScmObj obj_scm;
317 ScmObj obj;
318 SCM_ENTER_SUBR("current-class-of");
319 obj_scm = SCM_ARGREF(0);
320 obj = (obj_scm);
321 {
322 {
323 ScmObj SCM_RESULT;
324 SCM_RESULT = (SCM_OBJ(Scm_ClassOf(obj)));
325 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
326 }
327 }
328 }
329
330 static SCM_DEFINE_STRING_CONST(moplib_current_class_of__NAME, "current-class-of", 16, 16);
331 static SCM_DEFINE_SUBR(moplib_current_class_of__STUB, 1, 0, SCM_OBJ(&moplib_current_class_of__NAME), moplib_current_class_of, NULL, NULL);
332
333 static ScmObj moplib_is_aP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
334 {
335 ScmObj obj_scm;
336 ScmObj obj;
337 ScmObj klass_scm;
338 ScmClass* klass;
339 SCM_ENTER_SUBR("is-a?");
340 obj_scm = SCM_ARGREF(0);
341 obj = (obj_scm);
342 klass_scm = SCM_ARGREF(1);
343 if (!SCM_CLASSP(klass_scm)) Scm_Error("class required, but got %S", klass_scm);
344 klass = SCM_CLASS(klass_scm);
345 {
346 {
347 ScmObj SCM_RESULT;
348 SCM_RESULT = Scm_VMIsA(obj, klass);
349 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
350 }
351 }
352 }
353
354 static SCM_DEFINE_STRING_CONST(moplib_is_aP__NAME, "is-a?", 5, 5);
355 static SCM_DEFINE_SUBR(moplib_is_aP__STUB, 2, 0, SCM_OBJ(&moplib_is_aP__NAME), moplib_is_aP, SCM_MAKE_INT(SCM_VM_IS_A), NULL);
356
357 static ScmObj moplib_slot_ref(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
358 {
359 ScmObj obj_scm;
360 ScmObj obj;
361 ScmObj slot_scm;
362 ScmObj slot;
363 SCM_ENTER_SUBR("slot-ref");
364 obj_scm = SCM_ARGREF(0);
365 obj = (obj_scm);
366 slot_scm = SCM_ARGREF(1);
367 slot = (slot_scm);
368 {
369 {
370 ScmObj SCM_RESULT;
371 SCM_RESULT = (Scm_VMSlotRef(obj, slot, FALSE));
372 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
373 }
374 }
375 }
376
377 static SCM_DEFINE_STRING_CONST(moplib_slot_ref__NAME, "slot-ref", 8, 8);
378 static SCM_DEFINE_SUBR(moplib_slot_ref__STUB, 2, 0, SCM_OBJ(&moplib_slot_ref__NAME), moplib_slot_ref, SCM_MAKE_INT(SCM_VM_SLOT_REF), NULL);
379
380 static ScmObj moplib_slot_setX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
381 {
382 ScmObj obj_scm;
383 ScmObj obj;
384 ScmObj slot_scm;
385 ScmObj slot;
386 ScmObj value_scm;
387 ScmObj value;
388 SCM_ENTER_SUBR("slot-set!");
389 obj_scm = SCM_ARGREF(0);
390 obj = (obj_scm);
391 slot_scm = SCM_ARGREF(1);
392 slot = (slot_scm);
393 value_scm = SCM_ARGREF(2);
394 value = (value_scm);
395 {
396 {
397 ScmObj SCM_RESULT;
398 SCM_RESULT = Scm_VMSlotSet(obj, slot, value);
399 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
400 }
401 }
402 }
403
404 static SCM_DEFINE_STRING_CONST(moplib_slot_setX__NAME, "slot-set!", 9, 9);
405 static SCM_DEFINE_SUBR(moplib_slot_setX__STUB, 3, 0, SCM_OBJ(&moplib_slot_setX__NAME), moplib_slot_setX, SCM_MAKE_INT(SCM_VM_SLOT_SET), NULL);
406
407 static ScmObj moplib_slot_boundP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
408 {
409 ScmObj obj_scm;
410 ScmObj obj;
411 ScmObj slot_scm;
412 ScmObj slot;
413 SCM_ENTER_SUBR("slot-bound?");
414 obj_scm = SCM_ARGREF(0);
415 obj = (obj_scm);
416 slot_scm = SCM_ARGREF(1);
417 slot = (slot_scm);
418 {
419 {
420 ScmObj SCM_RESULT;
421 SCM_RESULT = Scm_VMSlotBoundP(obj, slot);
422 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
423 }
424 }
425 }
426
427 static SCM_DEFINE_STRING_CONST(moplib_slot_boundP__NAME, "slot-bound?", 11, 11);
428 static SCM_DEFINE_SUBR(moplib_slot_boundP__STUB, 2, 0, SCM_OBJ(&moplib_slot_boundP__NAME), moplib_slot_boundP, NULL, NULL);
429
430 static ScmObj moplib_slot_ref_using_accessor(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
431 {
432 ScmObj obj_scm;
433 ScmObj obj;
434 ScmObj accessor_scm;
435 ScmSlotAccessor* accessor;
436 SCM_ENTER_SUBR("slot-ref-using-accessor");
437 obj_scm = SCM_ARGREF(0);
438 obj = (obj_scm);
439 accessor_scm = SCM_ARGREF(1);
440 if (!SCM_SLOT_ACCESSOR_P(accessor_scm)) Scm_Error("<slot-accessor> required, but got %S", accessor_scm);
441 accessor = SCM_SLOT_ACCESSOR(accessor_scm);
442 {
443 {
444 ScmObj SCM_RESULT;
445 SCM_RESULT = (Scm_VMSlotRefUsingAccessor(obj, accessor, FALSE));
446 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
447 }
448 }
449 }
450
451 static SCM_DEFINE_STRING_CONST(moplib_slot_ref_using_accessor__NAME, "slot-ref-using-accessor", 23, 23);
452 static SCM_DEFINE_SUBR(moplib_slot_ref_using_accessor__STUB, 2, 0, SCM_OBJ(&moplib_slot_ref_using_accessor__NAME), moplib_slot_ref_using_accessor, NULL, NULL);
453
454 static ScmObj moplib_slot_bound_using_accessorP(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
455 {
456 ScmObj obj_scm;
457 ScmObj obj;
458 ScmObj accessor_scm;
459 ScmSlotAccessor* accessor;
460 SCM_ENTER_SUBR("slot-bound-using-accessor?");
461 obj_scm = SCM_ARGREF(0);
462 obj = (obj_scm);
463 accessor_scm = SCM_ARGREF(1);
464 if (!SCM_SLOT_ACCESSOR_P(accessor_scm)) Scm_Error("<slot-accessor> required, but got %S", accessor_scm);
465 accessor = SCM_SLOT_ACCESSOR(accessor_scm);
466 {
467 {
468 ScmObj SCM_RESULT;
469 SCM_RESULT = (Scm_VMSlotRefUsingAccessor(obj, accessor, TRUE));
470 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
471 }
472 }
473 }
474
475 static SCM_DEFINE_STRING_CONST(moplib_slot_bound_using_accessorP__NAME, "slot-bound-using-accessor?", 26, 26);
476 static SCM_DEFINE_SUBR(moplib_slot_bound_using_accessorP__STUB, 2, 0, SCM_OBJ(&moplib_slot_bound_using_accessorP__NAME), moplib_slot_bound_using_accessorP, NULL, NULL);
477
478 static ScmObj moplib_slot_set_using_accessorX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
479 {
480 ScmObj obj_scm;
481 ScmObj obj;
482 ScmObj accessor_scm;
483 ScmSlotAccessor* accessor;
484 ScmObj value_scm;
485 ScmObj value;
486 SCM_ENTER_SUBR("slot-set-using-accessor!");
487 obj_scm = SCM_ARGREF(0);
488 obj = (obj_scm);
489 accessor_scm = SCM_ARGREF(1);
490 if (!SCM_SLOT_ACCESSOR_P(accessor_scm)) Scm_Error("<slot-accessor> required, but got %S", accessor_scm);
491 accessor = SCM_SLOT_ACCESSOR(accessor_scm);
492 value_scm = SCM_ARGREF(2);
493 value = (value_scm);
494 {
495 {
496 ScmObj SCM_RESULT;
497 SCM_RESULT = Scm_VMSlotSetUsingAccessor(obj, accessor, value);
498 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
499 }
500 }
501 }
502
503 static SCM_DEFINE_STRING_CONST(moplib_slot_set_using_accessorX__NAME, "slot-set-using-accessor!", 24, 24);
504 static SCM_DEFINE_SUBR(moplib_slot_set_using_accessorX__STUB, 3, 0, SCM_OBJ(&moplib_slot_set_using_accessorX__NAME), moplib_slot_set_using_accessorX, NULL, NULL);
505
506 static ScmObj moplib_slot_initialize_using_accessorX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
507 {
508 ScmObj obj_scm;
509 ScmObj obj;
510 ScmObj accessor_scm;
511 ScmSlotAccessor* accessor;
512 ScmObj initargs_scm;
513 ScmObj initargs;
514 SCM_ENTER_SUBR("slot-initialize-using-accessor!");
515 obj_scm = SCM_ARGREF(0);
516 obj = (obj_scm);
517 accessor_scm = SCM_ARGREF(1);
518 if (!SCM_SLOT_ACCESSOR_P(accessor_scm)) Scm_Error("<slot-accessor> required, but got %S", accessor_scm);
519 accessor = SCM_SLOT_ACCESSOR(accessor_scm);
520 initargs_scm = SCM_ARGREF(2);
521 initargs = (initargs_scm);
522 {
523 {
524 ScmObj SCM_RESULT;
525 SCM_RESULT = Scm_VMSlotInitializeUsingAccessor(obj, accessor, initargs);
526 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
527 }
528 }
529 }
530
531 static SCM_DEFINE_STRING_CONST(moplib_slot_initialize_using_accessorX__NAME, "slot-initialize-using-accessor!", 31, 31);
532 static SCM_DEFINE_SUBR(moplib_slot_initialize_using_accessorX__STUB, 3, 0, SCM_OBJ(&moplib_slot_initialize_using_accessorX__NAME), moplib_slot_initialize_using_accessorX, NULL, NULL);
533
534 static ScmObj moplib_instance_slot_ref(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
535 {
536 ScmObj obj_scm;
537 ScmObj obj;
538 ScmObj num_scm;
539 int num;
540 SCM_ENTER_SUBR("instance-slot-ref");
541 obj_scm = SCM_ARGREF(0);
542 obj = (obj_scm);
543 num_scm = SCM_ARGREF(1);
544 if (!SCM_INTP(num_scm)) Scm_Error("small integer required, but got %S", num_scm);
545 num = SCM_INT_VALUE(num_scm);
546 {
547 {
548 ScmObj SCM_RESULT;
549 SCM_RESULT = Scm_InstanceSlotRef(obj, num);
550 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
551 }
552 }
553 }
554
555 static SCM_DEFINE_STRING_CONST(moplib_instance_slot_ref__NAME, "instance-slot-ref", 17, 17);
556 static SCM_DEFINE_SUBR(moplib_instance_slot_ref__STUB, 2, 0, SCM_OBJ(&moplib_instance_slot_ref__NAME), moplib_instance_slot_ref, NULL, NULL);
557
558 static ScmObj moplib_instance_slot_set(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
559 {
560 ScmObj obj_scm;
561 ScmObj obj;
562 ScmObj num_scm;
563 int num;
564 ScmObj value_scm;
565 ScmObj value;
566 SCM_ENTER_SUBR("instance-slot-set");
567 obj_scm = SCM_ARGREF(0);
568 obj = (obj_scm);
569 num_scm = SCM_ARGREF(1);
570 if (!SCM_INTP(num_scm)) Scm_Error("small integer required, but got %S", num_scm);
571 num = SCM_INT_VALUE(num_scm);
572 value_scm = SCM_ARGREF(2);
573 value = (value_scm);
574 {
575 Scm_InstanceSlotSet(obj, num, value);
576 SCM_RETURN(SCM_UNDEFINED);
577 }
578 }
579
580 static SCM_DEFINE_STRING_CONST(moplib_instance_slot_set__NAME, "instance-slot-set", 17, 17);
581 static SCM_DEFINE_SUBR(moplib_instance_slot_set__STUB, 3, 0, SCM_OBJ(&moplib_instance_slot_set__NAME), moplib_instance_slot_set, NULL, NULL);
582
583 static ScmObj moplib_touch_instanceX(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_)
584 {
585 ScmObj obj_scm;
586 ScmObj obj;
587 SCM_ENTER_SUBR("touch-instance!");
588 obj_scm = SCM_ARGREF(0);
589 obj = (obj_scm);
590 {
591 {
592 ScmObj SCM_RESULT;
593 SCM_RESULT = Scm_VMTouchInstance(obj);
594 SCM_RETURN(SCM_OBJ_SAFE(SCM_RESULT));
595 }
596 }
597 }
598
599 static SCM_DEFINE_STRING_CONST(moplib_touch_instanceX__NAME, "touch-instance!", 15, 15);
600 static SCM_DEFINE_SUBR(moplib_touch_instanceX__STUB, 1, 0, SCM_OBJ(&moplib_touch_instanceX__NAME), moplib_touch_instanceX, NULL, NULL);
601
602 void Scm_Init_moplib(ScmModule *module)
603 {
604
605 SCM_DEFINE(module, "touch-instance!", SCM_OBJ(&moplib_touch_instanceX__STUB));
606 SCM_DEFINE(module, "instance-slot-set", SCM_OBJ(&moplib_instance_slot_set__STUB));
607 SCM_DEFINE(module, "instance-slot-ref", SCM_OBJ(&moplib_instance_slot_ref__STUB));
608 SCM_DEFINE(module, "slot-initialize-using-accessor!", SCM_OBJ(&moplib_slot_initialize_using_accessorX__STUB));
609 SCM_DEFINE(module, "slot-set-using-accessor!", SCM_OBJ(&moplib_slot_set_using_accessorX__STUB));
610 SCM_DEFINE(module, "slot-bound-using-accessor?", SCM_OBJ(&moplib_slot_bound_using_accessorP__STUB));
611 SCM_DEFINE(module, "slot-ref-using-accessor", SCM_OBJ(&moplib_slot_ref_using_accessor__STUB));
612 SCM_DEFINE(module, "slot-bound?", SCM_OBJ(&moplib_slot_boundP__STUB));
613 SCM_DEFINE(module, "slot-set!", SCM_OBJ(&moplib_slot_setX__STUB));
614 SCM_DEFINE(module, "slot-ref", SCM_OBJ(&moplib_slot_ref__STUB));
615 Scm_SetterSet(SCM_PROCEDURE(&moplib_slot_ref__STUB), SCM_PROCEDURE(&moplib_slot_setX__STUB), TRUE);
616 SCM_DEFINE(module, "is-a?", SCM_OBJ(&moplib_is_aP__STUB));
617 SCM_DEFINE(module, "current-class-of", SCM_OBJ(&moplib_current_class_of__STUB));
618 SCM_DEFINE(module, "class-of", SCM_OBJ(&moplib_class_of__STUB));
619 SCM_DEFINE(module, "%transplant-instance!", SCM_OBJ(&moplib__25transplant_instanceX__STUB));
620 SCM_DEFINE(module, "%delete-direct-method!", SCM_OBJ(&moplib__25delete_direct_methodX__STUB));
621 SCM_DEFINE(module, "%add-direct-method!", SCM_OBJ(&moplib__25add_direct_methodX__STUB));
622 SCM_DEFINE(module, "%delete-direct-subclass!", SCM_OBJ(&moplib__25delete_direct_subclassX__STUB));
623 SCM_DEFINE(module, "%add-direct-subclass!", SCM_OBJ(&moplib__25add_direct_subclassX__STUB));
624 SCM_DEFINE(module, "%replace-class-binding!", SCM_OBJ(&moplib__25replace_class_bindingX__STUB));
625 SCM_DEFINE(module, "%check-class-binding", SCM_OBJ(&moplib__25check_class_binding__STUB));
626 SCM_DEFINE(module, "%commit-class-redefinition!", SCM_OBJ(&moplib__25commit_class_redefinitionX__STUB));
627 SCM_DEFINE(module, "%start-class-redefinition!", SCM_OBJ(&moplib__25start_class_redefinitionX__STUB));
628 SCM_DEFINE(module, "%method-code", SCM_OBJ(&moplib__25method_code__STUB));
629 SCM_DEFINE(module, "%make-next-method", SCM_OBJ(&moplib__25make_next_method__STUB));
630 SCM_DEFINE(module, "%ensure-generic-function", SCM_OBJ(&moplib__25ensure_generic_function__STUB));
631 }