XS(TStringsTIEARRAY) { dXSARGS; SV *ssv=ST(0); // "G::TStrings" void* tmp[4]; memset(tmp,0,sizeof(tmp)); tmp[2] = 0; ((TStrings*)(tmp[0])) = TyingStrings; ((TComponent*)(tmp[1])) = TyingComp; ((int)(tmp[2])) = TyingOpt; SV *tsv; tsv = newSVpv((char*)&tmp[0],16); STRLEN len; char *ptr = SvPV(ssv,len); HV *stash = gv_stashpvn(ptr,len, TRUE); SV *rsv = newRV_inc(tsv); sv_bless(rsv,stash); ST(0) = rsv; XSRETURN(1); }