ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/cfperl.xs
(Generate patch)

Comparing deliantra/server/server/cfperl.xs (file contents):
Revision 1.253 by root, Mon Sep 10 17:24:36 2007 UTC vs.
Revision 1.256 by root, Wed Sep 12 11:10:11 2007 UTC

1939void 1939void
1940inv (object *obj) 1940inv (object *obj)
1941 PROTOTYPE: $ 1941 PROTOTYPE: $
1942 PPCODE: 1942 PPCODE:
1943{ 1943{
1944 object *o;
1945 for (o = obj->inv; o; o = o->below) 1944 for (object *o = obj->inv; o; o = o->below)
1946 XPUSHs (sv_2mortal (to_sv (o))); 1945 XPUSHs (sv_2mortal (to_sv (o)));
1947} 1946}
1948 1947
1949void 1948void
1950set_animation (object *op, int idx) 1949set_animation (object *op, int idx)
2150 CODE: 2149 CODE:
2151 RETVAL = query_base_name (op, plural); 2150 RETVAL = query_base_name (op, plural);
2152 OUTPUT: RETVAL 2151 OUTPUT: RETVAL
2153 2152
2154object *decrease_ob_nr (object *op, unsigned long i) 2153object *decrease_ob_nr (object *op, unsigned long i)
2154
2155# return the tail of an object, excluding itself
2156void
2157tail (object *op)
2158 PPCODE:
2159 while ((op = op->more))
2160 XPUSHs (sv_2mortal (to_sv (op)));
2155 2161
2156MODULE = cf PACKAGE = cf::object::player PREFIX = cf_player_ 2162MODULE = cf PACKAGE = cf::object::player PREFIX = cf_player_
2157 2163
2158player *player (object *op) 2164player *player (object *op)
2159 CODE: 2165 CODE:
2260 for (int i = 2; i < items; i++) av_push (av, SvREFCNT_inc (ST (i))); 2266 for (int i = 2; i < items; i++) av_push (av, SvREFCNT_inc (ST (i)));
2261 RETVAL = map->invoke ((event_type)event, ARG_AV (av), DT_END); 2267 RETVAL = map->invoke ((event_type)event, ARG_AV (av), DT_END);
2262 OUTPUT: RETVAL 2268 OUTPUT: RETVAL
2263 2269
2264SV *registry (maptile *map) 2270SV *registry (maptile *map)
2271
2272void
2273find_tagged_objects (maptile *map, utf8_string tag = 0)
2274 PPCODE:
2275{
2276 if (!map->spaces)
2277 XSRETURN_EMPTY;
2278
2279 if (tag)
2280 {
2281 shstr_cmp tag_ (tag);
2282
2283 for (mapspace *ms = map->spaces + map->size (); ms-- > map->spaces; )
2284 for (object *op = ms->bot; op; op = op->above)
2285 if (op->tag == tag_)
2286 XPUSHs (sv_2mortal (to_sv (op)));
2287 }
2288 else
2289 {
2290 for (mapspace *ms = map->spaces + map->size (); ms-- > map->spaces; )
2291 for (object *op = ms->bot; op; op = op->above)
2292 if (op->tag)
2293 XPUSHs (sv_2mortal (to_sv (op)));
2294 }
2295}
2265 2296
2266INCLUDE: $PERL $srcdir/genacc maptile ../include/map.h | 2297INCLUDE: $PERL $srcdir/genacc maptile ../include/map.h |
2267 2298
2268void 2299void
2269maptile::instantiate () 2300maptile::instantiate ()
2874 sv_to (sv, self); 2905 sv_to (sv, self);
2875 delete self; 2906 delete self;
2876 2907
2877void 2908void
2878extract_tags (object_thawer *self) 2909extract_tags (object_thawer *self)
2879 CODE: 2910 PPCODE:
2880 while (self->kw != KW_EOF) 2911 while (self->kw != KW_EOF)
2881 { 2912 {
2913 PUTBACK;
2882 coroapi::cede_to_tick_every (5000); 2914 coroapi::cede_to_tick_every (5000);
2915 SPAGAIN;
2883 2916
2884 if (self->kw == KW_tag) 2917 if (self->kw == KW_tag)
2885 XPUSHs (sv_2mortal (to_sv (self->get_str ()))); 2918 XPUSHs (sv_2mortal (newSVpv_utf8 (self->get_str ())));
2886 2919
2887 self->skip (); 2920 self->skip ();
2888 } 2921 }
2889 2922

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines