… | |
… | |
230 | do_destroy (); |
230 | do_destroy (); |
231 | sever_self (); |
231 | sever_self (); |
232 | } |
232 | } |
233 | |
233 | |
234 | void |
234 | void |
|
|
235 | attachable::do_delete () |
|
|
236 | { |
|
|
237 | delete this; |
|
|
238 | } |
|
|
239 | |
|
|
240 | void |
235 | attachable::check_mortals () |
241 | attachable::check_mortals () |
236 | { |
242 | { |
237 | static int i = 0; |
243 | static int i = 0; |
238 | |
244 | |
239 | for (;;) |
245 | for (;;) |
… | |
… | |
252 | |
258 | |
253 | if (0) |
259 | if (0) |
254 | { |
260 | { |
255 | for (int j = 0; j < mortals.size (); ++j)//D |
261 | for (int j = 0; j < mortals.size (); ++j)//D |
256 | fprintf (stderr, "%d:%s %p ", j, &((object *)mortals[j])->name, mortals[j]);//D |
262 | fprintf (stderr, "%d:%s %p ", j, &((object *)mortals[j])->name, mortals[j]);//D |
|
|
263 | |
257 | fprintf (stderr, "\n");//D |
264 | fprintf (stderr, "\n");//D |
258 | } |
265 | } |
259 | } |
266 | } |
260 | } |
267 | } |
261 | |
268 | |
… | |
… | |
281 | } |
288 | } |
282 | else |
289 | else |
283 | { |
290 | { |
284 | mortals.erase (i); |
291 | mortals.erase (i); |
285 | obj->sever_self (); |
292 | obj->sever_self (); |
286 | delete obj; |
293 | obj->do_delete (); |
287 | } |
294 | } |
288 | } |
295 | } |
289 | } |
296 | } |
290 | |
297 | |
291 | void |
298 | void |
… | |
… | |
1683 | PROTOTYPE: @ |
1690 | PROTOTYPE: @ |
1684 | CODE: |
1691 | CODE: |
1685 | while (items > 0) |
1692 | while (items > 0) |
1686 | sv_rvweaken (ST (--items)); |
1693 | sv_rvweaken (ST (--items)); |
1687 | |
1694 | |
1688 | void |
1695 | void log_suspend () |
|
|
1696 | |
|
|
1697 | void log_resume () |
|
|
1698 | |
1689 | log_backtrace (utf8_string msg) |
1699 | void log_backtrace (utf8_string msg) |
1690 | |
1700 | |
1691 | void |
|
|
1692 | LOG (int flags, utf8_string msg) |
1701 | void LOG (int flags, utf8_string msg) |
1693 | PROTOTYPE: $$ |
1702 | PROTOTYPE: $$ |
1694 | C_ARGS: flags, "%s", msg |
1703 | C_ARGS: flags, "%s", msg |
1695 | |
1704 | |
1696 | octet_string path_combine (octet_string base, octet_string path) |
1705 | octet_string path_combine (octet_string base, octet_string path) |
1697 | PROTOTYPE: $$ |
1706 | PROTOTYPE: $$ |
… | |
… | |
2157 | PROTOTYPE: $$;$ |
2166 | PROTOTYPE: $$;$ |
2158 | PPCODE: |
2167 | PPCODE: |
2159 | { |
2168 | { |
2160 | rv_vector rv; |
2169 | rv_vector rv; |
2161 | |
2170 | |
2162 | PUTBACK; |
|
|
2163 | get_rangevector (ob, other, &rv, flags); |
2171 | get_rangevector (ob, other, &rv, flags); |
2164 | SPAGAIN; |
|
|
2165 | |
2172 | |
2166 | EXTEND (SP, 5); |
2173 | EXTEND (SP, 5); |
2167 | PUSHs (sv_2mortal (newSVuv (rv.distance))); |
2174 | PUSHs (sv_2mortal (newSVuv (rv.distance))); |
2168 | PUSHs (sv_2mortal (newSViv (rv.distance_x))); |
2175 | PUSHs (sv_2mortal (newSViv (rv.distance_x))); |
2169 | PUSHs (sv_2mortal (newSViv (rv.distance_y))); |
2176 | PUSHs (sv_2mortal (newSViv (rv.distance_y))); |
2170 | PUSHs (sv_2mortal (newSViv (rv.direction))); |
2177 | PUSHs (sv_2mortal (newSViv (rv.direction))); |
2171 | PUSHs (sv_2mortal (to_sv (rv.part))); |
2178 | PUSHs (sv_2mortal (to_sv (rv.part))); |
2172 | } |
2179 | } |
2173 | |
2180 | |
2174 | bool on_same_map_as (object *ob, object *other) |
2181 | bool on_same_map_as (object *ob, object *other) |
2175 | CODE: |
2182 | CODE: |
2176 | RETVAL = on_same_map (ob, other); |
2183 | RETVAL = on_same_map (ob, other); |