B-Hooks-Parser

 view release on metacpan or  search on metacpan

Parser.xs  view on Meta::CPAN


IV
hook_parser_get_linestr_offset ()
	C_ARGS:
		aTHX

void
hook_parser_set_linestr (SV *new_value)
PREINIT:
	char *new_chars;
	STRLEN new_len;
CODE:
	if (NOT_PARSING) {
		croak ("trying to alter PL_linestr at runtime");
	}
	new_chars = SvPV(new_value, new_len);
	if (SvLEN (PL_linestr) < new_len+1) {
		croak ("forced to realloc PL_linestr for line %s,"
		       " bailing out before we crash harder", SvPVX (PL_linestr));
	}
	Copy (new_chars, SvPVX (PL_linestr), new_len + 1, char);
	SvCUR_set (PL_linestr, new_len);
	PL_bufend = SvPVX(PL_linestr) + new_len;

SV *
hook_parser_get_lex_stuff ()
CODE:
	if (NOT_PARSING || !PL_lex_stuff) {
		RETVAL = &PL_sv_undef;
	}
	RETVAL = newSVsv (PL_lex_stuff);
OUTPUT:
	RETVAL

void
hook_parser_clear_lex_stuff ()
	C_ARGS:
		aTHX

MODULE = B::Hooks::Parser  PACKAGE = B::Hooks::Toke  PREFIX = hook_toke_

int
hook_toke_move_past_token (offset)
		int offset
	PREINIT:
		char *base_s, *s;
	CODE:
		base_s = SvPVX (PL_linestr) + offset;
		s = hook_toke_move_past_token (aTHX_ base_s);
		RETVAL = s - base_s;
	OUTPUT:
		RETVAL

void
hook_toke_scan_word (offset, handle_package)
		int offset
		int handle_package
	PREINIT:
		char tmpbuf[sizeof (PL_tokenbuf)];
		STRLEN retlen;
	PPCODE:
		(void)hook_toke_scan_word (aTHX_ offset, handle_package, tmpbuf, sizeof (PL_tokenbuf), &retlen);

		EXTEND (SP, 2);
		mPUSHp (tmpbuf, retlen);
		mPUSHi (retlen);

int
hook_toke_skipspace (offset)
		int offset
	PREINIT:
		char *base_s, *s;
	CODE:
		base_s = SvPVX (PL_linestr) + offset;
		s = hook_toke_skipspace (aTHX_ base_s);
		RETVAL = s - base_s;
	OUTPUT:
		RETVAL



( run in 0.468 second using v1.01-cache-2.11-cpan-71847e10f99 )