PageRenderTime 18ms CodeModel.GetById 14ms app.highlight 1ms RepoModel.GetById 1ms app.codeStats 0ms

/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%}