/trunk/Lib/perl5/perlinit.swg
Unknown | 81 lines | 71 code | 10 blank | 0 comment | 0 complexity | 40feb969f81f2ecf1f2c7906d6926bf6 MD5 | raw file
1 2/* Export the SWIG initialization function */ 3%header %{ 4#ifdef __cplusplus 5extern "C" 6#endif 7#ifndef PERL_OBJECT 8#ifndef MULTIPLICITY 9SWIGEXPORT void SWIG_init (CV* cv); 10#else 11SWIGEXPORT void SWIG_init (pTHXo_ CV* cv); 12#endif 13#else 14SWIGEXPORT void SWIG_init (CV *cv, CPerlObj *); 15#endif 16%} 17 18/* Module initialization function */ 19 20%insert(init) "swiginit.swg" 21 22%init %{ 23 24#ifdef __cplusplus 25extern "C" 26#endif 27 28XS(SWIG_init) { 29 dXSARGS; 30 int i; 31 32 SWIG_InitializeModule(0); 33 34 /* Install commands */ 35 for (i = 0; swig_commands[i].name; i++) { 36 // Casts only needed for Perl < 5.10. 37#ifdef __cplusplus 38 newXS(const_cast<char*>(swig_commands[i].name), swig_commands[i].wrapper, const_cast<char*>(__FILE__)); 39#else 40 newXS((char*)swig_commands[i].name, swig_commands[i].wrapper, (char*)__FILE__); 41#endif 42 } 43 44 /* Install variables */ 45 for (i = 0; swig_variables[i].name; i++) { 46 SV *sv; 47 sv = get_sv(swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI); 48 if (swig_variables[i].type) { 49 SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0); 50 } else { 51 sv_setiv(sv,(IV) 0); 52 } 53 swig_create_magic(sv, swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); 54 } 55 56 /* Install constant */ 57 for (i = 0; swig_constants[i].type; i++) { 58 SV *sv; 59 sv = get_sv(swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI); 60 switch(swig_constants[i].type) { 61 case SWIG_INT: 62 sv_setiv(sv, (IV) swig_constants[i].lvalue); 63 break; 64 case SWIG_FLOAT: 65 sv_setnv(sv, (double) swig_constants[i].dvalue); 66 break; 67 case SWIG_STRING: 68 sv_setpv(sv, (const char *) swig_constants[i].pvalue); 69 break; 70 case SWIG_POINTER: 71 SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0); 72 break; 73 case SWIG_BINARY: 74 SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype)); 75 break; 76 default: 77 break; 78 } 79 SvREADONLY_on(sv); 80 } 81%}