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.67 by root, Wed Nov 8 00:52:56 2006 UTC vs.
Revision 1.68 by elmex, Sat Nov 18 23:16:19 2006 UTC

182 182
183//TODO: 183//TODO:
184inline SV *to_sv (New_Face * v) { return to_sv (v->name); } 184inline SV *to_sv (New_Face * v) { return to_sv (v->name); }
185inline SV *to_sv (treasurelist * v) { return to_sv (v->name); } 185inline SV *to_sv (treasurelist * v) { return to_sv (v->name); }
186 186
187inline SV *to_sv (UUID v) {
188 char buf[128];
189 snprintf (buf, 128, "<1,%llx>", (unsigned long long)v.seq + UUID_SKIP * 2);
190 return newSVpv (buf, 0);
191}
192
187inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPV_nolen (sv) : 0; } 193inline void sv_to (SV *sv, shstr &v) { v = SvOK (sv) ? SvPV_nolen (sv) : 0; }
188inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } //TODO: verify that all simple pointers are strdup-managed 194inline void sv_to (SV *sv, char * &v) { free (v); v = SvOK (sv) ? strdup (SvPV_nolen (sv)) : 0; } //TODO: verify that all simple pointers are strdup-managed
189inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); } 195inline void sv_to (SV *sv, bool &v) { v = SvIV (sv); }
190inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); } 196inline void sv_to (SV *sv, signed char &v) { v = SvIV (sv); }
191inline void sv_to (SV *sv, unsigned char &v) { v = SvIV (sv); } 197inline void sv_to (SV *sv, unsigned char &v) { v = SvIV (sv); }
213template<class T> 219template<class T>
214inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; } 220inline void sv_to (SV *sv, refptr<T> &v) { T *tmp; sv_to (sv, tmp); v = tmp; }
215 221
216template<int N> 222template<int N>
217inline void sv_to (SV *sv, char (&v)[N]) { assign (v, SvPV_nolen (sv)); } 223inline void sv_to (SV *sv, char (&v)[N]) { assign (v, SvPV_nolen (sv)); }
224
225inline void sv_to (SV *sv, UUID &v) {
226 char *sv_str = SvOK (sv) ? SvPV_nolen (sv) : 0;
227 unsigned int version = 0;
228 unsigned long long seq = 0;
229
230 if (!sv_str)
231 return;
232
233 if (2 == sscanf (sv_str, "<%d.%llx>", &version, &seq) && version == 1)
234 {
235 v.seq = seq;
236 }
237
238 return;
239}
218 240
219static SV * 241static SV *
220newSVdt_va (va_list &ap, data_type type) 242newSVdt_va (va_list &ap, data_type type)
221{ 243{
222 SV *sv; 244 SV *sv;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines