Fix SF #1943608 - substitution in %contract.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10440 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
05a57239d0
commit
528ea7a313
3 changed files with 21 additions and 3 deletions
|
|
@ -1,6 +1,10 @@
|
||||||
Version 1.3.36 (in progress)
|
Version 1.3.36 (in progress)
|
||||||
=============================
|
=============================
|
||||||
|
|
||||||
|
05/11/2008: wsfulton
|
||||||
|
Fix SF #1943608 - $self substitution in %contract, patch submitted by
|
||||||
|
Toon Verstraelen.
|
||||||
|
|
||||||
05/09/2008: olly
|
05/09/2008: olly
|
||||||
[PHP] Fix char * typemaps to work when applied to signed char * and
|
[PHP] Fix char * typemaps to work when applied to signed char * and
|
||||||
unsigned char * (uncovered by testcase apply_strings).
|
unsigned char * (uncovered by testcase apply_strings).
|
||||||
|
|
|
||||||
|
|
@ -176,7 +176,6 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
class D : public C {
|
class D : public C {
|
||||||
public:
|
|
||||||
public:
|
public:
|
||||||
virtual int foo(int a, int b, int c, int d, int e) {
|
virtual int foo(int a, int b, int c, int d, int e) {
|
||||||
return C::foo(a,b,c,d,e);
|
return C::foo(a,b,c,d,e);
|
||||||
|
|
@ -187,3 +186,18 @@ public:
|
||||||
};
|
};
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
%extend E {
|
||||||
|
%contract manipulate_i(int i) {
|
||||||
|
require:
|
||||||
|
i <= $self->m_i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
%inline %{
|
||||||
|
struct E {
|
||||||
|
int m_i;
|
||||||
|
void manipulate_i(int i) {
|
||||||
|
}
|
||||||
|
};
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -220,14 +220,14 @@ String *Contracts::make_expression(String *s, Node *n) {
|
||||||
|
|
||||||
/* This function substitutes parameter names for argument names in the
|
/* This function substitutes parameter names for argument names in the
|
||||||
contract specification. Note: it is assumed that the wrapper code
|
contract specification. Note: it is assumed that the wrapper code
|
||||||
uses arg1--argn for arguments. */
|
uses arg1 for self and arg2..argn for arguments. */
|
||||||
|
|
||||||
void Contracts::substitute_parms(String *s, ParmList *p, int method) {
|
void Contracts::substitute_parms(String *s, ParmList *p, int method) {
|
||||||
int argnum = 1;
|
int argnum = 1;
|
||||||
char argname[32];
|
char argname[32];
|
||||||
|
|
||||||
if (method) {
|
if (method) {
|
||||||
Replaceid(s, "self", "arg0");
|
Replaceid(s, "$self", "arg1");
|
||||||
argnum++;
|
argnum++;
|
||||||
}
|
}
|
||||||
while (p) {
|
while (p) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue