move fix for typedef (no ptr/no ref) + director from directors.cxx to lang.cxx. This should fix more related problems around. Also fix for unnamed namespace in lang.cxx

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@6639 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
Marcelo Matus 2004-11-03 08:00:14 +00:00
commit 709cc0bd34
2 changed files with 19 additions and 2 deletions

View file

@ -214,7 +214,6 @@ String *Swig_method_decl(SwigType *s, const String_or_char *id, List *args, int
if (!name) {
name = NewString("");
}
SwigType_remember(type);
p = SwigType_str(type, name);
Append(result,p);
String* value = Getattr(parm, "value");

View file

@ -1454,7 +1454,24 @@ int Language::memberconstantHandler(Node *n) {
* Language::typedefHandler()
* ---------------------------------------------------------------------- */
int Language::typedefHandler(Node *) {
int Language::typedefHandler(Node *n) {
/* since this is a recurring issue, we are going to remember the
typedef pointer, if already it is not a pointer or reference, as
in
typedef void NT;
int func(NT *p);
see director_basic.i for example.
*/
SwigType *name = Getattr(n,"name");
SwigType *decl = Getattr(n,"decl");
if (!SwigType_ispointer(decl) && !SwigType_isreference(decl)) {
SwigType *pname = Copy(name);
SwigType_add_pointer(pname);
SwigType_remember(pname);
Delete(pname);
}
return SWIG_OK;
}
@ -2240,6 +2257,7 @@ int Language::accessDeclaration(Node *n) {
int Language::namespaceDeclaration(Node *n) {
if (Getattr(n,"alias")) return SWIG_OK;
if (Getattr(n,"unnamed")) return SWIG_OK;
emit_children(n);
return SWIG_OK;
}