Enhancement to Swig_require(), Swig_save(), Swig_restore()
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@4436 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
c47494cb7a
commit
e19c73746d
9 changed files with 135 additions and 171 deletions
|
|
@ -214,7 +214,8 @@ DohGetattr(DOH *obj, const DOH *name) {
|
||||||
DohBase *b = (DohBase *) obj;
|
DohBase *b = (DohBase *) obj;
|
||||||
DohObjInfo *objinfo = b->type;
|
DohObjInfo *objinfo = b->type;
|
||||||
if (objinfo->doh_hash && objinfo->doh_hash->doh_getattr) {
|
if (objinfo->doh_hash && objinfo->doh_hash->doh_getattr) {
|
||||||
return (objinfo->doh_hash->doh_getattr)(b,(DOH *) name);
|
DOH *r = (objinfo->doh_hash->doh_getattr)(b,(DOH *) name);
|
||||||
|
return (r == DohNone) ? 0 : r;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -433,11 +433,11 @@ class CSHARP : public Language {
|
||||||
if (!addSymbol(wrapname,n)) return SWIG_ERROR;
|
if (!addSymbol(wrapname,n)) return SWIG_ERROR;
|
||||||
|
|
||||||
if (Getattr(n,"type")) {
|
if (Getattr(n,"type")) {
|
||||||
Swig_save(&n,"name",NIL);
|
Swig_save("nativeWrapper",n,"name",NIL);
|
||||||
Setattr(n,"name", wrapname);
|
Setattr(n,"name", wrapname);
|
||||||
native_function_flag = true;
|
native_function_flag = true;
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
native_function_flag = false;
|
native_function_flag = false;
|
||||||
} else {
|
} else {
|
||||||
Printf(stderr,"%s : Line %d. No return type for %%native method %s.\n", input_file, line_number, Getattr(n,"wrap:name"));
|
Printf(stderr,"%s : Line %d. No return type for %%native method %s.\n", input_file, line_number, Getattr(n,"wrap:name"));
|
||||||
|
|
@ -668,7 +668,7 @@ class CSHARP : public Language {
|
||||||
|
|
||||||
if (Cmp(nodeType(n), "constant") == 0) {
|
if (Cmp(nodeType(n), "constant") == 0) {
|
||||||
// Wrapping a constant hack
|
// Wrapping a constant hack
|
||||||
Swig_save(&n,"wrap:action",NIL);
|
Swig_save("functionWrapper",n,"wrap:action",NIL);
|
||||||
|
|
||||||
// below based on Swig_VargetToFunction()
|
// below based on Swig_VargetToFunction()
|
||||||
SwigType *ty = Swig_wrapped_var_type(Getattr(n,"type"));
|
SwigType *ty = Swig_wrapped_var_type(Getattr(n,"type"));
|
||||||
|
|
@ -680,7 +680,7 @@ class CSHARP : public Language {
|
||||||
emit_action(n,f);
|
emit_action(n,f);
|
||||||
|
|
||||||
if (Cmp(nodeType(n), "constant") == 0)
|
if (Cmp(nodeType(n), "constant") == 0)
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
|
|
||||||
/* Return value if necessary */
|
/* Return value if necessary */
|
||||||
if(!native_function_flag) {
|
if(!native_function_flag) {
|
||||||
|
|
@ -818,7 +818,7 @@ class CSHARP : public Language {
|
||||||
|
|
||||||
// Add the stripped quotes back in
|
// Add the stripped quotes back in
|
||||||
String *new_value = NewString("");
|
String *new_value = NewString("");
|
||||||
Swig_save(&n,"value",NIL);
|
Swig_save("constantWrapper",n,"value",NIL);
|
||||||
if(SwigType_type(t) == T_STRING) {
|
if(SwigType_type(t) == T_STRING) {
|
||||||
Printf(new_value, "\"%s\"", Copy(Getattr(n, "value")));
|
Printf(new_value, "\"%s\"", Copy(Getattr(n, "value")));
|
||||||
Setattr(n, "value", new_value);
|
Setattr(n, "value", new_value);
|
||||||
|
|
@ -856,7 +856,7 @@ class CSHARP : public Language {
|
||||||
else
|
else
|
||||||
Printv(module_constants_code, constants_code, NIL);
|
Printv(module_constants_code, constants_code, NIL);
|
||||||
|
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
Delete(new_value);
|
Delete(new_value);
|
||||||
Delete(shadowrettype);
|
Delete(shadowrettype);
|
||||||
Delete(constants_code);
|
Delete(constants_code);
|
||||||
|
|
|
||||||
|
|
@ -436,11 +436,11 @@ class JAVA : public Language {
|
||||||
if (!addSymbol(wrapname,n)) return SWIG_ERROR;
|
if (!addSymbol(wrapname,n)) return SWIG_ERROR;
|
||||||
|
|
||||||
if (Getattr(n,"type")) {
|
if (Getattr(n,"type")) {
|
||||||
Swig_save(&n,"name",NIL);
|
Swig_save("nativeWrapper",n,"name",NIL);
|
||||||
Setattr(n,"name", wrapname);
|
Setattr(n,"name", wrapname);
|
||||||
native_function_flag = true;
|
native_function_flag = true;
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
native_function_flag = false;
|
native_function_flag = false;
|
||||||
} else {
|
} else {
|
||||||
Printf(stderr,"%s : Line %d. No return type for %%native method %s.\n", input_file, line_number, Getattr(n,"wrap:name"));
|
Printf(stderr,"%s : Line %d. No return type for %%native method %s.\n", input_file, line_number, Getattr(n,"wrap:name"));
|
||||||
|
|
@ -673,7 +673,7 @@ class JAVA : public Language {
|
||||||
|
|
||||||
if (Cmp(nodeType(n), "constant") == 0) {
|
if (Cmp(nodeType(n), "constant") == 0) {
|
||||||
// Wrapping a constant hack
|
// Wrapping a constant hack
|
||||||
Swig_save(&n,"wrap:action",NIL);
|
Swig_save("functionWrapper",n,"wrap:action",NIL);
|
||||||
|
|
||||||
// below based on Swig_VargetToFunction()
|
// below based on Swig_VargetToFunction()
|
||||||
SwigType *ty = Swig_wrapped_var_type(Getattr(n,"type"));
|
SwigType *ty = Swig_wrapped_var_type(Getattr(n,"type"));
|
||||||
|
|
@ -685,7 +685,7 @@ class JAVA : public Language {
|
||||||
emit_action(n,f);
|
emit_action(n,f);
|
||||||
|
|
||||||
if (Cmp(nodeType(n), "constant") == 0)
|
if (Cmp(nodeType(n), "constant") == 0)
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
|
|
||||||
/* Return value if necessary */
|
/* Return value if necessary */
|
||||||
if(!native_function_flag) {
|
if(!native_function_flag) {
|
||||||
|
|
@ -834,7 +834,7 @@ class JAVA : public Language {
|
||||||
|
|
||||||
// Add the stripped quotes back in
|
// Add the stripped quotes back in
|
||||||
String *new_value = NewString("");
|
String *new_value = NewString("");
|
||||||
Swig_save(&n,"value",NIL);
|
Swig_save("constantWrapper",n,"value",NIL);
|
||||||
if(SwigType_type(t) == T_STRING) {
|
if(SwigType_type(t) == T_STRING) {
|
||||||
Printf(new_value, "\"%s\"", Copy(Getattr(n, "value")));
|
Printf(new_value, "\"%s\"", Copy(Getattr(n, "value")));
|
||||||
Setattr(n, "value", new_value);
|
Setattr(n, "value", new_value);
|
||||||
|
|
@ -876,7 +876,7 @@ class JAVA : public Language {
|
||||||
else
|
else
|
||||||
Printv(module_constants_code, constants_code, NIL);
|
Printv(module_constants_code, constants_code, NIL);
|
||||||
|
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
if (is_enum_item) {
|
if (is_enum_item) {
|
||||||
Delete(Getattr(n,"type"));
|
Delete(Getattr(n,"type"));
|
||||||
Setattr(n,"type", original_type);
|
Setattr(n,"type", original_type);
|
||||||
|
|
|
||||||
|
|
@ -397,7 +397,7 @@ int Language::constantDirective(Node *n) {
|
||||||
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
||||||
|
|
||||||
if (!ImportMode) {
|
if (!ImportMode) {
|
||||||
Swig_require(&n,"name", "?value",NIL);
|
Swig_require("constantDirective",n,"name", "?value",NIL);
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *value = Getattr(n,"value");
|
String *value = Getattr(n,"value");
|
||||||
if (!value) {
|
if (!value) {
|
||||||
|
|
@ -411,7 +411,7 @@ int Language::constantDirective(Node *n) {
|
||||||
}
|
}
|
||||||
Setattr(n,"value", value);
|
Setattr(n,"value", value);
|
||||||
this->constantWrapper(n);
|
this->constantWrapper(n);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
|
|
@ -671,14 +671,14 @@ int Language::cDeclaration(Node *n) {
|
||||||
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
||||||
|
|
||||||
if (Cmp(storage,"typedef") == 0) {
|
if (Cmp(storage,"typedef") == 0) {
|
||||||
Swig_save(&n,"type",NIL);
|
Swig_save("cDeclaration",n,"type",NIL);
|
||||||
SwigType *t = Copy(type);
|
SwigType *t = Copy(type);
|
||||||
if (t) {
|
if (t) {
|
||||||
SwigType_push(t,decl);
|
SwigType_push(t,decl);
|
||||||
Setattr(n,"type",t);
|
Setattr(n,"type",t);
|
||||||
typedefHandler(n);
|
typedefHandler(n);
|
||||||
}
|
}
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
} else if (Cmp(storage,"friend") == 0) {
|
} else if (Cmp(storage,"friend") == 0) {
|
||||||
Swig_warning(WARN_LANG_FRIEND_IGNORE, Getfile(n), Getline(n),
|
Swig_warning(WARN_LANG_FRIEND_IGNORE, Getfile(n), Getline(n),
|
||||||
|
|
@ -830,7 +830,7 @@ Language::functionHandler(Node *n) {
|
||||||
int
|
int
|
||||||
Language::globalfunctionHandler(Node *n) {
|
Language::globalfunctionHandler(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n,"name","sym:name","type","?parms",NIL);
|
Swig_require("globalfunctionHandler",n,"name","sym:name","type","?parms",NIL);
|
||||||
|
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
|
|
@ -839,7 +839,7 @@ Language::globalfunctionHandler(Node *n) {
|
||||||
ParmList *parms = Getattr(n,"parms");
|
ParmList *parms = Getattr(n,"parms");
|
||||||
|
|
||||||
if (0 && (Cmp(storage,"static") == 0)) {
|
if (0 && (Cmp(storage,"static") == 0)) {
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_NOWRAP; /* Can't wrap static functions */
|
return SWIG_NOWRAP; /* Can't wrap static functions */
|
||||||
} else {
|
} else {
|
||||||
/* Check for callback mode */
|
/* Check for callback mode */
|
||||||
|
|
@ -849,7 +849,7 @@ Language::globalfunctionHandler(Node *n) {
|
||||||
callbackfunctionHandler(n);
|
callbackfunctionHandler(n);
|
||||||
if (Cmp(cbname, symname) == 0) {
|
if (Cmp(cbname, symname) == 0) {
|
||||||
Delete(cbname);
|
Delete(cbname);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
}
|
}
|
||||||
Delete(cbname);
|
Delete(cbname);
|
||||||
|
|
@ -858,7 +858,7 @@ Language::globalfunctionHandler(Node *n) {
|
||||||
Setattr(n,"wrap:action", Swig_cresult(type,"result", Swig_cfunction_call(name,parms)));
|
Setattr(n,"wrap:action", Swig_cresult(type,"result", Swig_cfunction_call(name,parms)));
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
}
|
}
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -868,7 +868,7 @@ Language::globalfunctionHandler(Node *n) {
|
||||||
|
|
||||||
int
|
int
|
||||||
Language::callbackfunctionHandler(Node *n) {
|
Language::callbackfunctionHandler(Node *n) {
|
||||||
Swig_require(&n,"name","*sym:name","*type","?value",NIL);
|
Swig_require("callbackfunctionHandler",n,"name","*sym:name","*type","?value",NIL);
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
String *type = Getattr(n,"type");
|
String *type = Getattr(n,"type");
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
|
|
@ -887,7 +887,7 @@ Language::callbackfunctionHandler(Node *n) {
|
||||||
Delete(cbname);
|
Delete(cbname);
|
||||||
Delete(cbty);
|
Delete(cbty);
|
||||||
|
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -898,7 +898,7 @@ Language::callbackfunctionHandler(Node *n) {
|
||||||
int
|
int
|
||||||
Language::memberfunctionHandler(Node *n) {
|
Language::memberfunctionHandler(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n,"*name","*sym:name","*type","?parms","?value",NIL);
|
Swig_require("memberfunctionHandler",n,"*name","*sym:name","*type","?parms","?value",NIL);
|
||||||
|
|
||||||
String *storage = Getattr(n,"storage");
|
String *storage = Getattr(n,"storage");
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
|
|
@ -938,7 +938,7 @@ Language::memberfunctionHandler(Node *n) {
|
||||||
Delete(cbty);
|
Delete(cbty);
|
||||||
Delete(cbname);
|
Delete(cbname);
|
||||||
if (Cmp(cbname,symname) == 0) {
|
if (Cmp(cbname,symname) == 0) {
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -951,7 +951,7 @@ Language::memberfunctionHandler(Node *n) {
|
||||||
|
|
||||||
/* DelWrapper(w);*/
|
/* DelWrapper(w);*/
|
||||||
Delete(fname);
|
Delete(fname);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -962,8 +962,8 @@ Language::memberfunctionHandler(Node *n) {
|
||||||
int
|
int
|
||||||
Language::staticmemberfunctionHandler(Node *n) {
|
Language::staticmemberfunctionHandler(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n,"*name","*sym:name","*type",NIL);
|
Swig_require("staticmemberfunctionHandler",n,"*name","*sym:name","*type",NIL);
|
||||||
Swig_save(&n,"storage",NIL);
|
Swig_save("staticmemberfunctionHandler",n,"storage",NIL);
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
SwigType *type = Getattr(n,"type");
|
SwigType *type = Getattr(n,"type");
|
||||||
|
|
@ -995,7 +995,7 @@ Language::staticmemberfunctionHandler(Node *n) {
|
||||||
|
|
||||||
Delete(cname);
|
Delete(cname);
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1039,8 +1039,8 @@ Language::globalvariableHandler(Node *n) {
|
||||||
int
|
int
|
||||||
Language::membervariableHandler(Node *n) {
|
Language::membervariableHandler(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n,"*name","*sym:name","*type",NIL);
|
Swig_require("membervariableHandler",n,"*name","*sym:name","*type",NIL);
|
||||||
Swig_save(&n,"parms",NIL);
|
Swig_save("membervariableHandler",n,"parms",NIL);
|
||||||
|
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
|
|
@ -1151,7 +1151,7 @@ Language::membervariableHandler(Node *n) {
|
||||||
ActionFunc = 0;
|
ActionFunc = 0;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1162,7 +1162,7 @@ Language::membervariableHandler(Node *n) {
|
||||||
int
|
int
|
||||||
Language::staticmembervariableHandler(Node *n)
|
Language::staticmembervariableHandler(Node *n)
|
||||||
{
|
{
|
||||||
Swig_require(&n,"*name","*sym:name","*type", "?value", NIL);
|
Swig_require("staticmembervariableHandler",n,"*name","*sym:name","*type", "?value", NIL);
|
||||||
String *value = Getattr(n,"value");
|
String *value = Getattr(n,"value");
|
||||||
if (!value) {
|
if (!value) {
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
|
|
@ -1197,7 +1197,7 @@ Language::staticmembervariableHandler(Node *n)
|
||||||
Delete(cname);
|
Delete(cname);
|
||||||
}
|
}
|
||||||
|
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1228,7 +1228,7 @@ int Language::enumDeclaration(Node *n) {
|
||||||
int Language::enumvalueDeclaration(Node *n) {
|
int Language::enumvalueDeclaration(Node *n) {
|
||||||
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
if (CurrentClass && (cplus_mode != CPLUS_PUBLIC)) return SWIG_NOWRAP;
|
||||||
|
|
||||||
Swig_require(&n,"*name", "?value",NIL);
|
Swig_require("enumvalueDeclaratuon",n,"*name", "?value",NIL);
|
||||||
String *value = Getattr(n,"value");
|
String *value = Getattr(n,"value");
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *tmpValue;
|
String *tmpValue;
|
||||||
|
|
@ -1247,7 +1247,7 @@ int Language::enumvalueDeclaration(Node *n) {
|
||||||
}
|
}
|
||||||
|
|
||||||
Delete(tmpValue);
|
Delete(tmpValue);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1257,7 +1257,7 @@ int Language::enumvalueDeclaration(Node *n) {
|
||||||
|
|
||||||
int Language::memberconstantHandler(Node *n) {
|
int Language::memberconstantHandler(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n,"*name","*sym:name","*value",NIL);
|
Swig_require("memberconstantHandler",n,"*name","*sym:name","*value",NIL);
|
||||||
|
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
|
|
@ -1281,7 +1281,7 @@ int Language::memberconstantHandler(Node *n) {
|
||||||
constantWrapper(n);
|
constantWrapper(n);
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
Delete(new_value);
|
Delete(new_value);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1581,7 +1581,7 @@ int Language::classDeclaration(Node *n) {
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
}
|
}
|
||||||
|
|
||||||
Swig_save(&n,"name",NIL);
|
Swig_save("classDeclaration",n,"name",NIL);
|
||||||
Setattr(n,"name",classname);
|
Setattr(n,"name",classname);
|
||||||
|
|
||||||
if (Cmp(kind,"class") == 0) {
|
if (Cmp(kind,"class") == 0) {
|
||||||
|
|
@ -1629,7 +1629,7 @@ int Language::classDeclaration(Node *n) {
|
||||||
Delete(ClassType); ClassType = 0;
|
Delete(ClassType); ClassType = 0;
|
||||||
Delete(ClassPrefix); ClassPrefix = 0;
|
Delete(ClassPrefix); ClassPrefix = 0;
|
||||||
Delete(ClassName); ClassName = 0;
|
Delete(ClassName); ClassName = 0;
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1699,7 +1699,7 @@ int Language::constructorDeclaration(Node *n) {
|
||||||
if (ImportMode) return SWIG_NOWRAP;
|
if (ImportMode) return SWIG_NOWRAP;
|
||||||
|
|
||||||
/* Name adjustment for %name */
|
/* Name adjustment for %name */
|
||||||
Swig_save(&n,"sym:name",NIL);
|
Swig_save("constructorDeclaration",n,"sym:name",NIL);
|
||||||
|
|
||||||
{
|
{
|
||||||
String *base = Swig_scopename_last(name);
|
String *base = Swig_scopename_last(name);
|
||||||
|
|
@ -1741,14 +1741,14 @@ int Language::constructorDeclaration(Node *n) {
|
||||||
Printf(stdout,"name = '%s', ClassName='%s'\n", name, ClassName);
|
Printf(stdout,"name = '%s', ClassName='%s'\n", name, ClassName);
|
||||||
Swig_warning(WARN_LANG_RETURN_TYPE, input_file,line_number,"Function %s must have a return type.\n",
|
Swig_warning(WARN_LANG_RETURN_TYPE, input_file,line_number,"Function %s must have a return type.\n",
|
||||||
name);
|
name);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_NOWRAP;
|
return SWIG_NOWRAP;
|
||||||
}
|
}
|
||||||
constructorHandler(n);
|
constructorHandler(n);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Setattr(CurrentClass,"has_constructor","1");
|
Setattr(CurrentClass,"has_constructor","1");
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1758,7 +1758,7 @@ int Language::constructorDeclaration(Node *n) {
|
||||||
|
|
||||||
int
|
int
|
||||||
Language::constructorHandler(Node *n) {
|
Language::constructorHandler(Node *n) {
|
||||||
Swig_require(&n,"?name","*sym:name","?type","?parms",NIL);
|
Swig_require("constructorHandler",n,"?name","*sym:name","?type","?parms",NIL);
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
String *mrename;
|
String *mrename;
|
||||||
Parm *parms = Getattr(n,"parms");
|
Parm *parms = Getattr(n,"parms");
|
||||||
|
|
@ -1769,7 +1769,7 @@ Language::constructorHandler(Node *n) {
|
||||||
Setattr(n,"sym:name", mrename);
|
Setattr(n,"sym:name", mrename);
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1779,7 +1779,7 @@ Language::constructorHandler(Node *n) {
|
||||||
|
|
||||||
int
|
int
|
||||||
Language::copyconstructorHandler(Node *n) {
|
Language::copyconstructorHandler(Node *n) {
|
||||||
Swig_require(&n,"?name","*sym:name","?type","?parms", NIL);
|
Swig_require("copyconstructorHandler",n,"?name","*sym:name","?type","?parms", NIL);
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
String *mrename;
|
String *mrename;
|
||||||
Parm *parms = Getattr(n,"parms");
|
Parm *parms = Getattr(n,"parms");
|
||||||
|
|
@ -1789,7 +1789,7 @@ Language::copyconstructorHandler(Node *n) {
|
||||||
Setattr(n,"sym:name", mrename);
|
Setattr(n,"sym:name", mrename);
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1803,7 +1803,7 @@ int Language::destructorDeclaration(Node *n) {
|
||||||
if (cplus_mode != CPLUS_PUBLIC) return SWIG_NOWRAP;
|
if (cplus_mode != CPLUS_PUBLIC) return SWIG_NOWRAP;
|
||||||
if (ImportMode) return SWIG_NOWRAP;
|
if (ImportMode) return SWIG_NOWRAP;
|
||||||
|
|
||||||
Swig_save(&n,"name", "sym:name",NIL);
|
Swig_save("destructorDeclaration",n,"name", "sym:name",NIL);
|
||||||
|
|
||||||
char *c = GetChar(n,"name");
|
char *c = GetChar(n,"name");
|
||||||
if (c && (*c == '~')) Setattr(n,"name",c+1);
|
if (c && (*c == '~')) Setattr(n,"name",c+1);
|
||||||
|
|
@ -1823,7 +1823,7 @@ int Language::destructorDeclaration(Node *n) {
|
||||||
destructorHandler(n);
|
destructorHandler(n);
|
||||||
|
|
||||||
Setattr(CurrentClass,"has_destructor","1");
|
Setattr(CurrentClass,"has_destructor","1");
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1832,8 +1832,8 @@ int Language::destructorDeclaration(Node *n) {
|
||||||
* ---------------------------------------------------------------------- */
|
* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
int Language::destructorHandler(Node *n) {
|
int Language::destructorHandler(Node *n) {
|
||||||
Swig_require(&n,"?name","*sym:name",NIL);
|
Swig_require("destructorHandler",n,"?name","*sym:name",NIL);
|
||||||
Swig_save(&n,"type","parms",NIL);
|
Swig_save("destructorHandler",n,"type","parms",NIL);
|
||||||
|
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
String *mrename;
|
String *mrename;
|
||||||
|
|
@ -1846,7 +1846,7 @@ int Language::destructorHandler(Node *n) {
|
||||||
Setattr(n,"sym:name", mrename);
|
Setattr(n,"sym:name", mrename);
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Delete(mrename);
|
Delete(mrename);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1915,7 +1915,7 @@ int Language::constantWrapper(Node *n) {
|
||||||
* Language::variableWrapper()
|
* Language::variableWrapper()
|
||||||
* ---------------------------------------------------------------------- */
|
* ---------------------------------------------------------------------- */
|
||||||
int Language::variableWrapper(Node *n) {
|
int Language::variableWrapper(Node *n) {
|
||||||
Swig_require(&n,"*name","*sym:name","*type","?parms",NIL);
|
Swig_require("variableWrapper",n,"*name","*sym:name","*type","?parms",NIL);
|
||||||
String *symname = Getattr(n,"sym:name");
|
String *symname = Getattr(n,"sym:name");
|
||||||
SwigType *type = Getattr(n,"type");
|
SwigType *type = Getattr(n,"type");
|
||||||
String *name = Getattr(n,"name");
|
String *name = Getattr(n,"name");
|
||||||
|
|
@ -1952,7 +1952,7 @@ int Language::variableWrapper(Node *n) {
|
||||||
Swig_VargetToFunction(n);
|
Swig_VargetToFunction(n);
|
||||||
Setattr(n,"sym:name", Swig_name_get(symname));
|
Setattr(n,"sym:name", Swig_name_get(symname));
|
||||||
functionWrapper(n);
|
functionWrapper(n);
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -583,7 +583,7 @@ public:
|
||||||
|
|
||||||
virtual int constantWrapper(Node *n) {
|
virtual int constantWrapper(Node *n) {
|
||||||
|
|
||||||
Swig_require(&n, "*sym:name", "type", "value", NIL);
|
Swig_require("constantWrapper",n, "*sym:name", "type", "value", NIL);
|
||||||
|
|
||||||
String *symname = Getattr(n, "sym:name");
|
String *symname = Getattr(n, "sym:name");
|
||||||
SwigType *type = Getattr(n, "type");
|
SwigType *type = Getattr(n, "type");
|
||||||
|
|
@ -609,7 +609,7 @@ public:
|
||||||
"Unsupported constant value %s = %s\n", SwigType_str(type, 0), value);
|
"Unsupported constant value %s = %s\n", SwigType_str(type, 0), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
|
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,6 @@ char cvsroot_python_cxx[] = "$Header$";
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
|
||||||
|
|
||||||
/**********************************************************************************
|
/**********************************************************************************
|
||||||
*
|
*
|
||||||
* TYPE UTILITY FUNCTIONS
|
* TYPE UTILITY FUNCTIONS
|
||||||
|
|
@ -636,7 +635,7 @@ public:
|
||||||
int constructor = (!Cmp(nodeType, "constructor"));
|
int constructor = (!Cmp(nodeType, "constructor"));
|
||||||
String *storage = Getattr(n,"storage");
|
String *storage = Getattr(n,"storage");
|
||||||
int isVirtual = (Cmp(storage,"virtual") == 0);
|
int isVirtual = (Cmp(storage,"virtual") == 0);
|
||||||
|
|
||||||
if (Getattr(n,"sym:overloaded")) {
|
if (Getattr(n,"sym:overloaded")) {
|
||||||
overname = Getattr(n,"sym:overname");
|
overname = Getattr(n,"sym:overname");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -1897,7 +1896,7 @@ public:
|
||||||
* to receive the scripting language object (e.g. 'self')
|
* to receive the scripting language object (e.g. 'self')
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
Swig_save(&n,"parms",NIL);
|
Swig_save("python:constructorHandler",n,"parms",NIL);
|
||||||
if (use_director) {
|
if (use_director) {
|
||||||
Parm *parms = Getattr(n, "parms");
|
Parm *parms = Getattr(n, "parms");
|
||||||
Parm *self;
|
Parm *self;
|
||||||
|
|
@ -1919,7 +1918,7 @@ public:
|
||||||
shadow = oldshadow;
|
shadow = oldshadow;
|
||||||
|
|
||||||
Delattr(n, "wrap:self");
|
Delattr(n, "wrap:self");
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
|
|
||||||
if (!Getattr(n,"sym:nextSibling")) {
|
if (!Getattr(n,"sym:nextSibling")) {
|
||||||
if (shadow) {
|
if (shadow) {
|
||||||
|
|
|
||||||
|
|
@ -1097,7 +1097,7 @@ public:
|
||||||
* --------------------------------------------------------------------- */
|
* --------------------------------------------------------------------- */
|
||||||
|
|
||||||
virtual int constantWrapper(Node *n) {
|
virtual int constantWrapper(Node *n) {
|
||||||
Swig_require(&n, "*sym:name", "type", "value", NIL);
|
Swig_require("constantWrapper",n, "*sym:name", "type", "value", NIL);
|
||||||
|
|
||||||
char *iname = GetChar(n,"sym:name");
|
char *iname = GetChar(n,"sym:name");
|
||||||
SwigType *type = Getattr(n,"type");
|
SwigType *type = Getattr(n,"type");
|
||||||
|
|
@ -1132,7 +1132,7 @@ public:
|
||||||
Swig_warning(WARN_TYPEMAP_CONST_UNDEF, input_file, line_number,
|
Swig_warning(WARN_TYPEMAP_CONST_UNDEF, input_file, line_number,
|
||||||
"Unsupported constant value %s = %s\n", SwigType_str(type, 0), value);
|
"Unsupported constant value %s = %s\n", SwigType_str(type, 0), value);
|
||||||
}
|
}
|
||||||
Swig_restore(&n);
|
Swig_restore(n);
|
||||||
return SWIG_OK;
|
return SWIG_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -337,9 +337,9 @@ extern Node *copyNode(Node *node);
|
||||||
|
|
||||||
extern void Swig_tag_nodes(Node *node, const String_or_char *attrname, DOH *value);
|
extern void Swig_tag_nodes(Node *node, const String_or_char *attrname, DOH *value);
|
||||||
|
|
||||||
extern int Swig_require(Node **node, ...);
|
extern int Swig_require(const char *ns, Node *node, ...);
|
||||||
extern int Swig_save(Node **node,...);
|
extern int Swig_save(const char *ns, Node *node,...);
|
||||||
extern void Swig_restore(Node **node);
|
extern void Swig_restore(Node *node);
|
||||||
|
|
||||||
/* Debugging of parse trees */
|
/* Debugging of parse trees */
|
||||||
extern void Swig_debug_emit(int);
|
extern void Swig_debug_emit(int);
|
||||||
|
|
|
||||||
|
|
@ -230,33 +230,14 @@ checkAttribute(Node *n, const String_or_char *name, const String_or_char *value)
|
||||||
* Swig_require()
|
* Swig_require()
|
||||||
* ----------------------------------------------------------------------------- */
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#define MAX_SWIG_STACK 256
|
|
||||||
static Hash *attr_stack[MAX_SWIG_STACK];
|
|
||||||
static Node **nodeptr_stack[MAX_SWIG_STACK];
|
|
||||||
static Node *node_stack[MAX_SWIG_STACK];
|
|
||||||
static int stackp = 0;
|
|
||||||
static int stack_direction = 0;
|
|
||||||
|
|
||||||
static void set_direction(int n, int *x) {
|
|
||||||
if (n == 1) {
|
|
||||||
set_direction(0,&n);
|
|
||||||
} else {
|
|
||||||
if (&n < x) {
|
|
||||||
stack_direction = -1; /* Stack grows down */
|
|
||||||
} else {
|
|
||||||
stack_direction = 1; /* Stack grows up */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Swig_require(Node **nptr, ...) {
|
Swig_require(const char *ns, Node *n, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *name;
|
char *name;
|
||||||
DOH *obj;
|
DOH *obj;
|
||||||
DOH *frame = 0;
|
char temp[512];
|
||||||
Node *n = *nptr;
|
|
||||||
va_start(ap, nptr);
|
va_start(ap, n);
|
||||||
name = va_arg(ap, char *);
|
name = va_arg(ap, char *);
|
||||||
while (name) {
|
while (name) {
|
||||||
int newref = 0;
|
int newref = 0;
|
||||||
|
|
@ -277,80 +258,43 @@ Swig_require(Node **nptr, ...) {
|
||||||
}
|
}
|
||||||
if (!obj) obj = DohNone;
|
if (!obj) obj = DohNone;
|
||||||
if (newref) {
|
if (newref) {
|
||||||
if (!attr_stack[stackp]) {
|
/* Save a copy of the attribute */
|
||||||
attr_stack[stackp]= NewHash();
|
strcpy(temp,ns);
|
||||||
}
|
strcat(temp,":");
|
||||||
frame = attr_stack[stackp];
|
strcat(temp,name);
|
||||||
if (Setattr(frame,name,obj)) {
|
Setattr(n,temp,obj);
|
||||||
Printf(stderr,"Swig_require('%s'): Warning, attribute '%s' was already saved.\n", nodeType(n), name);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
name = va_arg(ap, char *);
|
name = va_arg(ap, char *);
|
||||||
}
|
}
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
if (frame) {
|
|
||||||
/* This is a sanity check to make sure no one is saving data, but not restoring it */
|
/* Save the view */
|
||||||
if (stackp > 0) {
|
{
|
||||||
int e = 0;
|
String *view = Getattr(n,"view");
|
||||||
if (!stack_direction) set_direction(1,0);
|
if (view) {
|
||||||
|
if (Strcmp(view,ns) != 0) {
|
||||||
if (stack_direction < 0) {
|
strcpy(temp,ns);
|
||||||
if ((((char *) nptr) >= ((char *) nodeptr_stack[stackp-1])) && (n != node_stack[stackp-1])) e = 1;
|
strcat(temp,":view");
|
||||||
} else {
|
Setattr(n,temp,view);
|
||||||
if ((((char *) nptr) <= ((char *) nodeptr_stack[stackp-1])) && (n != node_stack[stackp-1])) e = 1;
|
Setattr(n,"view",ns);
|
||||||
}
|
|
||||||
if (e) {
|
|
||||||
Printf(stderr,
|
|
||||||
"Swig_require('%s'): Fatal memory management error. If you are seeing this\n\
|
|
||||||
message. It means that the target language module is not managing its memory\n\
|
|
||||||
correctly. A handler for '%s' probably forgot to call Swig_restore().\n\
|
|
||||||
Please report this problem to swig-dev@cs.uchicago.edu.\n", nodeType(n), nodeType(node_stack[stackp-1]));
|
|
||||||
assert(0);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
Setattr(n,"view",ns);
|
||||||
}
|
}
|
||||||
nodeptr_stack[stackp] = nptr;
|
|
||||||
node_stack[stackp] = n;
|
|
||||||
stackp++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int
|
int
|
||||||
Swig_save(Node **nptr, ...) {
|
Swig_save(const char *ns, Node *n, ...) {
|
||||||
va_list ap;
|
va_list ap;
|
||||||
char *name;
|
char *name;
|
||||||
DOH *obj;
|
DOH *obj;
|
||||||
DOH *frame;
|
char temp[512];
|
||||||
Node *n = *nptr;
|
|
||||||
|
|
||||||
if ((stackp > 0) && (nodeptr_stack[stackp-1] == nptr)) {
|
va_start(ap, n);
|
||||||
frame = attr_stack[stackp-1];
|
|
||||||
} else {
|
|
||||||
if (stackp > 0) {
|
|
||||||
int e = 0;
|
|
||||||
if (!stack_direction) set_direction(1,0);
|
|
||||||
if (stack_direction < 0) {
|
|
||||||
if ((((char *) nptr) >= ((char *) nodeptr_stack[stackp-1])) && (n != node_stack[stackp-1])) e = 1;
|
|
||||||
} else {
|
|
||||||
if ((((char *) nptr) <= ((char *) nodeptr_stack[stackp-1])) && (n != node_stack[stackp-1])) e = 1;
|
|
||||||
}
|
|
||||||
if (e) {
|
|
||||||
Printf(stderr,
|
|
||||||
"Swig_save('%s'): Fatal memory management error. If you are seeing this\n\
|
|
||||||
message. It means that the target language module is not managing its memory\n\
|
|
||||||
correctly. A handler for '%s' probably forgot to call Swig_restore().\n\
|
|
||||||
Please report this problem to swig-dev@cs.uchicago.edu.\n", nodeType(n), nodeType(node_stack[stackp-1]));
|
|
||||||
assert(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
attr_stack[stackp] = NewHash();
|
|
||||||
nodeptr_stack[stackp] = nptr;
|
|
||||||
node_stack[stackp] = n;
|
|
||||||
frame = attr_stack[stackp];
|
|
||||||
stackp++;
|
|
||||||
}
|
|
||||||
va_start(ap, nptr);
|
|
||||||
name = va_arg(ap, char *);
|
name = va_arg(ap, char *);
|
||||||
while (name) {
|
while (name) {
|
||||||
if (*name == '*') {
|
if (*name == '*') {
|
||||||
|
|
@ -362,40 +306,60 @@ Please report this problem to swig-dev@cs.uchicago.edu.\n", nodeType(n), nodeTyp
|
||||||
if (!obj) {
|
if (!obj) {
|
||||||
obj = DohNone;
|
obj = DohNone;
|
||||||
}
|
}
|
||||||
if (Setattr(frame,name,obj)) {
|
strcpy(temp,ns);
|
||||||
Printf(stderr,"Swig_save('%s'): Warning, attribute '%s' was already saved.\n", nodeType(n), name);
|
strcat(temp,":");
|
||||||
|
strcat(temp,name);
|
||||||
|
if (Setattr(n,temp,obj)) {
|
||||||
|
Printf(stderr,"Swig_save('%s','%s'): Warning, attribute '%s' was already saved.\n", ns, nodeType(n), name);
|
||||||
}
|
}
|
||||||
name = va_arg(ap, char *);
|
name = va_arg(ap, char *);
|
||||||
}
|
}
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
|
||||||
|
/* Save the view */
|
||||||
|
{
|
||||||
|
String *view = Getattr(n,"view");
|
||||||
|
if (view) {
|
||||||
|
if (Strcmp(view,ns) != 0) {
|
||||||
|
strcpy(temp,ns);
|
||||||
|
strcat(temp,":view");
|
||||||
|
Setattr(n,temp,view);
|
||||||
|
Setattr(n,"view",ns);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Setattr(n,"view",ns);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Swig_restore(Node **nptr) {
|
Swig_restore(Node *n) {
|
||||||
String *key;
|
String *key;
|
||||||
Hash *frame;
|
char temp[512];
|
||||||
Node *n = *nptr;
|
int len;
|
||||||
assert(stackp > 0);
|
List *l;
|
||||||
if (!(nptr==nodeptr_stack[stackp-1])) {
|
String *ns;
|
||||||
Printf(stderr,
|
|
||||||
"Swig_restore('%s'): Fatal memory management error. If you are seeing this\n\
|
ns = Getattr(n,"view");
|
||||||
message. It means that the target language module is not managing its memory\n\
|
assert(ns);
|
||||||
correctly. A handler for '%s' probably forgot to call Swig_restore().\n\
|
|
||||||
Please report this problem to swig-dev@cs.uchicago.edu.\n", nodeType(n), nodeType(node_stack[stackp-1]));
|
l = NewList();
|
||||||
assert(0);
|
|
||||||
}
|
strcpy(temp,Char(ns));
|
||||||
stackp--;
|
strcat(temp,":");
|
||||||
frame = attr_stack[stackp];
|
len = strlen(temp);
|
||||||
nodeptr_stack[stackp] = 0;
|
|
||||||
node_stack[stackp] = 0;
|
for (key = Firstkey(n); key; key = Nextkey(n)) {
|
||||||
for (key = Firstkey(frame); key; key = Nextkey(frame)) {
|
if (Strncmp(temp,key,len) == 0) {
|
||||||
DOH *obj = Getattr(frame,key);
|
Append(l,key);
|
||||||
if (obj != DohNone) {
|
|
||||||
Setattr(n,key,obj);
|
|
||||||
} else {
|
|
||||||
Delattr(n,key);
|
|
||||||
}
|
}
|
||||||
Delattr(frame,key);
|
|
||||||
}
|
}
|
||||||
|
for (key = Firstitem(l); key; key = Nextitem(l)) {
|
||||||
|
DOH *obj = Getattr(n,key);
|
||||||
|
Setattr(n,Char(key)+len,obj);
|
||||||
|
Delattr(n,key);
|
||||||
|
}
|
||||||
|
Delete(l);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue