C-Blocks
view release on metacpan or search on metacpan
lib/C/Blocks.xs view on Meta::CPAN
SV * msg_SV = get_sv("C::Blocks::_msg", 0);
sv_setpv(msg_SV, msg);
}
void _c_blocks_send_bytes(char * msg, int bytes) {
dTHX;
SV * msg_SV = get_sv("C::Blocks::_msg", 0);
sv_setpvn(msg_SV, msg, bytes);
}
/*****************************************/
/**** Extended symbol table callbacks ****/
/*****************************************/
TokenSym_p my_symtab_lookup_by_name(char * name, int len, void * data, extended_symtab_p* containing_symtab) {
/* Unpack the callback data */
extended_symtab_callback_data * callback_data = (extended_symtab_callback_data*)data;
/* In all likelihood, name will *NOT* be null terminated */
char name_to_find[len + 1];
strncpy(name_to_find, name, len);
name_to_find[len] = '\0';
lib/C/Blocks.xs view on Meta::CPAN
int len = (int)(data->end - PL_bufptr);
/* Set the extended callback handling */
extended_symtab_callback_data callback_data = { state, aTHX_ NULL, 0 };
/* Set the extended symbol table lists if they exist */
if (SvPOK(data->exsymtabs) && SvCUR(data->exsymtabs)) {
callback_data.N_tables = SvCUR(data->exsymtabs) / sizeof(available_extended_symtab);
callback_data.available_extended_symtabs = (available_extended_symtab*) SvPV_nolen(data->exsymtabs);
}
tcc_set_extended_symtab_callbacks(state, &my_symtab_lookup_by_name,
&my_symtab_sym_used, &my_prep_table, &callback_data);
/* set the block function's argument, if any */
if (keyword_type == IS_CBLOCK) {
/* If this is a block, we need to define C_BLOCKS_THX_DECL.
* This will be based on whether tTHX is available or not. */
#ifdef PERL_IMPLICIT_CONTEXT
void * return_value_ignored;
if (my_symtab_lookup_by_name("aTHX", 4, &callback_data, (void*) &return_value_ignored))
tcc_define_symbol(state, "C_BLOCKS_THX_DECL", "PerlInterpreter * my_perl");
( run in 0.514 second using v1.01-cache-2.11-cpan-9b1e4054eb1 )