API cleanup. Documentation
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@9631 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
52dcbb9001
commit
c12550e4ad
27 changed files with 642 additions and 677 deletions
|
|
@ -18,11 +18,11 @@ The following documentation describe the internal APIs used by SWIG. These may
|
|||
<li><a href="file.html">File handling functions</a>
|
||||
<li><a href="cmdopt.html">Command line arguments</a>
|
||||
<li><a href="tree.html">Parse tree navigation and manipulation</a>
|
||||
|
||||
<li><a href="parm.html">Parameter and Parameter list handling functions</a>
|
||||
</ul>
|
||||
|
||||
<hr>
|
||||
Copyright (C) 1999-2004 SWIG Development Team.
|
||||
Copyright (C) 1999-2007 SWIG Development Team.
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
|||
108
Doc/Devel/parm.html
Normal file
108
Doc/Devel/parm.html
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>SWIG Parameter Handling</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<center>
|
||||
<h1>SWIG Parameter Handling</h1>
|
||||
|
||||
<p>
|
||||
David M. Beazley <br>
|
||||
dave-swig@dabeaz.com<br>
|
||||
January 2, 2007<br>
|
||||
|
||||
</b>
|
||||
</center>
|
||||
|
||||
<h2>Introduction</h2>
|
||||
|
||||
This document describes the functions related to management of function parameters and parameter lists in the SWIG core. These functions are declared in <tt>Source/Swig/swigparm.h</tt>. This API is considered to be stable.
|
||||
|
||||
<h2>Parameters</h2>
|
||||
|
||||
The following utility functions are used to create and copy individual parameters. In their most basic form, a parameter merely contains a type, a name, and an optional default value.
|
||||
|
||||
<p>
|
||||
<b><tt>Parm *NewParm(SwigType *type, const String_or_char *name)</tt></b>
|
||||
|
||||
<blockquote>
|
||||
Creates a new parameter object with type <tt>type</tt> and name <tt>name</tt>. The type is stored in the attribute "type" and the name is stored in the attribute "name".
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>Parm *CopyParm(Parm *p)</tt></b>
|
||||
<blockquote>
|
||||
Copies a parameter object. All string attributes are copied in the
|
||||
process of making the copy. However, no complex attributes (lists,
|
||||
hashes, etc.) are copied.
|
||||
</blockquote>
|
||||
|
||||
<h2>Parameter Lists</h2>
|
||||
|
||||
<p>
|
||||
<b><tt>ParmList *CopyParmList(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Creates a copy of a parameter list. A parameter list is merely a linked list of parameters created by NewParm().
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>ParmList *CopyParmListMax(ParmList *p, int count)</tt></b>
|
||||
<blockquote>
|
||||
Copies at most <tt>count</tt> parameters from the parameter list <tt>p</tt>.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>int ParmList_len(ParmList *p)</tt></b>
|
||||
|
||||
<blockquote>
|
||||
Returns the total number of parameters in a parameter list.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>int ParmList_numarg(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Returns the number of non-ignored parameters in a parameter list. Any parameter with an "ignore" attribute is ignored in the count.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>int ParmList_numrequired(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Returns the number of required parameters in a parameter list. This pertains to invoking a function/method in C/C++.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>int ParmList_has_defaultargs(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Returns 1 if the parameter list has any default arguments. Otherwise returns 0.
|
||||
</blockquote>
|
||||
|
||||
|
||||
<h2>Code Generation Functions</h2>
|
||||
|
||||
<p>
|
||||
<b><tt>String *ParmList_str(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Creates a C prototype string of the parameters, but without any default values.
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>String *ParmList_str_defaultargs(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Creates a C prototype string of the parameters and includes the default values (if any).
|
||||
</blockquote>
|
||||
|
||||
<p>
|
||||
<b><tt>String *ParmList_protostr(ParmList *p)</tt></b>
|
||||
<blockquote>
|
||||
Creates a C prototype string of the parameters. Does not include any hidden parameters.
|
||||
</blockquote>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -323,7 +323,7 @@ static void add_symbols(Node *n) {
|
|||
*/
|
||||
String *prefix = name ? Swig_scopename_prefix(name) : 0;
|
||||
if (prefix) {
|
||||
if (Classprefix && (StringEqual(prefix,Classprefix))) {
|
||||
if (Classprefix && (Equal(prefix,Classprefix))) {
|
||||
String *base = Swig_scopename_last(name);
|
||||
Setattr(n,k_name,base);
|
||||
Delete(base);
|
||||
|
|
@ -1235,7 +1235,7 @@ static void default_arguments(Node *n) {
|
|||
|| GetFlag(function,"feature:kwargs")) {
|
||||
ParmList *p = Getattr(function,k_parms);
|
||||
if (p)
|
||||
Setattr(p,k_compactdefargs, "1"); /* mark parameters for special handling */
|
||||
Setattr(p,"compactdefargs", "1"); /* mark parameters for special handling */
|
||||
function = 0; /* don't add in extra methods */
|
||||
}
|
||||
}
|
||||
|
|
@ -1680,7 +1680,7 @@ extend_directive : EXTEND options idcolon LBRACE {
|
|||
|
||||
apply_directive : APPLY typemap_parm LBRACE tm_list RBRACE {
|
||||
$$ = new_node("apply");
|
||||
Setattr($$,k_pattern,Getattr($2,k_pattern));
|
||||
Setattr($$,"pattern",Getattr($2,"pattern"));
|
||||
appendChild($$,$4);
|
||||
};
|
||||
|
||||
|
|
@ -1830,7 +1830,7 @@ fragment_directive: FRAGMENT LPAREN fname COMMA kwargs RPAREN HBLOCK {
|
|||
$$ = new_node("fragment");
|
||||
Setattr($$,k_value,Getattr($3,k_value));
|
||||
Setattr($$,k_type,Getattr($3,k_type));
|
||||
Setattr($$,k_section,Getattr(p,k_name));
|
||||
Setattr($$,"section",Getattr(p,k_name));
|
||||
Setattr($$,k_kwargs,nextSibling(p));
|
||||
Setattr($$,k_code,$7);
|
||||
}
|
||||
|
|
@ -1841,7 +1841,7 @@ fragment_directive: FRAGMENT LPAREN fname COMMA kwargs RPAREN HBLOCK {
|
|||
$$ = new_node("fragment");
|
||||
Setattr($$,k_value,Getattr($3,k_value));
|
||||
Setattr($$,k_type,Getattr($3,k_type));
|
||||
Setattr($$,k_section,Getattr(p,k_name));
|
||||
Setattr($$,"section",Getattr(p,k_name));
|
||||
Setattr($$,k_kwargs,nextSibling(p));
|
||||
Delitem(scanner_ccode,0);
|
||||
Delitem(scanner_ccode,DOH_END);
|
||||
|
|
@ -1980,7 +1980,7 @@ insert_directive : HBLOCK {
|
|||
| INSERT LPAREN idstring RPAREN string {
|
||||
String *code = NewStringEmpty();
|
||||
$$ = new_node("insert");
|
||||
Setattr($$,k_section,$3);
|
||||
Setattr($$,"section",$3);
|
||||
Setattr($$,k_code,code);
|
||||
if (Swig_insert_file($5,code) < 0) {
|
||||
Swig_error(cparse_file, cparse_line, "Couldn't find '%s'.\n", $5);
|
||||
|
|
@ -1989,14 +1989,14 @@ insert_directive : HBLOCK {
|
|||
}
|
||||
| INSERT LPAREN idstring RPAREN HBLOCK {
|
||||
$$ = new_node("insert");
|
||||
Setattr($$,k_section,$3);
|
||||
Setattr($$,"section",$3);
|
||||
Setattr($$,k_code,$5);
|
||||
}
|
||||
| INSERT LPAREN idstring RPAREN LBRACE {
|
||||
String *code;
|
||||
skip_balanced('{','}');
|
||||
$$ = new_node("insert");
|
||||
Setattr($$,k_section,$3);
|
||||
Setattr($$,"section",$3);
|
||||
Delitem(scanner_ccode,0);
|
||||
Delitem(scanner_ccode,DOH_END);
|
||||
code = Copy(scanner_ccode);
|
||||
|
|
@ -2432,7 +2432,7 @@ typemap_directive : TYPEMAP LPAREN typemap_type RPAREN tm_list stringbrace {
|
|||
if ($3.op) {
|
||||
$$ = new_node("typemapcopy");
|
||||
Setattr($$,"method",$3.op);
|
||||
Setattr($$,k_pattern, Getattr($7,k_pattern));
|
||||
Setattr($$,"pattern", Getattr($7,"pattern"));
|
||||
appendChild($$,$5);
|
||||
}
|
||||
}
|
||||
|
|
@ -2483,7 +2483,7 @@ typemap_parm : type typemap_parameter_declarator {
|
|||
SwigType_push($1,$2.type);
|
||||
$$ = new_node("typemapitem");
|
||||
parm = NewParm($1,$2.id);
|
||||
Setattr($$,k_pattern,parm);
|
||||
Setattr($$,"pattern",parm);
|
||||
Setattr($$,k_parms, $2.parms);
|
||||
Delete(parm);
|
||||
/* $$ = NewParm($1,$2.id);
|
||||
|
|
@ -2491,12 +2491,12 @@ typemap_parm : type typemap_parameter_declarator {
|
|||
}
|
||||
| LPAREN parms RPAREN {
|
||||
$$ = new_node("typemapitem");
|
||||
Setattr($$,k_pattern,$2);
|
||||
Setattr($$,"pattern",$2);
|
||||
/* Setattr($$,"multitype",$2); */
|
||||
}
|
||||
| LPAREN parms RPAREN LPAREN parms RPAREN {
|
||||
$$ = new_node("typemapitem");
|
||||
Setattr($$,k_pattern, $2);
|
||||
Setattr($$,"pattern", $2);
|
||||
/* Setattr($$,"multitype",$2); */
|
||||
Setattr($$,k_parms,$5);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
if (Getattr(n, k_error))
|
||||
return 0;
|
||||
|
||||
if (StringEqual(nodeType, k_template)) {
|
||||
if (Equal(nodeType, k_template)) {
|
||||
/* Change the node type back to normal */
|
||||
if (!expanded) {
|
||||
expanded = 1;
|
||||
|
|
@ -74,7 +74,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
set_nodeType(n, k_template);
|
||||
return ret;
|
||||
}
|
||||
} else if (StringEqual(nodeType, k_cdecl)) {
|
||||
} else if (Equal(nodeType, k_cdecl)) {
|
||||
/* A simple C declaration */
|
||||
SwigType *t, *v, *d;
|
||||
String *code;
|
||||
|
|
@ -99,7 +99,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
add_parms(Getattr(n, k_parms), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, k_throws), cpatchlist, typelist);
|
||||
|
||||
} else if (StringEqual(nodeType, k_class)) {
|
||||
} else if (Equal(nodeType, k_class)) {
|
||||
/* Patch base classes */
|
||||
{
|
||||
int b = 0;
|
||||
|
|
@ -124,7 +124,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
cn = nextSibling(cn);
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(nodeType, k_constructor)) {
|
||||
} else if (Equal(nodeType, "constructor")) {
|
||||
String *name = Getattr(n, k_name);
|
||||
if (!(Getattr(n, k_templatetype))) {
|
||||
String *symname;
|
||||
|
|
@ -165,7 +165,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
Append(typelist, Getattr(n, k_decl));
|
||||
add_parms(Getattr(n, k_parms), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, k_throws), cpatchlist, typelist);
|
||||
} else if (StringEqual(nodeType, k_destructor)) {
|
||||
} else if (Equal(nodeType, "destructor")) {
|
||||
String *name = Getattr(n, k_name);
|
||||
if (name && strchr(Char(name), '<')) {
|
||||
Append(patchlist, Getattr(n, k_name));
|
||||
|
|
@ -182,7 +182,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
}
|
||||
/* Setattr(n,k_symname,name); */
|
||||
Append(cpatchlist, Getattr(n, k_code));
|
||||
} else if (StringEqual(nodeType, k_using)) {
|
||||
} else if (Equal(nodeType, k_using)) {
|
||||
String *uname = Getattr(n, k_uname);
|
||||
if (uname && strchr(Char(uname), '<')) {
|
||||
Append(patchlist, uname);
|
||||
|
|
@ -199,7 +199,7 @@ static int cparse_template_expand(Node *n, String *tname, String *rname, String
|
|||
Append(typelist, Getattr(n, k_decl));
|
||||
add_parms(Getattr(n, k_parms), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, k_kwargs), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, k_pattern), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, "pattern"), cpatchlist, typelist);
|
||||
add_parms(Getattr(n, k_throws), cpatchlist, typelist);
|
||||
cn = firstChild(n);
|
||||
while (cn) {
|
||||
|
|
@ -472,7 +472,7 @@ static Node *template_locate(String *name, Parm *tparms, Symtab *tscope) {
|
|||
n = Swig_symbol_clookup_local(tname, 0);
|
||||
if (!n) {
|
||||
SwigType *rname = Swig_symbol_typedef_reduce(tname, tscope);
|
||||
if (!StringEqual(rname, tname)) {
|
||||
if (!Equal(rname, tname)) {
|
||||
if (template_debug) {
|
||||
Printf(stdout, " searching: '%s' (exact specialization)\n", rname);
|
||||
}
|
||||
|
|
@ -483,7 +483,7 @@ static Node *template_locate(String *name, Parm *tparms, Symtab *tscope) {
|
|||
if (n) {
|
||||
Node *tn;
|
||||
String *nodeType = nodeType(n);
|
||||
if (StringEqual(nodeType, k_template))
|
||||
if (Equal(nodeType, k_template))
|
||||
goto success;
|
||||
tn = Getattr(n, k_template);
|
||||
if (tn) {
|
||||
|
|
@ -562,7 +562,7 @@ static Node *template_locate(String *name, Parm *tparms, Symtab *tscope) {
|
|||
if (template_debug) {
|
||||
Printf(stdout, " searching: '%s' (partial specialization - %s)\n", ss, pi.item);
|
||||
}
|
||||
if ((StringEqual(ss, tname)) || (StringEqual(ss, rname))) {
|
||||
if ((Equal(ss, tname)) || (Equal(ss, rname))) {
|
||||
Append(mpartials, pi.item);
|
||||
}
|
||||
Delete(ss);
|
||||
|
|
@ -592,7 +592,7 @@ static Node *template_locate(String *name, Parm *tparms, Symtab *tscope) {
|
|||
Swig_error(cparse_file, cparse_line, "Template '%s' undefined.\n", name);
|
||||
} else if (n) {
|
||||
String *nodeType = nodeType(n);
|
||||
if (!StringEqual(nodeType, k_template)) {
|
||||
if (!Equal(nodeType, k_template)) {
|
||||
Swig_error(cparse_file, cparse_line, "'%s' is not defined as a template. (%s)\n", name, nodeType);
|
||||
n = 0;
|
||||
}
|
||||
|
|
@ -625,8 +625,8 @@ Node *Swig_cparse_template_locate(String *name, Parm *tparms, Symtab *tscope) {
|
|||
if (n) {
|
||||
String *nodeType = nodeType(n);
|
||||
int isclass = 0;
|
||||
assert(StringEqual(nodeType, k_template));
|
||||
isclass = (StringEqual(Getattr(n, k_templatetype), k_class));
|
||||
assert(Equal(nodeType, k_template));
|
||||
isclass = (Equal(Getattr(n, k_templatetype), k_class));
|
||||
if (!isclass) {
|
||||
/* If not a templated class we must have a templated function.
|
||||
The template found is not necessarily the one we want when dealing with templated
|
||||
|
|
|
|||
|
|
@ -73,17 +73,6 @@
|
|||
#define DohGetc DOH_NAMESPACE(Getc)
|
||||
#define DohPutc DOH_NAMESPACE(Putc)
|
||||
#define DohUngetc DOH_NAMESPACE(Ungetc)
|
||||
|
||||
#define DohStringPutc DOH_NAMESPACE(StringPutc)
|
||||
#define DohStringGetc DOH_NAMESPACE(StringGetc)
|
||||
#define DohStringUngetc DOH_NAMESPACE(StringUngetc)
|
||||
#define DohStringAppend DOH_NAMESPACE(StringAppend)
|
||||
#define DohStringLen DOH_NAMESPACE(StringLen)
|
||||
#define DohStringChar DOH_NAMESPACE(StringChar)
|
||||
#define DohStringEqual DOH_NAMESPACE(StringEqual)
|
||||
|
||||
|
||||
|
||||
#define DohGetline DOH_NAMESPACE(Getline)
|
||||
#define DohSetline DOH_NAMESPACE(Setline)
|
||||
#define DohGetfile DOH_NAMESPACE(Getfile)
|
||||
|
|
@ -255,23 +244,6 @@ extern void DohSetfile(DOH *obj, DOH *file);
|
|||
extern int DohReplace(DOHString * src, const DOHString_or_char *token, const DOHString_or_char *rep, int flags);
|
||||
extern void DohChop(DOHString * src);
|
||||
|
||||
extern int DohString_putc(DOH *so, int ch);
|
||||
extern int DohString_getc(DOH *so);
|
||||
extern int DohString_ungetc(DOH *so, int ch);
|
||||
extern void DohString_append(DOH *so, DOH *str);
|
||||
extern int DohString_len(DOH *s1);
|
||||
extern char *DohString_char(DOH *s1);
|
||||
extern int DohString_equal(DOH *s1, DOH *s2);
|
||||
extern int DohString_delslice(DOH *so, int sindex, int eindex);
|
||||
|
||||
#define DohStringPutc(ch,so) DohString_putc(so, ch)
|
||||
#define DohStringGetc(so) DohString_getc(so)
|
||||
#define DohStringUngetc(ch,so) DohString_ungetc(so, ch)
|
||||
#define DohStringAppend(so,str) DohString_append(so, (DOH*)str)
|
||||
#define DohStringLen(so) DohString_len((DOH*)so)
|
||||
#define DohStringChar(so) DohString_char(so)
|
||||
#define DohStringEqual(s1,s2) DohString_equal((DOH *)s1, (DOH *)s2)
|
||||
|
||||
/* Meta-variables */
|
||||
extern DOH *DohGetmeta(DOH *, const DOH *);
|
||||
extern int DohSetmeta(DOH *, const DOH *, const DOH *value);
|
||||
|
|
@ -397,13 +369,13 @@ extern void DohMemoryDebug(void);
|
|||
#define Putc DohPutc
|
||||
#define Ungetc DohUngetc
|
||||
|
||||
#define StringPutc DohStringPutc
|
||||
#define StringGetc DohStringGetc
|
||||
#define StringUngetc DohStringUngetc
|
||||
#define StringAppend DohStringAppend
|
||||
#define StringLen DohStringLen
|
||||
#define StringChar DohStringChar
|
||||
#define StringEqual DohStringEqual
|
||||
/* #define StringPutc DohStringPutc */
|
||||
/* #define StringGetc DohStringGetc */
|
||||
/* #define StringUngetc DohStringUngetc */
|
||||
/* #define StringAppend Append */
|
||||
/* #define StringLen DohStringLen */
|
||||
/* #define StringChar DohStringChar */
|
||||
/* #define StringEqual DohStringEqual */
|
||||
|
||||
#define Close DohClose
|
||||
#define vPrintf DohvPrintf
|
||||
|
|
|
|||
|
|
@ -36,9 +36,10 @@ static void *String_data(DOH *so) {
|
|||
return (void *) s->str;
|
||||
}
|
||||
|
||||
char *DohString_char(DOH *so) {
|
||||
/* static char *String_char(DOH *so) {
|
||||
return (char *) String_data(so);
|
||||
}
|
||||
*/
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
* int String_dump() - Serialize a string onto out
|
||||
|
|
@ -97,7 +98,7 @@ static void DelString(DOH *so) {
|
|||
* DohString_len() - Length of a string
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int DohString_len(DOH *so) {
|
||||
static int String_len(DOH *so) {
|
||||
String *s = (String *) ObjData(so);
|
||||
return s->len;
|
||||
}
|
||||
|
|
@ -139,7 +140,7 @@ static int String_cmp(DOH *so1, DOH *so2) {
|
|||
* int String_equal() - Say if two string are equal
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int DohString_equal(DOH *so1, DOH *so2) {
|
||||
static int String_equal(DOH *so1, DOH *so2) {
|
||||
String *s1 = (String *) ObjData(so1);
|
||||
String *s2 = (String *) ObjData(so2);
|
||||
register int len = s1->len;
|
||||
|
|
@ -509,7 +510,7 @@ static long String_tell(DOH *so) {
|
|||
* int String_putc()
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int DohString_putc(DOH *so, int ch) {
|
||||
static int String_putc(DOH *so, int ch) {
|
||||
String *s = (String *) ObjData(so);
|
||||
register int len = s->len;
|
||||
register int sp = s->sp;
|
||||
|
|
@ -540,7 +541,7 @@ int DohString_putc(DOH *so, int ch) {
|
|||
* int String_getc()
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int DohString_getc(DOH *so) {
|
||||
static int String_getc(DOH *so) {
|
||||
int c;
|
||||
String *s = (String *) ObjData(so);
|
||||
if (s->sp >= s->len)
|
||||
|
|
@ -556,7 +557,7 @@ int DohString_getc(DOH *so) {
|
|||
* int String_ungetc()
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
int DohString_ungetc(DOH *so, int ch) {
|
||||
static int String_ungetc(DOH *so, int ch) {
|
||||
String *s = (String *) ObjData(so);
|
||||
if (ch == EOF)
|
||||
return ch;
|
||||
|
|
@ -968,9 +969,9 @@ static DohListMethods StringListMethods = {
|
|||
static DohFileMethods StringFileMethods = {
|
||||
String_read,
|
||||
String_write,
|
||||
DohString_putc,
|
||||
DohString_getc,
|
||||
DohString_ungetc,
|
||||
String_putc,
|
||||
String_getc,
|
||||
String_ungetc,
|
||||
String_seek,
|
||||
String_tell,
|
||||
0, /* close */
|
||||
|
|
@ -989,10 +990,10 @@ DohObjInfo DohStringType = {
|
|||
String_str, /* doh_str */
|
||||
String_data, /* doh_data */
|
||||
String_dump, /* doh_dump */
|
||||
DohString_len, /* doh_len */
|
||||
String_len, /* doh_len */
|
||||
String_hash, /* doh_hash */
|
||||
String_cmp, /* doh_cmp */
|
||||
DohString_equal, /* doh_equal */
|
||||
String_equal, /* doh_equal */
|
||||
0, /* doh_first */
|
||||
0, /* doh_next */
|
||||
String_setfile, /* doh_setfile */
|
||||
|
|
|
|||
|
|
@ -71,6 +71,7 @@ eswig_SOURCES = CParse/cscanner.c \
|
|||
Preprocessor/cpp.c \
|
||||
Preprocessor/expr.c \
|
||||
Swig/cwrap.c \
|
||||
Swig/deprecate.c \
|
||||
Swig/error.c \
|
||||
Swig/fragment.c \
|
||||
Swig/getopt.c \
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ int CFFI::functionWrapper(Node *n) {
|
|||
|
||||
String *wname = Swig_name_wrapper(iname);
|
||||
if (overname) {
|
||||
StringAppend(wname, overname);
|
||||
Append(wname, overname);
|
||||
}
|
||||
// Emit all of the local variables for holding arguments.
|
||||
emit_args(Getattr(n, "type"), parms, wrap);
|
||||
|
|
|
|||
|
|
@ -85,6 +85,13 @@ class CSHARP:public Language {
|
|||
|
||||
enum EnumFeature { SimpleEnum, TypeunsafeEnum, TypesafeEnum, ProperEnum };
|
||||
|
||||
static Parm *NewParmFromNode(SwigType *type, const String_or_char *name, Node *n) {
|
||||
Parm *p = NewParm(type, name);
|
||||
Setfile(p, Getfile(n));
|
||||
Setline(p, Getline(n));
|
||||
return p;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -81,6 +81,13 @@ class JAVA:public Language {
|
|||
|
||||
enum EnumFeature { SimpleEnum, TypeunsafeEnum, TypesafeEnum, ProperEnum };
|
||||
|
||||
static Parm *NewParmFromNode(SwigType *type, const String_or_char *name, Node *n) {
|
||||
Parm *p = NewParm(type, name);
|
||||
Setfile(p, Getfile(n));
|
||||
Setline(p, Getline(n));
|
||||
return p;
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
/* -----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -1142,7 +1142,7 @@ public:
|
|||
Replaceall(tm, "$input", source);
|
||||
Setattr(p, "emit:input", source);
|
||||
Printf(f->code, "%s\n", tm);
|
||||
if (i == 0 && Getattr(p, k_self)) {
|
||||
if (i == 0 && Getattr(p, "self")) {
|
||||
Printf(f->code, "\tif(!arg1) SWIG_PHP_Error(E_ERROR, \"this pointer is NULL\");\n");
|
||||
}
|
||||
p = Getattr(p, "tmap:in:next");
|
||||
|
|
|
|||
|
|
@ -866,12 +866,12 @@ class TypePass:private Dispatcher {
|
|||
String *ucode = is_void ? NewStringf("{ self->%s(", Getattr(n, "uname")) : NewStringf("{ return self->%s(", Getattr(n, "uname"));
|
||||
|
||||
for (ParmList *p = parms; p;) {
|
||||
StringAppend(ucode, Getattr(p, k_name));
|
||||
Append(ucode, Getattr(p, k_name));
|
||||
p = nextSibling(p);
|
||||
if (p)
|
||||
StringAppend(ucode, ",");
|
||||
Append(ucode, ",");
|
||||
}
|
||||
StringAppend(ucode, "); }");
|
||||
Append(ucode, "); }");
|
||||
Setattr(nn, "code", ucode);
|
||||
Delete(ucode);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,27 +40,27 @@ static int error_as_warning = 0; /* Understand the cpp #error directive as a spe
|
|||
/* Skip whitespace */
|
||||
static void skip_whitespace(String *s, String *out) {
|
||||
int c;
|
||||
while ((c = StringGetc(s)) != EOF) {
|
||||
while ((c = Getc(s)) != EOF) {
|
||||
if (!isspace(c)) {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
break;
|
||||
} else if (out)
|
||||
StringPutc(c, out);
|
||||
Putc(c, out);
|
||||
}
|
||||
}
|
||||
|
||||
/* Skip to a specified character taking line breaks into account */
|
||||
static int skip_tochar(String *s, int ch, String *out) {
|
||||
int c;
|
||||
while ((c = StringGetc(s)) != EOF) {
|
||||
while ((c = Getc(s)) != EOF) {
|
||||
if (out)
|
||||
StringPutc(c, out);
|
||||
Putc(c, out);
|
||||
if (c == ch)
|
||||
break;
|
||||
if (c == '\\') {
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
if ((c != EOF) && (out))
|
||||
StringPutc(c, out);
|
||||
Putc(c, out);
|
||||
}
|
||||
}
|
||||
if (c == EOF)
|
||||
|
|
@ -315,16 +315,16 @@ Hash *Preprocessor_define(const String_or_char *_str, int swigmacro) {
|
|||
|
||||
/* Now look for a macro name */
|
||||
macroname = NewStringEmpty();
|
||||
while ((c = StringGetc(str)) != EOF) {
|
||||
while ((c = Getc(str)) != EOF) {
|
||||
if (c == '(') {
|
||||
argstr = NewStringEmpty();
|
||||
copy_location(str, argstr);
|
||||
/* It is a macro. Go extract its argument string */
|
||||
while ((c = StringGetc(str)) != EOF) {
|
||||
while ((c = Getc(str)) != EOF) {
|
||||
if (c == ')')
|
||||
break;
|
||||
else
|
||||
StringPutc(c, argstr);
|
||||
Putc(c, argstr);
|
||||
}
|
||||
if (c != ')') {
|
||||
Swig_error(Getfile(str), Getline(str), "Missing \')\' in macro parameters\n");
|
||||
|
|
@ -332,28 +332,28 @@ Hash *Preprocessor_define(const String_or_char *_str, int swigmacro) {
|
|||
}
|
||||
break;
|
||||
} else if (isidchar(c) || (c == '%')) {
|
||||
StringPutc(c, macroname);
|
||||
Putc(c, macroname);
|
||||
} else if (isspace(c)) {
|
||||
break;
|
||||
} else if (c == '\\') {
|
||||
c = StringGetc(str);
|
||||
c = Getc(str);
|
||||
if (c != '\n') {
|
||||
StringUngetc(c, str);
|
||||
StringUngetc('\\', str);
|
||||
Ungetc(c, str);
|
||||
Ungetc('\\', str);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/*Swig_error(Getfile(str),Getline(str),"Illegal character in macro name\n");
|
||||
goto macro_error; */
|
||||
StringUngetc(c, str);
|
||||
Ungetc(c, str);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!swigmacro)
|
||||
skip_whitespace(str, 0);
|
||||
macrovalue = NewStringEmpty();
|
||||
while ((c = StringGetc(str)) != EOF) {
|
||||
StringPutc(c, macrovalue);
|
||||
while ((c = Getc(str)) != EOF) {
|
||||
Putc(c, macrovalue);
|
||||
}
|
||||
|
||||
/* If there are any macro arguments, convert into a list */
|
||||
|
|
@ -362,7 +362,7 @@ Hash *Preprocessor_define(const String_or_char *_str, int swigmacro) {
|
|||
arglist = NewList();
|
||||
Seek(argstr, 0, SEEK_SET);
|
||||
argname = NewStringEmpty();
|
||||
while ((c = StringGetc(argstr)) != EOF) {
|
||||
while ((c = Getc(argstr)) != EOF) {
|
||||
if (c == ',') {
|
||||
varargname = Macro_vararg_name(argname, str);
|
||||
if (varargname) {
|
||||
|
|
@ -374,7 +374,7 @@ Hash *Preprocessor_define(const String_or_char *_str, int swigmacro) {
|
|||
Delete(argname);
|
||||
argname = NewStringEmpty();
|
||||
} else if (isidchar(c) || (c == '.')) {
|
||||
StringPutc(c, argname);
|
||||
Putc(c, argname);
|
||||
} else if (!(isspace(c) || (c == '\\'))) {
|
||||
Delete(argname);
|
||||
Swig_error(Getfile(str), Getline(str), "Illegal character in macro argument name\n");
|
||||
|
|
@ -559,45 +559,45 @@ static List *find_args(String *s) {
|
|||
skip_whitespace(s, 0);
|
||||
|
||||
/* Now see if the next character is a '(' */
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
if (c != '(') {
|
||||
/* Not a macro, bail out now! */
|
||||
Seek(s, pos, SEEK_SET);
|
||||
Delete(args);
|
||||
return 0;
|
||||
}
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
/* Okay. This appears to be a macro so we will start isolating arguments */
|
||||
while (c != EOF) {
|
||||
if (isspace(c)) {
|
||||
skip_whitespace(s, 0); /* Skip leading whitespace */
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
}
|
||||
str = NewStringEmpty();
|
||||
copy_location(s, str);
|
||||
level = 0;
|
||||
while (c != EOF) {
|
||||
if (c == '\"') {
|
||||
StringPutc(c, str);
|
||||
Putc(c, str);
|
||||
skip_tochar(s, '\"', str);
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
continue;
|
||||
} else if (c == '\'') {
|
||||
StringPutc(c, str);
|
||||
Putc(c, str);
|
||||
skip_tochar(s, '\'', str);
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
continue;
|
||||
}
|
||||
if ((c == ',') && (level == 0))
|
||||
break;
|
||||
if ((c == ')') && (level == 0))
|
||||
break;
|
||||
StringPutc(c, str);
|
||||
Putc(c, str);
|
||||
if (c == '(')
|
||||
level++;
|
||||
if (c == ')')
|
||||
level--;
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
}
|
||||
if (level > 0) {
|
||||
goto unterm;
|
||||
|
|
@ -612,7 +612,7 @@ static List *find_args(String *s) {
|
|||
|
||||
if (c == ')')
|
||||
return args;
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
}
|
||||
unterm:
|
||||
Swig_error(Getfile(args), Getline(args), "Unterminated macro call.\n");
|
||||
|
|
@ -633,21 +633,21 @@ static String *get_filename(String *str, int *sysfile) {
|
|||
skip_whitespace(str, 0);
|
||||
fn = NewStringEmpty();
|
||||
copy_location(str, fn);
|
||||
c = StringGetc(str);
|
||||
c = Getc(str);
|
||||
*sysfile = 0;
|
||||
if (c == '\"') {
|
||||
while (((c = StringGetc(str)) != EOF) && (c != '\"'))
|
||||
StringPutc(c, fn);
|
||||
while (((c = Getc(str)) != EOF) && (c != '\"'))
|
||||
Putc(c, fn);
|
||||
} else if (c == '<') {
|
||||
*sysfile = 1;
|
||||
while (((c = StringGetc(str)) != EOF) && (c != '>'))
|
||||
StringPutc(c, fn);
|
||||
while (((c = Getc(str)) != EOF) && (c != '>'))
|
||||
Putc(c, fn);
|
||||
} else {
|
||||
StringPutc(c, fn);
|
||||
while (((c = StringGetc(str)) != EOF) && (!isspace(c)))
|
||||
StringPutc(c, fn);
|
||||
Putc(c, fn);
|
||||
while (((c = Getc(str)) != EOF) && (!isspace(c)))
|
||||
Putc(c, fn);
|
||||
if (isspace(c))
|
||||
StringUngetc(c, str);
|
||||
Ungetc(c, str);
|
||||
}
|
||||
#if defined(_WIN32) || defined(MACSWIG)
|
||||
/* accept Unix path separator on non-Unix systems */
|
||||
|
|
@ -665,13 +665,13 @@ static String *get_options(String *str) {
|
|||
|
||||
int c;
|
||||
skip_whitespace(str, 0);
|
||||
c = StringGetc(str);
|
||||
c = Getc(str);
|
||||
if (c == '(') {
|
||||
String *opt;
|
||||
int level = 1;
|
||||
opt = NewString("(");
|
||||
while (((c = StringGetc(str)) != EOF)) {
|
||||
StringPutc(c, opt);
|
||||
while (((c = Getc(str)) != EOF)) {
|
||||
Putc(c, opt);
|
||||
if (c == ')') {
|
||||
level--;
|
||||
if (!level)
|
||||
|
|
@ -683,7 +683,7 @@ static String *get_options(String *str) {
|
|||
Delete(opt);
|
||||
return 0;
|
||||
} else {
|
||||
StringUngetc(c, str);
|
||||
Ungetc(c, str);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -712,18 +712,18 @@ static String *expand_macro(String *name, List *args) {
|
|||
return 0;
|
||||
if (Getattr(macro, kpp_expanded)) {
|
||||
ns = NewStringEmpty();
|
||||
StringAppend(ns, name);
|
||||
Append(ns, name);
|
||||
if (args) {
|
||||
int lenargs = Len(args);
|
||||
if (lenargs)
|
||||
StringPutc('(', ns);
|
||||
Putc('(', ns);
|
||||
for (i = 0; i < lenargs; i++) {
|
||||
StringAppend(ns, Getitem(args, i));
|
||||
Append(ns, Getitem(args, i));
|
||||
if (i < (lenargs - 1))
|
||||
StringPutc(',', ns);
|
||||
Putc(',', ns);
|
||||
}
|
||||
if (i)
|
||||
StringPutc(')', ns);
|
||||
Putc(')', ns);
|
||||
}
|
||||
return ns;
|
||||
}
|
||||
|
|
@ -743,9 +743,9 @@ static String *expand_macro(String *name, List *args) {
|
|||
vi = Len(margs) - 1;
|
||||
na = Len(args);
|
||||
for (i = vi; i < na; i++) {
|
||||
StringAppend(vararg, Getitem(args, i));
|
||||
Append(vararg, Getitem(args, i));
|
||||
if ((i + 1) < na) {
|
||||
StringAppend(vararg, ",");
|
||||
Append(vararg, ",");
|
||||
}
|
||||
}
|
||||
/* Remove arguments */
|
||||
|
|
@ -789,7 +789,7 @@ static String *expand_macro(String *name, List *args) {
|
|||
arg = Getitem(args, i); /* Get an argument value */
|
||||
reparg = Preprocessor_replace(arg);
|
||||
aname = Getitem(margs, i); /* Get macro argument name */
|
||||
if (strstr(StringChar(ns), "\001")) {
|
||||
if (strstr(Char(ns), "\001")) {
|
||||
/* Try to replace a quoted version of the argument */
|
||||
Clear(temp);
|
||||
Clear(tempa);
|
||||
|
|
@ -797,17 +797,17 @@ static String *expand_macro(String *name, List *args) {
|
|||
Printf(tempa, "\"%s\"", arg);
|
||||
Replace(ns, temp, tempa, DOH_REPLACE_ID_END);
|
||||
}
|
||||
if (strstr(StringChar(ns), "\002")) {
|
||||
if (strstr(Char(ns), "\002")) {
|
||||
/* Look for concatenation tokens */
|
||||
Clear(temp);
|
||||
Clear(tempa);
|
||||
Printf(temp, "\002%s", aname);
|
||||
StringAppend(tempa, "\002\003");
|
||||
Append(tempa, "\002\003");
|
||||
Replace(ns, temp, tempa, DOH_REPLACE_ID_END);
|
||||
Clear(temp);
|
||||
Clear(tempa);
|
||||
Printf(temp, "%s\002", aname);
|
||||
StringAppend(tempa, "\003\002");
|
||||
Append(tempa, "\003\002");
|
||||
Replace(ns, temp, tempa, DOH_REPLACE_ID_BEGIN);
|
||||
}
|
||||
|
||||
|
|
@ -815,7 +815,7 @@ static String *expand_macro(String *name, List *args) {
|
|||
version of the argument except that if the argument is already quoted
|
||||
nothing happens */
|
||||
|
||||
if (strchr(StringChar(ns), '`')) {
|
||||
if (strchr(Char(ns), '`')) {
|
||||
String *rep;
|
||||
char *c;
|
||||
Clear(temp);
|
||||
|
|
@ -833,14 +833,14 @@ static String *expand_macro(String *name, List *args) {
|
|||
|
||||
/* Non-standard mangle expansions.
|
||||
The #@Name is replaced by mangle_arg(Name). */
|
||||
if (strstr(StringChar(ns), "\004")) {
|
||||
if (strstr(Char(ns), "\004")) {
|
||||
String *marg = Swig_string_mangle(arg);
|
||||
Clear(temp);
|
||||
Printf(temp, "\004%s", aname);
|
||||
Replace(ns, temp, marg, DOH_REPLACE_ID_END);
|
||||
Delete(marg);
|
||||
}
|
||||
if (strstr(StringChar(ns), "\005")) {
|
||||
if (strstr(Char(ns), "\005")) {
|
||||
String *marg = Swig_string_mangle(arg);
|
||||
Clear(temp);
|
||||
Clear(tempa);
|
||||
|
|
@ -854,7 +854,7 @@ static String *expand_macro(String *name, List *args) {
|
|||
/* Zero length varargs macro argument. We search for commas that might appear before and nuke them */
|
||||
char *a, *s, *t, *name;
|
||||
int namelen;
|
||||
s = StringChar(ns);
|
||||
s = Char(ns);
|
||||
name = Char(aname);
|
||||
namelen = Len(aname);
|
||||
a = strstr(s, name);
|
||||
|
|
@ -911,7 +911,7 @@ static String *expand_macro(String *name, List *args) {
|
|||
if (strchr(Char(g), '\n')) {
|
||||
Printf(f, "/*@SWIG:%s@*/%s/*@SWIG@*/", name, g);
|
||||
} else {
|
||||
StringAppend(f, g);
|
||||
Append(f, g);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -966,53 +966,53 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
Seek(s, 0, SEEK_SET);
|
||||
|
||||
/* Try to locate identifiers in s and replace them with macro replacements */
|
||||
while ((c = StringGetc(s)) != EOF) {
|
||||
while ((c = Getc(s)) != EOF) {
|
||||
switch (state) {
|
||||
case 0:
|
||||
if (isidentifier(c) || (c == '%')) {
|
||||
Clear(id);
|
||||
StringPutc(c, id);
|
||||
Putc(c, id);
|
||||
state = 1;
|
||||
} else if (c == '\"') {
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
skip_tochar(s, '\"', ns);
|
||||
} else if (c == '\'') {
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
skip_tochar(s, '\'', ns);
|
||||
} else if (c == '/') {
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
state = 10;
|
||||
} else {
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
}
|
||||
break;
|
||||
case 1: /* An identifier */
|
||||
if (isidchar(c)) {
|
||||
StringPutc(c, id);
|
||||
Putc(c, id);
|
||||
state = 1;
|
||||
} else {
|
||||
/* We found the end of a valid identifier */
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
/* See if this is the special "defined" macro */
|
||||
if (StringEqual(kpp_defined, id)) {
|
||||
if (Equal(kpp_defined, id)) {
|
||||
int lenargs = 0;
|
||||
DOH *args = 0;
|
||||
/* See whether or not a paranthesis has been used */
|
||||
skip_whitespace(s, 0);
|
||||
c = StringGetc(s);
|
||||
c = Getc(s);
|
||||
if (c == '(') {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
args = find_args(s);
|
||||
} else if (isidchar(c)) {
|
||||
DOH *arg = NewStringEmpty();
|
||||
args = NewList();
|
||||
StringPutc(c, arg);
|
||||
while (((c = StringGetc(s)) != EOF)) {
|
||||
Putc(c, arg);
|
||||
while (((c = Getc(s)) != EOF)) {
|
||||
if (!isidchar(c)) {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
break;
|
||||
}
|
||||
StringPutc(c, arg);
|
||||
Putc(c, arg);
|
||||
}
|
||||
if (Len(arg))
|
||||
Append(args, arg);
|
||||
|
|
@ -1023,7 +1023,7 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
lenargs = Len(args);
|
||||
if ((!args) || (!lenargs)) {
|
||||
/* This is not a defined() macro. */
|
||||
StringAppend(ns, id);
|
||||
Append(ns, id);
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
|
|
@ -1034,19 +1034,19 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
}
|
||||
}
|
||||
if (i < lenargs)
|
||||
StringPutc('0', ns);
|
||||
Putc('0', ns);
|
||||
else
|
||||
StringPutc('1', ns);
|
||||
Putc('1', ns);
|
||||
Delete(args);
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
if (StringEqual(kpp_LINE, id)) {
|
||||
if (Equal(kpp_LINE, id)) {
|
||||
Printf(ns, "%d", Getline(s));
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
if (StringEqual(kpp_FILE, id)) {
|
||||
if (Equal(kpp_FILE, id)) {
|
||||
String *fn = Copy(Getfile(s));
|
||||
Replaceall(fn, "\\", "\\\\");
|
||||
Printf(ns, "\"%s\"", fn);
|
||||
|
|
@ -1071,12 +1071,12 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
}
|
||||
e = expand_macro(id, args);
|
||||
if (e) {
|
||||
StringAppend(ns, e);
|
||||
Append(ns, e);
|
||||
}
|
||||
Delete(e);
|
||||
Delete(args);
|
||||
} else {
|
||||
StringAppend(ns, id);
|
||||
Append(ns, id);
|
||||
}
|
||||
state = 0;
|
||||
}
|
||||
|
|
@ -1087,24 +1087,24 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
else if (c == '*')
|
||||
state = 12;
|
||||
else {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
state = 0;
|
||||
break;
|
||||
}
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
break;
|
||||
case 11:
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
if (c == '\n')
|
||||
state = 0;
|
||||
break;
|
||||
case 12:
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
if (c == '*')
|
||||
state = 13;
|
||||
break;
|
||||
case 13:
|
||||
StringPutc(c, ns);
|
||||
Putc(c, ns);
|
||||
if (c == '/')
|
||||
state = 0;
|
||||
else if (c != '*')
|
||||
|
|
@ -1119,7 +1119,7 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
/* Identifier at the end */
|
||||
if (state == 1) {
|
||||
/* See if this is the special "defined" macro */
|
||||
if (StringEqual(kpp_defined, id)) {
|
||||
if (Equal(kpp_defined, id)) {
|
||||
Swig_error(Getfile(s), Getline(s), "No arguments given to defined()\n");
|
||||
} else if ((m = Getattr(symbols, id))) {
|
||||
DOH *e;
|
||||
|
|
@ -1129,10 +1129,10 @@ DOH *Preprocessor_replace(DOH *s) {
|
|||
Swig_error(Getfile(id),Getline(id),"Macro arguments expected.\n");
|
||||
} */
|
||||
e = expand_macro(id, 0);
|
||||
StringAppend(ns, e);
|
||||
Append(ns, e);
|
||||
Delete(e);
|
||||
} else {
|
||||
StringAppend(ns, id);
|
||||
Append(ns, id);
|
||||
}
|
||||
}
|
||||
Delete(id);
|
||||
|
|
@ -1171,12 +1171,12 @@ static int checkpp_id(DOH *s) {
|
|||
/* addline(). Utility function for adding lines to a chunk */
|
||||
static void addline(DOH *s1, DOH *s2, int allow) {
|
||||
if (allow) {
|
||||
StringAppend(s1, s2);
|
||||
Append(s1, s2);
|
||||
} else {
|
||||
char *c = Char(s2);
|
||||
while (*c) {
|
||||
if (*c == '\n')
|
||||
StringPutc('\n', s1);
|
||||
Putc('\n', s1);
|
||||
c++;
|
||||
}
|
||||
}
|
||||
|
|
@ -1257,7 +1257,7 @@ String *Preprocessor_parse(String *s) {
|
|||
symbols = Getattr(cpp, kpp_symbols);
|
||||
|
||||
state = 0;
|
||||
while ((c = StringGetc(s)) != EOF) {
|
||||
while ((c = Getc(s)) != EOF) {
|
||||
switch (state) {
|
||||
case 0: /* Initial state - in first column */
|
||||
/* Look for C preprocessor directives. Otherwise, go directly to state 1 */
|
||||
|
|
@ -1267,11 +1267,11 @@ String *Preprocessor_parse(String *s) {
|
|||
cpp_lines = 1;
|
||||
state = 40;
|
||||
} else if (isspace(c)) {
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
skip_whitespace(s, chunk);
|
||||
} else {
|
||||
state = 1;
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
}
|
||||
break;
|
||||
case 1: /* Non-preprocessor directive */
|
||||
|
|
@ -1280,7 +1280,7 @@ String *Preprocessor_parse(String *s) {
|
|||
state = 100;
|
||||
break;
|
||||
}
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '\n')
|
||||
state = 0;
|
||||
else if (c == '\"') {
|
||||
|
|
@ -1299,7 +1299,7 @@ String *Preprocessor_parse(String *s) {
|
|||
|
||||
case 30: /* Possibly a comment string of some sort */
|
||||
start_line = Getline(s);
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '/')
|
||||
state = 31;
|
||||
else if (c == '*')
|
||||
|
|
@ -1308,17 +1308,17 @@ String *Preprocessor_parse(String *s) {
|
|||
state = 1;
|
||||
break;
|
||||
case 31:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '\n')
|
||||
state = 0;
|
||||
break;
|
||||
case 32:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '*')
|
||||
state = 33;
|
||||
break;
|
||||
case 33:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '/')
|
||||
state = 1;
|
||||
else if (c != '*')
|
||||
|
|
@ -1327,13 +1327,13 @@ String *Preprocessor_parse(String *s) {
|
|||
|
||||
case 40: /* Start of a C preprocessor directive */
|
||||
if (c == '\n') {
|
||||
StringPutc('\n', chunk);
|
||||
Putc('\n', chunk);
|
||||
state = 0;
|
||||
} else if (isspace(c)) {
|
||||
state = 40;
|
||||
} else {
|
||||
/* Got the start of a preprocessor directive */
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
Clear(id);
|
||||
copy_location(s, id);
|
||||
state = 41;
|
||||
|
|
@ -1345,25 +1345,25 @@ String *Preprocessor_parse(String *s) {
|
|||
Clear(value);
|
||||
Clear(comment);
|
||||
if (c == '\n') {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
state = 50;
|
||||
} else {
|
||||
state = 42;
|
||||
if (!isspace(c)) {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
}
|
||||
}
|
||||
|
||||
copy_location(s, value);
|
||||
break;
|
||||
}
|
||||
StringPutc(c, id);
|
||||
Putc(c, id);
|
||||
break;
|
||||
|
||||
case 42: /* Strip any leading space before preprocessor value */
|
||||
if (isspace(c)) {
|
||||
if (c == '\n') {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
state = 50;
|
||||
}
|
||||
break;
|
||||
|
|
@ -1374,18 +1374,18 @@ String *Preprocessor_parse(String *s) {
|
|||
case 43:
|
||||
/* Get preprocessor value */
|
||||
if (c == '\n') {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
state = 50;
|
||||
} else if (c == '/') {
|
||||
state = 45;
|
||||
} else if (c == '\"') {
|
||||
StringPutc(c, value);
|
||||
Putc(c, value);
|
||||
skip_tochar(s, '\"', value);
|
||||
} else if (c == '\'') {
|
||||
StringPutc(c, value);
|
||||
Putc(c, value);
|
||||
skip_tochar(s, '\'', value);
|
||||
} else {
|
||||
StringPutc(c, value);
|
||||
Putc(c, value);
|
||||
if (c == '\\')
|
||||
state = 44;
|
||||
}
|
||||
|
|
@ -1393,10 +1393,10 @@ String *Preprocessor_parse(String *s) {
|
|||
|
||||
case 44:
|
||||
if (c == '\n') {
|
||||
StringPutc(c, value);
|
||||
Putc(c, value);
|
||||
cpp_lines++;
|
||||
} else {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
}
|
||||
state = 43;
|
||||
break;
|
||||
|
|
@ -1410,45 +1410,45 @@ String *Preprocessor_parse(String *s) {
|
|||
else if (c == '*')
|
||||
state = 47;
|
||||
else if (c == '\n') {
|
||||
StringPutc('/', value);
|
||||
StringUngetc(c, s);
|
||||
Putc('/', value);
|
||||
Ungetc(c, s);
|
||||
cpp_lines++;
|
||||
state = 50;
|
||||
} else {
|
||||
StringPutc('/', value);
|
||||
StringPutc(c, value);
|
||||
Putc('/', value);
|
||||
Putc(c, value);
|
||||
state = 43;
|
||||
}
|
||||
break;
|
||||
case 46:
|
||||
if (c == '\n') {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
cpp_lines++;
|
||||
state = 50;
|
||||
} else
|
||||
StringPutc(c, comment);
|
||||
Putc(c, comment);
|
||||
break;
|
||||
case 47:
|
||||
if (c == '*')
|
||||
state = 48;
|
||||
else
|
||||
StringPutc(c, comment);
|
||||
Putc(c, comment);
|
||||
break;
|
||||
case 48:
|
||||
if (c == '/')
|
||||
state = 43;
|
||||
else if (c == '*')
|
||||
StringPutc(c, comment);
|
||||
Putc(c, comment);
|
||||
else {
|
||||
StringPutc('*', comment);
|
||||
StringPutc(c, comment);
|
||||
Putc('*', comment);
|
||||
Putc(c, comment);
|
||||
state = 47;
|
||||
}
|
||||
break;
|
||||
case 50:
|
||||
/* Check for various preprocessor directives */
|
||||
Chop(value);
|
||||
if (StringEqual(id, kpp_define)) {
|
||||
if (Equal(id, kpp_define)) {
|
||||
if (allow) {
|
||||
DOH *m, *v, *v1;
|
||||
Seek(value, 0, SEEK_SET);
|
||||
|
|
@ -1472,10 +1472,10 @@ String *Preprocessor_parse(String *s) {
|
|||
Delete(v);
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_undef)) {
|
||||
} else if (Equal(id, kpp_undef)) {
|
||||
if (allow)
|
||||
Preprocessor_undef(value);
|
||||
} else if (StringEqual(id, kpp_ifdef)) {
|
||||
} else if (Equal(id, kpp_ifdef)) {
|
||||
cond_lines[level] = Getline(id);
|
||||
level++;
|
||||
if (allow) {
|
||||
|
|
@ -1485,7 +1485,7 @@ String *Preprocessor_parse(String *s) {
|
|||
allow = 0;
|
||||
mask = 1;
|
||||
}
|
||||
} else if (StringEqual(id, kpp_ifndef)) {
|
||||
} else if (Equal(id, kpp_ifndef)) {
|
||||
cond_lines[level] = Getline(id);
|
||||
level++;
|
||||
if (allow) {
|
||||
|
|
@ -1495,7 +1495,7 @@ String *Preprocessor_parse(String *s) {
|
|||
allow = 0;
|
||||
mask = 1;
|
||||
}
|
||||
} else if (StringEqual(id, kpp_else)) {
|
||||
} else if (Equal(id, kpp_else)) {
|
||||
if (level <= 0) {
|
||||
Swig_error(Getfile(s), Getline(id), "Misplaced #else.\n");
|
||||
} else {
|
||||
|
|
@ -1507,7 +1507,7 @@ String *Preprocessor_parse(String *s) {
|
|||
allow = 1 * mask;
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_endif)) {
|
||||
} else if (Equal(id, kpp_endif)) {
|
||||
level--;
|
||||
if (level < 0) {
|
||||
Swig_error(Getfile(id), Getline(id), "Extraneous #endif.\n");
|
||||
|
|
@ -1518,7 +1518,7 @@ String *Preprocessor_parse(String *s) {
|
|||
start_level--;
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_if)) {
|
||||
} else if (Equal(id, kpp_if)) {
|
||||
cond_lines[level] = Getline(id);
|
||||
level++;
|
||||
if (allow) {
|
||||
|
|
@ -1541,7 +1541,7 @@ String *Preprocessor_parse(String *s) {
|
|||
}
|
||||
mask = 1;
|
||||
}
|
||||
} else if (StringEqual(id, kpp_elif)) {
|
||||
} else if (Equal(id, kpp_elif)) {
|
||||
if (level == 0) {
|
||||
Swig_error(Getfile(s), Getline(id), "Misplaced #elif.\n");
|
||||
} else {
|
||||
|
|
@ -1569,11 +1569,11 @@ String *Preprocessor_parse(String *s) {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_warning)) {
|
||||
} else if (Equal(id, kpp_warning)) {
|
||||
if (allow) {
|
||||
Swig_warning(WARN_PP_CPP_WARNING, Getfile(s), Getline(id), "CPP #warning, %s\n", value);
|
||||
}
|
||||
} else if (StringEqual(id, kpp_error)) {
|
||||
} else if (Equal(id, kpp_error)) {
|
||||
if (allow) {
|
||||
if (error_as_warning) {
|
||||
Swig_warning(WARN_PP_CPP_ERROR, Getfile(s), Getline(id), "CPP #error \"%s\".\n", value);
|
||||
|
|
@ -1581,8 +1581,8 @@ String *Preprocessor_parse(String *s) {
|
|||
Swig_error(Getfile(s), Getline(id), "CPP #error \"%s\". Use the -cpperraswarn option to continue swig processing.\n", value);
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_line)) {
|
||||
} else if (StringEqual(id, kpp_include)) {
|
||||
} else if (Equal(id, kpp_line)) {
|
||||
} else if (Equal(id, kpp_include)) {
|
||||
if (((include_all) || (import_all)) && (allow)) {
|
||||
String *s1, *s2, *fn;
|
||||
char *dirname;
|
||||
|
|
@ -1612,7 +1612,7 @@ String *Preprocessor_parse(String *s) {
|
|||
}
|
||||
s2 = Preprocessor_parse(s1);
|
||||
addline(ns, s2, allow);
|
||||
StringAppend(ns, "\n]");
|
||||
Append(ns, "\n]");
|
||||
if (dirname) {
|
||||
Swig_pop_directory();
|
||||
}
|
||||
|
|
@ -1624,7 +1624,7 @@ String *Preprocessor_parse(String *s) {
|
|||
Delete(s1);
|
||||
Delete(fn);
|
||||
}
|
||||
} else if (StringEqual(id, kpp_pragma)) {
|
||||
} else if (Equal(id, kpp_pragma)) {
|
||||
if (Strncmp(value, "SWIG ", 5) == 0) {
|
||||
char *c = Char(value) + 5;
|
||||
while (*c && (isspace((int) *c)))
|
||||
|
|
@ -1641,11 +1641,11 @@ String *Preprocessor_parse(String *s) {
|
|||
}
|
||||
}
|
||||
}
|
||||
} else if (StringEqual(id, kpp_level)) {
|
||||
} else if (Equal(id, kpp_level)) {
|
||||
Swig_error(Getfile(s), Getline(id), "cpp debug: level = %d, startlevel = %d\n", level, start_level);
|
||||
}
|
||||
for (i = 0; i < cpp_lines; i++)
|
||||
StringPutc('\n', ns);
|
||||
Putc('\n', ns);
|
||||
state = 0;
|
||||
break;
|
||||
|
||||
|
|
@ -1656,35 +1656,35 @@ String *Preprocessor_parse(String *s) {
|
|||
start_line = Getline(s);
|
||||
add_chunk(ns, chunk, allow);
|
||||
copy_location(s, chunk);
|
||||
StringPutc('%', chunk);
|
||||
StringPutc(c, chunk);
|
||||
Putc('%', chunk);
|
||||
Putc(c, chunk);
|
||||
state = 105;
|
||||
}
|
||||
/* %#cpp - an embedded C preprocessor directive (we strip off the %) */
|
||||
else if (c == '#') {
|
||||
add_chunk(ns, chunk, allow);
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
state = 107;
|
||||
} else if (isidentifier(c)) {
|
||||
Clear(decl);
|
||||
StringPutc('%', decl);
|
||||
StringPutc(c, decl);
|
||||
Putc('%', decl);
|
||||
Putc(c, decl);
|
||||
state = 110;
|
||||
} else {
|
||||
StringPutc('%', chunk);
|
||||
StringPutc(c, chunk);
|
||||
Putc('%', chunk);
|
||||
Putc(c, chunk);
|
||||
state = 1;
|
||||
}
|
||||
break;
|
||||
|
||||
case 105:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '%')
|
||||
state = 106;
|
||||
break;
|
||||
|
||||
case 106:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '}') {
|
||||
state = 1;
|
||||
addline(ns, chunk, allow);
|
||||
|
|
@ -1696,7 +1696,7 @@ String *Preprocessor_parse(String *s) {
|
|||
break;
|
||||
|
||||
case 107:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
if (c == '\n') {
|
||||
addline(ns, chunk, allow);
|
||||
Clear(chunk);
|
||||
|
|
@ -1707,24 +1707,24 @@ String *Preprocessor_parse(String *s) {
|
|||
break;
|
||||
|
||||
case 108:
|
||||
StringPutc(c, chunk);
|
||||
Putc(c, chunk);
|
||||
state = 107;
|
||||
break;
|
||||
|
||||
case 110:
|
||||
if (!isidchar(c)) {
|
||||
StringUngetc(c, s);
|
||||
Ungetc(c, s);
|
||||
/* Look for common Swig directives */
|
||||
if (StringEqual(decl, kpp_dinclude) || StringEqual(decl, kpp_dimport) || StringEqual(decl, kpp_dextern)) {
|
||||
if (Equal(decl, kpp_dinclude) || Equal(decl, kpp_dimport) || Equal(decl, kpp_dextern)) {
|
||||
/* Got some kind of file inclusion directive */
|
||||
if (allow) {
|
||||
DOH *s1, *s2, *fn, *opt;
|
||||
int sysfile = 0;
|
||||
|
||||
if (StringEqual(decl, kpp_dextern)) {
|
||||
if (Equal(decl, kpp_dextern)) {
|
||||
Swig_warning(WARN_DEPRECATED_EXTERN, Getfile(s), Getline(s), "%%extern is deprecated. Use %%import instead.\n");
|
||||
Clear(decl);
|
||||
StringAppend(decl, "%%import");
|
||||
Append(decl, "%%import");
|
||||
}
|
||||
opt = get_options(s);
|
||||
fn = get_filename(s, &sysfile);
|
||||
|
|
@ -1734,7 +1734,7 @@ String *Preprocessor_parse(String *s) {
|
|||
add_chunk(ns, chunk, allow);
|
||||
copy_location(s, chunk);
|
||||
Printf(ns, "%sfile%s \"%s\" [\n", decl, opt, Swig_last_file());
|
||||
if (StringEqual(decl, kpp_dimport)) {
|
||||
if (Equal(decl, kpp_dimport)) {
|
||||
push_imported();
|
||||
}
|
||||
dirname = Swig_file_dirname(Swig_last_file());
|
||||
|
|
@ -1748,21 +1748,21 @@ String *Preprocessor_parse(String *s) {
|
|||
if (dirname) {
|
||||
Swig_pop_directory();
|
||||
}
|
||||
if (StringEqual(decl, kpp_dimport)) {
|
||||
if (Equal(decl, kpp_dimport)) {
|
||||
pop_imported();
|
||||
}
|
||||
addline(ns, s2, allow);
|
||||
StringAppend(ns, "\n]");
|
||||
Append(ns, "\n]");
|
||||
Delete(s2);
|
||||
Delete(s1);
|
||||
}
|
||||
Delete(fn);
|
||||
}
|
||||
state = 1;
|
||||
} else if (StringEqual(decl, kpp_dline)) {
|
||||
} else if (Equal(decl, kpp_dline)) {
|
||||
/* Got a line directive */
|
||||
state = 1;
|
||||
} else if (StringEqual(decl, kpp_ddefine)) {
|
||||
} else if (Equal(decl, kpp_ddefine)) {
|
||||
/* Got a define directive */
|
||||
dlevel++;
|
||||
add_chunk(ns, chunk, allow);
|
||||
|
|
@ -1771,31 +1771,31 @@ String *Preprocessor_parse(String *s) {
|
|||
copy_location(s, value);
|
||||
state = 150;
|
||||
} else {
|
||||
StringAppend(chunk, decl);
|
||||
Append(chunk, decl);
|
||||
state = 1;
|
||||
}
|
||||
} else {
|
||||
StringPutc(c, decl);
|
||||
Putc(c, decl);
|
||||
}
|
||||
break;
|
||||
|
||||
/* Searching for the end of a %define statement */
|
||||
case 150:
|
||||
StringPutc(c, value);
|
||||
Putc(c, value);
|
||||
if (c == '%') {
|
||||
const char *ed = "enddef";
|
||||
const char *df = "define";
|
||||
char statement[7];
|
||||
int i = 0;
|
||||
for (i = 0; i < 6;) {
|
||||
c = StringGetc(s);
|
||||
StringPutc(c, value);
|
||||
c = Getc(s);
|
||||
Putc(c, value);
|
||||
statement[i++] = c;
|
||||
if (strncmp(statement, ed, i) && strncmp(statement, df, i))
|
||||
break;
|
||||
}
|
||||
c = StringGetc(s);
|
||||
StringUngetc(c, s);
|
||||
c = Getc(s);
|
||||
Ungetc(c, s);
|
||||
if ((i == 6) && (isspace(c))) {
|
||||
if (strncmp(statement, df, i) == 0) {
|
||||
++dlevel;
|
||||
|
|
@ -1811,7 +1811,7 @@ String *Preprocessor_parse(String *s) {
|
|||
Seek(value, 0, SEEK_SET);
|
||||
Preprocessor_define(value, 1);
|
||||
}
|
||||
/* StringPutc('\n',ns); */
|
||||
/* Putc('\n',ns); */
|
||||
addline(ns, value, 0);
|
||||
state = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -510,7 +510,7 @@ String *Swig_cppconstructor_base_call(String_or_char *name, ParmList *parms, int
|
|||
String *pname = 0;
|
||||
if (comma)
|
||||
Append(func, ",");
|
||||
if (!Getattr(p, k_argbyname)) {
|
||||
if (!Getattr(p, "arg:byname")) {
|
||||
pname = Swig_cparm_name(p, i);
|
||||
i++;
|
||||
} else {
|
||||
|
|
@ -806,8 +806,8 @@ int Swig_MethodToFunction(Node *n, String *classname, int flags, SwigType *direc
|
|||
SwigType_push(type, qualifier);
|
||||
}
|
||||
SwigType_add_pointer(type);
|
||||
p = NewParm(type, k_self);
|
||||
Setattr(p, k_self, "1");
|
||||
p = NewParm(type, "self");
|
||||
Setattr(p, "self", "1");
|
||||
Setattr(p, k_hidden, "1");
|
||||
/*
|
||||
Disable the 'this' ownership in 'self' to manage inplace
|
||||
|
|
@ -910,7 +910,7 @@ int Swig_MethodToFunction(Node *n, String *classname, int flags, SwigType *direc
|
|||
|
||||
/* See if there is any code that we need to emit */
|
||||
if (!defaultargs && code && !is_smart_pointer) {
|
||||
Swig_add_extension_code(n, mangled, p, type, code, cparse_cplusplus, k_self);
|
||||
Swig_add_extension_code(n, mangled, p, type, code, cparse_cplusplus, "self");
|
||||
}
|
||||
if (is_smart_pointer) {
|
||||
int i = 0;
|
||||
|
|
@ -984,7 +984,7 @@ Node *Swig_methodclass(Node *n) {
|
|||
int Swig_directorclass(Node *n) {
|
||||
Node *classNode = Swig_methodclass(n);
|
||||
assert(classNode != 0);
|
||||
return (Getattr(classNode, k_vtable) != 0);
|
||||
return (Getattr(classNode, "vtable") != 0);
|
||||
}
|
||||
|
||||
Node *Swig_directormap(Node *module, String *type) {
|
||||
|
|
@ -1060,7 +1060,7 @@ int Swig_ConstructorToFunction(Node *n, String *classname, String *none_comparis
|
|||
|
||||
/* See if there is any code that we need to emit */
|
||||
if (!defaultargs && code) {
|
||||
Swig_add_extension_code(n, mangled, parms, type, code, cparse_cplusplus, k_self);
|
||||
Swig_add_extension_code(n, mangled, parms, type, code, cparse_cplusplus, "self");
|
||||
}
|
||||
|
||||
call = Swig_cfunction_call(mangled, parms);
|
||||
|
|
@ -1158,8 +1158,8 @@ int Swig_DestructorToFunction(Node *n, String *classname, int cplus, int flags)
|
|||
|
||||
type = NewString(classname);
|
||||
SwigType_add_pointer(type);
|
||||
p = NewParm(type, k_self);
|
||||
Setattr(p, k_self, "1");
|
||||
p = NewParm(type, "self");
|
||||
Setattr(p, "self", "1");
|
||||
Setattr(p, k_hidden, "1");
|
||||
Setattr(p, k_wrapdisown, "1");
|
||||
Delete(type);
|
||||
|
|
@ -1173,7 +1173,7 @@ int Swig_DestructorToFunction(Node *n, String *classname, int cplus, int flags)
|
|||
mangled = Swig_name_mangle(membername);
|
||||
code = Getattr(n, k_code);
|
||||
if (code) {
|
||||
Swig_add_extension_code(n, mangled, p, type, code, cparse_cplusplus, k_self);
|
||||
Swig_add_extension_code(n, mangled, p, type, code, cparse_cplusplus, "self");
|
||||
}
|
||||
call = Swig_cfunction_call(mangled, p);
|
||||
cres = NewStringf("%s;\n", call);
|
||||
|
|
@ -1238,8 +1238,8 @@ int Swig_MembersetToFunction(Node *n, String *classname, int flags) {
|
|||
|
||||
t = NewString(classname);
|
||||
SwigType_add_pointer(t);
|
||||
parms = NewParm(t, k_self);
|
||||
Setattr(parms, k_self, "1");
|
||||
parms = NewParm(t, "self");
|
||||
Setattr(parms, "self", "1");
|
||||
Setattr(parms, k_hidden, "1");
|
||||
Delete(t);
|
||||
|
||||
|
|
@ -1260,7 +1260,7 @@ int Swig_MembersetToFunction(Node *n, String *classname, int flags) {
|
|||
String *code = Getattr(n, k_code);
|
||||
if (code) {
|
||||
/* I don't think this ever gets run - WSF */
|
||||
Swig_add_extension_code(n, mangled, parms, void_type, code, cparse_cplusplus, k_self);
|
||||
Swig_add_extension_code(n, mangled, parms, void_type, code, cparse_cplusplus, "self");
|
||||
}
|
||||
call = Swig_cfunction_call(mangled, parms);
|
||||
cres = NewStringf("%s;\n", call);
|
||||
|
|
@ -1324,8 +1324,8 @@ int Swig_MembergetToFunction(Node *n, String *classname, int flags) {
|
|||
|
||||
t = NewString(classname);
|
||||
SwigType_add_pointer(t);
|
||||
parms = NewParm(t, k_self);
|
||||
Setattr(parms, k_self, "1");
|
||||
parms = NewParm(t, "self");
|
||||
Setattr(parms, "self", "1");
|
||||
Setattr(parms, k_hidden, "1");
|
||||
Delete(t);
|
||||
|
||||
|
|
@ -1337,7 +1337,7 @@ int Swig_MembergetToFunction(Node *n, String *classname, int flags) {
|
|||
String *code = Getattr(n, k_code);
|
||||
if (code) {
|
||||
/* I don't think this ever gets run - WSF */
|
||||
Swig_add_extension_code(n, mangled, parms, ty, code, cparse_cplusplus, k_self);
|
||||
Swig_add_extension_code(n, mangled, parms, ty, code, cparse_cplusplus, "self");
|
||||
}
|
||||
call = Swig_cfunction_call(mangled, parms);
|
||||
cres = Swig_cresult(ty, k_result, call);
|
||||
|
|
|
|||
70
Source/Swig/deprecate.c
Normal file
70
Source/Swig/deprecate.c
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
/* -----------------------------------------------------------------------------
|
||||
* See the LICENSE file for information on copyright, usage and redistribution
|
||||
* of SWIG, and the README file for authors - http://www.swig.org/release.html.
|
||||
*
|
||||
* deprecate.c
|
||||
*
|
||||
* The functions in this file are SWIG core functions that are deprecated
|
||||
* or which do not fit in nicely with everything else. Generally this means
|
||||
* that the function and/or API needs to be changed in some future release.
|
||||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
char cvsroot_deprecate_c[] = "$Id: parms.c 9630 2007-01-02 21:17:19Z beazley $";
|
||||
|
||||
#include "swig.h"
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
* ParmList_is_compactdefargs()
|
||||
*
|
||||
* Returns 1 if the parameter list passed in is marked for compact argument
|
||||
* handling (by the "compactdefargs" attribute). Otherwise returns 0.
|
||||
* ---------------------------------------------------------------------- */
|
||||
|
||||
/* Discussion:
|
||||
|
||||
"compactdefargs" is a property set by the Parser to indicate special
|
||||
handling of default arguments. This property seems to be something that
|
||||
is associated with functions and methods rather than low-level ParmList
|
||||
objects. Therefore, I don't like the fact that this special purpose
|
||||
feature is bolted onto the side of ParmList objects.
|
||||
|
||||
Proposed solution:
|
||||
|
||||
1. "compactdefargs" should be a feature set on function/method nodes
|
||||
instead of ParmList objects. For example, if you have a function,
|
||||
you would check the function node to see if the parameters are
|
||||
to be handled in this way.
|
||||
|
||||
|
||||
Difficulties:
|
||||
|
||||
1. This is used by functions in cwrap.c and emit.cxx, none of which
|
||||
are passed information about the function/method node. We might
|
||||
have to change the API of those functions to make this work correctly.
|
||||
For example:
|
||||
|
||||
int emit_num_required(ParmList *parms)
|
||||
|
||||
might become
|
||||
|
||||
int emit_num_required(ParmList *parms, int compactargs)
|
||||
|
||||
*/
|
||||
|
||||
int ParmList_is_compactdefargs(ParmList *p) {
|
||||
int compactdefargs = 0;
|
||||
|
||||
if (p) {
|
||||
compactdefargs = Getattr(p, "compactdefargs") ? 1 : 0;
|
||||
|
||||
/* The "compactdefargs" attribute should only be set on the first parameter in the list.
|
||||
* However, sometimes an extra parameter is inserted at the beginning of the parameter list,
|
||||
* so we check the 2nd parameter too. */
|
||||
if (!compactdefargs) {
|
||||
Parm *nextparm = nextSibling(p);
|
||||
compactdefargs = (nextparm && Getattr(nextparm, "compactdefargs")) ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
return compactdefargs;
|
||||
}
|
||||
|
|
@ -31,7 +31,7 @@ static int debug = 0;
|
|||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
void Swig_fragment_register(Node *fragment) {
|
||||
if (Getattr(fragment, k_emitonly)) {
|
||||
if (Getattr(fragment, "emitonly")) {
|
||||
Swig_fragment_emit(fragment);
|
||||
return;
|
||||
} else {
|
||||
|
|
@ -50,10 +50,10 @@ void Swig_fragment_register(Node *fragment) {
|
|||
fragments = NewHash();
|
||||
}
|
||||
if (!Getattr(fragments, name)) {
|
||||
String *section = Copy(Getattr(fragment, k_section));
|
||||
String *section = Copy(Getattr(fragment, "section"));
|
||||
String *ccode = Copy(Getattr(fragment, k_code));
|
||||
Hash *kwargs = Getattr(fragment, k_kwargs);
|
||||
Setmeta(ccode, k_section, section);
|
||||
Setmeta(ccode, "section", section);
|
||||
if (kwargs) {
|
||||
Setmeta(ccode, k_kwargs, kwargs);
|
||||
}
|
||||
|
|
@ -121,13 +121,13 @@ void Swig_fragment_emit(Node *n) {
|
|||
if (debug)
|
||||
Printf(stdout, "looking subfragment %s\n", name);
|
||||
if (code && (Strcmp(code, k_ignore) != 0)) {
|
||||
String *section = Getmeta(code, k_section);
|
||||
String *section = Getmeta(code, "section");
|
||||
Hash *nn = Getmeta(code, k_kwargs);
|
||||
if (!looking_fragments)
|
||||
looking_fragments = NewHash();
|
||||
Setattr(looking_fragments, name, "1");
|
||||
while (nn) {
|
||||
if (Equal(Getattr(nn, k_name), k_fragment)) {
|
||||
if (Equal(Getattr(nn, k_name), "fragment")) {
|
||||
if (debug)
|
||||
Printf(stdout, "emitting fragment %s %s\n", nn, type);
|
||||
Setfile(nn, Getfile(n));
|
||||
|
|
|
|||
|
|
@ -122,7 +122,7 @@ static List *Swig_search_path_any(int syspath) {
|
|||
ilen = Len(pdirectories);
|
||||
for (i = 0; i < ilen; i++) {
|
||||
filename = NewString(Getitem(pdirectories,i));
|
||||
StringAppend(filename,SWIG_FILE_DELIMETER);
|
||||
Append(filename,SWIG_FILE_DELIMETER);
|
||||
Append(slist,filename);
|
||||
Delete(filename);
|
||||
}
|
||||
|
|
@ -131,7 +131,7 @@ static List *Swig_search_path_any(int syspath) {
|
|||
ilen = Len(directories);
|
||||
for (i = 0; i < ilen; i++) {
|
||||
filename = NewString(Getitem(directories,i));
|
||||
StringAppend(filename,SWIG_FILE_DELIMETER);
|
||||
Append(filename,SWIG_FILE_DELIMETER);
|
||||
if (syspath) {
|
||||
/* If doing a system include, put the system directories first */
|
||||
Insert(slist,i,filename);
|
||||
|
|
@ -214,13 +214,13 @@ String *Swig_read_file(FILE *f) {
|
|||
|
||||
assert(str);
|
||||
while (fgets(buffer, 4095, f)) {
|
||||
StringAppend(str, buffer);
|
||||
Append(str, buffer);
|
||||
}
|
||||
len = StringLen(str);
|
||||
len = Len(str);
|
||||
if (len) {
|
||||
char *cstr = Char(str);
|
||||
if (cstr[len - 1] != '\n') {
|
||||
StringAppend(str, "\n");
|
||||
Append(str, "\n");
|
||||
}
|
||||
}
|
||||
return str;
|
||||
|
|
|
|||
|
|
@ -429,13 +429,13 @@ String *Swig_string_mangle(const String *s) {
|
|||
Delete(b);
|
||||
b = t;
|
||||
}
|
||||
pc = cb = StringChar(b);
|
||||
pc = cb = Char(b);
|
||||
while (*pc) {
|
||||
char c = *pc;
|
||||
if (isalnum((int) c) || (c == '_')) {
|
||||
state = 1;
|
||||
if (space && (space == state)) {
|
||||
StringAppend(result, "_SS_");
|
||||
Append(result, "_SS_");
|
||||
}
|
||||
space = 0;
|
||||
Printf(result, "%c", (int) c);
|
||||
|
|
@ -452,7 +452,7 @@ String *Swig_string_mangle(const String *s) {
|
|||
switch (c) {
|
||||
case '.':
|
||||
if ((cb != pc) && (*(pc - 1) == 'p')) {
|
||||
StringAppend(result, "_");
|
||||
Append(result, "_");
|
||||
++pc;
|
||||
continue;
|
||||
} else {
|
||||
|
|
@ -461,7 +461,7 @@ String *Swig_string_mangle(const String *s) {
|
|||
break;
|
||||
case ':':
|
||||
if (*(pc + 1) == ':') {
|
||||
StringAppend(result, "_");
|
||||
Append(result, "_");
|
||||
++pc;
|
||||
++pc;
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -179,7 +179,7 @@ String *Swig_name_member(const String_or_char *classname, const String_or_char *
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_member);
|
||||
f = Getattr(naming_hash, "member");
|
||||
if (!f) {
|
||||
Append(r, "%c_%m");
|
||||
} else {
|
||||
|
|
@ -213,7 +213,7 @@ String *Swig_name_get(const String_or_char *vname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_get);
|
||||
f = Getattr(naming_hash, "get");
|
||||
if (!f) {
|
||||
Append(r, "%v_get");
|
||||
} else {
|
||||
|
|
@ -237,7 +237,7 @@ String *Swig_name_set(const String_or_char *vname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_set);
|
||||
f = Getattr(naming_hash, "set");
|
||||
if (!f) {
|
||||
Append(r, "%v_set");
|
||||
} else {
|
||||
|
|
@ -264,7 +264,7 @@ String *Swig_name_construct(const String_or_char *classname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_construct);
|
||||
f = Getattr(naming_hash, "construct");
|
||||
if (!f) {
|
||||
Append(r, "new_%c");
|
||||
} else {
|
||||
|
|
@ -297,7 +297,7 @@ String *Swig_name_copyconstructor(const String_or_char *classname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_copy);
|
||||
f = Getattr(naming_hash, "copy");
|
||||
if (!f) {
|
||||
Append(r, "copy_%c");
|
||||
} else {
|
||||
|
|
@ -329,7 +329,7 @@ String *Swig_name_destroy(const String_or_char *classname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_destroy);
|
||||
f = Getattr(naming_hash, "destroy");
|
||||
if (!f) {
|
||||
Append(r, "delete_%c");
|
||||
} else {
|
||||
|
|
@ -361,7 +361,7 @@ String *Swig_name_disown(const String_or_char *classname) {
|
|||
r = NewStringEmpty();
|
||||
if (!naming_hash)
|
||||
naming_hash = NewHash();
|
||||
f = Getattr(naming_hash, k_disown);
|
||||
f = Getattr(naming_hash, "disown");
|
||||
if (!f) {
|
||||
Append(r, "disown_%c");
|
||||
} else {
|
||||
|
|
@ -398,7 +398,7 @@ void Swig_name_object_set(Hash *namehash, String *name, SwigType *decl, DOH *obj
|
|||
}
|
||||
/* Add an object based on the declarator value */
|
||||
if (!decl) {
|
||||
Setattr(n, k_start, object);
|
||||
Setattr(n, "start", object);
|
||||
} else {
|
||||
SwigType *cd = Copy(decl);
|
||||
Setattr(n, cd, object);
|
||||
|
|
@ -422,7 +422,7 @@ static DOH *get_object(Hash *n, String *decl) {
|
|||
if (decl) {
|
||||
rn = Getattr(n, decl);
|
||||
} else {
|
||||
rn = Getattr(n, k_start);
|
||||
rn = Getattr(n, "start");
|
||||
}
|
||||
return rn;
|
||||
}
|
||||
|
|
@ -630,7 +630,7 @@ void Swig_features_get(Hash *features, String *prefix, String *name, SwigType *d
|
|||
/* very specific hack for template constructors/destructors */
|
||||
if (name && SwigType_istemplate(name)) {
|
||||
String *nodetype = nodeType(node);
|
||||
if (nodetype && (Equal(nodetype, k_constructor) || Equal(nodetype, k_destructor))) {
|
||||
if (nodetype && (Equal(nodetype, "constructor") || Equal(nodetype, "destructor"))) {
|
||||
String *nprefix = NewStringEmpty();
|
||||
String *nlast = NewStringEmpty();
|
||||
String *tprefix;
|
||||
|
|
@ -658,7 +658,7 @@ void Swig_features_get(Hash *features, String *prefix, String *name, SwigType *d
|
|||
#endif
|
||||
|
||||
/* Global features */
|
||||
features_get(features, empty_string, 0, 0, node);
|
||||
features_get(features, "", 0, 0, node);
|
||||
if (name) {
|
||||
String *tname = NewStringEmpty();
|
||||
/* add features for 'root' template */
|
||||
|
|
@ -741,10 +741,10 @@ void Swig_feature_set(Hash *features, const String_or_char *name, SwigType *decl
|
|||
Delete(n);
|
||||
}
|
||||
if (!decl) {
|
||||
fhash = Getattr(n, k_start);
|
||||
fhash = Getattr(n, "start");
|
||||
if (!fhash) {
|
||||
fhash = NewHash();
|
||||
Setattr(n, k_start, fhash);
|
||||
Setattr(n, "start", fhash);
|
||||
Delete(fhash);
|
||||
}
|
||||
} else {
|
||||
|
|
@ -979,7 +979,7 @@ int Swig_need_protected(Node *n) {
|
|||
/* and the function is declared like virtual, or it has no
|
||||
storage. This eliminates typedef, static and so on. */
|
||||
return !storage || Equal(storage, k_virtual);
|
||||
} else if (Equal(nodetype, k_constructor) || Equal(nodetype, k_destructor)) {
|
||||
} else if (Equal(nodetype, "constructor") || Equal(nodetype, "destructor")) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
@ -1035,15 +1035,15 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) {
|
|||
if (!matchlist)
|
||||
matchlist = NewList();
|
||||
Setattr(mi, k_value, Getattr(kw, k_value));
|
||||
Setattr(mi, k_attrlist, attrlist);
|
||||
Setattr(mi, "attrlist", attrlist);
|
||||
#ifdef SWIG_DEBUG
|
||||
if (isrxsmatch)
|
||||
Printf(stderr, "rxsmatch to use: %s %s %s\n", ckey, Getattr(kw, k_value), attrlist);
|
||||
#endif
|
||||
if (isnotmatch)
|
||||
SetFlag(mi, k_notmatch);
|
||||
SetFlag(mi, "notmatch");
|
||||
if (isrxsmatch)
|
||||
SetFlag(mi, k_rxsmatch);
|
||||
SetFlag(mi, "rxsmatch");
|
||||
Delete(attrlist);
|
||||
Append(matchlist, mi);
|
||||
Delete(mi);
|
||||
|
|
@ -1060,7 +1060,7 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) {
|
|||
kw = next;
|
||||
}
|
||||
if (matchlist) {
|
||||
Setattr(nameobj, k_matchlist, matchlist);
|
||||
Setattr(nameobj, "matchlist", matchlist);
|
||||
Delete(matchlist);
|
||||
}
|
||||
}
|
||||
|
|
@ -1068,7 +1068,7 @@ static void Swig_name_object_attach_keys(const char *keys[], Hash *nameobj) {
|
|||
void Swig_name_nameobj_add(Hash *name_hash, List *name_list, String *prefix, String *name, SwigType *decl, Hash *nameobj) {
|
||||
String *nname = 0;
|
||||
if (name && Len(name)) {
|
||||
String *target_fmt = Getattr(nameobj, k_targetfmt);
|
||||
String *target_fmt = Getattr(nameobj, "targetfmt");
|
||||
nname = prefix ? NewStringf("%s::%s", prefix, name) : NewString(name);
|
||||
if (target_fmt) {
|
||||
String *tmp = NewStringf(target_fmt, nname);
|
||||
|
|
@ -1078,11 +1078,11 @@ void Swig_name_nameobj_add(Hash *name_hash, List *name_list, String *prefix, Str
|
|||
}
|
||||
|
||||
if (!nname || !Len(nname) || Getattr(nameobj, k_fullname) || /* any of these options trigger a 'list' nameobj */
|
||||
Getattr(nameobj, k_sourcefmt) || Getattr(nameobj, k_matchlist)) {
|
||||
Getattr(nameobj, "sourcefmt") || Getattr(nameobj, "matchlist")) {
|
||||
if (decl)
|
||||
Setattr(nameobj, k_decl, decl);
|
||||
if (nname && Len(nname))
|
||||
Setattr(nameobj, k_targetname, nname);
|
||||
Setattr(nameobj, "targetname", nname);
|
||||
/* put the new nameobj at the beginnig of the list, such that the
|
||||
last inserted rule take precedence */
|
||||
Insert(name_list, 0, nameobj);
|
||||
|
|
@ -1172,14 +1172,14 @@ int Swig_name_match_value(String *mvalue, String *value) {
|
|||
}
|
||||
return match;
|
||||
#else
|
||||
return StringEqual(mvalue, value);
|
||||
return Equal(mvalue, value);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
int Swig_name_match_nameobj(Hash *rn, Node *n) {
|
||||
int match = 1;
|
||||
List *matchlist = Getattr(rn, k_matchlist);
|
||||
List *matchlist = Getattr(rn, "matchlist");
|
||||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "Swig_name_match_nameobj: %s\n", Getattr(n, "name"));
|
||||
#endif
|
||||
|
|
@ -1188,10 +1188,10 @@ int Swig_name_match_nameobj(Hash *rn, Node *n) {
|
|||
int i;
|
||||
for (i = 0; match && (i < ilen); ++i) {
|
||||
Node *mi = Getitem(matchlist, i);
|
||||
List *lattr = Getattr(mi, k_attrlist);
|
||||
List *lattr = Getattr(mi, "attrlist");
|
||||
String *nval = Swig_get_lattr(n, lattr);
|
||||
int notmatch = GetFlag(mi, k_notmatch);
|
||||
int rxsmatch = GetFlag(mi, k_rxsmatch);
|
||||
int notmatch = GetFlag(mi, "notmatch");
|
||||
int rxsmatch = GetFlag(mi, "rxsmatch");
|
||||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "mi %d %s re %d not %d \n", i, nval, notmatch, rxsmatch);
|
||||
if (rxsmatch) {
|
||||
|
|
@ -1236,12 +1236,12 @@ Hash *Swig_name_nameobj_lget(List *namelist, Node *n, String *prefix, String *na
|
|||
if (rdecl && (!decl || !Equal(rdecl, decl))) {
|
||||
continue;
|
||||
} else if (Swig_name_match_nameobj(rn, n)) {
|
||||
String *tname = Getattr(rn, k_targetname);
|
||||
String *tname = Getattr(rn, "targetname");
|
||||
if (tname) {
|
||||
String *sfmt = Getattr(rn, k_sourcefmt);
|
||||
String *sfmt = Getattr(rn, "sourcefmt");
|
||||
String *sname = 0;
|
||||
int fullname = GetFlag(rn, k_fullname);
|
||||
int rxstarget = GetFlag(rn, k_rxstarget);
|
||||
int rxstarget = GetFlag(rn, "rxstarget");
|
||||
if (sfmt) {
|
||||
if (fullname && prefix) {
|
||||
String *pname = NewStringf("%s::%s", prefix, name);
|
||||
|
|
@ -1443,7 +1443,7 @@ String *Swig_name_make(Node *n, String *prefix, String_or_char *cname, SwigType
|
|||
|
||||
if (name && n && SwigType_istemplate(name)) {
|
||||
String *nodetype = nodeType(n);
|
||||
if (nodetype && (Equal(nodetype, k_constructor) || Equal(nodetype, k_destructor))) {
|
||||
if (nodetype && (Equal(nodetype, "constructor") || Equal(nodetype, "destructor"))) {
|
||||
String *nprefix = NewStringEmpty();
|
||||
String *nlast = NewStringEmpty();
|
||||
String *tprefix;
|
||||
|
|
@ -1476,7 +1476,7 @@ String *Swig_name_make(Node *n, String *prefix, String_or_char *cname, SwigType
|
|||
if (!rn || !Swig_name_match_nameobj(rn, n)) {
|
||||
rn = Swig_name_nameobj_lget(Swig_name_rename_list(), n, prefix, name, decl);
|
||||
if (rn) {
|
||||
String *sfmt = Getattr(rn, k_sourcefmt);
|
||||
String *sfmt = Getattr(rn, "sourcefmt");
|
||||
int fullname = GetFlag(rn, k_fullname);
|
||||
if (fullname && prefix) {
|
||||
String *sname = NewStringf("%s::%s", prefix, name);
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@
|
|||
char cvsroot_parms_c[] = "$Id$";
|
||||
|
||||
#include "swig.h"
|
||||
#include "swigkeys.h"
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* NewParm()
|
||||
|
|
@ -30,87 +29,22 @@ Parm *NewParm(SwigType *type, const String_or_char *name) {
|
|||
return p;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* NewParmFromNode()
|
||||
*
|
||||
* Create a new parameter from datatype 'type' and name 'name'.
|
||||
* Sets the file and line number for the parameter for error handling by
|
||||
* making a (shallow) copy of file and line number from Node 'n'.
|
||||
* ------------------------------------------------------------------------ */
|
||||
|
||||
Parm *NewParmFromNode(SwigType *type, const String_or_char *name, Node *n) {
|
||||
Parm *p = NewParm(type, name);
|
||||
Setfile(p, Getfile(n));
|
||||
Setline(p, Getline(n));
|
||||
|
||||
return p;
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------------------
|
||||
* CopyParm()
|
||||
* ------------------------------------------------------------------------ */
|
||||
|
||||
Parm *CopyParm(Parm *p) {
|
||||
Parm *np = NewHash();
|
||||
SwigType *t = Getattr(p, "type");
|
||||
String *name = Getattr(p, "name");
|
||||
String *lname = Getattr(p, "lname");
|
||||
String *value = Getattr(p, "value");
|
||||
String *ignore = Getattr(p, "ignore");
|
||||
String *alttype = Getattr(p, "alttype");
|
||||
String *byname = Getattr(p, "arg:byname");
|
||||
String *compactdefargs = Getattr(p, "compactdefargs");
|
||||
String *self = Getattr(p, "self");
|
||||
|
||||
if (t) {
|
||||
SwigType *nt = Copy(t);
|
||||
Setattr(np, "type", nt);
|
||||
Delete(nt);
|
||||
Iterator ki;
|
||||
for (ki = First(p); ki.key; ki = Next(ki)) {
|
||||
if (DohIsString(ki.item)) {
|
||||
DOH *c = Copy(ki.item);
|
||||
Setattr(np,ki.key,c);
|
||||
Delete(c);
|
||||
}
|
||||
}
|
||||
if (name) {
|
||||
String *str = Copy(name);
|
||||
Setattr(np, "name", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (lname) {
|
||||
String *str = Copy(lname);
|
||||
Setattr(np, "lname", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (value) {
|
||||
String *str = Copy(value);
|
||||
Setattr(np, "value", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (ignore) {
|
||||
String *str = Copy(ignore);
|
||||
Setattr(np, "ignore", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (alttype) {
|
||||
String *str = Copy(alttype);
|
||||
Setattr(np, "alttype", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (byname) {
|
||||
String *str = Copy(byname);
|
||||
Setattr(np, "arg:byname", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (compactdefargs) {
|
||||
String *str = Copy(compactdefargs);
|
||||
Setattr(np, "compactdefargs", str);
|
||||
Delete(str);
|
||||
}
|
||||
if (self) {
|
||||
String *str = Copy(self);
|
||||
Setattr(np, "self", str);
|
||||
Delete(str);
|
||||
}
|
||||
|
||||
Setfile(np, Getfile(p));
|
||||
Setline(np, Getline(p));
|
||||
|
||||
return np;
|
||||
}
|
||||
|
||||
|
|
@ -204,10 +138,10 @@ String *ParmList_str(ParmList *p) {
|
|||
String *out = NewStringEmpty();
|
||||
while (p) {
|
||||
String *pstr = SwigType_str(Getattr(p, "type"), Getattr(p, "name"));
|
||||
StringAppend(out, pstr);
|
||||
Append(out, pstr);
|
||||
p = nextSibling(p);
|
||||
if (p) {
|
||||
StringAppend(out, ",");
|
||||
Append(out, ",");
|
||||
}
|
||||
Delete(pstr);
|
||||
}
|
||||
|
|
@ -225,13 +159,13 @@ String *ParmList_str_defaultargs(ParmList *p) {
|
|||
while (p) {
|
||||
String *value = Getattr(p, "value");
|
||||
String *pstr = SwigType_str(Getattr(p, "type"), Getattr(p, "name"));
|
||||
StringAppend(out, pstr);
|
||||
Append(out, pstr);
|
||||
if (value) {
|
||||
Printf(out, "=%s", value);
|
||||
}
|
||||
p = nextSibling(p);
|
||||
if (p) {
|
||||
StringAppend(out, ",");
|
||||
Append(out, ",");
|
||||
}
|
||||
Delete(pstr);
|
||||
}
|
||||
|
|
@ -251,10 +185,10 @@ String *ParmList_protostr(ParmList *p) {
|
|||
p = nextSibling(p);
|
||||
} else {
|
||||
String *pstr = SwigType_str(Getattr(p, "type"), 0);
|
||||
StringAppend(out, pstr);
|
||||
Append(out, pstr);
|
||||
p = nextSibling(p);
|
||||
if (p) {
|
||||
StringAppend(out, ",");
|
||||
Append(out, ",");
|
||||
}
|
||||
Delete(pstr);
|
||||
}
|
||||
|
|
@ -262,32 +196,6 @@ String *ParmList_protostr(ParmList *p) {
|
|||
return out;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
* ParmList_is_compactdefargs()
|
||||
*
|
||||
* Returns 1 if the parameter list passed in is marked for compact argument
|
||||
* handling (by the "compactdefargs" attribute). Otherwise returns 0.
|
||||
* ---------------------------------------------------------------------- */
|
||||
|
||||
int ParmList_is_compactdefargs(ParmList *p) {
|
||||
int compactdefargs = 0;
|
||||
|
||||
if (p) {
|
||||
compactdefargs = Getattr(p, "compactdefargs") ? 1 : 0;
|
||||
|
||||
/* The "compactdefargs" attribute should only be set on the first parameter in the list.
|
||||
* However, sometimes an extra parameter is inserted at the beginning of the parameter list,
|
||||
* so we check the 2nd parameter too. */
|
||||
if (!compactdefargs) {
|
||||
Parm *nextparm = nextSibling(p);
|
||||
compactdefargs = (nextparm && Getattr(nextparm, "compactdefargs")) ? 1 : 0;
|
||||
}
|
||||
}
|
||||
|
||||
return compactdefargs;
|
||||
}
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------------
|
||||
* ParmList_has_defaultargs()
|
||||
*
|
||||
|
|
@ -296,13 +204,11 @@ int ParmList_is_compactdefargs(ParmList *p) {
|
|||
* ---------------------------------------------------------------------- */
|
||||
|
||||
int ParmList_has_defaultargs(ParmList *p) {
|
||||
int default_args = 0;
|
||||
while (p) {
|
||||
if (Getattr(p, "value")) {
|
||||
default_args = 1;
|
||||
break;
|
||||
return 1;
|
||||
}
|
||||
p = nextSibling(p);
|
||||
}
|
||||
return default_args;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -331,11 +331,11 @@ static Hash *default_cache = 0;
|
|||
static
|
||||
void SwigType_add_default(String *def, SwigType *nr) {
|
||||
if (Strcmp(nr, "SWIGTYPE") == 0) {
|
||||
StringAppend(def, "SWIGTYPE");
|
||||
Append(def, "SWIGTYPE");
|
||||
} else {
|
||||
String *q = SwigType_isqualifier(nr) ? SwigType_pop(nr) : 0;
|
||||
if (q && strstr(Char(nr), "SWIGTYPE")) {
|
||||
StringAppend(def, nr);
|
||||
Append(def, nr);
|
||||
} else {
|
||||
String *nd = SwigType_default(nr);
|
||||
if (nd) {
|
||||
|
|
@ -349,10 +349,10 @@ void SwigType_add_default(String *def, SwigType *nr) {
|
|||
Delete(nd);
|
||||
}
|
||||
}
|
||||
StringAppend(def, bdef);
|
||||
Append(def, bdef);
|
||||
Delete(bdef);
|
||||
} else {
|
||||
StringAppend(def, nr);
|
||||
Append(def, nr);
|
||||
}
|
||||
}
|
||||
Delete(q);
|
||||
|
|
@ -448,7 +448,7 @@ SwigType *SwigType_default(SwigType *t) {
|
|||
SwigType_del_array(nr);
|
||||
SwigType_add_default(def, nr);
|
||||
#else
|
||||
StringAppend(def, "SWIGTYPE");
|
||||
Append(def, "SWIGTYPE");
|
||||
#endif
|
||||
Delete(nr);
|
||||
}
|
||||
|
|
@ -475,7 +475,7 @@ SwigType *SwigType_default(SwigType *t) {
|
|||
}
|
||||
if (r != t)
|
||||
Delete(r);
|
||||
if (StringEqual(def, t)) {
|
||||
if (Equal(def, t)) {
|
||||
Delete(def);
|
||||
def = 0;
|
||||
}
|
||||
|
|
@ -522,7 +522,7 @@ String *SwigType_namestr(const SwigType *t) {
|
|||
/* Avoid creating a <: token, which is the same as [ in C++. */
|
||||
if (i == 0 && Len(str) && *Char(str) == ':')
|
||||
Putc(' ', r);
|
||||
StringAppend(r, str);
|
||||
Append(r, str);
|
||||
if ((i + 1) < sz)
|
||||
Putc(',', r);
|
||||
Delete(str);
|
||||
|
|
@ -530,7 +530,7 @@ String *SwigType_namestr(const SwigType *t) {
|
|||
Putc(' ', r);
|
||||
Putc('>', r);
|
||||
suffix = SwigType_templatesuffix(t);
|
||||
StringAppend(r, suffix);
|
||||
Append(r, suffix);
|
||||
Delete(suffix);
|
||||
Delete(p);
|
||||
return r;
|
||||
|
|
@ -577,7 +577,7 @@ String *SwigType_str(SwigType *s, const String_or_char *id) {
|
|||
Insert(result, 0, "*");
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
} else if (SwigType_ismemberpointer(element)) {
|
||||
String *q;
|
||||
|
|
@ -586,35 +586,35 @@ String *SwigType_str(SwigType *s, const String_or_char *id) {
|
|||
Insert(result, 0, q);
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
Delete(q);
|
||||
} else if (SwigType_isreference(element)) {
|
||||
Insert(result, 0, "&");
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
} else if (SwigType_isarray(element)) {
|
||||
DOH *size;
|
||||
StringAppend(result, "[");
|
||||
Append(result, "[");
|
||||
size = SwigType_parm(element);
|
||||
StringAppend(result, size);
|
||||
StringAppend(result, "]");
|
||||
Append(result, size);
|
||||
Append(result, "]");
|
||||
Delete(size);
|
||||
} else if (SwigType_isfunction(element)) {
|
||||
DOH *parms, *p;
|
||||
int j, plen;
|
||||
StringAppend(result, "(");
|
||||
Append(result, "(");
|
||||
parms = SwigType_parmlist(element);
|
||||
plen = Len(parms);
|
||||
for (j = 0; j < plen; j++) {
|
||||
p = SwigType_str(Getitem(parms, j), 0);
|
||||
StringAppend(result, p);
|
||||
Append(result, p);
|
||||
if (j < (plen - 1))
|
||||
StringAppend(result, ",");
|
||||
Append(result, ",");
|
||||
}
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
Delete(parms);
|
||||
} else {
|
||||
if (strcmp(Char(element), "v(...)") == 0) {
|
||||
|
|
@ -687,34 +687,34 @@ SwigType *SwigType_ltype(SwigType *s) {
|
|||
if (SwigType_isqualifier(element)) {
|
||||
/* Do nothing. Ignore */
|
||||
} else if (SwigType_ispointer(element)) {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
firstarray = 0;
|
||||
} else if (SwigType_ismemberpointer(element)) {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
firstarray = 0;
|
||||
} else if (SwigType_isreference(element)) {
|
||||
if (notypeconv) {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
} else {
|
||||
StringAppend(result, "p.");
|
||||
Append(result, "p.");
|
||||
}
|
||||
firstarray = 0;
|
||||
} else if (SwigType_isarray(element) && firstarray) {
|
||||
if (notypeconv) {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
} else {
|
||||
StringAppend(result, "p.");
|
||||
Append(result, "p.");
|
||||
}
|
||||
firstarray = 0;
|
||||
} else if (SwigType_isenum(element)) {
|
||||
int anonymous_enum = (Cmp(element, "enum ") == 0);
|
||||
if (notypeconv || !anonymous_enum) {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
} else {
|
||||
StringAppend(result, "int");
|
||||
Append(result, "int");
|
||||
}
|
||||
} else {
|
||||
StringAppend(result, element);
|
||||
Append(result, element);
|
||||
}
|
||||
}
|
||||
Delete(elements);
|
||||
|
|
@ -813,7 +813,7 @@ String *SwigType_rcaststr(SwigType *s, const String_or_char *name) {
|
|||
Insert(result, 0, "*");
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
firstarray = 0;
|
||||
} else if (SwigType_ismemberpointer(element)) {
|
||||
|
|
@ -824,26 +824,26 @@ String *SwigType_rcaststr(SwigType *s, const String_or_char *name) {
|
|||
Delete(q);
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
firstarray = 0;
|
||||
} else if (SwigType_isreference(element)) {
|
||||
Insert(result, 0, "&");
|
||||
if ((nextelement) && ((SwigType_isfunction(nextelement) || (SwigType_isarray(nextelement))))) {
|
||||
Insert(result, 0, "(");
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
}
|
||||
isreference = 1;
|
||||
} else if (SwigType_isarray(element)) {
|
||||
DOH *size;
|
||||
if (firstarray && !isreference) {
|
||||
StringAppend(result, "(*)");
|
||||
Append(result, "(*)");
|
||||
firstarray = 0;
|
||||
} else {
|
||||
StringAppend(result, "[");
|
||||
Append(result, "[");
|
||||
size = SwigType_parm(element);
|
||||
StringAppend(result, size);
|
||||
StringAppend(result, "]");
|
||||
Append(result, size);
|
||||
Append(result, "]");
|
||||
Delete(size);
|
||||
clear = 0;
|
||||
}
|
||||
|
|
@ -851,17 +851,17 @@ String *SwigType_rcaststr(SwigType *s, const String_or_char *name) {
|
|||
} else if (SwigType_isfunction(element)) {
|
||||
DOH *parms, *p;
|
||||
int j, plen;
|
||||
StringAppend(result, "(");
|
||||
Append(result, "(");
|
||||
parms = SwigType_parmlist(element);
|
||||
plen = Len(parms);
|
||||
for (j = 0; j < plen; j++) {
|
||||
p = SwigType_str(Getitem(parms, j), 0);
|
||||
StringAppend(result, p);
|
||||
Append(result, p);
|
||||
Delete(p);
|
||||
if (j < (plen - 1))
|
||||
StringAppend(result, ",");
|
||||
Append(result, ",");
|
||||
}
|
||||
StringAppend(result, ")");
|
||||
Append(result, ")");
|
||||
Delete(parms);
|
||||
} else {
|
||||
String *bs = SwigType_namestr(element);
|
||||
|
|
@ -881,9 +881,9 @@ String *SwigType_rcaststr(SwigType *s, const String_or_char *name) {
|
|||
if (isreference) {
|
||||
if (isarray)
|
||||
Clear(cast);
|
||||
StringAppend(cast, "*");
|
||||
Append(cast, "*");
|
||||
}
|
||||
StringAppend(cast, name);
|
||||
Append(cast, name);
|
||||
}
|
||||
Delete(result);
|
||||
Delete(tc);
|
||||
|
|
@ -911,14 +911,14 @@ String *SwigType_lcaststr(SwigType *s, const String_or_char *name) {
|
|||
Printf(result, "(%s)", str);
|
||||
Delete(str);
|
||||
if (name)
|
||||
StringAppend(result, name);
|
||||
Append(result, name);
|
||||
} else if (SwigType_isqualifier(s)) {
|
||||
String *lstr = SwigType_lstr(s, 0);
|
||||
Printf(result, "(%s)%s", lstr, name);
|
||||
Delete(lstr);
|
||||
} else {
|
||||
if (name)
|
||||
StringAppend(result, name);
|
||||
Append(result, name);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
|
@ -986,7 +986,7 @@ String *SwigType_manglestr_default(SwigType *s) {
|
|||
*c = '_';
|
||||
c++;
|
||||
}
|
||||
StringAppend(result, base);
|
||||
Append(result, base);
|
||||
Insert(result, 0, "_");
|
||||
Delete(lt);
|
||||
Delete(base);
|
||||
|
|
@ -1013,7 +1013,7 @@ void SwigType_typename_replace(SwigType *t, String *pat, String *rep) {
|
|||
if (!Strstr(t, pat))
|
||||
return;
|
||||
|
||||
if (StringEqual(t, pat)) {
|
||||
if (Equal(t, pat)) {
|
||||
Replace(t, pat, rep, DOH_REPLACE_ANY);
|
||||
return;
|
||||
}
|
||||
|
|
@ -1023,12 +1023,12 @@ void SwigType_typename_replace(SwigType *t, String *pat, String *rep) {
|
|||
for (i = 0; i < ilen; i++) {
|
||||
String *e = Getitem(elem, i);
|
||||
if (SwigType_issimple(e)) {
|
||||
if (StringEqual(e, pat)) {
|
||||
if (Equal(e, pat)) {
|
||||
/* Replaces a type of the form 'pat' with 'rep<args>' */
|
||||
Replace(e, pat, rep, DOH_REPLACE_ANY);
|
||||
} else if (SwigType_istemplate(e)) {
|
||||
/* Replaces a type of the form 'pat<args>' with 'rep' */
|
||||
if (StringEqual(e, pat)) {
|
||||
if (Equal(e, pat)) {
|
||||
String *repbase = SwigType_templateprefix(rep);
|
||||
Replace(e, pat, repbase, DOH_REPLACE_ID | DOH_REPLACE_FIRST);
|
||||
Delete(repbase);
|
||||
|
|
@ -1038,11 +1038,11 @@ void SwigType_typename_replace(SwigType *t, String *pat, String *rep) {
|
|||
List *tparms = SwigType_parmlist(e);
|
||||
int j, jlen;
|
||||
String *nt = SwigType_templateprefix(e);
|
||||
StringAppend(nt, "<(");
|
||||
Append(nt, "<(");
|
||||
jlen = Len(tparms);
|
||||
for (j = 0; j < jlen; j++) {
|
||||
SwigType_typename_replace(Getitem(tparms, j), pat, rep);
|
||||
StringAppend(nt, Getitem(tparms, j));
|
||||
Append(nt, Getitem(tparms, j));
|
||||
if (j < (jlen - 1))
|
||||
Putc(',', nt);
|
||||
}
|
||||
|
|
@ -1050,7 +1050,7 @@ void SwigType_typename_replace(SwigType *t, String *pat, String *rep) {
|
|||
Printf(nt, ")>%s", tsuffix);
|
||||
Delete(tsuffix);
|
||||
Clear(e);
|
||||
StringAppend(e, nt);
|
||||
Append(e, nt);
|
||||
Delete(nt);
|
||||
Delete(tparms);
|
||||
}
|
||||
|
|
@ -1069,23 +1069,23 @@ void SwigType_typename_replace(SwigType *t, String *pat, String *rep) {
|
|||
int j, jlen;
|
||||
List *fparms = SwigType_parmlist(e);
|
||||
Clear(e);
|
||||
StringAppend(e, "f(");
|
||||
Append(e, "f(");
|
||||
jlen = Len(fparms);
|
||||
for (j = 0; j < jlen; j++) {
|
||||
SwigType_typename_replace(Getitem(fparms, j), pat, rep);
|
||||
StringAppend(e, Getitem(fparms, j));
|
||||
Append(e, Getitem(fparms, j));
|
||||
if (j < (jlen - 1))
|
||||
Putc(',', e);
|
||||
}
|
||||
StringAppend(e, ").");
|
||||
Append(e, ").");
|
||||
Delete(fparms);
|
||||
} else if (SwigType_isarray(e)) {
|
||||
Replace(e, pat, rep, DOH_REPLACE_ID);
|
||||
}
|
||||
StringAppend(nt, e);
|
||||
Append(nt, e);
|
||||
}
|
||||
Clear(t);
|
||||
StringAppend(t, nt);
|
||||
Append(t, nt);
|
||||
Delete(nt);
|
||||
Delete(elem);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,15 +9,11 @@ char cvsroot_keys_c[] = "$Id$";
|
|||
|
||||
#include "swigkeys.h"
|
||||
|
||||
String *empty_string = 0;
|
||||
String *k_SWIGTYPE = 0;
|
||||
String *k_abstract = 0;
|
||||
String *k_access = 0;
|
||||
String *k_alias = 0;
|
||||
String *k_allowstypedef = 0;
|
||||
String *k_alttype = 0;
|
||||
String *k_argbyname = 0;
|
||||
String *k_attrlist = 0;
|
||||
String *k_baselist = 0;
|
||||
String *k_bases = 0;
|
||||
String *k_cdecl = 0;
|
||||
|
|
@ -26,33 +22,21 @@ String *k_classforward = 0;
|
|||
String *k_classname = 0;
|
||||
String *k_cplusstaticbase = 0;
|
||||
String *k_code = 0;
|
||||
String *k_coloncolon = 0;
|
||||
String *k_compactdefargs = 0;
|
||||
String *k_construct = 0;
|
||||
String *k_constructor = 0;
|
||||
String *k_continue = 0;
|
||||
String *k_conversionoperator = 0;
|
||||
String *k_copy = 0;
|
||||
String *k_csymnextSibling = 0;
|
||||
String *k_csympreviousSibling = 0;
|
||||
String *k_csymtab = 0;
|
||||
String *k_decl = 0;
|
||||
String *k_default = 0;
|
||||
String *k_defaultargs = 0;
|
||||
String *k_destroy = 0;
|
||||
String *k_destructor = 0;
|
||||
String *k_director = 0;
|
||||
String *k_directorbase = 0;
|
||||
String *k_directorprefixargs = 0;
|
||||
String *k_disown = 0;
|
||||
String *k_emitonly = 0;
|
||||
String *k_enumitem = 0;
|
||||
String *k_error = 0;
|
||||
String *k_extern = 0;
|
||||
String *k_fragment = 0;
|
||||
String *k_friend = 0;
|
||||
String *k_fullname = 0;
|
||||
String *k_get = 0;
|
||||
String *k_hidden = 0;
|
||||
String *k_ignore = 0;
|
||||
String *k_inherit = 0;
|
||||
|
|
@ -60,38 +44,23 @@ String *k_kwargs = 0;
|
|||
String *k_lname = 0;
|
||||
String *k_locals = 0;
|
||||
String *k_kind = 0;
|
||||
String *k_match = 0;
|
||||
String *k_matchlist = 0;
|
||||
String *k_member = 0;
|
||||
String *k_name = 0;
|
||||
String *k_namespace = 0;
|
||||
String *k_notmatch = 0;
|
||||
String *k_parent = 0;
|
||||
String *k_parm = 0;
|
||||
String *k_parms = 0;
|
||||
String *k_partialarg = 0;
|
||||
String *k_partialargs = 0;
|
||||
String *k_partials = 0;
|
||||
String *k_pattern = 0;
|
||||
String *k_pname = 0;
|
||||
String *k_privatebaselist = 0;
|
||||
String *k_protectedbaselist = 0;
|
||||
String *k_public = 0;
|
||||
String *k_qname = 0;
|
||||
String *k_qualifier = 0;
|
||||
String *k_rxsmatch = 0;
|
||||
String *k_rxstarget = 0;
|
||||
String *k_rename = 0;
|
||||
String *k_result = 0;
|
||||
String *k_scope = 0;
|
||||
String *k_section = 0;
|
||||
String *k_self = 0;
|
||||
String *k_set = 0;
|
||||
String *k_sourcefmt = 0;
|
||||
String *k_start = 0;
|
||||
String *k_static = 0;
|
||||
String *k_storage = 0;
|
||||
String *k_symboltable = 0;
|
||||
String *k_symname = 0;
|
||||
String *k_symnextSibling = 0;
|
||||
String *k_symoverloaded = 0;
|
||||
|
|
@ -101,15 +70,12 @@ String *k_symsymtab = 0;
|
|||
String *k_symtab = 0;
|
||||
String *k_symtypename = 0;
|
||||
String *k_symweak = 0;
|
||||
String *k_targetfmt = 0;
|
||||
String *k_targetname = 0;
|
||||
String *k_template = 0;
|
||||
String *k_templateparm = 0;
|
||||
String *k_templateparms = 0;
|
||||
String *k_templatetype = 0;
|
||||
String *k_throw = 0;
|
||||
String *k_throws = 0;
|
||||
String *k_tmapmatch = 0;
|
||||
String *k_type = 0;
|
||||
String *k_typemap = 0;
|
||||
String *k_typedef = 0;
|
||||
|
|
@ -119,7 +85,6 @@ String *k_unnamed = 0;
|
|||
String *k_using = 0;
|
||||
String *k_value = 0;
|
||||
String *k_virtual = 0;
|
||||
String *k_vtable = 0;
|
||||
String *k_wrapaction = 0;
|
||||
String *k_wrapcode = 0;
|
||||
String *k_wrapdirectormap = 0;
|
||||
|
|
@ -127,15 +92,11 @@ String *k_wrapdisown = 0;
|
|||
String *k_wrapper = 0;
|
||||
|
||||
void Swig_keys_init() {
|
||||
empty_string = NewString("");
|
||||
k_SWIGTYPE = NewString("SWIGTYPE");
|
||||
k_abstract = NewString("abstract");
|
||||
k_access = NewString("access");
|
||||
k_alias = NewString("alias");
|
||||
k_allowstypedef = NewString("allows_typedef");
|
||||
k_alttype = NewString("alttype");
|
||||
k_argbyname = NewString("arg:byname");
|
||||
k_attrlist = NewString("attrlist");
|
||||
k_baselist = NewString("baselist");
|
||||
k_bases = NewString("bases");
|
||||
k_cdecl = NewString("cdecl");
|
||||
|
|
@ -144,32 +105,20 @@ void Swig_keys_init() {
|
|||
k_classname = NewString("classname");
|
||||
k_cplusstaticbase = NewString("cplus:staticbase");;
|
||||
k_code = NewString("code");
|
||||
k_coloncolon = NewString("::");
|
||||
k_compactdefargs = NewString("compactdefargs");
|
||||
k_construct = NewString("construct");
|
||||
k_constructor = NewString("constructor");
|
||||
k_continue = NewString("continue");
|
||||
k_conversionoperator = NewString("conversion_operator");
|
||||
k_copy = NewString("copy");
|
||||
k_csymnextSibling = NewString("csym:nextSibling");
|
||||
k_csympreviousSibling = NewString("csym:previousSibling");
|
||||
k_csymtab = NewString("csymtab");
|
||||
k_decl = NewString("decl");
|
||||
k_default = NewString("default");
|
||||
k_defaultargs = NewString("defaultargs");
|
||||
k_destroy = NewString("destroy");
|
||||
k_destructor = NewString("destructor");
|
||||
k_director = NewString("director");
|
||||
k_directorbase = NewString("directorBase");
|
||||
k_directorprefixargs = NewString("director:prefix_args");
|
||||
k_disown = NewString("disown");
|
||||
k_emitonly = NewString("emitonly");
|
||||
k_enumitem = NewString("enumitem");
|
||||
k_error = NewString("error");
|
||||
k_fragment = NewString("fragment");
|
||||
k_friend = NewString("friend");
|
||||
k_fullname = NewString("fullname");
|
||||
k_get = NewString("get");
|
||||
k_hidden = NewString("hidden");
|
||||
k_ignore = NewString("ignore");
|
||||
k_inherit = NewString("inherit");
|
||||
|
|
@ -177,38 +126,23 @@ void Swig_keys_init() {
|
|||
k_lname = NewString("lname");
|
||||
k_locals = NewString("locals");
|
||||
k_kind = NewString("kind");
|
||||
k_match = NewString("match");
|
||||
k_matchlist = NewString("matchlist");
|
||||
k_member = NewString("member");
|
||||
k_name = NewString("name");
|
||||
k_namespace = NewString("namespace");
|
||||
k_notmatch = NewString("notmatch");
|
||||
k_parent = NewString("parent");
|
||||
k_parm = NewString("parm");
|
||||
k_parms = NewString("parms");
|
||||
k_partialarg = NewString("partialarg");
|
||||
k_partialargs = NewString("partialargs");
|
||||
k_partials = NewString("partials");
|
||||
k_pattern = NewString("pattern");
|
||||
k_pname = NewString("pname");
|
||||
k_privatebaselist = NewString("privatebaselist");
|
||||
k_protectedbaselist = NewString("protectedbaselist");
|
||||
k_public = NewString("public");
|
||||
k_qname = NewString("qname");
|
||||
k_qualifier = NewString("qualifier");
|
||||
k_rxsmatch = NewString("rxsmatch");
|
||||
k_rxstarget = NewString("rxstarget");
|
||||
k_rename = NewString("rename");
|
||||
k_result = NewString("result");
|
||||
k_scope = NewString("scope");
|
||||
k_section = NewString("section");
|
||||
k_self = NewString("self");
|
||||
k_set = NewString("set");
|
||||
k_sourcefmt = NewString("sourcefmt");
|
||||
k_start = NewString("*");
|
||||
k_static = NewString("static");
|
||||
k_storage = NewString("storage");
|
||||
k_symboltable = NewString("symboltable");
|
||||
k_symname = NewString("sym:name");
|
||||
k_symnextSibling = NewString("sym:nextSibling");
|
||||
k_symoverloaded = NewString("sym:overloaded");
|
||||
|
|
@ -218,15 +152,12 @@ void Swig_keys_init() {
|
|||
k_symtab = NewString("symtab");
|
||||
k_symtypename = NewString("sym:typename");
|
||||
k_symweak = NewString("sym:weak");
|
||||
k_targetfmt = NewString("targetfmt");
|
||||
k_targetname = NewString("targetname");
|
||||
k_template = NewString("template");
|
||||
k_templateparm = NewString("templateparm");
|
||||
k_templateparms = NewString("templateparms");
|
||||
k_templatetype = NewString("templatetype");
|
||||
k_throw = NewString("throw");
|
||||
k_throws = NewString("throws");
|
||||
k_tmapmatch = NewString("tmap:match");
|
||||
k_type = NewString("type");
|
||||
k_typemap = NewString("typemap");
|
||||
k_typedef = NewString("typedef");
|
||||
|
|
@ -236,7 +167,6 @@ void Swig_keys_init() {
|
|||
k_using = NewString("using");
|
||||
k_value = NewString("value");
|
||||
k_virtual = NewString("virtual");
|
||||
k_vtable = NewString("vtable");
|
||||
k_wrapaction = NewString("wrap:action");
|
||||
k_wrapcode = NewString("wrap:code");
|
||||
k_wrapdirectormap = NewString("wrap:directormap");
|
||||
|
|
|
|||
|
|
@ -14,29 +14,19 @@
|
|||
|
||||
extern void Swig_keys_init();
|
||||
|
||||
extern String *empty_string;
|
||||
extern String *k_SWIGTYPE;
|
||||
extern String *k_abstract;
|
||||
extern String *k_access;
|
||||
extern String *k_alias;
|
||||
extern String *k_allowstypedef;
|
||||
extern String *k_alttype;
|
||||
extern String *k_argbyname;
|
||||
extern String *k_attrlist;
|
||||
extern String *k_baselist;
|
||||
extern String *k_bases;
|
||||
extern String *k_cdecl;
|
||||
extern String *k_class;
|
||||
extern String *k_classforward;
|
||||
extern String *k_classname;
|
||||
extern String *k_copy;
|
||||
extern String *k_cplusstaticbase;
|
||||
extern String *k_code;
|
||||
extern String *k_coloncolon;
|
||||
extern String *k_compactdefargs;
|
||||
extern String *k_construct;
|
||||
extern String *k_constructor;
|
||||
extern String *k_continue;
|
||||
extern String *k_conversionoperator;
|
||||
extern String *k_csymnextSibling;
|
||||
extern String *k_csympreviousSibling;
|
||||
|
|
@ -44,20 +34,14 @@ extern String *k_csymtab;
|
|||
extern String *k_decl;
|
||||
extern String *k_default;
|
||||
extern String *k_defaultargs;
|
||||
extern String *k_destroy;
|
||||
extern String *k_destructor;
|
||||
extern String *k_director;
|
||||
extern String *k_directorbase;
|
||||
extern String *k_directorprefixargs;
|
||||
extern String *k_disown;
|
||||
extern String *k_emitonly;
|
||||
extern String *k_enumitem;
|
||||
extern String *k_error;
|
||||
extern String *k_extern;
|
||||
extern String *k_fragment;
|
||||
extern String *k_friend;
|
||||
extern String *k_fullname;
|
||||
extern String *k_get;
|
||||
extern String *k_hidden;
|
||||
extern String *k_ignore;
|
||||
extern String *k_inherit;
|
||||
|
|
@ -65,38 +49,23 @@ extern String *k_kwargs;
|
|||
extern String *k_lname;
|
||||
extern String *k_locals;
|
||||
extern String *k_kind;
|
||||
extern String *k_match;
|
||||
extern String *k_matchlist;
|
||||
extern String *k_member;
|
||||
extern String *k_name;
|
||||
extern String *k_namespace;
|
||||
extern String *k_notmatch;
|
||||
extern String *k_parent;
|
||||
extern String *k_parm;
|
||||
extern String *k_parms;
|
||||
extern String *k_partialarg;
|
||||
extern String *k_partialargs;
|
||||
extern String *k_partials;
|
||||
extern String *k_pattern;
|
||||
extern String *k_pname;
|
||||
extern String *k_privatebaselist;
|
||||
extern String *k_protectedbaselist;
|
||||
extern String *k_public;
|
||||
extern String *k_qname;
|
||||
extern String *k_qualifier;
|
||||
extern String *k_rxsmatch;
|
||||
extern String *k_rxstarget;
|
||||
extern String *k_rename;
|
||||
extern String *k_result;
|
||||
extern String *k_scope;
|
||||
extern String *k_section;
|
||||
extern String *k_self;
|
||||
extern String *k_set;
|
||||
extern String *k_sourcefmt;
|
||||
extern String *k_start;
|
||||
extern String *k_static;
|
||||
extern String *k_storage;
|
||||
extern String *k_symboltable;
|
||||
extern String *k_symname;
|
||||
extern String *k_symnextSibling;
|
||||
extern String *k_symoverloaded;
|
||||
|
|
@ -106,15 +75,12 @@ extern String *k_symsymtab;
|
|||
extern String *k_symtab;
|
||||
extern String *k_symtypename;
|
||||
extern String *k_symweak;
|
||||
extern String *k_targetfmt;
|
||||
extern String *k_targetname;
|
||||
extern String *k_template;
|
||||
extern String *k_templateparm;
|
||||
extern String *k_templateparms;
|
||||
extern String *k_templatetype;
|
||||
extern String *k_throw;
|
||||
extern String *k_throws;
|
||||
extern String *k_tmapmatch;
|
||||
extern String *k_type;
|
||||
extern String *k_typemap;
|
||||
extern String *k_typedef;
|
||||
|
|
@ -124,7 +90,6 @@ extern String *k_unnamed;
|
|||
extern String *k_using;
|
||||
extern String *k_value;
|
||||
extern String *k_virtual;
|
||||
extern String *k_vtable;
|
||||
extern String *k_wrapaction;
|
||||
extern String *k_wrapcode;
|
||||
extern String *k_wrapdirectormap;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@
|
|||
|
||||
/* Individual parameters */
|
||||
extern Parm *NewParm(SwigType *type, const String_or_char *name);
|
||||
extern Parm *NewParmFromNode(SwigType *type, const String_or_char *name, Node *n);
|
||||
extern Parm *CopyParm(Parm *p);
|
||||
|
||||
/* Parameter lists */
|
||||
|
|
@ -26,4 +25,3 @@ extern String *ParmList_str_defaultargs(ParmList *);
|
|||
extern String *ParmList_protostr(ParmList *);
|
||||
extern int ParmList_is_compactdefargs(ParmList *p);
|
||||
extern int ParmList_has_defaultargs(ParmList *p);
|
||||
extern ParmList *ParmList_copy_all_except_last_parm(ParmList *p);
|
||||
|
|
|
|||
|
|
@ -202,7 +202,7 @@ void Swig_symbol_init() {
|
|||
current = NewHash();
|
||||
current_symtab = NewHash();
|
||||
ccurrent = NewHash();
|
||||
set_nodeType(current_symtab, k_symboltable);
|
||||
set_nodeType(current_symtab, "symboltable");
|
||||
Setattr(current_symtab, k_symtab, current);
|
||||
Delete(current);
|
||||
Setattr(current_symtab, k_csymtab, ccurrent);
|
||||
|
|
@ -210,7 +210,7 @@ void Swig_symbol_init() {
|
|||
|
||||
/* Set the global scope */
|
||||
symtabs = NewHash();
|
||||
Setattr(symtabs, empty_string, current_symtab);
|
||||
Setattr(symtabs, "", current_symtab);
|
||||
Delete(current_symtab);
|
||||
global_scope = current_symtab;
|
||||
}
|
||||
|
|
@ -254,8 +254,8 @@ String *Swig_symbol_getscopename() {
|
|||
Symtab *Swig_symbol_getscope(const String_or_char *name) {
|
||||
if (!symtabs)
|
||||
return 0;
|
||||
if (StringEqual(k_coloncolon, (String_or_char *) name))
|
||||
name = empty_string;
|
||||
if (Equal("::", (String_or_char *) name))
|
||||
name = "";
|
||||
return Getattr(symtabs, name);
|
||||
}
|
||||
|
||||
|
|
@ -281,10 +281,10 @@ String *Swig_symbol_qualifiedscopename(Symtab *symtab) {
|
|||
if (!result) {
|
||||
result = NewStringEmpty();
|
||||
}
|
||||
if (StringLen(result)) {
|
||||
if (Len(result)) {
|
||||
Printv(result, "::", name, NIL);
|
||||
} else {
|
||||
StringAppend(result, name);
|
||||
Append(result, name);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
|
|
@ -303,7 +303,7 @@ Symtab *Swig_symbol_newscope() {
|
|||
hsyms = NewHash();
|
||||
h = NewHash();
|
||||
|
||||
set_nodeType(h, k_symboltable);
|
||||
set_nodeType(h, "symboltable");
|
||||
Setattr(h, k_symtab, hsyms);
|
||||
Delete(hsyms);
|
||||
set_parentNode(h, current_symtab);
|
||||
|
|
@ -447,7 +447,7 @@ void Swig_symbol_cadd(String_or_char *name, Node *n) {
|
|||
if (SwigType_istemplate(name)) {
|
||||
String *cname = NewString(name);
|
||||
String *dname = Swig_symbol_template_deftype(cname, 0);
|
||||
if (!StringEqual(dname, name)) {
|
||||
if (!Equal(dname, name)) {
|
||||
Swig_symbol_cadd(dname, n);
|
||||
}
|
||||
Delete(dname);
|
||||
|
|
@ -563,7 +563,7 @@ void Swig_symbol_cadd(String_or_char *name, Node *n) {
|
|||
if (td1 && Checkattr(td1, k_storage, k_typedef)) {
|
||||
String *st = Getattr(td1, k_type);
|
||||
String *sn = Getattr(td, k_name);
|
||||
if (st && sn && StringEqual(st, sn)) {
|
||||
if (st && sn && Equal(st, sn)) {
|
||||
Symtab *sc = Getattr(current_symtab, "parentNode");
|
||||
if (sc)
|
||||
td1 = Swig_symbol_clookup(type, sc);
|
||||
|
|
@ -670,7 +670,7 @@ Node *Swig_symbol_add(String_or_char *symname, Node *n) {
|
|||
|
||||
/* Check for namespaces */
|
||||
String *ntype = Getattr(n, "nodeType");
|
||||
if ((StringEqual(ntype, Getattr(c, "nodeType"))) && ((StringEqual(ntype, k_namespace)))) {
|
||||
if ((Equal(ntype, Getattr(c, "nodeType"))) && ((Equal(ntype, k_namespace)))) {
|
||||
Node *cl, *pcl = 0;
|
||||
cl = c;
|
||||
while (cl) {
|
||||
|
|
@ -706,7 +706,7 @@ Node *Swig_symbol_add(String_or_char *symname, Node *n) {
|
|||
}
|
||||
/* Make sure the other node is a typedef */
|
||||
s = Getattr(other, k_storage);
|
||||
if (!s || (!StringEqual(s, k_typedef)))
|
||||
if (!s || (!Equal(s, k_typedef)))
|
||||
return c; /* No. This is a conflict */
|
||||
|
||||
/* Hmmm. This appears to be okay. Make sure the symbol table refers to the allow_type node */
|
||||
|
|
@ -725,17 +725,17 @@ Node *Swig_symbol_add(String_or_char *symname, Node *n) {
|
|||
{
|
||||
String *nt1, *nt2;
|
||||
nt1 = Getattr(n, "nodeType");
|
||||
if (StringEqual(nt1, k_template))
|
||||
if (Equal(nt1, k_template))
|
||||
nt1 = Getattr(n, k_templatetype);
|
||||
nt2 = Getattr(c, "nodeType");
|
||||
if (StringEqual(nt2, k_template))
|
||||
if (Equal(nt2, k_template))
|
||||
nt2 = Getattr(c, k_templatetype);
|
||||
if (StringEqual(nt1, k_using))
|
||||
if (Equal(nt1, k_using))
|
||||
u1 = 1;
|
||||
if (StringEqual(nt2, k_using))
|
||||
if (Equal(nt2, k_using))
|
||||
u2 = 1;
|
||||
|
||||
if ((!StringEqual(nt1, nt2)) && !(u1 || u2))
|
||||
if ((!Equal(nt1, nt2)) && !(u1 || u2))
|
||||
return c;
|
||||
}
|
||||
if (!(u1 || u2)) {
|
||||
|
|
@ -761,8 +761,8 @@ Node *Swig_symbol_add(String_or_char *symname, Node *n) {
|
|||
/* Okay. Walk down the list of symbols and see if we get a declarator match */
|
||||
{
|
||||
String *nt = Getattr(n, "nodeType");
|
||||
int n_template = StringEqual(nt, k_template) && Checkattr(n, k_templatetype, k_cdecl);
|
||||
int n_plain_cdecl = StringEqual(nt, k_cdecl);
|
||||
int n_template = Equal(nt, k_template) && Checkattr(n, k_templatetype, k_cdecl);
|
||||
int n_plain_cdecl = Equal(nt, k_cdecl);
|
||||
cn = c;
|
||||
pn = 0;
|
||||
while (cn) {
|
||||
|
|
@ -773,8 +773,8 @@ Node *Swig_symbol_add(String_or_char *symname, Node *n) {
|
|||
/* Now check we don't have a non-templated function overloaded by a templated function with same params,
|
||||
* eg void foo(); template<typename> void foo(); */
|
||||
String *cnt = Getattr(cn, "nodeType");
|
||||
int cn_template = StringEqual(cnt, k_template) && Checkattr(cn, k_templatetype, k_cdecl);
|
||||
int cn_plain_cdecl = StringEqual(cnt, k_cdecl);
|
||||
int cn_template = Equal(cnt, k_template) && Checkattr(cn, k_templatetype, k_cdecl);
|
||||
int cn_plain_cdecl = Equal(cnt, k_cdecl);
|
||||
if (!((n_template && cn_plain_cdecl) || (cn_template && n_plain_cdecl))) {
|
||||
/* found a conflict */
|
||||
return cn;
|
||||
|
|
@ -866,7 +866,7 @@ static Node *_symbol_lookup(String *name, Symtab *symtab, int (*check) (Node *n)
|
|||
String *dname = 0;
|
||||
Setmark(symtab, 0);
|
||||
dname = Swig_symbol_template_deftype(name, symtab);
|
||||
if (!StringEqual(dname, name)) {
|
||||
if (!Equal(dname, name)) {
|
||||
n = _symbol_lookup(dname, symtab, check);
|
||||
}
|
||||
Delete(dname);
|
||||
|
|
@ -930,12 +930,12 @@ static Node *symbol_lookup_qualified(String_or_char *name, Symtab *symtab, Strin
|
|||
String *qalloc = 0;
|
||||
String *qname = Swig_symbol_qualifiedscopename(symtab);
|
||||
if (qname) {
|
||||
if (StringLen(qname)) {
|
||||
if (prefix && StringLen(prefix)) {
|
||||
Printv(qname, k_coloncolon, prefix, NIL);
|
||||
if (Len(qname)) {
|
||||
if (prefix && Len(prefix)) {
|
||||
Printv(qname, "::", prefix, NIL);
|
||||
}
|
||||
} else {
|
||||
StringAppend(qname, prefix);
|
||||
Append(qname, prefix);
|
||||
}
|
||||
qalloc = qname;
|
||||
} else {
|
||||
|
|
@ -986,7 +986,7 @@ Node *Swig_symbol_clookup(String_or_char *name, Symtab *n) {
|
|||
if (!n) {
|
||||
hsym = current_symtab;
|
||||
} else {
|
||||
if (!Checkattr(n, "nodeType", k_symboltable)) {
|
||||
if (!Checkattr(n, "nodeType", "symboltable")) {
|
||||
n = Getattr(n, k_symsymtab);
|
||||
}
|
||||
assert(n);
|
||||
|
|
@ -1032,7 +1032,7 @@ Node *Swig_symbol_clookup(String_or_char *name, Symtab *n) {
|
|||
while (s && Checkattr(s, "nodeType", k_using)) {
|
||||
String *uname = Getattr(s, k_uname);
|
||||
Symtab *un = Getattr(s, k_symsymtab);
|
||||
Node *ss = (!StringEqual(name, uname) || (un != n)) ? Swig_symbol_clookup(uname, un) : 0; /* avoid infinity loop */
|
||||
Node *ss = (!Equal(name, uname) || (un != n)) ? Swig_symbol_clookup(uname, un) : 0; /* avoid infinity loop */
|
||||
if (!ss) {
|
||||
Swig_warning(WARN_PARSE_USING_UNDEF, Getfile(s), Getline(s), "Nothing known about '%s'.\n", Getattr(s, k_uname));
|
||||
}
|
||||
|
|
@ -1058,7 +1058,7 @@ Node *Swig_symbol_clookup_check(String_or_char *name, Symtab *n, int (*checkfunc
|
|||
if (!n) {
|
||||
hsym = current_symtab;
|
||||
} else {
|
||||
if (!Checkattr(n, "nodeType", k_symboltable)) {
|
||||
if (!Checkattr(n, "nodeType", "symboltable")) {
|
||||
n = Getattr(n, k_symsymtab);
|
||||
}
|
||||
assert(n);
|
||||
|
|
@ -1123,7 +1123,7 @@ Node *Swig_symbol_clookup_local(String_or_char *name, Symtab *n) {
|
|||
hsym = current_symtab;
|
||||
h = ccurrent;
|
||||
} else {
|
||||
if (!Checkattr(n, "nodeType", k_symboltable)) {
|
||||
if (!Checkattr(n, "nodeType", "symboltable")) {
|
||||
n = Getattr(n, k_symsymtab);
|
||||
}
|
||||
assert(n);
|
||||
|
|
@ -1171,7 +1171,7 @@ Node *Swig_symbol_clookup_local_check(String_or_char *name, Symtab *n, int (*che
|
|||
hsym = current_symtab;
|
||||
h = ccurrent;
|
||||
} else {
|
||||
if (!Checkattr(n, "nodeType", k_symboltable)) {
|
||||
if (!Checkattr(n, "nodeType", "symboltable")) {
|
||||
n = Getattr(n, k_symsymtab);
|
||||
}
|
||||
assert(n);
|
||||
|
|
@ -1308,7 +1308,7 @@ void Swig_symbol_remove(Node *n) {
|
|||
|
||||
String *Swig_symbol_qualified(Node *n) {
|
||||
Hash *symtab;
|
||||
if (Checkattr(n, "nodeType", k_symboltable)) {
|
||||
if (Checkattr(n, "nodeType", "symboltable")) {
|
||||
symtab = n;
|
||||
} else {
|
||||
symtab = Getattr(n, k_symsymtab);
|
||||
|
|
@ -1338,7 +1338,7 @@ Node *Swig_symbol_isoverloaded(Node *n) {
|
|||
* ----------------------------------------------------------------------------- */
|
||||
|
||||
static int no_constructor(Node *n) {
|
||||
return !Checkattr(n, "nodeType", k_constructor);
|
||||
return !Checkattr(n, "nodeType", "constructor");
|
||||
}
|
||||
|
||||
/* This cache produce problems with OSS, don't active it */
|
||||
|
|
@ -1372,7 +1372,7 @@ static SwigType *Swig_symbol_template_qualify(const SwigType *e, Symtab *st) {
|
|||
targs = SwigType_parmlist(e);
|
||||
tempn = Swig_symbol_clookup_local(tprefix, st);
|
||||
tscope = tempn ? Getattr(tempn, k_symsymtab) : 0;
|
||||
StringAppend(qprefix, "<(");
|
||||
Append(qprefix, "<(");
|
||||
for (ti = First(targs); ti.item;) {
|
||||
String *vparm;
|
||||
String *qparm = Swig_symbol_type_qualify(ti.item, st);
|
||||
|
|
@ -1383,16 +1383,16 @@ static SwigType *Swig_symbol_template_qualify(const SwigType *e, Symtab *st) {
|
|||
}
|
||||
|
||||
vparm = Swig_symbol_template_param_eval(qparm, st);
|
||||
StringAppend(qprefix, vparm);
|
||||
Append(qprefix, vparm);
|
||||
ti = Next(ti);
|
||||
if (ti.item) {
|
||||
StringPutc(',', qprefix);
|
||||
Putc(',', qprefix);
|
||||
}
|
||||
Delete(qparm);
|
||||
Delete(vparm);
|
||||
}
|
||||
StringAppend(qprefix, ")>");
|
||||
StringAppend(qprefix, tsuffix);
|
||||
Append(qprefix, ")>");
|
||||
Append(qprefix, tsuffix);
|
||||
Delete(tprefix);
|
||||
Delete(tsuffix);
|
||||
Delete(targs);
|
||||
|
|
@ -1414,7 +1414,7 @@ SwigType *Swig_symbol_type_qualify(const SwigType *t, Symtab *st) {
|
|||
int i, len;
|
||||
char *c = Char(t);
|
||||
if (strncmp(c, "::", 2) == 0) {
|
||||
StringAppend(result, t);
|
||||
Append(result, t);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
@ -1428,14 +1428,14 @@ SwigType *Swig_symbol_type_qualify(const SwigType *t, Symtab *st) {
|
|||
if (n) {
|
||||
String *name = Getattr(n, k_name);
|
||||
Clear(e);
|
||||
StringAppend(e, name);
|
||||
Append(e, name);
|
||||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "symbol_qual_ei %d %s %s %x\n", i, name, e, st);
|
||||
#endif
|
||||
if (!Swig_scopename_check(name)) {
|
||||
String *qname = Swig_symbol_qualified(n);
|
||||
if (qname && StringLen(qname)) {
|
||||
Insert(e, 0, k_coloncolon);
|
||||
if (qname && Len(qname)) {
|
||||
Insert(e, 0, "::");
|
||||
Insert(e, 0, qname);
|
||||
}
|
||||
#ifdef SWIG_DEBUG
|
||||
|
|
@ -1446,33 +1446,33 @@ SwigType *Swig_symbol_type_qualify(const SwigType *t, Symtab *st) {
|
|||
} else if (SwigType_istemplate(e)) {
|
||||
SwigType *ty = Swig_symbol_template_qualify(e, st);
|
||||
Clear(e);
|
||||
StringAppend(e, ty);
|
||||
Append(e, ty);
|
||||
Delete(ty);
|
||||
}
|
||||
if (strncmp(StringChar(e), "::", 2) == 0) {
|
||||
if (strncmp(Char(e), "::", 2) == 0) {
|
||||
Delitem(e, 0);
|
||||
Delitem(e, 0);
|
||||
}
|
||||
StringAppend(result, e);
|
||||
Append(result, e);
|
||||
} else if (SwigType_isfunction(e)) {
|
||||
List *parms = SwigType_parmlist(e);
|
||||
String *s = NewString("f(");
|
||||
Iterator pi = First(parms);
|
||||
while (pi.item) {
|
||||
String *pf = Swig_symbol_type_qualify(pi.item, st);
|
||||
StringAppend(s, pf);
|
||||
Append(s, pf);
|
||||
pi = Next(pi);
|
||||
if (pi.item) {
|
||||
StringAppend(s, ",");
|
||||
Append(s, ",");
|
||||
}
|
||||
Delete(pf);
|
||||
}
|
||||
StringAppend(s, ").");
|
||||
StringAppend(result, s);
|
||||
Append(s, ").");
|
||||
Append(result, s);
|
||||
Delete(parms);
|
||||
Delete(s);
|
||||
} else {
|
||||
StringAppend(result, e);
|
||||
Append(result, e);
|
||||
}
|
||||
}
|
||||
Delete(elements);
|
||||
|
|
@ -1497,7 +1497,7 @@ SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab) {
|
|||
String *tprefix = SwigType_templateprefix(qt);
|
||||
String *tsuffix = SwigType_templatesuffix(qt);
|
||||
String *qprefix = SwigType_typedef_qualified(tprefix);
|
||||
StringAppend(qprefix, "<(");
|
||||
Append(qprefix, "<(");
|
||||
while ((p = pi.item)) {
|
||||
String *np;
|
||||
String *tp = Swig_symbol_typedef_reduce(p, ntab);
|
||||
|
|
@ -1508,24 +1508,24 @@ SwigType *Swig_symbol_template_reduce(SwigType *qt, Symtab *ntab) {
|
|||
np = Copy(Getattr(n, k_name));
|
||||
Delete(tp);
|
||||
tp = np;
|
||||
if (qual && StringLen(qual)) {
|
||||
Insert(np, 0, k_coloncolon);
|
||||
if (qual && Len(qual)) {
|
||||
Insert(np, 0, "::");
|
||||
Insert(np, 0, qual);
|
||||
}
|
||||
Delete(qual);
|
||||
} else {
|
||||
np = qp;
|
||||
}
|
||||
StringAppend(qprefix, np);
|
||||
Append(qprefix, np);
|
||||
pi = Next(pi);
|
||||
if (pi.item) {
|
||||
StringAppend(qprefix, ",");
|
||||
Append(qprefix, ",");
|
||||
}
|
||||
Delete(qp);
|
||||
Delete(tp);
|
||||
}
|
||||
StringAppend(qprefix, ")>");
|
||||
StringAppend(qprefix, tsuffix);
|
||||
Append(qprefix, ")>");
|
||||
Append(qprefix, tsuffix);
|
||||
Delete(parms);
|
||||
Delete(tprefix);
|
||||
Delete(tsuffix);
|
||||
|
|
@ -1545,7 +1545,7 @@ SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab) {
|
|||
if (!n) {
|
||||
if (SwigType_istemplate(ty)) {
|
||||
SwigType *qt = Swig_symbol_template_reduce(base, tab);
|
||||
StringAppend(prefix, qt);
|
||||
Append(prefix, qt);
|
||||
Delete(qt);
|
||||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "symbol_reduce %s %s\n", ty, prefix);
|
||||
|
|
@ -1561,7 +1561,7 @@ SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab) {
|
|||
}
|
||||
}
|
||||
nt = Getattr(n, "nodeType");
|
||||
if (StringEqual(nt, k_using)) {
|
||||
if (Equal(nt, k_using)) {
|
||||
String *uname = Getattr(n, k_uname);
|
||||
if (uname) {
|
||||
n = Swig_symbol_clookup(base, Getattr(n, k_symsymtab));
|
||||
|
|
@ -1575,9 +1575,9 @@ SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab) {
|
|||
}
|
||||
}
|
||||
}
|
||||
if (StringEqual(nt, k_cdecl)) {
|
||||
if (Equal(nt, k_cdecl)) {
|
||||
String *storage = Getattr(n, k_storage);
|
||||
if (storage && (StringEqual(storage, k_typedef))) {
|
||||
if (storage && (Equal(storage, k_typedef))) {
|
||||
SwigType *decl;
|
||||
SwigType *rt;
|
||||
SwigType *qt;
|
||||
|
|
@ -1588,7 +1588,7 @@ SwigType *Swig_symbol_typedef_reduce(SwigType *ty, Symtab *tab) {
|
|||
{
|
||||
const char *dclass[3] = { "struct ", "union ", "class " };
|
||||
int i;
|
||||
char *c = StringChar(nt);
|
||||
char *c = Char(nt);
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (strstr(c, dclass[i]) == c) {
|
||||
Replace(nt, dclass[i], "", DOH_REPLACE_FIRST);
|
||||
|
|
@ -1639,26 +1639,26 @@ String *Swig_symbol_string_qualify(String *s, Symtab *st) {
|
|||
int have_id = 0;
|
||||
String *id = NewStringEmpty();
|
||||
String *r = NewStringEmpty();
|
||||
char *c = StringChar(s);
|
||||
char *c = Char(s);
|
||||
while (*c) {
|
||||
if (isalpha((int) *c) || (*c == '_') || (*c == ':')) {
|
||||
StringPutc(*c, id);
|
||||
Putc(*c, id);
|
||||
have_id = 1;
|
||||
} else {
|
||||
if (have_id) {
|
||||
String *qid = Swig_symbol_type_qualify(id, st);
|
||||
StringAppend(r, qid);
|
||||
Append(r, qid);
|
||||
Clear(id);
|
||||
Delete(qid);
|
||||
have_id = 0;
|
||||
}
|
||||
StringPutc(*c, r);
|
||||
Putc(*c, r);
|
||||
}
|
||||
c++;
|
||||
}
|
||||
if (have_id) {
|
||||
String *qid = Swig_symbol_type_qualify(id, st);
|
||||
StringAppend(r, qid);
|
||||
Append(r, qid);
|
||||
Delete(qid);
|
||||
}
|
||||
Delete(id);
|
||||
|
|
@ -1769,15 +1769,15 @@ SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) {
|
|||
while (pi.item) {
|
||||
String *pf = SwigType_istemplate(e) ? Swig_symbol_template_deftype(pi.item, tscope)
|
||||
: Swig_symbol_type_qualify(pi.item, tscope);
|
||||
StringAppend(s, pf);
|
||||
Append(s, pf);
|
||||
pi = Next(pi);
|
||||
if (pi.item) {
|
||||
StringAppend(s, ",");
|
||||
Append(s, ",");
|
||||
}
|
||||
Delete(pf);
|
||||
}
|
||||
StringAppend(s, ").");
|
||||
StringAppend(result, s);
|
||||
Append(s, ").");
|
||||
Append(result, s);
|
||||
Delete(s);
|
||||
Delete(parms);
|
||||
} else if (SwigType_istemplate(e)) {
|
||||
|
|
@ -1802,7 +1802,7 @@ SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) {
|
|||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "deftype type %s %s %s\n", tprefix, targs, tsuffix);
|
||||
#endif
|
||||
StringAppend(tprefix, "<(");
|
||||
Append(tprefix, "<(");
|
||||
Swig_symbol_template_defargs(tparms, tnargs, tscope, tsdecl);
|
||||
p = tparms;
|
||||
tscope = tsdecl;
|
||||
|
|
@ -1822,22 +1822,22 @@ SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) {
|
|||
Printf(stderr, "arg deftype %s\n", ttq);
|
||||
#endif
|
||||
}
|
||||
StringAppend(tprefix, ttq);
|
||||
Append(tprefix, ttq);
|
||||
p = nextSibling(p);
|
||||
if (p)
|
||||
StringPutc(',', tprefix);
|
||||
Putc(',', tprefix);
|
||||
Delete(ttf);
|
||||
Delete(ttq);
|
||||
}
|
||||
StringAppend(tprefix, ")>");
|
||||
StringAppend(tprefix, tsuffix);
|
||||
StringAppend(prefix, tprefix);
|
||||
Append(tprefix, ")>");
|
||||
Append(tprefix, tsuffix);
|
||||
Append(prefix, tprefix);
|
||||
#ifdef SWIG_DEBUG
|
||||
Printf(stderr, "deftype %s %s \n", type, tprefix);
|
||||
#endif
|
||||
StringAppend(result, prefix);
|
||||
Append(result, prefix);
|
||||
} else {
|
||||
StringAppend(result, e);
|
||||
Append(result, e);
|
||||
}
|
||||
Delete(prefix);
|
||||
Delete(base);
|
||||
|
|
@ -1846,7 +1846,7 @@ SwigType *Swig_symbol_template_deftype(const SwigType *type, Symtab *tscope) {
|
|||
Delete(targs);
|
||||
Delete(tparms);
|
||||
} else {
|
||||
StringAppend(result, e);
|
||||
Append(result, e);
|
||||
}
|
||||
}
|
||||
Delete(elements);
|
||||
|
|
@ -1868,12 +1868,12 @@ SwigType *Swig_symbol_template_param_eval(const SwigType *p, Symtab *symtab) {
|
|||
lastnode = n;
|
||||
if (n) {
|
||||
String *nt = Getattr(n, "nodeType");
|
||||
if (StringEqual(nt, k_enumitem)) {
|
||||
if (Equal(nt, k_enumitem)) {
|
||||
/* An enum item. Generate a fully qualified name */
|
||||
String *qn = Swig_symbol_qualified(n);
|
||||
if (qn && StringLen(qn)) {
|
||||
StringAppend(qn, k_coloncolon);
|
||||
StringAppend(qn, Getattr(n, k_name));
|
||||
if (qn && Len(qn)) {
|
||||
Append(qn, "::");
|
||||
Append(qn, Getattr(n, k_name));
|
||||
Delete(value);
|
||||
value = qn;
|
||||
continue;
|
||||
|
|
@ -1881,7 +1881,7 @@ SwigType *Swig_symbol_template_param_eval(const SwigType *p, Symtab *symtab) {
|
|||
Delete(qn);
|
||||
break;
|
||||
}
|
||||
} else if ((StringEqual(nt, k_cdecl))) {
|
||||
} else if ((Equal(nt, k_cdecl))) {
|
||||
String *nv = Getattr(n, k_value);
|
||||
if (nv) {
|
||||
Delete(value);
|
||||
|
|
|
|||
|
|
@ -664,7 +664,7 @@ Hash *Swig_typemap_search(const String_or_char *op, SwigType *type, const String
|
|||
if (!unstripped) {
|
||||
unstripped = ctype;
|
||||
ctype = SwigType_strip_qualifiers(ctype);
|
||||
if (!StringEqual(ctype, unstripped))
|
||||
if (!Equal(ctype, unstripped))
|
||||
continue; /* Types are different */
|
||||
Delete(ctype);
|
||||
ctype = unstripped;
|
||||
|
|
@ -756,7 +756,7 @@ Hash *Swig_typemap_search_multi(const String_or_char *op, ParmList *parms, int *
|
|||
tm = Swig_typemap_search(op, type, name, &mtype);
|
||||
if (tm) {
|
||||
if (mtype && SwigType_isarray(mtype)) {
|
||||
Setattr(parms, k_tmapmatch, mtype);
|
||||
Setattr(parms, "tmap:match", mtype);
|
||||
}
|
||||
Delete(mtype);
|
||||
newop = NewStringf("%s-%s+%s:", op, type, name);
|
||||
|
|
@ -1127,7 +1127,7 @@ static void typemap_locals(DOHString * s, ParmList *l, Wrapper *f, int argnum) {
|
|||
if ((argnum >= 0) && (!isglobal)) {
|
||||
Printf(str, "%s%d", pn, argnum);
|
||||
} else {
|
||||
StringAppend(str, pn);
|
||||
Append(str, pn);
|
||||
}
|
||||
if (isglobal && Wrapper_check_local(f, str)) {
|
||||
p = nextSibling(p);
|
||||
|
|
@ -1273,7 +1273,7 @@ String *Swig_typemap_lookup_new(const String_or_char *op, Node *node, const Stri
|
|||
Symtab *st = Getattr(node, k_symsymtab);
|
||||
String *qsn = st ? Swig_symbol_string_qualify(pname, st) : 0;
|
||||
if (qsn) {
|
||||
if (StringLen(qsn) && !Equal(qsn, pname)) {
|
||||
if (Len(qsn) && !Equal(qsn, pname)) {
|
||||
tm = Swig_typemap_search(op, type, qsn, &mtype);
|
||||
if (tm && (!Getattr(tm, k_pname) || strstr(Char(Getattr(tm, k_type)), "SWIGTYPE"))) {
|
||||
tm = 0;
|
||||
|
|
@ -1342,7 +1342,7 @@ String *Swig_typemap_lookup_new(const String_or_char *op, Node *node, const Stri
|
|||
Delete(locals);
|
||||
}
|
||||
|
||||
if (Checkattr(tm, k_type, k_SWIGTYPE)) {
|
||||
if (Checkattr(tm, k_type, "SWIGTYPE")) {
|
||||
sprintf(temp, "%s:SWIGTYPE", cop);
|
||||
Setattr(node, tmop_name(temp), "1");
|
||||
}
|
||||
|
|
@ -1355,7 +1355,7 @@ String *Swig_typemap_lookup_new(const String_or_char *op, Node *node, const Stri
|
|||
char *ckwname = Char(Getattr(kw, k_name));
|
||||
if (type) {
|
||||
String *mangle = Swig_string_mangle(type);
|
||||
StringAppend(value, mangle);
|
||||
Append(value, mangle);
|
||||
Delete(mangle);
|
||||
}
|
||||
sprintf(temp, "%s:%s", cop, ckwname);
|
||||
|
|
@ -1529,7 +1529,7 @@ void Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrappe
|
|||
here, the freearg typemap requires the "in" typemap to match,
|
||||
or the 'var$argnum' variable will not exist.
|
||||
*/
|
||||
kwmatch = Swig_typemap_get_option(tm, k_match);
|
||||
kwmatch = Swig_typemap_get_option(tm, "match");
|
||||
if (kwmatch) {
|
||||
String *tmname = NewStringf("tmap:%s", kwmatch);
|
||||
String *tmin = Getattr(p, tmname);
|
||||
|
|
@ -1605,16 +1605,16 @@ void Swig_typemap_attach_parms(const String_or_char *op, ParmList *parms, Wrappe
|
|||
type = Getattr(p, k_type);
|
||||
pname = Getattr(p, k_name);
|
||||
lname = Getattr(p, k_lname);
|
||||
mtype = Getattr(p, k_tmapmatch);
|
||||
mtype = Getattr(p, "tmap:match");
|
||||
|
||||
if (mtype) {
|
||||
typemap_replace_vars(s, locals, mtype, type, pname, lname, i + 1);
|
||||
Delattr(p, k_tmapmatch);
|
||||
Delattr(p, "tmap:match");
|
||||
} else {
|
||||
typemap_replace_vars(s, locals, type, type, pname, lname, i + 1);
|
||||
}
|
||||
|
||||
if (Checkattr(tm, k_type, k_SWIGTYPE)) {
|
||||
if (Checkattr(tm, k_type, "SWIGTYPE")) {
|
||||
sprintf(temp, "%s:SWIGTYPE", cop);
|
||||
Setattr(p, tmop_name(temp), "1");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -214,14 +214,14 @@ int SwigType_typedef_class(String_or_char *name) {
|
|||
|
||||
String *SwigType_scope_name(Typetab *ttab) {
|
||||
String *qname = NewString(Getattr(ttab, k_name));
|
||||
ttab = Getattr(ttab, k_parent);
|
||||
ttab = Getattr(ttab, "parent");
|
||||
while (ttab) {
|
||||
String *pname = Getattr(ttab, k_name);
|
||||
if (Len(pname)) {
|
||||
Insert(qname, 0, "::");
|
||||
Insert(qname, 0, pname);
|
||||
}
|
||||
ttab = Getattr(ttab, k_parent);
|
||||
ttab = Getattr(ttab, "parent");
|
||||
}
|
||||
return qname;
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ void SwigType_new_scope(const String_or_char *name) {
|
|||
}
|
||||
s = NewHash();
|
||||
Setattr(s, k_name, name);
|
||||
Setattr(s, k_parent, current_scope);
|
||||
Setattr(s, "parent", current_scope);
|
||||
ttab = NewHash();
|
||||
Setattr(s, k_typetab, ttab);
|
||||
|
||||
|
|
@ -341,7 +341,7 @@ void SwigType_using_scope(Typetab *scope) {
|
|||
|
||||
Typetab *SwigType_pop_scope() {
|
||||
Typetab *t, *old = current_scope;
|
||||
t = Getattr(current_scope, k_parent);
|
||||
t = Getattr(current_scope, "parent");
|
||||
if (!t)
|
||||
t = global_scope;
|
||||
current_scope = t;
|
||||
|
|
@ -466,7 +466,7 @@ Typetab *SwigType_find_scope(Typetab *s, String *nameprefix) {
|
|||
}
|
||||
if (!check_parent)
|
||||
break;
|
||||
ss = Getattr(ss, k_parent);
|
||||
ss = Getattr(ss, "parent");
|
||||
}
|
||||
if (nnameprefix)
|
||||
Delete(nnameprefix);
|
||||
|
|
@ -519,7 +519,7 @@ static SwigType *_typedef_resolve(Typetab *s, String *base, int look_parent) {
|
|||
if (!type) {
|
||||
/* Hmmm. Not found in my scope. check parent */
|
||||
if (look_parent) {
|
||||
parent = Getattr(s, k_parent);
|
||||
parent = Getattr(s, "parent");
|
||||
type = parent ? _typedef_resolve(parent, base, 1) : 0;
|
||||
}
|
||||
}
|
||||
|
|
@ -563,7 +563,7 @@ SwigType *SwigType_typedef_resolve(SwigType *t) {
|
|||
}
|
||||
r = Getattr(typedef_resolve_cache, t);
|
||||
if (r) {
|
||||
resolved_scope = Getmeta(r, k_scope);
|
||||
resolved_scope = Getmeta(r, "scope");
|
||||
return Copy(r);
|
||||
}
|
||||
#endif
|
||||
|
|
@ -650,7 +650,7 @@ SwigType *SwigType_typedef_resolve(SwigType *t) {
|
|||
}
|
||||
}
|
||||
|
||||
if (type && (StringEqual(base, type))) {
|
||||
if (type && (Equal(base, type))) {
|
||||
if (newtype)
|
||||
Delete(type);
|
||||
Delete(base);
|
||||
|
|
@ -785,7 +785,7 @@ return_result:
|
|||
if (r) {
|
||||
SwigType *r1;
|
||||
Setattr(typedef_resolve_cache, key, r);
|
||||
Setmeta(r, k_scope, resolved_scope);
|
||||
Setmeta(r, "scope", resolved_scope);
|
||||
r1 = Copy(r);
|
||||
Delete(r);
|
||||
r = r1;
|
||||
|
|
@ -915,7 +915,7 @@ SwigType *SwigType_typedef_qualified(SwigType *t) {
|
|||
break;
|
||||
}
|
||||
Delete(qs);
|
||||
cs = Getattr(cs, k_parent);
|
||||
cs = Getattr(cs, "parent");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -940,7 +940,7 @@ SwigType *SwigType_typedef_qualified(SwigType *t) {
|
|||
pi = First(parms);
|
||||
while ((p = pi.item)) {
|
||||
String *qt = SwigType_typedef_qualified(p);
|
||||
if (StringEqual(qt, p)) { /* && (!Swig_scopename_check(qt))) */
|
||||
if (Equal(qt, p)) { /* && (!Swig_scopename_check(qt))) */
|
||||
/* No change in value. It is entirely possible that the parameter is an integer value.
|
||||
If there is a symbol table associated with this scope, we're going to check for this */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue