summaryrefslogtreecommitdiff
path: root/Source/Swig/cwrap.c
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Swig/cwrap.c')
-rw-r--r--Source/Swig/cwrap.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/Source/Swig/cwrap.c b/Source/Swig/cwrap.c
index d15c2e12f..9da4e0829 100644
--- a/Source/Swig/cwrap.c
+++ b/Source/Swig/cwrap.c
@@ -869,7 +869,7 @@ void Swig_replace_special_variables(Node *n, Node *parentnode, String *code) {
String *parentclassname = 0;
if (parentclass)
parentclassname = Getattr(parentclass, "name");
- Replaceall(code, "$parentclassname", parentclassname ? parentclassname : "");
+ Replaceall(code, "$parentclassname", parentclassname ? SwigType_str(parentclassname, "") : "");
}
}
@@ -1614,7 +1614,14 @@ int Swig_VargetToFunction(Node *n, int flags) {
Delete(mangled);
Delete(sname);
} else {
- String *nname = SwigType_namestr(name);
+ String *nname = 0;
+ if (Equal(nodeType(n), "constant")) {
+ String *rawval = Getattr(n, "rawval");
+ String *value = rawval ? rawval : Getattr(n, "value");
+ nname = NewStringf("(%s)", value);
+ } else {
+ nname = SwigType_namestr(name);
+ }
call = Swig_wrapped_var_assign(type, nname, varcref);
cres = Swig_cresult(ty, Swig_cresult_name(), call);
Setattr(n, "wrap:action", cres);