SOOT
view release on metacpan or search on metacpan
XS/TObject.xs view on Meta::CPAN
### NOTE: Any stuff you want to have all SOOT classes needs to be added to ClassGenerator, too
MODULE = SOOT PACKAGE = TObject
void
DESTROY(self)
SV* self
PPCODE:
SOOT::UnregisterObject(aTHX_ self);
SV*
as(self, newType)
SV* self
const char* newType
CODE:
RETVAL = SOOT::RegisterObject(aTHX_ self, newType);
OUTPUT: RETVAL
SV*
Clone(self, ...)
SV* self
ALIAS:
TObject::DrawClone = 1
PREINIT:
TObject *newObj, *selfObj;
CODE:
selfObj = SOOT::LobotomizeObject(aTHX_ self);
/* Wrapping Clone/DrawClone may also fix a leak due to
* object ownership assumptions in ProcessReturnValue of
* ROOTResolver: It assumes that anything that is not a
* constructor but returns an object will clean up the
* object.
*/
/* Clone */
if (ix == 0) {
if (items >= 2) newObj = selfObj->Clone(SvPV_nolen(ST(1)));
else newObj = selfObj->Clone();
}
/* DrawClone */
else {
if (items >= 2) newObj = selfObj->DrawClone(SvPV_nolen(ST(1)));
else newObj = selfObj->DrawClone();
}
RETVAL = SOOT::RegisterObject(aTHX_ newObj); /* autocast */
OUTPUT: RETVAL
SV*
keep(self)
SV* self
CODE:
SOOT::PreventDestruction(aTHX_ self);
SvREFCNT_inc(self);
RETVAL = self;
OUTPUT: RETVAL
void
delete(self)
SV* self
PPCODE:
SOOT::MarkForDestruction(aTHX_ self);
SvREFCNT_dec(self);
####### FIXME The following is a super-evil workaround for the "type enum" bug, so that users can at least do GetXaxis()->as("TAxis")!
MODULE = SOOT PACKAGE = enum
void
DESTROY(self)
SV* self
PPCODE:
SOOT::UnregisterObject(aTHX_ self);
SV*
as(self, newType)
SV* self
const char* newType
CODE:
RETVAL = SOOT::RegisterObject(aTHX_ self, newType);
OUTPUT: RETVAL
SV*
keep(self)
SV* self
CODE:
SOOT::PreventDestruction(aTHX_ self);
SvREFCNT_inc(self);
RETVAL = self;
OUTPUT: RETVAL
void
delete(self)
SV* self
PPCODE:
SOOT::MarkForDestruction(aTHX_ self);
SvREFCNT_dec(self);
( run in 0.549 second using v1.01-cache-2.11-cpan-5511b514fd6 )