MODULE = URI::XS PACKAGE = URI::XS
PROTOTYPES: DISABLE
URISP URI::HOOK_CLONE () {
PROTO = Object(ST(0)).stash();
if (dynamic_cast<URIStrict*>(THIS)) RETVAL = URI::create(*THIS);
else RETVAL = make_backref<URI>(*THIS);
}
string URI::STORABLE_freeze (bool) {
RETVAL = THIS->to_string();
if (dynamic_cast<URIStrict*>(THIS)) RETVAL += '1';
else RETVAL += '0';
}
URISP STORABLE_attach (SV* CLASS, bool, SV* serialized) {
STRLEN len;
char* p = SvPV(serialized, len);
len--;
char ctrl = p[len];
p[len] = 0;
if (ctrl == '1') RETVAL = URI::create(string(p, len));
else RETVAL = make_backref<URI>(string(p, len));
PROTO = CLASS;
}
string URI::TO_JSON () {
RETVAL = THIS->to_string();
}