int SennaPerl_Global_bootstrap() { HV *stash; sen_rc rc; rc = sen_init(); if (rc != sen_success) { croak("Failed to call sen_init(). sen_init() returned %d", rc); } stash = gv_stashpv("Senna::Constants", 1); newCONSTSUB(stash, "LIBSENNA_VERSION", newSVpvf("%d.%d.%d", SENNA_MAJOR_VERSION, SENNA_MINOR_VERSION, SENNA_MICRO_VERSION ) ); newCONSTSUB(stash, "LIBSENNA_MAJOR_VERSION", newSViv(SENNA_MAJOR_VERSION)); newCONSTSUB(stash, "LIBSENNA_MINOR_VERSION", newSViv(SENNA_MINOR_VERSION)); newCONSTSUB(stash, "LIBSENNA_MICRO_VERSION", newSViv(SENNA_MICRO_VERSION)); SennaPerl_Index_bootstrap(); SennaPerl_Encoding_bootstrap(); SennaPerl_RC_bootstrap(); SennaPerl_Records_bootstrap(); SennaPerl_Symbol_bootstrap(); SennaPerl_Ctx_bootstrap(); return 1; }
void SennaPerl_Query_bootstrap() { HV *stash; stash = gv_stashpv("Senna::Constants", 1); newCONSTSUB(stash, "SEN_SEL_OR", newSViv(sen_sel_or)); newCONSTSUB(stash, "SEN_SEL_AND", newSViv(sen_sel_and)); newCONSTSUB(stash, "SEN_SEL_BUT", newSViv(sen_sel_but)); newCONSTSUB(stash, "SEN_SEL_ADJUST", newSViv(sen_sel_adjust)); }
void define_constants(const char *pkg, constval_t *cvp) { HV *stash; char *name; AV *constants; /* Create the new perl @_Constants variable. */ stash = gv_stashpv(pkg, TRUE); name = New(0, name, strlen(pkg) + sizeof (CONST_NAME), char); PERL_ASSERT(name != NULL); strcpy(name, pkg); strcat(name, CONST_NAME); constants = perl_get_av(name, TRUE); Safefree(name); /* Populate @_Constants from the contents of the generated array. */ for (; cvp->name != NULL; cvp++) { newCONSTSUB(stash, (char *)cvp->name, newSVuv(cvp->value)); av_push(constants, newSVpvn((char *)cvp->name, cvp->len)); } }
static void boot_B_Sizeof(void) { HV *stash = gv_stashpvn("B::Sizeof", 9, TRUE); (void)newCONSTSUB(stash, "OP", newSViv(sizeof(OP))); (void)newCONSTSUB(stash, "PMOP", newSViv(sizeof(PMOP))); (void)newCONSTSUB(stash, "UNOP", newSViv(sizeof(UNOP))); (void)newCONSTSUB(stash, "BINOP", newSViv(sizeof(BINOP))); (void)newCONSTSUB(stash, "LISTOP", newSViv(sizeof(LISTOP))); (void)newCONSTSUB(stash, "LOGOP", newSViv(sizeof(LOGOP))); (void)newCONSTSUB(stash, "SVOP", newSViv(sizeof(SVOP))); (void)newCONSTSUB(stash, "GVOP", newSViv(sizeof(GVOP))); (void)newCONSTSUB(stash, "PVOP", newSViv(sizeof(PVOP))); (void)newCONSTSUB(stash, "COP", newSViv(sizeof(COP))); (void)newCONSTSUB(stash, "LOOP", newSViv(sizeof(LOOP))); (void)newCONSTSUB(stash, "SV", newSViv(sizeof(SV))); (void)newCONSTSUB(stash, "HV", newSViv(sizeof(HV))); (void)newCONSTSUB(stash, "AV", newSViv(sizeof(AV))); (void)newCONSTSUB(stash, "NV", newSViv(sizeof(NV))); (void)newCONSTSUB(stash, "IV", newSViv(sizeof(IV))); (void)newCONSTSUB(stash, "CV", newSViv(sizeof(CV))); (void)newCONSTSUB(stash, "GV", newSViv(sizeof(GV))); (void)newCONSTSUB(stash, "GP", newSViv(sizeof(GP))); (void)newCONSTSUB(stash, "U32", newSViv(sizeof(U32))); (void)newCONSTSUB(stash, "U16", newSViv(sizeof(U16))); (void)newCONSTSUB(stash, "U8", newSViv(sizeof(U8))); #ifdef XRV (void)newCONSTSUB(stash, "XRV", newSViv(sizeof(XRV))); #endif (void)newCONSTSUB(stash, "XPV", newSViv(sizeof(XPV))); (void)newCONSTSUB(stash, "XPVIV", newSViv(sizeof(XPVIV))); (void)newCONSTSUB(stash, "XPVUV", newSViv(sizeof(XPVUV))); (void)newCONSTSUB(stash, "XPVNV", newSViv(sizeof(XPVNV))); (void)newCONSTSUB(stash, "XPVMG", newSViv(sizeof(XPVMG))); (void)newCONSTSUB(stash, "XPVLV", newSViv(sizeof(XPVLV))); (void)newCONSTSUB(stash, "XPVGV", newSViv(sizeof(XPVGV))); #ifdef XPVBM (void)newCONSTSUB(stash, "XPVBM", newSViv(sizeof(XPVBM))); #endif (void)newCONSTSUB(stash, "XPVFM", newSViv(sizeof(XPVFM))); (void)newCONSTSUB(stash, "XPVIO", newSViv(sizeof(XPVIO))); (void)newCONSTSUB(stash, "XPVCV", newSViv(sizeof(XPVCV))); (void)newCONSTSUB(stash, "XPVAV", newSViv(sizeof(XPVAV))); (void)newCONSTSUB(stash, "XPVHV", newSViv(sizeof(XPVHV))); (void)newCONSTSUB(stash, "HE", newSViv(sizeof(HE))); (void)newCONSTSUB(stash, "HEK", newSViv(sizeof(HEK))); (void)newCONSTSUB(stash, "MAGIC", newSViv(sizeof(MAGIC))); (void)newCONSTSUB(stash, "REGEXP", newSViv(sizeof(REGEXP))); }
/* xs_init is the second argument perl_parse. As the name hints, it initializes XS subroutines (see the perlembed manpage) */ static void xs_init (pTHX) { HV *stash; SV *version; /* This one allows dynamic loading of perl modules in perl scripts by the 'use perlmod;' construction */ newXS ("DynaLoader::boot_DynaLoader", boot_DynaLoader, __FILE__); /* load up all the custom IRC perl functions */ newXS ("Xchat::Internal::register", XS_Xchat_register, __FILE__); newXS ("Xchat::Internal::hook_server", XS_Xchat_hook_server, __FILE__); newXS ("Xchat::Internal::hook_command", XS_Xchat_hook_command, __FILE__); newXS ("Xchat::Internal::hook_print", XS_Xchat_hook_print, __FILE__); newXS ("Xchat::Internal::hook_timer", XS_Xchat_hook_timer, __FILE__); newXS ("Xchat::Internal::hook_fd", XS_Xchat_hook_fd, __FILE__); newXS ("Xchat::Internal::unhook", XS_Xchat_unhook, __FILE__); newXS ("Xchat::Internal::print", XS_Xchat_print, __FILE__); newXS ("Xchat::Internal::command", XS_Xchat_command, __FILE__); newXS ("Xchat::Internal::set_context", XS_Xchat_set_context, __FILE__); newXS ("Xchat::Internal::get_info", XS_Xchat_get_info, __FILE__); newXS ("Xchat::Internal::context_info", XS_Xchat_context_info, __FILE__); newXS ("Xchat::Internal::get_list", XS_Xchat_get_list, __FILE__); newXS ("Xchat::find_context", XS_Xchat_find_context, __FILE__); newXS ("Xchat::get_context", XS_Xchat_get_context, __FILE__); newXS ("Xchat::get_prefs", XS_Xchat_get_prefs, __FILE__); newXS ("Xchat::emit_print", XS_Xchat_emit_print, __FILE__); newXS ("Xchat::send_modes", XS_Xchat_send_modes, __FILE__); newXS ("Xchat::nickcmp", XS_Xchat_nickcmp, __FILE__); newXS ("Xchat::Embed::plugingui_remove", XS_Xchat_Embed_plugingui_remove, __FILE__); stash = get_hv ("Xchat::", TRUE); if (stash == NULL) { exit (1); } newCONSTSUB (stash, "PRI_HIGHEST", newSViv (XCHAT_PRI_HIGHEST)); newCONSTSUB (stash, "PRI_HIGH", newSViv (XCHAT_PRI_HIGH)); newCONSTSUB (stash, "PRI_NORM", newSViv (XCHAT_PRI_NORM)); newCONSTSUB (stash, "PRI_LOW", newSViv (XCHAT_PRI_LOW)); newCONSTSUB (stash, "PRI_LOWEST", newSViv (XCHAT_PRI_LOWEST)); newCONSTSUB (stash, "EAT_NONE", newSViv (XCHAT_EAT_NONE)); newCONSTSUB (stash, "EAT_XCHAT", newSViv (XCHAT_EAT_XCHAT)); newCONSTSUB (stash, "EAT_PLUGIN", newSViv (XCHAT_EAT_PLUGIN)); newCONSTSUB (stash, "EAT_ALL", newSViv (XCHAT_EAT_ALL)); newCONSTSUB (stash, "FD_READ", newSViv (XCHAT_FD_READ)); newCONSTSUB (stash, "FD_WRITE", newSViv (XCHAT_FD_WRITE)); newCONSTSUB (stash, "FD_EXCEPTION", newSViv (XCHAT_FD_EXCEPTION)); newCONSTSUB (stash, "FD_NOTSOCKET", newSViv (XCHAT_FD_NOTSOCKET)); newCONSTSUB (stash, "KEEP", newSViv (1)); newCONSTSUB (stash, "REMOVE", newSViv (0)); version = get_sv( "Xchat::VERSION", 1 ); sv_setpv( version, PACKAGE_VERSION ); }
void test3(void) { newCONSTSUB(gv_stashpv("Devel::PPPort", FALSE), "test_value_3", newSViv(3)); }