[Perl] Fix warnings when compiling generated wrappers with certain

GCC warning options (Debian bug #436711).


git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@12848 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Olly Betts 2011-11-28 06:56:16 +00:00
commit 5e4c27cdfd
3 changed files with 28 additions and 16 deletions

View file

@ -5,6 +5,10 @@ See the RELEASENOTES file for a summary of changes in each release.
Version 2.0.5 (in progress) Version 2.0.5 (in progress)
=========================== ===========================
2011-11-28: olly
[Perl] Fix warnings when compiling generated wrappers with certain
GCC warning options (Debian bug #436711).
2011-11-28: olly 2011-11-28: olly
[PHP] Update keyword list to include keywords added in PHP releases up to 5.3. [PHP] Update keyword list to include keywords added in PHP releases up to 5.3.

View file

@ -33,25 +33,30 @@ XS(SWIG_init) {
/* Install commands */ /* Install commands */
for (i = 0; swig_commands[i].name; i++) { for (i = 0; swig_commands[i].name; i++) {
newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__); // Casts only needed for Perl < 5.10.
#ifdef __cplusplus
newXS(const_cast<char*>(swig_commands[i].name), swig_commands[i].wrapper, const_cast<char*>(__FILE__));
#else
newXS((char*)swig_commands[i].name, swig_commands[i].wrapper, (char*)__FILE__);
#endif
} }
/* Install variables */ /* Install variables */
for (i = 0; swig_variables[i].name; i++) { for (i = 0; swig_variables[i].name; i++) {
SV *sv; SV *sv;
sv = get_sv((char*) swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI); sv = get_sv(swig_variables[i].name, TRUE | 0x2 | GV_ADDMULTI);
if (swig_variables[i].type) { if (swig_variables[i].type) {
SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0); SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
} else { } else {
sv_setiv(sv,(IV) 0); sv_setiv(sv,(IV) 0);
} }
swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get); swig_create_magic(sv, swig_variables[i].name, swig_variables[i].set, swig_variables[i].get);
} }
/* Install constant */ /* Install constant */
for (i = 0; swig_constants[i].type; i++) { for (i = 0; swig_constants[i].type; i++) {
SV *sv; SV *sv;
sv = get_sv((char*)swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI); sv = get_sv(swig_constants[i].name, TRUE | 0x2 | GV_ADDMULTI);
switch(swig_constants[i].type) { switch(swig_constants[i].type) {
case SWIG_INT: case SWIG_INT:
sv_setiv(sv, (IV) swig_constants[i].lvalue); sv_setiv(sv, (IV) swig_constants[i].lvalue);
@ -60,7 +65,7 @@ XS(SWIG_init) {
sv_setnv(sv, (double) swig_constants[i].dvalue); sv_setnv(sv, (double) swig_constants[i].dvalue);
break; break;
case SWIG_STRING: case SWIG_STRING:
sv_setpv(sv, (char *) swig_constants[i].pvalue); sv_setpv(sv, (const char *) swig_constants[i].pvalue);
break; break;
case SWIG_POINTER: case SWIG_POINTER:
SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0); SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);

View file

@ -212,8 +212,7 @@ SWIG_TypeProxyCheck(const char *c, swig_type_info *ty) {
if (ty) { if (ty) {
swig_cast_info *iter = ty->cast; swig_cast_info *iter = ty->cast;
while (iter) { while (iter) {
if ( (!iter->type->clientdata && (strcmp(iter->type->name, c) == 0)) || if (strcmp(SWIG_Perl_TypeProxyName(iter->type), c) == 0) {
(iter->type->clientdata && (strcmp((char*)iter->type->clientdata, c) == 0)) ) {
if (iter == ty->cast) if (iter == ty->cast)
return iter; return iter;
/* Move iter to the top of the linked list */ /* Move iter to the top of the linked list */
@ -344,7 +343,7 @@ SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, i
SV *obj=newSV(0); SV *obj=newSV(0);
HV *hash=newHV(); HV *hash=newHV();
HV *stash; HV *stash;
sv_setref_pv(obj, (char *) SWIG_Perl_TypeProxyName(t), ptr); sv_setref_pv(obj, SWIG_Perl_TypeProxyName(t), ptr);
stash=SvSTASH(SvRV(obj)); stash=SvSTASH(SvRV(obj));
if (flags & SWIG_POINTER_OWN) { if (flags & SWIG_POINTER_OWN) {
HV *hv; HV *hv;
@ -362,7 +361,7 @@ SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, i
sv_bless(sv, stash); sv_bless(sv, stash);
} }
else { else {
sv_setref_pv(sv, (char *) SWIG_Perl_TypeProxyName(t), ptr); sv_setref_pv(sv, SWIG_Perl_TypeProxyName(t), ptr);
} }
} }
@ -453,19 +452,23 @@ typedef struct {
/* Magic variable code */ /* Magic variable code */
#ifndef PERL_OBJECT #ifndef PERL_OBJECT
#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c) # ifdef __cplusplus
#ifndef MULTIPLICITY # define swig_create_magic(s,a,b,c) _swig_create_magic(s,const_cast<char*>(a),b,c)
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) # else
#else # define swig_create_magic(s,a,b,c) _swig_create_magic(s,(char*)(a),b,c)
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) # endif
#endif # ifndef MULTIPLICITY
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *))
# else
SWIGRUNTIME void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *))
# endif
#else #else
# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c) # define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) SWIGRUNTIME void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *))
#endif #endif
{ {
MAGIC *mg; MAGIC *mg;
sv_magic(sv,sv,'U',(char *) name,strlen(name)); sv_magic(sv,sv,'U',name,strlen(name));
mg = mg_find(sv,'U'); mg = mg_find(sv,'U');
mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL)); mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
mg->mg_virtual->svt_get = (SwigMagicFunc) get; mg->mg_virtual->svt_get = (SwigMagicFunc) get;