TYPEMAP
jq_state*	T_JQ_STATE

OUTPUT

T_JQ_STATE
	if ($var == NULL) {
		SvOK_off($arg);
	} else {
		HV *self = newHV();
		sv_setsv($arg, sv_2mortal(newRV_noinc((SV*) self)));
		sv_bless($arg, gv_stashpv(klass, 1));
		MAGIC *mg = sv_magicext((SV*) self, NULL, PERL_MAGIC_ext, NULL, NULL, 0);
		mg->mg_obj = (SV*) $var;
		mg->mg_private = 42;
	}

INPUT

T_JQ_STATE
	if (sv_isobject($arg) && sv_derived_from($arg, \"JQ\")) {
		MAGIC* magic = mg_find(SvRV($arg), PERL_MAGIC_ext);
		if (magic != NULL && magic->mg_private == 42 && magic->mg_obj != NULL) {
			$var = ($type) magic->mg_obj;
		} else {
			Perl_croak(aTHX_ \"$var: invalid object\");
		}
	} else {
		Perl_croak(aTHX_ \"%s: %s is not of type %s\",
			${$ALIAS?\q[GvNAME(CvGV(cv))]:\qq[\"$pname\"]},
			\"$var\", \"Text::Ux\");
	}
