Finished removal of all public attributes of types.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk/SWIG@627 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
7f24ebca9a
commit
01c0c668a3
14 changed files with 339 additions and 318 deletions
|
|
@ -395,13 +395,13 @@ throw_unhandled_guile_type_error (DataType *d)
|
||||||
Printf (stderr, "ERROR: Unhandled GUILE type error.\n");
|
Printf (stderr, "ERROR: Unhandled GUILE type error.\n");
|
||||||
Printf (stderr, " type %d\n", DataType_type(d));
|
Printf (stderr, " type %d\n", DataType_type(d));
|
||||||
Printf (stderr, " name %s\n", DataType_Getname(d));
|
Printf (stderr, " name %s\n", DataType_Getname(d));
|
||||||
Printf (stderr, " is_pointer %d\n", d->is_pointer);
|
Printf (stderr, " is_pointer %d\n", DataType_is_pointer(d));
|
||||||
Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);
|
/* Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);*/
|
||||||
Printf (stderr, "is_reference %d\n", DataType_is_reference(d));
|
Printf (stderr, "is_reference %d\n", DataType_is_reference(d));
|
||||||
Printf (stderr, " status %d\n", d->status);
|
/* Printf (stderr, " status %d\n", d->status); */
|
||||||
/* Printf (stderr, " qualifier %s\n", (d->qualifier ? d->qualifier : ""));
|
/* Printf (stderr, " qualifier %s\n", (d->qualifier ? d->qualifier : ""));
|
||||||
Printf (stderr, " arraystr %s\n", (d->arraystr ? d->arraystr : ""));*/
|
Printf (stderr, " arraystr %s\n", (d->arraystr ? d->arraystr : ""));*/
|
||||||
Printf (stderr, " id %d\n", d->id);
|
/* Printf (stderr, " id %d\n", d->id);*/
|
||||||
|
|
||||||
Printf (stderr, "\n\nBAILING...\n"); // for now -ttn
|
Printf (stderr, "\n\nBAILING...\n"); // for now -ttn
|
||||||
abort(); // for now -ttn
|
abort(); // for now -ttn
|
||||||
|
|
@ -489,7 +489,7 @@ GUILE::create_function (char *name, char *iname, DataType *d, ParmList *l)
|
||||||
Printv(f->code,tm,"\n",0);
|
Printv(f->code,tm,"\n",0);
|
||||||
mreplace (f->code, argnum, arg, proc_name);
|
mreplace (f->code, argnum, arg, proc_name);
|
||||||
}
|
}
|
||||||
else if (pt->is_pointer)
|
else if (DataType_is_pointer(pt))
|
||||||
get_pointer (iname, i, pt, f, proc_name, numargs);
|
get_pointer (iname, i, pt, f, proc_name, numargs);
|
||||||
else {
|
else {
|
||||||
throw_unhandled_guile_type_error (pt);
|
throw_unhandled_guile_type_error (pt);
|
||||||
|
|
@ -536,7 +536,7 @@ GUILE::create_function (char *name, char *iname, DataType *d, ParmList *l)
|
||||||
Printv(f->code,tm,"\n",0);
|
Printv(f->code,tm,"\n",0);
|
||||||
mreplace (f->code, argnum, arg, proc_name);
|
mreplace (f->code, argnum, arg, proc_name);
|
||||||
}
|
}
|
||||||
else if (d->is_pointer) {
|
else if (DataType_is_pointer(d)) {
|
||||||
/* MK: I would like to use SWIG_Guile_MakePtr here to save one type
|
/* MK: I would like to use SWIG_Guile_MakePtr here to save one type
|
||||||
look-up. */
|
look-up. */
|
||||||
Printv(f->code, tab4,
|
Printv(f->code, tab4,
|
||||||
|
|
@ -656,7 +656,7 @@ GUILE::link_variable (char *name, char *iname, DataType *t)
|
||||||
t, name, (char*)"s_0", name))) {
|
t, name, (char*)"s_0", name))) {
|
||||||
Printf (f_wrappers, "%s\n", tm);
|
Printf (f_wrappers, "%s\n", tm);
|
||||||
}
|
}
|
||||||
else if (t->is_pointer) {
|
else if (DataType_is_pointer(t)) {
|
||||||
if (DataType_type(t) == T_STRING) {
|
if (DataType_type(t) == T_STRING) {
|
||||||
Printf (f_wrappers, "\t\t _temp = gh_scm2newstr(s_0, &_len);\n");
|
Printf (f_wrappers, "\t\t _temp = gh_scm2newstr(s_0, &_len);\n");
|
||||||
Printf (f_wrappers, "\t\t if (%s) { free(%s);}\n", name, name);
|
Printf (f_wrappers, "\t\t if (%s) { free(%s);}\n", name, name);
|
||||||
|
|
@ -691,7 +691,7 @@ GUILE::link_variable (char *name, char *iname, DataType *t)
|
||||||
t, name, name, (char*)"gswig_result"))) {
|
t, name, name, (char*)"gswig_result"))) {
|
||||||
Printf (f_wrappers, "%s\n", tm);
|
Printf (f_wrappers, "%s\n", tm);
|
||||||
}
|
}
|
||||||
else if (t->is_pointer) {
|
else if (DataType_is_pointer(t)) {
|
||||||
if (DataType_type(t) == T_STRING) {
|
if (DataType_type(t) == T_STRING) {
|
||||||
Printf (f_wrappers, "\t gswig_result = gh_str02scm(%s);\n", name);
|
Printf (f_wrappers, "\t gswig_result = gh_str02scm(%s);\n", name);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -831,8 +831,9 @@ GUILE::usage_func (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
||||||
|
|
||||||
// Print the type.
|
// Print the type.
|
||||||
Printv(usage, " <", DataType_Getname(pt), 0);
|
Printv(usage, " <", DataType_Getname(pt), 0);
|
||||||
if (pt->is_pointer) {
|
if (DataType_is_pointer(pt)) {
|
||||||
for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {
|
/* for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {*/
|
||||||
|
for (int j = 0; j < DataType_is_pointer(pt); j++) {
|
||||||
Putc('*', usage);
|
Putc('*', usage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -881,8 +882,9 @@ GUILE::usage_returns (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
||||||
|
|
||||||
// Print the type.
|
// Print the type.
|
||||||
Printv(param," $", DataType_Getname(pt), 0);
|
Printv(param," $", DataType_Getname(pt), 0);
|
||||||
if (pt->is_pointer) {
|
if (DataType_is_pointer(pt)) {
|
||||||
for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {
|
/* for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) { */
|
||||||
|
for (j = 0; j < DataType_is_pointer(pt) - 1; j++) {
|
||||||
Putc('*', param);
|
Putc('*', param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,7 +71,7 @@ static int useRegisterNatives = 0; // Set to 1 when doing stuff
|
||||||
static DOHString *registerNativesList = 0;
|
static DOHString *registerNativesList = 0;
|
||||||
|
|
||||||
char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
||||||
if(t->is_pointer == 1) {
|
if(DataType_is_pointer(t) == 1) {
|
||||||
switch(DataType_Gettypecode(t)) {
|
switch(DataType_Gettypecode(t)) {
|
||||||
case T_INT: return (char*)"jintArray";
|
case T_INT: return (char*)"jintArray";
|
||||||
case T_SHORT: return (char*)"jshortArray";
|
case T_SHORT: return (char*)"jshortArray";
|
||||||
|
|
@ -88,7 +88,7 @@ char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
||||||
case T_VOID:
|
case T_VOID:
|
||||||
case T_USER: return (char*)"jlong";
|
case T_USER: return (char*)"jlong";
|
||||||
}
|
}
|
||||||
} else if(t->is_pointer > 1) {
|
} else if(DataType_is_pointer(t) > 1) {
|
||||||
if(ret)
|
if(ret)
|
||||||
return (char*)"jlong";
|
return (char*)"jlong";
|
||||||
else return (char*)"jlongArray";
|
else return (char*)"jlongArray";
|
||||||
|
|
@ -115,7 +115,7 @@ char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *JAVA::SwigTcToJavaType(DataType *t, int ret, int inShadow) {
|
char *JAVA::SwigTcToJavaType(DataType *t, int ret, int inShadow) {
|
||||||
if(t->is_pointer == 1) {
|
if(DataType_is_pointer(t) == 1) {
|
||||||
switch(DataType_Gettypecode(t)) {
|
switch(DataType_Gettypecode(t)) {
|
||||||
case T_INT: return (char*)"int []";
|
case T_INT: return (char*)"int []";
|
||||||
case T_SHORT: return (char*)"short []";
|
case T_SHORT: return (char*)"short []";
|
||||||
|
|
@ -134,7 +134,7 @@ char *JAVA::SwigTcToJavaType(DataType *t, int ret, int inShadow) {
|
||||||
return GetChar(shadow_classes,DataType_Getname(t));
|
return GetChar(shadow_classes,DataType_Getname(t));
|
||||||
else return (char*)"long";
|
else return (char*)"long";
|
||||||
}
|
}
|
||||||
} else if(t->is_pointer > 1) {
|
} else if(DataType_is_pointer(t) > 1) {
|
||||||
if(ret)
|
if(ret)
|
||||||
return (char*)"long";
|
return (char*)"long";
|
||||||
else return (char*)"long []";
|
else return (char*)"long []";
|
||||||
|
|
@ -161,7 +161,7 @@ char *JAVA::SwigTcToJavaType(DataType *t, int ret, int inShadow) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *JAVA::SwigTcToJniScalarType(DataType *t) {
|
char *JAVA::SwigTcToJniScalarType(DataType *t) {
|
||||||
if(t->is_pointer == 1) {
|
if(DataType_is_pointer(t) == 1) {
|
||||||
switch(DataType_Gettypecode(t)) {
|
switch(DataType_Gettypecode(t)) {
|
||||||
case T_INT: return (char*)"Int";
|
case T_INT: return (char*)"Int";
|
||||||
case T_SHORT: return (char*)"Short";
|
case T_SHORT: return (char*)"Short";
|
||||||
|
|
@ -187,7 +187,7 @@ char *JAVA::SwigTcToJniScalarType(DataType *t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
char *JAVA::JavaMethodSignature(DataType *t, int ret, int inShadow) {
|
char *JAVA::JavaMethodSignature(DataType *t, int ret, int inShadow) {
|
||||||
if(t->is_pointer == 1) {
|
if(DataType_is_pointer(t) == 1) {
|
||||||
switch(DataType_Gettypecode(t)) {
|
switch(DataType_Gettypecode(t)) {
|
||||||
case T_INT: return (char*)"[I";
|
case T_INT: return (char*)"[I";
|
||||||
case T_SHORT: return (char*)"[S";
|
case T_SHORT: return (char*)"[S";
|
||||||
|
|
@ -206,7 +206,7 @@ char *JAVA::JavaMethodSignature(DataType *t, int ret, int inShadow) {
|
||||||
return GetChar(shadow_classes,DataType_Getname(t));
|
return GetChar(shadow_classes,DataType_Getname(t));
|
||||||
else return (char*)"J";
|
else return (char*)"J";
|
||||||
}
|
}
|
||||||
} else if(t->is_pointer > 1) {
|
} else if(DataType_is_pointer(t) > 1) {
|
||||||
if(ret) return (char*)"J";
|
if(ret) return (char*)"J";
|
||||||
else return (char*)"[J";
|
else return (char*)"[J";
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -638,27 +638,27 @@ void JAVA::create_function(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
Printf(f->code,"%s\n", tm);
|
Printf(f->code,"%s\n", tm);
|
||||||
Replace(f->code,"$arg",source, DOH_REPLACE_ANY);
|
Replace(f->code,"$arg",source, DOH_REPLACE_ANY);
|
||||||
} else {
|
} else {
|
||||||
if(!pt->is_pointer)
|
if(!DataType_is_pointer(pt))
|
||||||
Printv(f->code, tab4, target, " = (", DataType_lstr(pt,0), ") ", source, ";\n", 0);
|
Printv(f->code, tab4, target, " = (", DataType_lstr(pt,0), ") ", source, ";\n", 0);
|
||||||
else if((DataType_Gettypecode(pt) == T_VOID && pt->is_pointer == 1) ||
|
else if((DataType_Gettypecode(pt) == T_VOID && (DataType_is_pointer(pt) == 1)) ||
|
||||||
(DataType_Gettypecode(pt) == T_USER && pt->is_pointer == 1)) {
|
(DataType_Gettypecode(pt) == T_USER && (DataType_is_pointer(pt) == 1))) {
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
Printv(f->code, tab4, target, " = *(", DataType_lstr(pt,0), ")&", source, ";\n", 0);
|
Printv(f->code, tab4, target, " = *(", DataType_lstr(pt,0), ")&", source, ";\n", 0);
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
} else {
|
} else {
|
||||||
if(DataType_type(pt) == T_STRING) {
|
if(DataType_type(pt) == T_STRING) {
|
||||||
Printv(f->code, tab4, target, " = (", source, ") ? (char *)", JNICALL((char*)"GetStringUTFChars"), source, ", 0) : NULL;\n", 0);
|
Printv(f->code, tab4, target, " = (", source, ") ? (char *)", JNICALL((char*)"GetStringUTFChars"), source, ", 0) : NULL;\n", 0);
|
||||||
} else {
|
} else {
|
||||||
char *scalarType = SwigTcToJniScalarType(pt);
|
char *scalarType = SwigTcToJniScalarType(pt);
|
||||||
|
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
const char *basic_jnitype = (pt->is_pointer > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
const char *basic_jnitype = (DataType_is_pointer(pt) > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||||
char *ctype = DataType_lstr(pt,0);
|
char *ctype = DataType_lstr(pt,0);
|
||||||
if(scalarType == NULL || basic_jnitype == NULL) {
|
if(scalarType == NULL || basic_jnitype == NULL) {
|
||||||
Printf(stderr, "\'%s\' does not have a in/jni typemap, and is not a basic type.\n", ctype);
|
Printf(stderr, "\'%s\' does not have a in/jni typemap, and is not a basic type.\n", ctype);
|
||||||
SWIG_exit(1);
|
SWIG_exit(1);
|
||||||
};
|
};
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
|
|
||||||
DOHString *basic_jniptrtype = NewStringf("%s*",basic_jnitype);
|
DOHString *basic_jniptrtype = NewStringf("%s*",basic_jnitype);
|
||||||
DOHString *source_length = NewStringf("%s%s)", JNICALL((char*)"GetArrayLength"), source);
|
DOHString *source_length = NewStringf("%s%s)", JNICALL((char*)"GetArrayLength"), source);
|
||||||
|
|
@ -672,12 +672,12 @@ void JAVA::create_function(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
Printv(f->code, tab4, target_copy, " = ", JNICALL(scalarFunc), source, ", 0);\n", 0);
|
Printv(f->code, tab4, target_copy, " = ", JNICALL(scalarFunc), source, ", 0);\n", 0);
|
||||||
Printv(f->code, tab4, target, " = (", DataType_lstr(pt,0), ") malloc(", target_length, " * sizeof(", ctype, "));\n", 0);
|
Printv(f->code, tab4, target, " = (", DataType_lstr(pt,0), ") malloc(", target_length, " * sizeof(", ctype, "));\n", 0);
|
||||||
Printv(f->code, tab4, "for(i=0; i<", target_length, "; i++)\n", 0);
|
Printv(f->code, tab4, "for(i=0; i<", target_length, "; i++)\n", 0);
|
||||||
if(pt->is_pointer > 1) {
|
if(DataType_is_pointer(pt) > 1) {
|
||||||
Printv(f->code, tab8, target, "[i] = *(", DataType_lstr(pt,0), ")&", target_copy, "[i];\n", 0);
|
Printv(f->code, tab8, target, "[i] = *(", DataType_lstr(pt,0), ")&", target_copy, "[i];\n", 0);
|
||||||
} else {
|
} else {
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
Printv(f->code, tab8, target, "[i] = (", DataType_lstr(pt,0), ")", target_copy, "[i];\n", 0);
|
Printv(f->code, tab8, target, "[i] = (", DataType_lstr(pt,0), ")", target_copy, "[i];\n", 0);
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
}
|
}
|
||||||
Delete(scalarFunc);
|
Delete(scalarFunc);
|
||||||
Delete(source_length);
|
Delete(source_length);
|
||||||
|
|
@ -706,25 +706,25 @@ void JAVA::create_function(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
Replace(outarg,"$arg",source, DOH_REPLACE_ANY);
|
Replace(outarg,"$arg",source, DOH_REPLACE_ANY);
|
||||||
} else {
|
} else {
|
||||||
// if(pt->is_pointer && pt->type != T_USER && pt->type != T_VOID) {
|
// if(pt->is_pointer && pt->type != T_USER && pt->type != T_VOID) {
|
||||||
if(pt->is_pointer) {
|
if(DataType_is_pointer(pt)) {
|
||||||
if(DataType_type(pt) == T_STRING) {
|
if(DataType_type(pt) == T_STRING) {
|
||||||
Printv(outarg, tab4, "if(", target,") ", JNICALL((char*)"ReleaseStringUTFChars"), source, ", ", target, ");\n", 0);
|
Printv(outarg, tab4, "if(", target,") ", JNICALL((char*)"ReleaseStringUTFChars"), source, ", ", target, ");\n", 0);
|
||||||
} else if(((DataType_Gettypecode(pt) == T_VOID) && pt->is_pointer == 1) ||
|
} else if(((DataType_Gettypecode(pt) == T_VOID) && DataType_is_pointer(pt) == 1) ||
|
||||||
((DataType_Gettypecode(pt) == T_USER) && pt->is_pointer == 1)) {
|
((DataType_Gettypecode(pt) == T_USER) && DataType_is_pointer(pt) == 1)) {
|
||||||
// nothing to do
|
// nothing to do
|
||||||
} else {
|
} else {
|
||||||
char *scalarType = SwigTcToJniScalarType(pt);
|
char *scalarType = SwigTcToJniScalarType(pt);
|
||||||
|
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
const char *basic_jnitype = (pt->is_pointer > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
const char *basic_jnitype = (DataType_is_pointer(pt) > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||||
char *ctype = DataType_lstr(pt,0);
|
char *ctype = DataType_lstr(pt,0);
|
||||||
if(scalarType == NULL || basic_jnitype == NULL) {
|
if(scalarType == NULL || basic_jnitype == NULL) {
|
||||||
Printf(stderr, "\'%s\' does not have a argout/jni typemap, and is not a basic type.\n", ctype);
|
Printf(stderr, "\'%s\' does not have a argout/jni typemap, and is not a basic type.\n", ctype);
|
||||||
SWIG_exit(1);
|
SWIG_exit(1);
|
||||||
};
|
};
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
Printf(outarg, " for(i=0; i< %d; i++)\n", target_length);
|
Printf(outarg, " for(i=0; i< %d; i++)\n", target_length);
|
||||||
if(pt->is_pointer > 1) {
|
if(DataType_is_pointer(pt) > 1) {
|
||||||
Printv(outarg, tab8, "*(", DataType_lstr(pt,0), ")&", target_copy, "[i] = ", target, "[i];\n", 0);
|
Printv(outarg, tab8, "*(", DataType_lstr(pt,0), ")&", target_copy, "[i] = ", target, "[i];\n", 0);
|
||||||
} else {
|
} else {
|
||||||
Printv(outarg, tab8, target_copy, "[i] = (", basic_jnitype, ") ", target, "[i];\n", 0);
|
Printv(outarg, tab8, target_copy, "[i] = (", basic_jnitype, ") ", target, "[i];\n", 0);
|
||||||
|
|
@ -761,25 +761,27 @@ void JAVA::create_function(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
Printf(f->code,"%s\n", tm);
|
Printf(f->code,"%s\n", tm);
|
||||||
} else {
|
} else {
|
||||||
if(DataType_type(t) == T_USER) { /* return by value */
|
if(DataType_type(t) == T_USER) { /* return by value */
|
||||||
t->is_pointer=2;
|
DataType_add_pointer(t);
|
||||||
|
DataType_add_pointer(t);
|
||||||
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
||||||
t->is_pointer=0;
|
DataType_del_pointer(t);
|
||||||
} else if(t->is_pointer == 0 && (DataType_Gettypecode(t) != T_USER)) {
|
DataType_del_pointer(t);
|
||||||
|
} else if(DataType_is_pointer(t) == 0 && (DataType_Gettypecode(t) != T_USER)) {
|
||||||
Printv(f->code, tab4, "_jresult = (", jnirettype, ") result;\n", 0);
|
Printv(f->code, tab4, "_jresult = (", jnirettype, ") result;\n", 0);
|
||||||
} else if(((DataType_Gettypecode(t) == T_VOID) && t->is_pointer == 1) ||
|
} else if(((DataType_Gettypecode(t) == T_VOID) && DataType_is_pointer(t) == 1) ||
|
||||||
((DataType_Gettypecode(t) == T_USER) && t->is_pointer == 1)) {
|
((DataType_Gettypecode(t) == T_USER) && DataType_is_pointer(t) == 1)) {
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
} else {
|
} else {
|
||||||
if(DataType_type(t) == T_STRING) {
|
if(DataType_type(t) == T_STRING) {
|
||||||
Printv(f->code, tab4, "if(result != NULL)\n", 0);
|
Printv(f->code, tab4, "if(result != NULL)\n", 0);
|
||||||
Printv(f->code, tab8, "_jresult = (jstring)", JNICALL((char*)"NewStringUTF"), "result);\n", 0);
|
Printv(f->code, tab8, "_jresult = (jstring)", JNICALL((char*)"NewStringUTF"), "result);\n", 0);
|
||||||
} else {
|
} else {
|
||||||
Printf(stderr,"%s : Line %d. Warning: no return typemap for datatype %s\n", input_file,line_number,DataType_str(t,0));
|
Printf(stderr,"%s : Line %d. Warning: no return typemap for datatype %s\n", input_file,line_number,DataType_str(t,0));
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -871,7 +873,7 @@ void JAVA::declare_const(char *name, char *iname, DataType *type, char *value) {
|
||||||
Printf(jfile," %s\n\n", str);
|
Printf(jfile," %s\n\n", str);
|
||||||
Delete(str);
|
Delete(str);
|
||||||
} else {
|
} else {
|
||||||
if((type->is_pointer == 0)) {
|
if((DataType_is_pointer(type) == 0)) {
|
||||||
char *jtype = typemap_lookup((char*)"jtype", typemap_lang, type, name, name, iname);
|
char *jtype = typemap_lookup((char*)"jtype", typemap_lang, type, name, name, iname);
|
||||||
if(!jtype) jtype = SwigTcToJavaType(type, 0, 0);
|
if(!jtype) jtype = SwigTcToJavaType(type, 0, 0);
|
||||||
if(strcmp(jname, value) == 0 || strstr(value,"::") != NULL) {
|
if(strcmp(jname, value) == 0 || strstr(value,"::") != NULL) {
|
||||||
|
|
@ -947,7 +949,7 @@ void JAVA::add_typedef(DataType *t, char *name) {
|
||||||
|
|
||||||
// First check to see if there aren't too many pointers
|
// First check to see if there aren't too many pointers
|
||||||
|
|
||||||
if (t->is_pointer > 1) return;
|
if (DataType_is_pointer(t) > 1) return;
|
||||||
|
|
||||||
if(Getattr(shadow_classes,name)) return; // Already added
|
if(Getattr(shadow_classes,name)) return; // Already added
|
||||||
|
|
||||||
|
|
@ -1059,7 +1061,7 @@ void JAVA::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
char *javarettype = JavaTypeFromTypemap((char*)"jtype", typemap_lang, t, iname);
|
char *javarettype = JavaTypeFromTypemap((char*)"jtype", typemap_lang, t, iname);
|
||||||
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
||||||
char *shadowrettype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, t, iname);
|
char *shadowrettype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, t, iname);
|
||||||
if(!shadowrettype && (DataType_Gettypecode(t) == T_USER) && t->is_pointer <= 1) {
|
if(!shadowrettype && (DataType_Gettypecode(t) == T_USER) && DataType_is_pointer(t) <= 1) {
|
||||||
shadowrettype = GetChar(shadow_classes,DataType_Getname(t));
|
shadowrettype = GetChar(shadow_classes,DataType_Getname(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1087,7 +1089,7 @@ void JAVA::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
sprintf(arg,"arg%d",i);
|
sprintf(arg,"arg%d",i);
|
||||||
}
|
}
|
||||||
|
|
||||||
if((DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1 && Getattr(shadow_classes,DataType_Getname(pt))) {
|
if((DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1) && Getattr(shadow_classes,DataType_Getname(pt))) {
|
||||||
Printv(nativecall, ", ", arg, "._self", 0);
|
Printv(nativecall, ", ", arg, "._self", 0);
|
||||||
} else Printv(nativecall, ", ", arg, 0);
|
} else Printv(nativecall, ", ", arg, 0);
|
||||||
|
|
||||||
|
|
@ -1095,7 +1097,7 @@ void JAVA::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
||||||
|
|
||||||
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
||||||
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1) {
|
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
jstype = GetChar(shadow_classes,DataType_Getname(pt));
|
jstype = GetChar(shadow_classes,DataType_Getname(pt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1131,7 +1133,7 @@ void JAVA::cpp_static_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
char *javarettype = JavaTypeFromTypemap((char*)"jtype", typemap_lang, t, iname);
|
char *javarettype = JavaTypeFromTypemap((char*)"jtype", typemap_lang, t, iname);
|
||||||
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
||||||
char *shadowrettype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, t, iname);
|
char *shadowrettype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, t, iname);
|
||||||
if(!shadowrettype && (DataType_Gettypecode(t) == T_USER) && t->is_pointer <= 1) {
|
if(!shadowrettype && (DataType_Gettypecode(t) == T_USER) && (DataType_is_pointer(t) <= 1)) {
|
||||||
shadowrettype = GetChar(shadow_classes,DataType_Getname(t));
|
shadowrettype = GetChar(shadow_classes,DataType_Getname(t));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1162,7 +1164,7 @@ void JAVA::cpp_static_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
|
|
||||||
if(gencomma) Printf(nativecall,", ");
|
if(gencomma) Printf(nativecall,", ");
|
||||||
|
|
||||||
if((DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1 && Getattr(shadow_classes,DataType_Getname(pt))) {
|
if((DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1) && Getattr(shadow_classes,DataType_Getname(pt))) {
|
||||||
Printv(nativecall, arg, "._self", 0);
|
Printv(nativecall, arg, "._self", 0);
|
||||||
} else Printv(nativecall,arg,0);
|
} else Printv(nativecall,arg,0);
|
||||||
|
|
||||||
|
|
@ -1172,7 +1174,7 @@ void JAVA::cpp_static_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
||||||
|
|
||||||
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
||||||
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1) {
|
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
jstype = GetChar(shadow_classes, DataType_Getname(pt));
|
jstype = GetChar(shadow_classes, DataType_Getname(pt));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1232,14 +1234,14 @@ void JAVA::cpp_constructor(char *name, char *iname, ParmList *l) {
|
||||||
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
||||||
|
|
||||||
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
char *jstype = JavaTypeFromTypemap((char*)"jstype", typemap_lang, pt, pn);
|
||||||
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1) {
|
if(!jstype && (DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
jstype = GetChar(shadow_classes, DataType_Getname(pt));
|
jstype = GetChar(shadow_classes, DataType_Getname(pt));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add to java function header
|
// Add to java function header
|
||||||
Printf(f_shadow, "%s %s", (jstype) ? jstype : jtype, arg);
|
Printf(f_shadow, "%s %s", (jstype) ? jstype : jtype, arg);
|
||||||
|
|
||||||
if((DataType_Gettypecode(pt) == T_USER) && pt->is_pointer <= 1 && Getattr(shadow_classes,DataType_Getname(pt))) {
|
if((DataType_Gettypecode(pt) == T_USER) && (DataType_is_pointer(pt) <= 1) && Getattr(shadow_classes,DataType_Getname(pt))) {
|
||||||
Printv(nativecall,arg, "._self", 0);
|
Printv(nativecall,arg, "._self", 0);
|
||||||
} else Printv(nativecall, arg, 0);
|
} else Printv(nativecall, arg, 0);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -260,13 +260,13 @@ throw_unhandled_mzscheme_type_error (DataType *d)
|
||||||
Printf (stderr, "ERROR: Unhandled MZSCHEME type error.\n");
|
Printf (stderr, "ERROR: Unhandled MZSCHEME type error.\n");
|
||||||
Printf (stderr, " type %d\n", DataType_Gettypecode(d));
|
Printf (stderr, " type %d\n", DataType_Gettypecode(d));
|
||||||
Printf (stderr, " name %s\n", DataType_Getname(d));
|
Printf (stderr, " name %s\n", DataType_Getname(d));
|
||||||
Printf (stderr, " is_pointer %d\n", d->is_pointer);
|
Printf (stderr, " is_pointer %d\n", DataType_is_pointer(d));
|
||||||
Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);
|
/* Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr); */
|
||||||
Printf (stderr, "is_reference %d\n", DataType_is_reference(d));
|
Printf (stderr, "is_reference %d\n", DataType_is_reference(d));
|
||||||
Printf (stderr, " status %d\n", d->status);
|
/* Printf (stderr, " status %d\n", d->status); */
|
||||||
/* Printf (stderr, " qualifier %s\n", (d->qualifier ? d->qualifier : ""));
|
/* Printf (stderr, " qualifier %s\n", (d->qualifier ? d->qualifier : ""));
|
||||||
Printf (stderr, " arraystr %s\n", (d->arraystr ? d->arraystr : "")); */
|
Printf (stderr, " arraystr %s\n", (d->arraystr ? d->arraystr : "")); */
|
||||||
Printf (stderr, " id %d\n", d->id);
|
/* Printf (stderr, " id %d\n", d->id); */
|
||||||
|
|
||||||
Printf (stderr, "\n\nBAILING...\n"); // for now -ttn
|
Printf (stderr, "\n\nBAILING...\n"); // for now -ttn
|
||||||
abort(); // for now -ttn
|
abort(); // for now -ttn
|
||||||
|
|
@ -346,7 +346,7 @@ MZSCHEME::create_function (char *name, char *iname, DataType *d, ParmList *l)
|
||||||
}
|
}
|
||||||
// no typemap found
|
// no typemap found
|
||||||
// assume it's a Scheme_Object containing the C pointer
|
// assume it's a Scheme_Object containing the C pointer
|
||||||
else if (pt->is_pointer) {
|
else if (DataType_is_pointer(pt)) {
|
||||||
get_pointer (proc_name, i, pt, f);
|
get_pointer (proc_name, i, pt, f);
|
||||||
}
|
}
|
||||||
// no typemap found and not a pointer
|
// no typemap found and not a pointer
|
||||||
|
|
@ -399,7 +399,7 @@ MZSCHEME::create_function (char *name, char *iname, DataType *d, ParmList *l)
|
||||||
}
|
}
|
||||||
// no typemap found and not void then create a Scheme_Object holding
|
// no typemap found and not void then create a Scheme_Object holding
|
||||||
// the C pointer and return it
|
// the C pointer and return it
|
||||||
else if (d->is_pointer) {
|
else if (DataType_is_pointer(d)) {
|
||||||
Printv(f->code,
|
Printv(f->code,
|
||||||
tab4,
|
tab4,
|
||||||
"swig_result = swig_make_c_pointer(",
|
"swig_result = swig_make_c_pointer(",
|
||||||
|
|
@ -535,7 +535,7 @@ MZSCHEME::link_variable (char *name, char *iname, DataType *t)
|
||||||
Printf(f_wrappers, "%s\n", tm2);
|
Printf(f_wrappers, "%s\n", tm2);
|
||||||
Delete(tm2);
|
Delete(tm2);
|
||||||
}
|
}
|
||||||
else if (t->is_pointer) {
|
else if (DataType_is_pointer(t)) {
|
||||||
if (DataType_type(t) == T_STRING) {
|
if (DataType_type(t) == T_STRING) {
|
||||||
Printf (f_wrappers, "\t\t _temp = SCHEME_STR_VAL(argv[0]);\n");
|
Printf (f_wrappers, "\t\t _temp = SCHEME_STR_VAL(argv[0]);\n");
|
||||||
Printf (f_wrappers, "\t\t _len = SCHEME_STRLEN_VAL(argv[0]);\n");
|
Printf (f_wrappers, "\t\t _len = SCHEME_STRLEN_VAL(argv[0]);\n");
|
||||||
|
|
@ -563,7 +563,7 @@ MZSCHEME::link_variable (char *name, char *iname, DataType *t)
|
||||||
t, name, name, (char*)"swig_result"))) {
|
t, name, name, (char*)"swig_result"))) {
|
||||||
Printf (f_wrappers, "%s\n", tm);
|
Printf (f_wrappers, "%s\n", tm);
|
||||||
}
|
}
|
||||||
else if (t->is_pointer) {
|
else if (DataType_is_pointer(t)) {
|
||||||
if (DataType_type(t) == T_STRING) {
|
if (DataType_type(t) == T_STRING) {
|
||||||
Printf (f_wrappers, "\t swig_result = scheme_make_string(%s);\n", name);
|
Printf (f_wrappers, "\t swig_result = scheme_make_string(%s);\n", name);
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -702,8 +702,9 @@ MZSCHEME::usage_func (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
||||||
|
|
||||||
// Print the type.
|
// Print the type.
|
||||||
Printv(usage," <", DataType_Getname(pt), 0);
|
Printv(usage," <", DataType_Getname(pt), 0);
|
||||||
if (pt->is_pointer) {
|
if (DataType_is_pointer(pt)) {
|
||||||
for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {
|
/* for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) { */
|
||||||
|
for (int j = 0; j < DataType_is_pointer(pt); j++) {
|
||||||
Putc('*', usage);
|
Putc('*', usage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -753,8 +754,9 @@ MZSCHEME::usage_returns (char *iname, DataType *d, ParmList *l, DOHString *usage
|
||||||
|
|
||||||
// Print the type.
|
// Print the type.
|
||||||
Printv(param," $",DataType_Getname(pt), 0);
|
Printv(param," $",DataType_Getname(pt), 0);
|
||||||
if (pt->is_pointer) {
|
if (DataType_is_pointer(pt)) {
|
||||||
for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {
|
/* for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {*/
|
||||||
|
for (j = 0; j < DataType_is_pointer(pt) - 1; j++) {
|
||||||
Putc('*',param);
|
Putc('*',param);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -146,6 +146,7 @@ static DOHString *pragma_include = 0;
|
||||||
|
|
||||||
|
|
||||||
// Perl specific type mangler function
|
// Perl specific type mangler function
|
||||||
|
#ifdef OLD
|
||||||
static char *
|
static char *
|
||||||
type_mangle(DataType *t) {
|
type_mangle(DataType *t) {
|
||||||
static char result[128];
|
static char result[128];
|
||||||
|
|
@ -176,6 +177,7 @@ type_mangle(DataType *t) {
|
||||||
*r = 0;
|
*r = 0;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// ---------------------------------------------------------------------
|
// ---------------------------------------------------------------------
|
||||||
// PERL5::parse_args(int argc, char *argv[])
|
// PERL5::parse_args(int argc, char *argv[])
|
||||||
|
|
@ -292,7 +294,7 @@ PERL5::parse() {
|
||||||
modextern = NewString("");
|
modextern = NewString("");
|
||||||
pragma_include = NewString("");
|
pragma_include = NewString("");
|
||||||
|
|
||||||
DataType_set_mangle(type_mangle);
|
/* DataType_set_mangle(type_mangle);*/
|
||||||
|
|
||||||
// Print out PERL5 specific headers
|
// Print out PERL5 specific headers
|
||||||
|
|
||||||
|
|
@ -840,10 +842,10 @@ void PERL5::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
|
|
||||||
case T_USER:
|
case T_USER:
|
||||||
|
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
sprintf(temp,"argument %d", i+1);
|
sprintf(temp,"argument %d", i+1);
|
||||||
get_pointer(iname, temp, source, target, pt, f->code, (char *)"XSRETURN(1)");
|
get_pointer(iname, temp, source, target, pt, f->code, (char *)"XSRETURN(1)");
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -945,11 +947,11 @@ void PERL5::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
// Return a complex type by value
|
// Return a complex type by value
|
||||||
|
|
||||||
case T_USER:
|
case T_USER:
|
||||||
d->is_pointer++;
|
DataType_add_pointer(d);
|
||||||
Printv(f->code,
|
Printv(f->code,
|
||||||
tab4, "sv_setref_pv(ST(argvi++),\"",(hidden ? realpackage : ""), (hidden ? "::" : ""), DataType_manglestr(d),
|
tab4, "sv_setref_pv(ST(argvi++),\"",(hidden ? realpackage : ""), (hidden ? "::" : ""), DataType_manglestr(d),
|
||||||
"\", (void *) result);\n", 0);
|
"\", (void *) result);\n", 0);
|
||||||
d->is_pointer--;
|
DataType_del_pointer(d);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -1047,7 +1049,7 @@ void PERL5::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
|
|
||||||
if ((tm = typemap_lookup((char*)"perl5in",(char*)"perl5",pt,(char*)"",sourceNtarget,sourceNtarget))) {
|
if ((tm = typemap_lookup((char*)"perl5in",(char*)"perl5",pt,(char*)"",sourceNtarget,sourceNtarget))) {
|
||||||
Printf(func,"%s\n", tm);
|
Printf(func,"%s\n", tm);
|
||||||
} else if ((Getattr(classes,DataType_Getname(pt))) && (pt->is_pointer <= 1)) {
|
} else if ((Getattr(classes,DataType_Getname(pt))) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
if (i >= (pcount - numopt))
|
if (i >= (pcount - numopt))
|
||||||
Printf(func," if (scalar(@args) >= %d) {\n ", i);
|
Printf(func," if (scalar(@args) >= %d) {\n ", i);
|
||||||
Printf(func," $args[%d] = tied(%%{$args[%d]});\n", i, i);
|
Printf(func," $args[%d] = tied(%%{$args[%d]});\n", i, i);
|
||||||
|
|
@ -1075,14 +1077,14 @@ void PERL5::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
"}\n",
|
"}\n",
|
||||||
0);
|
0);
|
||||||
|
|
||||||
} else if ((Getattr(classes,DataType_Getname(d))) && (d->is_pointer <=1)) {
|
} else if ((Getattr(classes,DataType_Getname(d))) && (DataType_is_pointer(d) <=1)) {
|
||||||
|
|
||||||
Printv(func, tab4, "return undef if (!defined($result));\n", 0);
|
Printv(func, tab4, "return undef if (!defined($result));\n", 0);
|
||||||
|
|
||||||
// If we're returning an object by value, put it's reference
|
// If we're returning an object by value, put it's reference
|
||||||
// into our local hash table
|
// into our local hash table
|
||||||
|
|
||||||
if ((d->is_pointer == 0) || ((d->is_pointer == 1) && NewObject)) {
|
if ((!DataType_is_pointer(d))|| ((DataType_is_pointer(d) == 1) && NewObject)) {
|
||||||
char *name = GetChar(classes,DataType_Getname(d));
|
char *name = GetChar(classes,DataType_Getname(d));
|
||||||
if (hidden)
|
if (hidden)
|
||||||
Printv(func, tab4, "$", realpackage, "::", name, "::OWNER{$result} = 1;\n", 0);
|
Printv(func, tab4, "$", realpackage, "::", name, "::OWNER{$result} = 1;\n", 0);
|
||||||
|
|
@ -1182,11 +1184,11 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
||||||
// Add support for User defined type here
|
// Add support for User defined type here
|
||||||
// Get as a pointer value
|
// Get as a pointer value
|
||||||
|
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Wrapper_add_local(setf,"_temp", "void *_temp");
|
Wrapper_add_local(setf,"_temp", "void *_temp");
|
||||||
get_pointer(iname,(char*)"value",(char*)"sv",(char*)"_temp", t, setf->code, (char*)"return(1)");
|
get_pointer(iname,(char*)"value",(char*)"sv",(char*)"_temp", t, setf->code, (char*)"return(1)");
|
||||||
Printv(setf->code, tab4, name, " = *((", DataType_str(t,0), ") _temp);\n", 0);
|
Printv(setf->code, tab4, name, " = *((", DataType_str(t,0), ") _temp);\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -1263,7 +1265,7 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
case T_USER:
|
case T_USER:
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Printv(getf->code,
|
Printv(getf->code,
|
||||||
tab4, "rsv = SvRV(sv);\n",
|
tab4, "rsv = SvRV(sv);\n",
|
||||||
tab4, "sv_setiv(rsv,(IV) &", name, ");\n",
|
tab4, "sv_setiv(rsv,(IV) &", name, ");\n",
|
||||||
|
|
@ -1271,7 +1273,7 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
||||||
|
|
||||||
Wrapper_add_local(getf,"rsv","SV *rsv");
|
Wrapper_add_local(getf,"rsv","SV *rsv");
|
||||||
Printv(vinit, tab4, "sv_setref_pv(sv,\"", DataType_manglestr(t), "\",(void *) &", name, ");\n",0);
|
Printv(vinit, tab4, "sv_setref_pv(sv,\"", DataType_manglestr(t), "\",(void *) &", name, ");\n",0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -1311,7 +1313,7 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
||||||
// 2. Otherwise, just hack Perl's symbol table
|
// 2. Otherwise, just hack Perl's symbol table
|
||||||
|
|
||||||
if (blessed) {
|
if (blessed) {
|
||||||
if ((Getattr(classes,DataType_Getname(t))) && (t->is_pointer <= 1)) {
|
if ((Getattr(classes,DataType_Getname(t))) && (DataType_is_pointer(t) <= 1)) {
|
||||||
Printv(var_stubs,
|
Printv(var_stubs,
|
||||||
"\nmy %__", iname, "_hash;\n",
|
"\nmy %__", iname, "_hash;\n",
|
||||||
"tie %__", iname, "_hash,\"", GetChar(classes,DataType_Getname(t)), "\", $",
|
"tie %__", iname, "_hash,\"", GetChar(classes,DataType_Getname(t)), "\", $",
|
||||||
|
|
@ -1454,7 +1456,7 @@ PERL5::declare_const(char *name, char *, DataType *type, char *value)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (blessed) {
|
if (blessed) {
|
||||||
if ((Getattr(classes,DataType_Getname(type))) && (type->is_pointer <= 1)) {
|
if ((Getattr(classes,DataType_Getname(type))) && (DataType_is_pointer(type) <= 1)) {
|
||||||
Printv(var_stubs,
|
Printv(var_stubs,
|
||||||
"\nmy %__", name, "_hash;\n",
|
"\nmy %__", name, "_hash;\n",
|
||||||
"tie %__", name, "_hash,\"", GetChar(classes,DataType_Getname(type)), "\", $",
|
"tie %__", name, "_hash,\"", GetChar(classes,DataType_Getname(type)), "\", $",
|
||||||
|
|
@ -1876,7 +1878,7 @@ void PERL5::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
Printf(func,"%s\n",tm);
|
Printf(func,"%s\n",tm);
|
||||||
}
|
}
|
||||||
// Look up the datatype name here
|
// Look up the datatype name here
|
||||||
else if ((Getattr(classes,DataType_Getname(pt))) && (pt->is_pointer <= 1)) {
|
else if ((Getattr(classes,DataType_Getname(pt))) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
// Yep. This smells alot like an object, patch up the arguments
|
// Yep. This smells alot like an object, patch up the arguments
|
||||||
|
|
||||||
if (i >= (pcount - numopt))
|
if (i >= (pcount - numopt))
|
||||||
|
|
@ -1910,14 +1912,14 @@ void PERL5::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
||||||
"}\n",
|
"}\n",
|
||||||
0);
|
0);
|
||||||
|
|
||||||
} else if ((Getattr(classes,DataType_Getname(t))) && (t->is_pointer <=1)) {
|
} else if ((Getattr(classes,DataType_Getname(t))) && (DataType_is_pointer(t) <=1)) {
|
||||||
|
|
||||||
Printv(func,tab4, "return undef if (!defined($result));\n", 0);
|
Printv(func,tab4, "return undef if (!defined($result));\n", 0);
|
||||||
|
|
||||||
// If we're returning an object by value, put it's reference
|
// If we're returning an object by value, put it's reference
|
||||||
// into our local hash table
|
// into our local hash table
|
||||||
|
|
||||||
if ((t->is_pointer == 0) || ((t->is_pointer == 1) && NewObject)) {
|
if ((DataType_is_pointer(t) == 0) || ((DataType_is_pointer(t) == 1) && NewObject)) {
|
||||||
char *name = GetChar(classes,DataType_Getname(t));
|
char *name = GetChar(classes,DataType_Getname(t));
|
||||||
if (hidden)
|
if (hidden)
|
||||||
Printv(func, tab4, "$", realpackage, "::", name, "::OWNER{$result} = 1;\n", 0);
|
Printv(func, tab4, "$", realpackage, "::", name, "::OWNER{$result} = 1;\n", 0);
|
||||||
|
|
@ -1995,7 +1997,7 @@ void PERL5::cpp_variable(char *name, char *iname, DataType *t) {
|
||||||
|
|
||||||
// Now we need to generate a little Perl code for this
|
// Now we need to generate a little Perl code for this
|
||||||
|
|
||||||
if ((Getattr(classes,DataType_Getname(t))) && (t->is_pointer <= 1)) {
|
if ((Getattr(classes,DataType_Getname(t))) && (DataType_is_pointer(t) <= 1)) {
|
||||||
|
|
||||||
// This is a Perl object that we have already seen. Add an
|
// This is a Perl object that we have already seen. Add an
|
||||||
// entry to the members list
|
// entry to the members list
|
||||||
|
|
@ -2074,7 +2076,7 @@ void PERL5::cpp_constructor(char *name, char *iname, ParmList *l) {
|
||||||
DataType *pt = Gettype(p);
|
DataType *pt = Gettype(p);
|
||||||
// Look up the datatype name here
|
// Look up the datatype name here
|
||||||
|
|
||||||
if ((Getattr(classes,DataType_Getname(pt))) && (pt->is_pointer <= 1)) {
|
if ((Getattr(classes,DataType_Getname(pt))) && (DataType_is_pointer(pt) <= 1)) {
|
||||||
|
|
||||||
// Yep. This smells alot like an object, patch up the arguments
|
// Yep. This smells alot like an object, patch up the arguments
|
||||||
Printf(pcode, " $args[%d] = tied(%%{$args[%d]});\n", i, i);
|
Printf(pcode, " $args[%d] = tied(%%{$args[%d]});\n", i, i);
|
||||||
|
|
@ -2267,7 +2269,7 @@ void PERL5::add_typedef(DataType *t, char *name) {
|
||||||
|
|
||||||
// First check to see if there aren't too many pointers
|
// First check to see if there aren't too many pointers
|
||||||
|
|
||||||
if (t->is_pointer > 1) return;
|
if (DataType_is_pointer(t) > 1) return;
|
||||||
|
|
||||||
if (Getattr(classes,name)) return; // Already added
|
if (Getattr(classes,name)) return; // Already added
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -779,9 +779,9 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
|
|
||||||
Wrapper_add_localv(f,source,"PyObject *",source,"=0",0);
|
Wrapper_add_localv(f,source,"PyObject *",source,"=0",0);
|
||||||
Printf(arglist,"&%s",source);
|
Printf(arglist,"&%s",source);
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
get_pointer(iname, temp, source, target, pt, get_pointers, (char*)"NULL");
|
get_pointer(iname, temp, source, target, pt, get_pointers, (char*)"NULL");
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
noarg = 1;
|
noarg = 1;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
@ -900,10 +900,10 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_USER :
|
case T_USER :
|
||||||
d->is_pointer++;
|
DataType_add_pointer(d);
|
||||||
DataType_remember(d);
|
DataType_remember(d);
|
||||||
Printv(f->code,tab4, "resultobj = SWIG_NewPointerObj((void *)result, SWIGTYPE", DataType_manglestr(d), ");\n",0);
|
Printv(f->code,tab4, "resultobj = SWIG_NewPointerObj((void *)result, SWIGTYPE", DataType_manglestr(d), ");\n",0);
|
||||||
d->is_pointer--;
|
DataType_del_pointer(d);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -982,7 +982,7 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
|
|
||||||
|
|
||||||
// Check return code for modification
|
// Check return code for modification
|
||||||
if ((Getattr(hash,DataType_Getname(d))) && (d->is_pointer <=1)) {
|
if ((Getattr(hash,DataType_Getname(d))) && (DataType_is_pointer(d) <=1)) {
|
||||||
need_wrapper = 1;
|
need_wrapper = 1;
|
||||||
munge_return = 1;
|
munge_return = 1;
|
||||||
}
|
}
|
||||||
|
|
@ -1008,8 +1008,8 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
|
|
||||||
if (!have_output) {
|
if (!have_output) {
|
||||||
Printv(func, tab4, "if val: val = ", GetChar(hash,DataType_Getname(d)), "Ptr(val)", 0);
|
Printv(func, tab4, "if val: val = ", GetChar(hash,DataType_Getname(d)), "Ptr(val)", 0);
|
||||||
if (((Getattr(hash,DataType_Getname(d))) && (d->is_pointer < 1)) ||
|
if (((Getattr(hash,DataType_Getname(d))) && (DataType_is_pointer(d) < 1)) ||
|
||||||
((Getattr(hash,DataType_Getname(d))) && (d->is_pointer == 1) && NewObject))
|
((Getattr(hash,DataType_Getname(d))) && (DataType_is_pointer(d) == 1) && NewObject))
|
||||||
Printf(func, "; val.thisown = 1\n");
|
Printf(func, "; val.thisown = 1\n");
|
||||||
else
|
else
|
||||||
Printf(func,"\n");
|
Printf(func,"\n");
|
||||||
|
|
@ -1127,11 +1127,11 @@ void PYTHON::link_variable(char *name, char *iname, DataType *t) {
|
||||||
0);
|
0);
|
||||||
break;
|
break;
|
||||||
case T_USER:
|
case T_USER:
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Wrapper_add_localv(setf,"temp",DataType_lstr(t,0),"temp",0);
|
Wrapper_add_localv(setf,"temp",DataType_lstr(t,0),"temp",0);
|
||||||
get_pointer(iname,(char*)"value",(char*)"val",(char*)"temp",t,setf->code,(char*)"1");
|
get_pointer(iname,(char*)"value",(char*)"val",(char*)"temp",t,setf->code,(char*)"1");
|
||||||
Printv(setf->code, tab4, name, " = *temp;\n", 0);
|
Printv(setf->code, tab4, name, " = *temp;\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -1219,13 +1219,13 @@ void PYTHON::link_variable(char *name, char *iname, DataType *t) {
|
||||||
break;
|
break;
|
||||||
case T_USER:
|
case T_USER:
|
||||||
// Hack this into a pointer
|
// Hack this into a pointer
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
DataType_remember(t);
|
DataType_remember(t);
|
||||||
Printv(getf->code,
|
Printv(getf->code,
|
||||||
tab4, "pyobj = SWIG_NewPointerObj((void *) &", name ,
|
tab4, "pyobj = SWIG_NewPointerObj((void *) &", name ,
|
||||||
", SWIGTYPE", DataType_manglestr(t), ");\n",
|
", SWIGTYPE", DataType_manglestr(t), ");\n",
|
||||||
0);
|
0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
Printv(getf->code,
|
Printv(getf->code,
|
||||||
|
|
@ -1261,7 +1261,7 @@ void PYTHON::link_variable(char *name, char *iname, DataType *t) {
|
||||||
// Output a shadow variable. (If applicable and possible)
|
// Output a shadow variable. (If applicable and possible)
|
||||||
// ----------------------------------------------------------
|
// ----------------------------------------------------------
|
||||||
if ((shadow) && (!(shadow & PYSHADOW_MEMBER))) {
|
if ((shadow) && (!(shadow & PYSHADOW_MEMBER))) {
|
||||||
if ((Getattr(hash,DataType_Getname(t))) && (t->is_pointer <= 1)) {
|
if ((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) <= 1)) {
|
||||||
Printv(vars,
|
Printv(vars,
|
||||||
iname, " = ", GetChar(hash,DataType_Getname(t)), "Ptr(", module, ".", global_name,
|
iname, " = ", GetChar(hash,DataType_Getname(t)), "Ptr(", module, ".", global_name,
|
||||||
".", iname, ")\n",
|
".", iname, ")\n",
|
||||||
|
|
@ -1694,7 +1694,7 @@ void PYTHON::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
if (strcmp(realname,"__repr__") == 0)
|
if (strcmp(realname,"__repr__") == 0)
|
||||||
have_repr = 1;
|
have_repr = 1;
|
||||||
|
|
||||||
if (!((Getattr(hash,DataType_Getname(t))) && (t->is_pointer <=1)) && !noopt) {
|
if (!((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) <=1)) && !noopt) {
|
||||||
Printv(imethod,
|
Printv(imethod,
|
||||||
class_name, ".", realname, " = new.instancemethod(", module, ".", Swig_name_member(class_name,realname), ", None, ", class_name, ")\n",
|
class_name, ".", realname, " = new.instancemethod(", module, ".", Swig_name_member(class_name,realname), ", None, ", class_name, ")\n",
|
||||||
0);
|
0);
|
||||||
|
|
@ -1714,12 +1714,12 @@ void PYTHON::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l)
|
||||||
Printv(pyclass, tab8, "val = apply(", module, ".", Swig_name_member(class_name,realname), ",args)\n",0);
|
Printv(pyclass, tab8, "val = apply(", module, ".", Swig_name_member(class_name,realname), ",args)\n",0);
|
||||||
|
|
||||||
// Check to see if the return type is an object
|
// Check to see if the return type is an object
|
||||||
if ((Getattr(hash,DataType_Getname(t))) && (t->is_pointer <= 1)) {
|
if ((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) <= 1)) {
|
||||||
if (!typemap_check((char*)"out",typemap_lang,t,Swig_name_member(class_name,realname))) {
|
if (!typemap_check((char*)"out",typemap_lang,t,Swig_name_member(class_name,realname))) {
|
||||||
if (!have_output) {
|
if (!have_output) {
|
||||||
Printv(pyclass, tab8, "if val: val = ", GetChar(hash,DataType_Getname(t)), "Ptr(val) ", 0);
|
Printv(pyclass, tab8, "if val: val = ", GetChar(hash,DataType_Getname(t)), "Ptr(val) ", 0);
|
||||||
if (((Getattr(hash,DataType_Getname(t))) && (t->is_pointer < 1)) ||
|
if (((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) < 1)) ||
|
||||||
((Getattr(hash,DataType_Getname(t))) && (t->is_pointer == 1) && NewObject))
|
((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) == 1) && NewObject))
|
||||||
Printf(pyclass, "; val.thisown = 1\n");
|
Printf(pyclass, "; val.thisown = 1\n");
|
||||||
else
|
else
|
||||||
Printf(pyclass,"\n");
|
Printf(pyclass,"\n");
|
||||||
|
|
@ -1982,7 +1982,7 @@ void PYTHON::cpp_variable(char *name, char *iname, DataType *t) {
|
||||||
|
|
||||||
// Figure out if we've seen this datatype before
|
// Figure out if we've seen this datatype before
|
||||||
|
|
||||||
if ((Getattr(hash,DataType_Getname(t))) && (t->is_pointer <= 1)) inhash = 1;
|
if ((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) <= 1)) inhash = 1;
|
||||||
|
|
||||||
// Now write some code to set the variable
|
// Now write some code to set the variable
|
||||||
if (Status & STAT_READONLY) {
|
if (Status & STAT_READONLY) {
|
||||||
|
|
@ -2052,7 +2052,7 @@ void PYTHON::add_typedef(DataType *t, char *name) {
|
||||||
|
|
||||||
// First check to see if there aren't too many pointers
|
// First check to see if there aren't too many pointers
|
||||||
|
|
||||||
if (t->is_pointer > 1) return;
|
if (DataType_is_pointer(t) > 1) return;
|
||||||
|
|
||||||
if (Getattr(hash,name)) return; // Already added
|
if (Getattr(hash,name)) return; // Already added
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -178,8 +178,7 @@ void RUBY::parse() {
|
||||||
// typedef void *VALUE
|
// typedef void *VALUE
|
||||||
DataType *value = NewDataType(T_VOID);
|
DataType *value = NewDataType(T_VOID);
|
||||||
DataType_Setname(value,"void");
|
DataType_Setname(value,"void");
|
||||||
value->is_pointer = 1;
|
DataType_add_pointer(value);
|
||||||
value->implicit_ptr = 0;
|
|
||||||
DataType_typedef_add(value,(char*)"VALUE",0);
|
DataType_typedef_add(value,(char*)"VALUE",0);
|
||||||
|
|
||||||
yyparse(); // Run the SWIG parser
|
yyparse(); // Run the SWIG parser
|
||||||
|
|
@ -683,11 +682,11 @@ void RUBY::link_variable(char *name, char *iname, DataType *t) {
|
||||||
Delete(s);
|
Delete(s);
|
||||||
} else if (DataType_type(t) == T_USER) {
|
} else if (DataType_type(t) == T_USER) {
|
||||||
// Hack this into a pointer
|
// Hack this into a pointer
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
DataType_remember(t);
|
DataType_remember(t);
|
||||||
Printv(getf->code, tab4, "_val = SWIG_NewPointerObj((void *)&", name,
|
Printv(getf->code, tab4, "_val = SWIG_NewPointerObj((void *)&", name,
|
||||||
", \"", DataType_manglestr(t), "\");\n", 0);
|
", \"", DataType_manglestr(t), "\");\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
} else {
|
} else {
|
||||||
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
||||||
input_file,line_number,DataType_str(t,0));
|
input_file,line_number,DataType_str(t,0));
|
||||||
|
|
@ -715,13 +714,13 @@ void RUBY::link_variable(char *name, char *iname, DataType *t) {
|
||||||
Printv(setf->code,s,"\n",0);
|
Printv(setf->code,s,"\n",0);
|
||||||
Delete(s);
|
Delete(s);
|
||||||
} else if (DataType_type(t) == T_USER) {
|
} else if (DataType_type(t) == T_USER) {
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Wrapper_add_localv(setf,"temp",DataType_lstr(t,0), "temp",0);
|
Wrapper_add_localv(setf,"temp",DataType_lstr(t,0), "temp",0);
|
||||||
Printv(setf->code, tab4, "temp = (", DataType_lstr(t,0), ")",
|
Printv(setf->code, tab4, "temp = (", DataType_lstr(t,0), ")",
|
||||||
"SWIG_ConvertPtr(_val, \"", DataType_manglestr(t), "\");\n",
|
"SWIG_ConvertPtr(_val, \"", DataType_manglestr(t), "\");\n",
|
||||||
0);
|
0);
|
||||||
Printv(setf->code, tab4, name, " = *temp;\n",0);
|
Printv(setf->code, tab4, name, " = *temp;\n",0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
} else {
|
} else {
|
||||||
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
||||||
input_file,line_number,DataType_str(t,0));
|
input_file,line_number,DataType_str(t,0));
|
||||||
|
|
@ -876,11 +875,11 @@ char *RUBY::ruby_typemap_lookup(char *op, DataType *type, char *pname, char *sou
|
||||||
&& strcmp(DataType_Getname(type), "VALUE") == 0) {
|
&& strcmp(DataType_Getname(type), "VALUE") == 0) {
|
||||||
Printf(s,"$target = $source;");
|
Printf(s,"$target = $source;");
|
||||||
} else if (strcmp("out", op) == 0 && (DataType_Gettypecode(type) == T_USER) &&
|
} else if (strcmp("out", op) == 0 && (DataType_Gettypecode(type) == T_USER) &&
|
||||||
type->is_pointer == 1 && cls) {
|
(DataType_is_pointer(type) == 1) && cls) {
|
||||||
const char *vname = (current == CONSTRUCTOR ? "self" : Char(cls->vname));
|
const char *vname = (current == CONSTRUCTOR ? "self" : Char(cls->vname));
|
||||||
Printv(s, "$target = Wrap_", cls->cname, "(", vname, ", $source);",0);
|
Printv(s, "$target = Wrap_", cls->cname, "(", vname, ", $source);",0);
|
||||||
} else if (strcmp("in", op)==0 && (DataType_Gettypecode(type) == T_USER) &&
|
} else if (strcmp("in", op)==0 && (DataType_Gettypecode(type) == T_USER) &&
|
||||||
type->is_pointer == 1 && cls) {
|
(DataType_is_pointer(type) == 1) && cls) {
|
||||||
Printv(s, "Get_", cls->cname, "($source, $target);", 0);
|
Printv(s, "Get_", cls->cname, "($source, $target);", 0);
|
||||||
} else {
|
} else {
|
||||||
tm = typemap_lookup(op, typemap_lang, type, pname, source, target, f);
|
tm = typemap_lookup(op, typemap_lang, type, pname, source, target, f);
|
||||||
|
|
|
||||||
|
|
@ -590,11 +590,11 @@ void TCL8::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
// User defined. This is an error.
|
// User defined. This is an error.
|
||||||
|
|
||||||
case T_USER:
|
case T_USER:
|
||||||
pt->is_pointer++;
|
DataType_add_pointer(pt);
|
||||||
DataType_remember(pt);
|
DataType_remember(pt);
|
||||||
Putc('p',argstr);
|
Putc('p',argstr);
|
||||||
Printv(args, ",&", target, ", SWIGTYPE", DataType_manglestr(pt), 0);
|
Printv(args, ",&", target, ", SWIGTYPE", DataType_manglestr(pt), 0);
|
||||||
pt->is_pointer--;
|
DataType_del_pointer(pt);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -690,12 +690,12 @@ void TCL8::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
||||||
// Okay. We're returning malloced memory at this point.
|
// Okay. We're returning malloced memory at this point.
|
||||||
// Probably dangerous, but who said safety was a good thing?
|
// Probably dangerous, but who said safety was a good thing?
|
||||||
|
|
||||||
d->is_pointer++;
|
DataType_add_pointer(d);
|
||||||
DataType_remember(d);
|
DataType_remember(d);
|
||||||
Printv(f->code, tab4, "Tcl_SetObjResult(interp,SWIG_NewPointerObj((void *) result,SWIGTYPE",
|
Printv(f->code, tab4, "Tcl_SetObjResult(interp,SWIG_NewPointerObj((void *) result,SWIGTYPE",
|
||||||
DataType_manglestr(d), "));\n", 0);
|
DataType_manglestr(d), "));\n", 0);
|
||||||
|
|
||||||
d->is_pointer--;
|
DataType_del_pointer(d);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -787,12 +787,12 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
||||||
Printv(set->def, "static char *_swig_", DataType_manglestr(t), "_set(ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags) {",0);
|
Printv(set->def, "static char *_swig_", DataType_manglestr(t), "_set(ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags) {",0);
|
||||||
|
|
||||||
Printv(get->def, "static char *_swig_", DataType_manglestr(t), "_get(ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags) {",0);
|
Printv(get->def, "static char *_swig_", DataType_manglestr(t), "_get(ClientData clientData, Tcl_Interp *interp, char *name1, char *name2, int flags) {",0);
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Wrapper_add_localv(get,"addr",DataType_str(t,0),"addr",0);
|
Wrapper_add_localv(get,"addr",DataType_str(t,0),"addr",0);
|
||||||
Wrapper_add_localv(set,"addr",DataType_str(t,0),"addr",0);
|
Wrapper_add_localv(set,"addr",DataType_str(t,0),"addr",0);
|
||||||
Printv(set->code, tab4, "addr = (", DataType_lstr(t,0), ") clientData;\n", 0);
|
Printv(set->code, tab4, "addr = (", DataType_lstr(t,0), ") clientData;\n", 0);
|
||||||
Printv(get->code, tab4, "addr = (", DataType_lstr(t,0), ") clientData;\n", 0);
|
Printv(get->code, tab4, "addr = (", DataType_lstr(t,0), ") clientData;\n", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
Wrapper_add_local(set, "value", "char *value");
|
Wrapper_add_local(set, "value", "char *value");
|
||||||
Wrapper_add_local(get, "value", "Tcl_Obj *value");
|
Wrapper_add_local(get, "value", "Tcl_Obj *value");
|
||||||
|
|
||||||
|
|
@ -822,7 +822,7 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
||||||
break;
|
break;
|
||||||
case T_USER:
|
case T_USER:
|
||||||
// User defined type. We return it as a pointer
|
// User defined type. We return it as a pointer
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
DataType_remember(t);
|
DataType_remember(t);
|
||||||
Printv(set->code, tab4, "{\n",
|
Printv(set->code, tab4, "{\n",
|
||||||
tab8, "void *ptr;\n",
|
tab8, "void *ptr;\n",
|
||||||
|
|
@ -833,7 +833,7 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
||||||
tab4, "}\n",
|
tab4, "}\n",
|
||||||
0);
|
0);
|
||||||
|
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
Printv(set->code, tab4, "if (*addr) free(*addr);\n",
|
Printv(set->code, tab4, "if (*addr) free(*addr);\n",
|
||||||
|
|
@ -899,12 +899,12 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
||||||
|
|
||||||
case T_USER:
|
case T_USER:
|
||||||
Wrapper_add_local(get,"value", "Tcl_Obj *value");
|
Wrapper_add_local(get,"value", "Tcl_Obj *value");
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
DataType_remember(t);
|
DataType_remember(t);
|
||||||
Printv(get->code, tab4, "value = SWIG_NewPointerObj(addr, SWIGTYPE", DataType_manglestr(t), ");\n",
|
Printv(get->code, tab4, "value = SWIG_NewPointerObj(addr, SWIGTYPE", DataType_manglestr(t), ");\n",
|
||||||
tab4, "Tcl_SetVar2(interp,name1,name2,Tcl_GetStringFromObj(value,NULL), flags);\n",
|
tab4, "Tcl_SetVar2(interp,name1,name2,Tcl_GetStringFromObj(value,NULL), flags);\n",
|
||||||
tab4, "Tcl_DecrRefCount(value);\n",0);
|
tab4, "Tcl_DecrRefCount(value);\n",0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -1001,7 +1001,7 @@ void TCL8::declare_const(char *name, char *, DataType *type, char *value) {
|
||||||
Printf(f_init,"\t sprintf(%s_char,\"%%ld\", (long) %s);\n", var_name, var_name);
|
Printf(f_init,"\t sprintf(%s_char,\"%%ld\", (long) %s);\n", var_name, var_name);
|
||||||
sprintf(var_name,"%s_char",var_name);
|
sprintf(var_name,"%s_char",var_name);
|
||||||
t = NewDataType(T_CHAR);
|
t = NewDataType(T_CHAR);
|
||||||
t->is_pointer = 1;
|
DataType_add_pointer(t);
|
||||||
link_variable(var_name,name,t);
|
link_variable(var_name,name,t);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1019,7 +1019,7 @@ void TCL8::declare_const(char *name, char *, DataType *type, char *value) {
|
||||||
Printf(f_init,"\t sprintf(%s_char,\"%%lu\", (unsigned long) %s);\n", var_name, var_name);
|
Printf(f_init,"\t sprintf(%s_char,\"%%lu\", (unsigned long) %s);\n", var_name, var_name);
|
||||||
sprintf(var_name,"%s_char",var_name);
|
sprintf(var_name,"%s_char",var_name);
|
||||||
t = NewDataType(T_CHAR);
|
t = NewDataType(T_CHAR);
|
||||||
t->is_pointer = 1;
|
DataType_add_pointer(t);
|
||||||
link_variable(var_name,name,t);
|
link_variable(var_name,name,t);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
break;
|
break;
|
||||||
|
|
@ -1031,10 +1031,10 @@ void TCL8::declare_const(char *name, char *, DataType *type, char *value) {
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_CHAR:
|
case T_CHAR:
|
||||||
type->is_pointer++;
|
DataType_add_pointer(type);
|
||||||
Printf(f_header,"static %s %s = \"%s\";\n", DataType_lstr(type,0), var_name, value);
|
Printf(f_header,"static %s %s = \"%s\";\n", DataType_lstr(type,0), var_name, value);
|
||||||
link_variable(var_name,name,type);
|
link_variable(var_name,name,type);
|
||||||
type->is_pointer--;
|
DataType_del_pointer(type);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case T_STRING:
|
case T_STRING:
|
||||||
|
|
@ -1052,7 +1052,7 @@ void TCL8::declare_const(char *name, char *, DataType *type, char *value) {
|
||||||
Printf(f_init,"\t %s_char = (char *) malloc(%d);\n",var_name, (int) strlen(DataType_manglestr(type))+ 20);
|
Printf(f_init,"\t %s_char = (char *) malloc(%d);\n",var_name, (int) strlen(DataType_manglestr(type))+ 20);
|
||||||
|
|
||||||
t = NewDataType(T_CHAR);
|
t = NewDataType(T_CHAR);
|
||||||
t->is_pointer = 1;
|
DataType_add_pointer(t);
|
||||||
DataType_remember(type);
|
DataType_remember(type);
|
||||||
Printf(f_init,"\t SWIG_MakePtr(%s_char, (void *) %s, SWIGTYPE%s);\n",
|
Printf(f_init,"\t SWIG_MakePtr(%s_char, (void *) %s, SWIGTYPE%s);\n",
|
||||||
var_name, var_name, DataType_manglestr(type));
|
var_name, var_name, DataType_manglestr(type));
|
||||||
|
|
@ -1258,7 +1258,7 @@ void TCL8::cpp_close_class() {
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
sprintf(temp,"%s%s", class_type, real_classname);
|
sprintf(temp,"%s%s", class_type, real_classname);
|
||||||
DataType_Setname(t,temp);
|
DataType_Setname(t,temp);
|
||||||
t->is_pointer = 1;
|
DataType_add_pointer(t);
|
||||||
|
|
||||||
if (have_destructor) {
|
if (have_destructor) {
|
||||||
Printv(code, "static void _swig_delete_", class_name, "(void *obj) {\n", 0);
|
Printv(code, "static void _swig_delete_", class_name, "(void *obj) {\n", 0);
|
||||||
|
|
@ -1401,7 +1401,7 @@ void TCL8::add_typedef(DataType *t, char *name) {
|
||||||
|
|
||||||
// First check to see if there aren't too many pointers
|
// First check to see if there aren't too many pointers
|
||||||
|
|
||||||
if (t->is_pointer > 1) return;
|
if (DataType_is_pointer(t) > 1) return;
|
||||||
if (Getattr(hash,name)) return; // Already added
|
if (Getattr(hash,name)) return; // Already added
|
||||||
|
|
||||||
// Now look up the datatype in our shadow class hash table
|
// Now look up the datatype in our shadow class hash table
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ void emit_func_call(char *decl, DataType *t, ParmList *l, Wrapper *f) {
|
||||||
if ((tm = typemap_lookup((char*)"except",typemap_lang,t,decl,(char*)"result",(char*)""))) {
|
if ((tm = typemap_lookup((char*)"except",typemap_lang,t,decl,(char*)"result",(char*)""))) {
|
||||||
Printv(f->code,tm,0);
|
Printv(f->code,tm,0);
|
||||||
Replace(f->code,"$name",decl,DOH_REPLACE_ANY);
|
Replace(f->code,"$name",decl,DOH_REPLACE_ANY);
|
||||||
} else if ((tm = fragment_lookup((char*)"except",typemap_lang, t->id))) {
|
} else if ((tm = fragment_lookup((char*)"except",typemap_lang, t->_id))) {
|
||||||
Printv(f->code,tm,0);
|
Printv(f->code,tm,0);
|
||||||
Replace(f->code,"$name",decl,DOH_REPLACE_ANY);
|
Replace(f->code,"$name",decl,DOH_REPLACE_ANY);
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
|
|
@ -456,7 +456,7 @@ int SWIG_main(int argc, char *argv[], Language *l) {
|
||||||
// Set up the typemap for handling new return strings
|
// Set up the typemap for handling new return strings
|
||||||
{
|
{
|
||||||
DataType *temp_t = NewDataType(T_CHAR);
|
DataType *temp_t = NewDataType(T_CHAR);
|
||||||
temp_t->is_pointer++;
|
DataType_add_pointer(temp_t);
|
||||||
if (CPlusPlus)
|
if (CPlusPlus)
|
||||||
typemap_register((char*)"newfree",typemap_lang,temp_t,(char*)"",(char*)"delete [] $source;\n",0);
|
typemap_register((char*)"newfree",typemap_lang,temp_t,(char*)"",(char*)"delete [] $source;\n",0);
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -359,7 +359,7 @@ void create_variable(int ext, char *name, DataType *t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// If variable datatype is read-only, we'll force it to be readonly
|
// If variable datatype is read-only, we'll force it to be readonly
|
||||||
if (t->status & STAT_READONLY) Status = Status | STAT_READONLY;
|
if (t->_status & STAT_READONLY) Status = Status | STAT_READONLY;
|
||||||
|
|
||||||
// Now dump it out
|
// Now dump it out
|
||||||
lang->link_variable(name, iname, t);
|
lang->link_variable(name, iname, t);
|
||||||
|
|
@ -387,7 +387,7 @@ void create_constant(char *name, DataType *type, char *value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (DataType_type(type) == T_CHAR) {
|
if (DataType_type(type) == T_CHAR) {
|
||||||
type->is_pointer++;
|
type->_is_pointer++;
|
||||||
}
|
}
|
||||||
if (!value) value = Swig_copy_string(name);
|
if (!value) value = Swig_copy_string(name);
|
||||||
sprintf(temp_name,"const:%s", name);
|
sprintf(temp_name,"const:%s", name);
|
||||||
|
|
@ -648,10 +648,10 @@ statement : INCLUDE STRING LBRACE {
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($2);
|
Active_type = CopyDataType($2);
|
||||||
Active_extern = $1;
|
Active_extern = $1;
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($4 > 0) {
|
if ($4 > 0) {
|
||||||
$2->is_pointer++;
|
$2->_is_pointer++;
|
||||||
$2->status = STAT_READONLY;
|
$2->_status = STAT_READONLY;
|
||||||
DataType_set_arraystr($2,Char(ArrayString));
|
DataType_set_arraystr($2,Char(ArrayString));
|
||||||
}
|
}
|
||||||
if ($3.is_reference) {
|
if ($3.is_reference) {
|
||||||
|
|
@ -705,7 +705,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($2);
|
Active_type = CopyDataType($2);
|
||||||
Active_extern = $1;
|
Active_extern = $1;
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
create_function($1, $3.id, $2, $5);
|
create_function($1, $3.id, $2, $5);
|
||||||
DelDataType($2);
|
DelDataType($2);
|
||||||
|
|
@ -717,7 +717,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
| extern type declaration LPAREN parms RPAREN func_end {
|
| extern type declaration LPAREN parms RPAREN func_end {
|
||||||
init_language();
|
init_language();
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
create_function($1, $3.id, $2, $5);
|
create_function($1, $3.id, $2, $5);
|
||||||
DelDataType($2);
|
DelDataType($2);
|
||||||
Delete($5);
|
Delete($5);
|
||||||
|
|
@ -728,7 +728,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
| extern declaration LPAREN parms RPAREN cpp_const {
|
| extern declaration LPAREN parms RPAREN cpp_const {
|
||||||
init_language();
|
init_language();
|
||||||
DataType *t = NewDataType(T_INT);
|
DataType *t = NewDataType(T_INT);
|
||||||
t->is_pointer += $2.is_pointer;
|
t->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference(t);
|
if ($2.is_reference) DataType_add_reference(t);
|
||||||
create_function($1,$2.id,t,$4);
|
create_function($1,$2.id,t,$4);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
|
|
@ -740,7 +740,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
if (Inline) {
|
if (Inline) {
|
||||||
if (strlen(Char(CCode))) {
|
if (strlen(Char(CCode))) {
|
||||||
init_language();
|
init_language();
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
create_function(0, $3.id, $2, $5);
|
create_function(0, $3.id, $2, $5);
|
||||||
}
|
}
|
||||||
|
|
@ -753,7 +753,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
|
|
||||||
| INLINE type declaration LPAREN parms RPAREN func_end {
|
| INLINE type declaration LPAREN parms RPAREN func_end {
|
||||||
init_language();
|
init_language();
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
if (Inline) {
|
if (Inline) {
|
||||||
fprintf(stderr,"%s : Line %d. Repeated %%inline directive.\n",input_file,line_number);
|
fprintf(stderr,"%s : Line %d. Repeated %%inline directive.\n",input_file,line_number);
|
||||||
|
|
@ -838,7 +838,7 @@ statement : INCLUDE STRING LBRACE {
|
||||||
| NATIVE LPAREN ID RPAREN extern type declaration LPAREN parms RPAREN SEMI {
|
| NATIVE LPAREN ID RPAREN extern type declaration LPAREN parms RPAREN SEMI {
|
||||||
if (!WrapExtern) {
|
if (!WrapExtern) {
|
||||||
init_language();
|
init_language();
|
||||||
$6->is_pointer += $7.is_pointer;
|
$6->_is_pointer += $7.is_pointer;
|
||||||
if (add_symbol($3)) {
|
if (add_symbol($3)) {
|
||||||
fprintf(stderr,"%s : Line %d. Name of native function %s conflicts with previous declaration (ignored)\n",
|
fprintf(stderr,"%s : Line %d. Name of native function %s conflicts with previous declaration (ignored)\n",
|
||||||
input_file, line_number, $3);
|
input_file, line_number, $3);
|
||||||
|
|
@ -1004,8 +1004,8 @@ statement : INCLUDE STRING LBRACE {
|
||||||
init_language();
|
init_language();
|
||||||
if ($3) {
|
if ($3) {
|
||||||
DataType_Settypecode(temp_type,T_INT);
|
DataType_Settypecode(temp_type,T_INT);
|
||||||
temp_type->is_pointer = 0;
|
temp_type->_is_pointer = 0;
|
||||||
temp_type->implicit_ptr = 0;
|
temp_type->_implicit_ptr = 0;
|
||||||
DataType_Setname(temp_type,"int");
|
DataType_Setname(temp_type,"int");
|
||||||
DataType_typedef_add(temp_type,$3,1);
|
DataType_typedef_add(temp_type,$3,1);
|
||||||
lang->add_typedef(temp_type,$3);
|
lang->add_typedef(temp_type,$3);
|
||||||
|
|
@ -1017,8 +1017,8 @@ statement : INCLUDE STRING LBRACE {
|
||||||
| TYPEDEF ENUM ename LBRACE { scanner_clear_start(); } enumlist RBRACE ID {
|
| TYPEDEF ENUM ename LBRACE { scanner_clear_start(); } enumlist RBRACE ID {
|
||||||
init_language();
|
init_language();
|
||||||
DataType_Settypecode(temp_type,T_INT);
|
DataType_Settypecode(temp_type,T_INT);
|
||||||
temp_type->is_pointer = 0;
|
temp_type->_is_pointer = 0;
|
||||||
temp_type->implicit_ptr = 0;
|
temp_type->_implicit_ptr = 0;
|
||||||
DataType_Setname(temp_type,"int");
|
DataType_Setname(temp_type,"int");
|
||||||
Active_typedef = CopyDataType(temp_type);
|
Active_typedef = CopyDataType(temp_type);
|
||||||
DataType_typedef_add(temp_type,$8,1);
|
DataType_typedef_add(temp_type,$8,1);
|
||||||
|
|
@ -1242,7 +1242,7 @@ typedef_decl : TYPEDEF type declaration {
|
||||||
init_language();
|
init_language();
|
||||||
/* Add a new typedef */
|
/* Add a new typedef */
|
||||||
Active_typedef = CopyDataType($2);
|
Active_typedef = CopyDataType($2);
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
DataType_typedef_add($2, $3.id,0);
|
DataType_typedef_add($2, $3.id,0);
|
||||||
lang->add_typedef($2,$3.id);
|
lang->add_typedef($2,$3.id);
|
||||||
/* If this is %typedef, add it to the header */
|
/* If this is %typedef, add it to the header */
|
||||||
|
|
@ -1263,7 +1263,7 @@ typedef_decl : TYPEDEF type declaration {
|
||||||
}
|
}
|
||||||
DataType_Setname($2,"<function ptr>");
|
DataType_Setname($2,"<function ptr>");
|
||||||
DataType_Settypecode($2,T_USER);
|
DataType_Settypecode($2,T_USER);
|
||||||
$2->is_pointer = 1;
|
$2->_is_pointer = 1;
|
||||||
DataType_typedef_add($2,$5,1);
|
DataType_typedef_add($2,$5,1);
|
||||||
lang->add_typedef($2,$5);
|
lang->add_typedef($2,$5);
|
||||||
cplus_register_type($5);
|
cplus_register_type($5);
|
||||||
|
|
@ -1277,7 +1277,7 @@ typedef_decl : TYPEDEF type declaration {
|
||||||
| TYPEDEF type stars LPAREN STAR pname RPAREN LPAREN parms RPAREN SEMI {
|
| TYPEDEF type stars LPAREN STAR pname RPAREN LPAREN parms RPAREN SEMI {
|
||||||
init_language();
|
init_language();
|
||||||
if ($1) {
|
if ($1) {
|
||||||
$2->is_pointer += $3;
|
$2->_is_pointer += $3;
|
||||||
sprintf(temp_name,"(*%s)",$6);
|
sprintf(temp_name,"(*%s)",$6);
|
||||||
fprintf(f_header,"typedef ");
|
fprintf(f_header,"typedef ");
|
||||||
emit_extern_func(temp_name, $2,$9,0,f_header);
|
emit_extern_func(temp_name, $2,$9,0,f_header);
|
||||||
|
|
@ -1286,7 +1286,7 @@ typedef_decl : TYPEDEF type declaration {
|
||||||
/* Typedef'd pointer */
|
/* Typedef'd pointer */
|
||||||
DataType_Setname($2,"<function ptr>");
|
DataType_Setname($2,"<function ptr>");
|
||||||
DataType_Settypecode($2,T_USER);
|
DataType_Settypecode($2,T_USER);
|
||||||
$2->is_pointer = 1;
|
$2->_is_pointer = 1;
|
||||||
DataType_typedef_add($2,$6,1);
|
DataType_typedef_add($2,$6,1);
|
||||||
lang->add_typedef($2,$6);
|
lang->add_typedef($2,$6);
|
||||||
cplus_register_type($6);
|
cplus_register_type($6);
|
||||||
|
|
@ -1302,10 +1302,10 @@ typedef_decl : TYPEDEF type declaration {
|
||||||
Active_typedef = CopyDataType($2);
|
Active_typedef = CopyDataType($2);
|
||||||
// This datatype is going to be readonly
|
// This datatype is going to be readonly
|
||||||
|
|
||||||
$2->status = STAT_READONLY | STAT_REPLACETYPE;
|
$2->_status = STAT_READONLY | STAT_REPLACETYPE;
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
// Turn this into a "pointer" corresponding to the array
|
// Turn this into a "pointer" corresponding to the array
|
||||||
$2->is_pointer++;
|
$2->_is_pointer++;
|
||||||
DataType_set_arraystr($2,Char(ArrayString));
|
DataType_set_arraystr($2,Char(ArrayString));
|
||||||
DataType_typedef_add($2,$3.id,0);
|
DataType_typedef_add($2,$3.id,0);
|
||||||
lang->add_typedef($2,$3.id);
|
lang->add_typedef($2,$3.id);
|
||||||
|
|
@ -1329,7 +1329,7 @@ typedeflist : COMMA declaration typedeflist {
|
||||||
if (Active_typedef) {
|
if (Active_typedef) {
|
||||||
DataType *t;
|
DataType *t;
|
||||||
t = CopyDataType(Active_typedef);
|
t = CopyDataType(Active_typedef);
|
||||||
t->is_pointer += $2.is_pointer;
|
t->_is_pointer += $2.is_pointer;
|
||||||
DataType_typedef_add(t,$2.id,0);
|
DataType_typedef_add(t,$2.id,0);
|
||||||
lang->add_typedef(t,$2.id);
|
lang->add_typedef(t,$2.id);
|
||||||
cplus_register_type($2.id);
|
cplus_register_type($2.id);
|
||||||
|
|
@ -1339,8 +1339,8 @@ typedeflist : COMMA declaration typedeflist {
|
||||||
| COMMA declaration array {
|
| COMMA declaration array {
|
||||||
DataType *t;
|
DataType *t;
|
||||||
t = CopyDataType(Active_typedef);
|
t = CopyDataType(Active_typedef);
|
||||||
t->status = STAT_READONLY | STAT_REPLACETYPE;
|
t->_status = STAT_READONLY | STAT_REPLACETYPE;
|
||||||
t->is_pointer += $2.is_pointer + 1;
|
t->_is_pointer += $2.is_pointer + 1;
|
||||||
DataType_set_arraystr(t,Char(ArrayString));
|
DataType_set_arraystr(t,Char(ArrayString));
|
||||||
DataType_typedef_add(t,$2.id,0);
|
DataType_typedef_add(t,$2.id,0);
|
||||||
lang->add_typedef(t,$2.id);
|
lang->add_typedef(t,$2.id);
|
||||||
|
|
@ -1375,10 +1375,10 @@ stail : SEMI { }
|
||||||
| COMMA declaration array2 def_args {
|
| COMMA declaration array2 def_args {
|
||||||
init_language();
|
init_language();
|
||||||
temp_typeptr = CopyDataType(Active_type);
|
temp_typeptr = CopyDataType(Active_type);
|
||||||
temp_typeptr->is_pointer += $2.is_pointer;
|
temp_typeptr->_is_pointer += $2.is_pointer;
|
||||||
if ($3 > 0) {
|
if ($3 > 0) {
|
||||||
temp_typeptr->is_pointer++;
|
temp_typeptr->_is_pointer++;
|
||||||
temp_typeptr->status = STAT_READONLY;
|
temp_typeptr->_status = STAT_READONLY;
|
||||||
DataType_set_arraystr(temp_typeptr,Char(ArrayString));
|
DataType_set_arraystr(temp_typeptr,Char(ArrayString));
|
||||||
}
|
}
|
||||||
if ($2.is_reference) {
|
if ($2.is_reference) {
|
||||||
|
|
@ -1400,7 +1400,7 @@ stail : SEMI { }
|
||||||
| COMMA declaration LPAREN parms RPAREN cpp_const {
|
| COMMA declaration LPAREN parms RPAREN cpp_const {
|
||||||
init_language();
|
init_language();
|
||||||
temp_typeptr = CopyDataType(Active_type);
|
temp_typeptr = CopyDataType(Active_type);
|
||||||
temp_typeptr->is_pointer += $2.is_pointer;
|
temp_typeptr->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference(temp_typeptr);
|
if ($2.is_reference) DataType_add_reference(temp_typeptr);
|
||||||
create_function(Active_extern, $2.id, temp_typeptr, $4);
|
create_function(Active_extern, $2.id, temp_typeptr, $4);
|
||||||
DelDataType(temp_typeptr);
|
DelDataType(temp_typeptr);
|
||||||
|
|
@ -1455,7 +1455,7 @@ parm : parm_type {
|
||||||
|
|
||||||
parm_type : type pname {
|
parm_type : type pname {
|
||||||
if (InArray) {
|
if (InArray) {
|
||||||
$1->is_pointer++;
|
$1->_is_pointer++;
|
||||||
// Add array string to the type
|
// Add array string to the type
|
||||||
DataType_set_arraystr($1, Char(ArrayString));
|
DataType_set_arraystr($1, Char(ArrayString));
|
||||||
}
|
}
|
||||||
|
|
@ -1467,10 +1467,10 @@ parm_type : type pname {
|
||||||
|
|
||||||
| type stars pname {
|
| type stars pname {
|
||||||
$$ = NewParm($1,$3);
|
$$ = NewParm($1,$3);
|
||||||
Gettype($$)->is_pointer+=$2;
|
Gettype($$)->_is_pointer+=$2;
|
||||||
Setvalue($$,DefArg);
|
Setvalue($$,DefArg);
|
||||||
if (InArray) {
|
if (InArray) {
|
||||||
Gettype($$)->is_pointer++;
|
Gettype($$)->_is_pointer++;
|
||||||
// Add array string to the type
|
// Add array string to the type
|
||||||
DataType_set_arraystr(Gettype($$), Char(ArrayString));
|
DataType_set_arraystr(Gettype($$), Char(ArrayString));
|
||||||
}
|
}
|
||||||
|
|
@ -1482,7 +1482,7 @@ parm_type : type pname {
|
||||||
$$ = NewParm($1,$3);
|
$$ = NewParm($1,$3);
|
||||||
DataType *pt = Gettype($$);
|
DataType *pt = Gettype($$);
|
||||||
DataType_add_reference(pt);
|
DataType_add_reference(pt);
|
||||||
pt->is_pointer++;
|
pt->_is_pointer++;
|
||||||
Setvalue($$,DefArg);
|
Setvalue($$,DefArg);
|
||||||
if (!CPlusPlus) {
|
if (!CPlusPlus) {
|
||||||
fprintf(stderr,"%s : Line %d. Warning. Use of C++ Reference detected. Use the -c++ option.\n", input_file, line_number);
|
fprintf(stderr,"%s : Line %d. Warning. Use of C++ Reference detected. Use the -c++ option.\n", input_file, line_number);
|
||||||
|
|
@ -2168,8 +2168,8 @@ cpp_class :
|
||||||
char temp[256];
|
char temp[256];
|
||||||
sprintf(temp,"%s %s", $2,$3);
|
sprintf(temp,"%s %s", $2,$3);
|
||||||
DataType_Setname(Active_typedef,temp);
|
DataType_Setname(Active_typedef,temp);
|
||||||
Active_typedef->is_pointer = 0;
|
Active_typedef->_is_pointer = 0;
|
||||||
Active_typedef->implicit_ptr = 0;
|
Active_typedef->_implicit_ptr = 0;
|
||||||
|
|
||||||
// Clean up the inheritance list
|
// Clean up the inheritance list
|
||||||
if ($4.names) {
|
if ($4.names) {
|
||||||
|
|
@ -2205,7 +2205,7 @@ cpp_class :
|
||||||
lang->add_typedef(Active_typedef,$9.id);
|
lang->add_typedef(Active_typedef,$9.id);
|
||||||
} else {
|
} else {
|
||||||
DataType *t = CopyDataType(Active_typedef);
|
DataType *t = CopyDataType(Active_typedef);
|
||||||
t->is_pointer += $9.is_pointer;
|
t->_is_pointer += $9.is_pointer;
|
||||||
DataType_typedef_add(t,$9.id,0);
|
DataType_typedef_add(t,$9.id,0);
|
||||||
lang->add_typedef(t,$9.id);
|
lang->add_typedef(t,$9.id);
|
||||||
cplus_register_type($9.id);
|
cplus_register_type($9.id);
|
||||||
|
|
@ -2278,7 +2278,7 @@ cpp_other :/* A dummy class name */
|
||||||
if (!CPlusPlus)
|
if (!CPlusPlus)
|
||||||
fprintf(stderr,"%s : Line %d. *** WARNING ***. C++ mode is disabled (enable using -c++)\n", input_file, line_number);
|
fprintf(stderr,"%s : Line %d. *** WARNING ***. C++ mode is disabled (enable using -c++)\n", input_file, line_number);
|
||||||
|
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
// Fix up the function name
|
// Fix up the function name
|
||||||
sprintf(temp_name,"%s::%s",$3.id,$5);
|
sprintf(temp_name,"%s::%s",$3.id,$5);
|
||||||
|
|
@ -2297,7 +2297,7 @@ cpp_other :/* A dummy class name */
|
||||||
if (!CPlusPlus)
|
if (!CPlusPlus)
|
||||||
fprintf(stderr,"%s : Line %d. *** WARNING ***. C++ mode is disabled (enable using -c++)\n", input_file, line_number);
|
fprintf(stderr,"%s : Line %d. *** WARNING ***. C++ mode is disabled (enable using -c++)\n", input_file, line_number);
|
||||||
|
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
// Fix up the function name
|
// Fix up the function name
|
||||||
sprintf(temp_name,"%s::%s",$3.id,$5);
|
sprintf(temp_name,"%s::%s",$3.id,$5);
|
||||||
if (!Rename_true) {
|
if (!Rename_true) {
|
||||||
|
|
@ -2366,7 +2366,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
char *iname;
|
char *iname;
|
||||||
init_language();
|
init_language();
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
$1->is_pointer += $2.is_pointer;
|
$1->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference($1);
|
if ($2.is_reference) DataType_add_reference($1);
|
||||||
iname = make_name($2.id);
|
iname = make_name($2.id);
|
||||||
if (iname == $2.id) iname = 0;
|
if (iname == $2.id) iname = 0;
|
||||||
|
|
@ -2383,7 +2383,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
char *iname;
|
char *iname;
|
||||||
init_language();
|
init_language();
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
iname = make_name($3.id);
|
iname = make_name($3.id);
|
||||||
if (iname == $3.id) iname = 0;
|
if (iname == $3.id) iname = 0;
|
||||||
|
|
@ -2442,10 +2442,10 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($1);
|
Active_type = CopyDataType($1);
|
||||||
$1->is_pointer += $2.is_pointer;
|
$1->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference($1);
|
if ($2.is_reference) DataType_add_reference($1);
|
||||||
if (DataType_qualifier($1)) {
|
if (DataType_qualifier($1)) {
|
||||||
if ((strcmp(DataType_qualifier($1),"const") == 0) && ($1->is_pointer == 0)) {
|
if ((strcmp(DataType_qualifier($1),"const") == 0) && ($1->_is_pointer == 0)) {
|
||||||
// Okay. This is really some sort of C++ constant here.
|
// Okay. This is really some sort of C++ constant here.
|
||||||
if ($3.type != T_ERROR) {
|
if ($3.type != T_ERROR) {
|
||||||
iname = make_name($2.id);
|
iname = make_name($2.id);
|
||||||
|
|
@ -2455,7 +2455,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
} else {
|
} else {
|
||||||
int oldstatus = Status;
|
int oldstatus = Status;
|
||||||
char *tm;
|
char *tm;
|
||||||
if ($1->status & STAT_READONLY) {
|
if ($1->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -2467,7 +2467,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
} else {
|
} else {
|
||||||
char *tm = 0;
|
char *tm = 0;
|
||||||
int oldstatus = Status;
|
int oldstatus = Status;
|
||||||
if ($1->status & STAT_READONLY) {
|
if ($1->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -2489,7 +2489,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($1);
|
Active_type = CopyDataType($1);
|
||||||
$1->is_pointer += $2.is_pointer + 1;
|
$1->_is_pointer += $2.is_pointer + 1;
|
||||||
if ($2.is_reference) DataType_add_reference($1);
|
if ($2.is_reference) DataType_add_reference($1);
|
||||||
DataType_set_arraystr($1,Char(ArrayString));
|
DataType_set_arraystr($1,Char(ArrayString));
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
||||||
|
|
@ -2513,7 +2513,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
char *iname;
|
char *iname;
|
||||||
init_language();
|
init_language();
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
iname = make_name($3.id);
|
iname = make_name($3.id);
|
||||||
if (iname == $3.id) iname = 0;
|
if (iname == $3.id) iname = 0;
|
||||||
cplus_static_var($3.id,iname,$2);
|
cplus_static_var($3.id,iname,$2);
|
||||||
|
|
@ -2528,7 +2528,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
|
|
||||||
| STATIC type declaration LPAREN parms RPAREN cpp_end {
|
| STATIC type declaration LPAREN parms RPAREN cpp_end {
|
||||||
char *iname;
|
char *iname;
|
||||||
$2->is_pointer += $3.is_pointer;
|
$2->_is_pointer += $3.is_pointer;
|
||||||
if ($3.is_reference) DataType_add_reference($2);
|
if ($3.is_reference) DataType_add_reference($2);
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
iname = make_name($3.id);
|
iname = make_name($3.id);
|
||||||
|
|
@ -2583,8 +2583,8 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
|
||||||
if ($2) {
|
if ($2) {
|
||||||
cplus_register_type($2);
|
cplus_register_type($2);
|
||||||
DataType_Settypecode(temp_type,T_INT);
|
DataType_Settypecode(temp_type,T_INT);
|
||||||
temp_type->is_pointer = 0;
|
temp_type->_is_pointer = 0;
|
||||||
temp_type->implicit_ptr = 0;
|
temp_type->_implicit_ptr = 0;
|
||||||
DataType_Setname(temp_type,"int");
|
DataType_Setname(temp_type,"int");
|
||||||
DataType_typedef_add(temp_type,$2,1);
|
DataType_typedef_add(temp_type,$2,1);
|
||||||
lang->add_typedef(temp_type,$2);
|
lang->add_typedef(temp_type,$2);
|
||||||
|
|
@ -2666,7 +2666,7 @@ cpp_pragma : PRAGMA ID stylearg {
|
||||||
n->name = Swig_copy_string($5.id);
|
n->name = Swig_copy_string($5.id);
|
||||||
n->line = start_line;
|
n->line = start_line;
|
||||||
n->type = NewDataType(T_USER);
|
n->type = NewDataType(T_USER);
|
||||||
n->type->is_pointer = $5.is_pointer;
|
n->type->_is_pointer = $5.is_pointer;
|
||||||
if ($5.is_reference) DataType_add_reference(n->type);
|
if ($5.is_reference) DataType_add_reference(n->type);
|
||||||
n->next = 0;
|
n->next = 0;
|
||||||
add_nested(n);
|
add_nested(n);
|
||||||
|
|
@ -2691,7 +2691,7 @@ cpp_pragma : PRAGMA ID stylearg {
|
||||||
n->name = Swig_copy_string($4.id);
|
n->name = Swig_copy_string($4.id);
|
||||||
n->line = start_line;
|
n->line = start_line;
|
||||||
n->type = NewDataType(T_USER);
|
n->type = NewDataType(T_USER);
|
||||||
n->type->is_pointer = $4.is_pointer;
|
n->type->_is_pointer = $4.is_pointer;
|
||||||
if ($4.is_reference) DataType_add_reference(n->type);
|
if ($4.is_reference) DataType_add_reference(n->type);
|
||||||
n->next = 0;
|
n->next = 0;
|
||||||
add_nested(n);
|
add_nested(n);
|
||||||
|
|
@ -2743,8 +2743,8 @@ cpp_tail : SEMI { }
|
||||||
init_language();
|
init_language();
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
temp_typeptr = CopyDataType(Active_type);
|
temp_typeptr = CopyDataType(Active_type);
|
||||||
temp_typeptr->is_pointer += $2.is_pointer;
|
temp_typeptr->_is_pointer += $2.is_pointer;
|
||||||
if (temp_typeptr->status & STAT_READONLY) {
|
if (temp_typeptr->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,temp_typeptr,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,temp_typeptr,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -2761,10 +2761,10 @@ cpp_tail : SEMI { }
|
||||||
init_language();
|
init_language();
|
||||||
if (cplus_mode == CPLUS_PUBLIC) {
|
if (cplus_mode == CPLUS_PUBLIC) {
|
||||||
temp_typeptr = CopyDataType(Active_type);
|
temp_typeptr = CopyDataType(Active_type);
|
||||||
temp_typeptr->is_pointer += $2.is_pointer;
|
temp_typeptr->_is_pointer += $2.is_pointer;
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,temp_typeptr,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,temp_typeptr,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
if (temp_typeptr->status & STAT_READONLY) Status = Status | STAT_READONLY;
|
if (temp_typeptr->_status & STAT_READONLY) Status = Status | STAT_READONLY;
|
||||||
cplus_variable($2.id,(char *) 0,temp_typeptr);
|
cplus_variable($2.id,(char *) 0,temp_typeptr);
|
||||||
Status = oldstatus;
|
Status = oldstatus;
|
||||||
if (!tm)
|
if (!tm)
|
||||||
|
|
@ -3050,9 +3050,9 @@ objc_var : type declaration {
|
||||||
char *iname;
|
char *iname;
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($1);
|
Active_type = CopyDataType($1);
|
||||||
$1->is_pointer += $2.is_pointer;
|
$1->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference($1);
|
if ($2.is_reference) DataType_add_reference($1);
|
||||||
if ($1->status & STAT_READONLY) {
|
if ($1->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -3070,10 +3070,10 @@ objc_var : type declaration {
|
||||||
char *tm, *iname;
|
char *tm, *iname;
|
||||||
if (Active_type) DelDataType(Active_type);
|
if (Active_type) DelDataType(Active_type);
|
||||||
Active_type = CopyDataType($1);
|
Active_type = CopyDataType($1);
|
||||||
$1->is_pointer += $2.is_pointer;
|
$1->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference($1);
|
if ($2.is_reference) DataType_add_reference($1);
|
||||||
DataType_set_arraystr($1, Char(ArrayString));
|
DataType_set_arraystr($1, Char(ArrayString));
|
||||||
if ($1->status & STAT_READONLY) {
|
if ($1->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -3095,9 +3095,9 @@ objc_vartail : COMMA declaration objc_vartail {
|
||||||
int oldstatus = Status;
|
int oldstatus = Status;
|
||||||
char *tm, *iname;
|
char *tm, *iname;
|
||||||
DataType *t = CopyDataType (Active_type);
|
DataType *t = CopyDataType (Active_type);
|
||||||
t->is_pointer += $2.is_pointer;
|
t->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference(t);
|
if ($2.is_reference) DataType_add_reference(t);
|
||||||
if (t->status & STAT_READONLY) {
|
if (t->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,t,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,t,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -3115,10 +3115,10 @@ objc_vartail : COMMA declaration objc_vartail {
|
||||||
int oldstatus = Status;
|
int oldstatus = Status;
|
||||||
char *tm;
|
char *tm;
|
||||||
DataType *t = CopyDataType (Active_type);
|
DataType *t = CopyDataType (Active_type);
|
||||||
t->is_pointer += $2.is_pointer;
|
t->_is_pointer += $2.is_pointer;
|
||||||
if ($2.is_reference) DataType_add_reference(t);
|
if ($2.is_reference) DataType_add_reference(t);
|
||||||
DataType_set_arraystr(t,Char(ArrayString));
|
DataType_set_arraystr(t,Char(ArrayString));
|
||||||
if (t->status & STAT_READONLY) {
|
if (t->_status & STAT_READONLY) {
|
||||||
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,t,$2.id,(char*)"",(char*)"")))
|
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,t,$2.id,(char*)"",(char*)"")))
|
||||||
Status = Status | STAT_READONLY;
|
Status = Status | STAT_READONLY;
|
||||||
}
|
}
|
||||||
|
|
@ -3206,13 +3206,13 @@ objc_ret_type : LPAREN type RPAREN {
|
||||||
}
|
}
|
||||||
| LPAREN type stars RPAREN {
|
| LPAREN type stars RPAREN {
|
||||||
$$ = $2;
|
$$ = $2;
|
||||||
$$->is_pointer += $3;
|
$$->_is_pointer += $3;
|
||||||
}
|
}
|
||||||
| empty { /* Empty type means "id" type */
|
| empty { /* Empty type means "id" type */
|
||||||
$$ = NewDataType(T_VOID);
|
$$ = NewDataType(T_VOID);
|
||||||
DataType_Setname($$,"id");
|
DataType_Setname($$,"id");
|
||||||
$$->is_pointer = 1;
|
$$->_is_pointer = 1;
|
||||||
$$->implicit_ptr = 1;
|
$$->_implicit_ptr = 1;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -3223,8 +3223,8 @@ objc_arg_type : LPAREN parm RPAREN {
|
||||||
| empty {
|
| empty {
|
||||||
$$ = NewDataType(T_VOID);
|
$$ = NewDataType(T_VOID);
|
||||||
DataType_Setname($$,"id");
|
DataType_Setname($$,"id");
|
||||||
$$->is_pointer = 1;
|
$$->_is_pointer = 1;
|
||||||
$$->implicit_ptr = 1;
|
$$->_implicit_ptr = 1;
|
||||||
}
|
}
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
@ -3314,7 +3314,7 @@ tm_tail : COMMA typemap_parm tm_tail {
|
||||||
|
|
||||||
typemap_parm : type typemap_name {
|
typemap_parm : type typemap_name {
|
||||||
if (InArray) {
|
if (InArray) {
|
||||||
$1->is_pointer++;
|
$1->_is_pointer++;
|
||||||
DataType_set_arraystr($1,Char(ArrayString));
|
DataType_set_arraystr($1,Char(ArrayString));
|
||||||
}
|
}
|
||||||
$$ = NewTMParm();
|
$$ = NewTMParm();
|
||||||
|
|
@ -3328,9 +3328,9 @@ typemap_parm : type typemap_name {
|
||||||
$$ = NewTMParm();
|
$$ = NewTMParm();
|
||||||
$$->p = NewParm($1,$3);
|
$$->p = NewParm($1,$3);
|
||||||
DataType *pt = Gettype($$->p);
|
DataType *pt = Gettype($$->p);
|
||||||
pt->is_pointer += $2;
|
pt->_is_pointer += $2;
|
||||||
if (InArray) {
|
if (InArray) {
|
||||||
pt->is_pointer++;
|
pt->_is_pointer++;
|
||||||
DataType_set_arraystr(pt,Char(ArrayString));
|
DataType_set_arraystr(pt,Char(ArrayString));
|
||||||
}
|
}
|
||||||
$$->args = tm_parm;
|
$$->args = tm_parm;
|
||||||
|
|
@ -3343,7 +3343,7 @@ typemap_parm : type typemap_name {
|
||||||
$$->p = NewParm($1,$3);
|
$$->p = NewParm($1,$3);
|
||||||
DataType *pt = Gettype($$->p);
|
DataType *pt = Gettype($$->p);
|
||||||
DataType_add_reference(pt);
|
DataType_add_reference(pt);
|
||||||
pt->is_pointer++;
|
pt->_is_pointer++;
|
||||||
if (!CPlusPlus) {
|
if (!CPlusPlus) {
|
||||||
fprintf(stderr,"%s : Line %d. Warning. Use of C++ Reference detected. Use the -c++ option.\n", input_file, line_number);
|
fprintf(stderr,"%s : Line %d. Warning. Use of C++ Reference detected. Use the -c++ option.\n", input_file, line_number);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -226,8 +226,8 @@ static char *typemap_string(char *lang, DataType *type, char *pname, char *ary,
|
||||||
|
|
||||||
int old_status;
|
int old_status;
|
||||||
if (!str) str = NewString("");
|
if (!str) str = NewString("");
|
||||||
old_status = type->status;
|
old_status = type->_status;
|
||||||
type->status = 0;
|
type->_status = 0;
|
||||||
Clear(str);
|
Clear(str);
|
||||||
|
|
||||||
if (ary)
|
if (ary)
|
||||||
|
|
@ -235,7 +235,7 @@ static char *typemap_string(char *lang, DataType *type, char *pname, char *ary,
|
||||||
else
|
else
|
||||||
Printv(str, lang, DataType_str(type,0), pname, suffix,0);
|
Printv(str, lang, DataType_str(type,0), pname, suffix,0);
|
||||||
|
|
||||||
type->status = old_status;
|
type->_status = old_status;
|
||||||
return Char(str);
|
return Char(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -334,7 +334,6 @@ void typemap_register(char *op, char *lang, char *type, char *pname,
|
||||||
DataType *temp;
|
DataType *temp;
|
||||||
temp = NewDataType(0);
|
temp = NewDataType(0);
|
||||||
DataType_Setname(temp,type);
|
DataType_Setname(temp,type);
|
||||||
temp->is_pointer = 0;
|
|
||||||
DataType_Settypecode(temp,T_USER);
|
DataType_Settypecode(temp,T_USER);
|
||||||
typemap_register(op,lang,temp,pname,getcode,args);
|
typemap_register(op,lang,temp,pname,getcode,args);
|
||||||
DelDataType(temp);
|
DelDataType(temp);
|
||||||
|
|
@ -356,7 +355,7 @@ void typemap_register_default(char *op, char *lang, int type, int ptr, char *arr
|
||||||
|
|
||||||
/* Create a raw datatype from the arguments */
|
/* Create a raw datatype from the arguments */
|
||||||
|
|
||||||
t->is_pointer = ptr;
|
t->_is_pointer = ptr;
|
||||||
DataType_set_arraystr(t,arraystr);
|
DataType_set_arraystr(t,arraystr);
|
||||||
|
|
||||||
/* Now, go register this as a default type */
|
/* Now, go register this as a default type */
|
||||||
|
|
@ -412,12 +411,12 @@ TypeMap *typemap_search_array(char *op, char *lang, DataType *type, char *pname,
|
||||||
/* First check to see if exactly this array has been mapped */
|
/* First check to see if exactly this array has been mapped */
|
||||||
|
|
||||||
key = typemap_string(lang,type,pname,DataType_arraystr(type),op);
|
key = typemap_string(lang,type,pname,DataType_arraystr(type),op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
|
|
||||||
/* Check for unnamed array of specific dimensions */
|
/* Check for unnamed array of specific dimensions */
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
|
|
@ -439,10 +438,10 @@ TypeMap *typemap_search_array(char *op, char *lang, DataType *type, char *pname,
|
||||||
}
|
}
|
||||||
DataType_set_arraystr(type, Char(tempastr));
|
DataType_set_arraystr(type, Char(tempastr));
|
||||||
key = typemap_string(lang,type,pname,DataType_arraystr(type),op);
|
key = typemap_string(lang,type,pname,DataType_arraystr(type),op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
}
|
}
|
||||||
DataType_set_arraystr(type,origarr);
|
DataType_set_arraystr(type,origarr);
|
||||||
if (tm) {
|
if (tm) {
|
||||||
|
|
@ -501,7 +500,7 @@ static void typemap_locals(DataType *t, char *pname, DOHString *s, ParmList *l,
|
||||||
|
|
||||||
/* Have a real parameter here */
|
/* Have a real parameter here */
|
||||||
if (DataType_arraystr(tt)) {
|
if (DataType_arraystr(tt)) {
|
||||||
tt->is_pointer--;
|
DataType_del_pointer(tt);
|
||||||
Printf(str,"%s%s",pn, DataType_arraystr(tt));
|
Printf(str,"%s%s",pn, DataType_arraystr(tt));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
@ -512,18 +511,18 @@ static void typemap_locals(DataType *t, char *pname, DOHString *s, ParmList *l,
|
||||||
Replace(str,"$arg",pname, DOH_REPLACE_ANY);
|
Replace(str,"$arg",pname, DOH_REPLACE_ANY);
|
||||||
if (strcmp(DataType_Getname(pt),"$basetype")==0) {
|
if (strcmp(DataType_Getname(pt),"$basetype")==0) {
|
||||||
/* use $basetype */
|
/* use $basetype */
|
||||||
char temp_ip = tt->is_pointer;
|
char temp_ip = tt->_is_pointer;
|
||||||
char temp_ip1 = tt->implicit_ptr;
|
char temp_ip1 = tt->_implicit_ptr;
|
||||||
tt->is_pointer = 0;
|
tt->_is_pointer = 0;
|
||||||
tt->implicit_ptr = 0;
|
tt->_implicit_ptr = 0;
|
||||||
new_name = Wrapper_new_localv(f,str, DataType_str(tt,0), str, 0);
|
new_name = Wrapper_new_localv(f,str, DataType_str(tt,0), str, 0);
|
||||||
tt->is_pointer = temp_ip;
|
tt->_is_pointer = temp_ip;
|
||||||
tt->implicit_ptr = temp_ip1;
|
tt->_implicit_ptr = temp_ip1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
new_name = Wrapper_new_localv(f,str, DataType_str(tt,str), 0);
|
new_name = Wrapper_new_localv(f,str, DataType_str(tt,str), 0);
|
||||||
|
|
||||||
if (DataType_arraystr(tt)) tt->is_pointer++;
|
if (DataType_arraystr(tt)) tt->_is_pointer++;
|
||||||
/* Substitute */
|
/* Substitute */
|
||||||
Replace(s,pn,new_name,DOH_REPLACE_ID);
|
Replace(s,pn,new_name,DOH_REPLACE_ID);
|
||||||
}
|
}
|
||||||
|
|
@ -598,7 +597,7 @@ char *typemap_lookup_internal(char *op, char *lang, DataType *type, char *pname,
|
||||||
/* Check for named argument */
|
/* Check for named argument */
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,pname,0,op);
|
key = typemap_string(lang,type,pname,0,op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
if (tm)
|
if (tm)
|
||||||
Printf(str,"%s",tm->code);
|
Printf(str,"%s",tm->code);
|
||||||
}
|
}
|
||||||
|
|
@ -606,7 +605,7 @@ char *typemap_lookup_internal(char *op, char *lang, DataType *type, char *pname,
|
||||||
/* Check for unnamed type */
|
/* Check for unnamed type */
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,(char*)"",0,op);
|
key = typemap_string(lang,type,(char*)"",0,op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
if (tm)
|
if (tm)
|
||||||
Printf(str,"%s", tm->code);
|
Printf(str,"%s", tm->code);
|
||||||
}
|
}
|
||||||
|
|
@ -624,17 +623,17 @@ char *typemap_lookup_internal(char *op, char *lang, DataType *type, char *pname,
|
||||||
}
|
}
|
||||||
/* Print base type (without any pointers) */
|
/* Print base type (without any pointers) */
|
||||||
{
|
{
|
||||||
char temp_ip = realtype->is_pointer;
|
char temp_ip = realtype->_is_pointer;
|
||||||
char temp_ip1 = realtype->implicit_ptr;
|
char temp_ip1 = realtype->_implicit_ptr;
|
||||||
realtype->is_pointer = 0;
|
realtype->_is_pointer = 0;
|
||||||
realtype->implicit_ptr = 0;
|
realtype->_implicit_ptr = 0;
|
||||||
char *bt = DataType_str(realtype,0);
|
char *bt = DataType_str(realtype,0);
|
||||||
if (bt[strlen(bt)-1] == ' ')
|
if (bt[strlen(bt)-1] == ' ')
|
||||||
bt[strlen(bt)-1] = 0;
|
bt[strlen(bt)-1] = 0;
|
||||||
Replace(str,"$basetype",bt,DOH_REPLACE_ANY);
|
Replace(str,"$basetype",bt,DOH_REPLACE_ANY);
|
||||||
Replace(str,"$basemangle",DataType_manglestr(realtype), DOH_REPLACE_ANY);
|
Replace(str,"$basemangle",DataType_manglestr(realtype), DOH_REPLACE_ANY);
|
||||||
realtype->is_pointer = temp_ip;
|
realtype->_is_pointer = temp_ip;
|
||||||
realtype->implicit_ptr = temp_ip1;
|
realtype->_implicit_ptr = temp_ip1;
|
||||||
}
|
}
|
||||||
|
|
||||||
Replace(str,"$mangle",DataType_manglestr(realtype), DOH_REPLACE_ANY);
|
Replace(str,"$mangle",DataType_manglestr(realtype), DOH_REPLACE_ANY);
|
||||||
|
|
@ -686,8 +685,8 @@ char *typemap_lookup(char *op, char *lang, DataType *type, char *pname, char *so
|
||||||
/* The idea : We're going to cycle through applications and
|
/* The idea : We're going to cycle through applications and
|
||||||
drop pointers off until we get a match. */
|
drop pointers off until we get a match. */
|
||||||
|
|
||||||
while (drop_pointer <= (type->is_pointer - type->implicit_ptr)) {
|
while (drop_pointer <= (type->_is_pointer - type->_implicit_ptr)) {
|
||||||
type->is_pointer -= drop_pointer;
|
type->_is_pointer -= drop_pointer;
|
||||||
tstr = DataType_str(type,0);
|
tstr = DataType_str(type,0);
|
||||||
sprintf(temp,"%s$%s",tstr,ppname);
|
sprintf(temp,"%s$%s",tstr,ppname);
|
||||||
/* No mapping was found. See if the name has been mapped with %apply */
|
/* No mapping was found. See if the name has been mapped with %apply */
|
||||||
|
|
@ -704,7 +703,7 @@ char *typemap_lookup(char *op, char *lang, DataType *type, char *pname, char *so
|
||||||
if (!newarray) newarray = NewString("");
|
if (!newarray) newarray = NewString("");
|
||||||
if (*(m->name)) ppname = m->name;
|
if (*(m->name)) ppname = m->name;
|
||||||
else ppname = pname;
|
else ppname = pname;
|
||||||
m->type->is_pointer += drop_pointer;
|
m->type->_is_pointer += drop_pointer;
|
||||||
|
|
||||||
/* Copy old array string (just in case) */
|
/* Copy old array string (just in case) */
|
||||||
|
|
||||||
|
|
@ -737,15 +736,15 @@ char *typemap_lookup(char *op, char *lang, DataType *type, char *pname, char *so
|
||||||
DataType_set_arraystr(m->type,oldary);
|
DataType_set_arraystr(m->type,oldary);
|
||||||
if (oldary)
|
if (oldary)
|
||||||
free(oldary);
|
free(oldary);
|
||||||
m->type->is_pointer -= drop_pointer;
|
m->type->_is_pointer -= drop_pointer;
|
||||||
if (result) {
|
if (result) {
|
||||||
type->is_pointer += drop_pointer;
|
type->_is_pointer += drop_pointer;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
m = m->next;
|
m = m->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type->is_pointer += drop_pointer;
|
type->_is_pointer += drop_pointer;
|
||||||
drop_pointer++;
|
drop_pointer++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -764,7 +763,7 @@ char *typemap_lookup(char *op, char *lang, DataType *type, char *pname, char *so
|
||||||
if ((tc == T_USER) || (tc == T_POINTER)) {
|
if ((tc == T_USER) || (tc == T_POINTER)) {
|
||||||
/* Still no result, go even more primitive */
|
/* Still no result, go even more primitive */
|
||||||
DataType_Settypecode(t, T_USER);
|
DataType_Settypecode(t, T_USER);
|
||||||
t->is_pointer = 1;
|
t->_is_pointer = 1;
|
||||||
DataType_set_arraystr(t,0);
|
DataType_set_arraystr(t,0);
|
||||||
DataType_primitive(t);
|
DataType_primitive(t);
|
||||||
result = typemap_lookup_internal(op,lang,t,(char*)"SWIG_DEFAULT_TYPE",source,target,f);
|
result = typemap_lookup_internal(op,lang,t,(char*)"SWIG_DEFAULT_TYPE",source,target,f);
|
||||||
|
|
@ -799,25 +798,25 @@ char *typemap_check_internal(char *op, char *lang, DataType *type, char *pname)
|
||||||
*
|
*
|
||||||
* if (type->arraystr) {
|
* if (type->arraystr) {
|
||||||
* key = typemap_string(lang,type,pname,type->arraystr,op);
|
* key = typemap_string(lang,type,pname,type->arraystr,op);
|
||||||
* tm = typemap_search(key,type->id);
|
* tm = typemap_search(key,type->_id);
|
||||||
* } */
|
* } */
|
||||||
|
|
||||||
/* Check for named argument */
|
/* Check for named argument */
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,pname,0,op);
|
key = typemap_string(lang,type,pname,0,op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for unnamed array */
|
/* Check for unnamed array */
|
||||||
if ((!tm) && (DataType_arraystr(type))) {
|
if ((!tm) && (DataType_arraystr(type))) {
|
||||||
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check for unname type */
|
/* Check for unname type */
|
||||||
if (!tm) {
|
if (!tm) {
|
||||||
key = typemap_string(lang,type,(char*)"",0,op);
|
key = typemap_string(lang,type,(char*)"",0,op);
|
||||||
tm = typemap_search(key,type->id);
|
tm = typemap_search(key,type->_id);
|
||||||
}
|
}
|
||||||
if (!tm) return 0;
|
if (!tm) return 0;
|
||||||
|
|
||||||
|
|
@ -848,8 +847,8 @@ char *typemap_check(char *op, char *lang, DataType *type, char *pname) {
|
||||||
/* The idea : We're going to cycle through applications and
|
/* The idea : We're going to cycle through applications and
|
||||||
drop pointers off until we get a match. */
|
drop pointers off until we get a match. */
|
||||||
|
|
||||||
while (drop_pointer <= (type->is_pointer - type->implicit_ptr)) {
|
while (drop_pointer <= (type->_is_pointer - type->_implicit_ptr)) {
|
||||||
type->is_pointer -= drop_pointer;
|
type->_is_pointer -= drop_pointer;
|
||||||
tstr = DataType_str(type,0);
|
tstr = DataType_str(type,0);
|
||||||
sprintf(temp,"%s$%s",tstr,ppname);
|
sprintf(temp,"%s$%s",tstr,ppname);
|
||||||
/* No mapping was found. See if the name has been mapped with %apply */
|
/* No mapping was found. See if the name has been mapped with %apply */
|
||||||
|
|
@ -867,7 +866,7 @@ char *typemap_check(char *op, char *lang, DataType *type, char *pname) {
|
||||||
if (!newarray) newarray = NewString("");
|
if (!newarray) newarray = NewString("");
|
||||||
if (*(m->name)) ppname = m->name;
|
if (*(m->name)) ppname = m->name;
|
||||||
else ppname = pname;
|
else ppname = pname;
|
||||||
m->type->is_pointer += drop_pointer;
|
m->type->_is_pointer += drop_pointer;
|
||||||
if (DataType_arraystr(m->type))
|
if (DataType_arraystr(m->type))
|
||||||
oldary = Swig_copy_string(DataType_arraystr(m->type));
|
oldary = Swig_copy_string(DataType_arraystr(m->type));
|
||||||
else
|
else
|
||||||
|
|
@ -894,15 +893,15 @@ char *typemap_check(char *op, char *lang, DataType *type, char *pname) {
|
||||||
result = typemap_check_internal(op,lang,m->type,ppname);
|
result = typemap_check_internal(op,lang,m->type,ppname);
|
||||||
DataType_set_arraystr(m->type,oldary);
|
DataType_set_arraystr(m->type,oldary);
|
||||||
if (oldary) free(oldary);
|
if (oldary) free(oldary);
|
||||||
m->type->is_pointer -= drop_pointer;
|
m->type->_is_pointer -= drop_pointer;
|
||||||
if (result) {
|
if (result) {
|
||||||
type->is_pointer += drop_pointer;
|
type->_is_pointer += drop_pointer;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
m = m->next;
|
m = m->next;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
type->is_pointer += drop_pointer;
|
type->_is_pointer += drop_pointer;
|
||||||
drop_pointer++;
|
drop_pointer++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -921,7 +920,7 @@ char *typemap_check(char *op, char *lang, DataType *type, char *pname) {
|
||||||
if ((tc == T_USER) || (tc == T_POINTER)) {
|
if ((tc == T_USER) || (tc == T_POINTER)) {
|
||||||
/* Still no result, go even more primitive */
|
/* Still no result, go even more primitive */
|
||||||
DataType_Settypecode(t,T_USER);
|
DataType_Settypecode(t,T_USER);
|
||||||
t->is_pointer = 1;
|
t->_is_pointer = 1;
|
||||||
DataType_set_arraystr(t,0);
|
DataType_set_arraystr(t,0);
|
||||||
DataType_primitive(t);
|
DataType_primitive(t);
|
||||||
result = typemap_check_internal(op,lang,t,(char*)"SWIG_DEFAULT_TYPE");
|
result = typemap_check_internal(op,lang,t,(char*)"SWIG_DEFAULT_TYPE");
|
||||||
|
|
@ -972,7 +971,7 @@ void typemap_copy(char *op, char *lang, DataType *stype, char *sname,
|
||||||
/* Try to locate a previous typemap */
|
/* Try to locate a previous typemap */
|
||||||
|
|
||||||
key = typemap_string(lang,stype,sname,DataType_arraystr(stype),op);
|
key = typemap_string(lang,stype,sname,DataType_arraystr(stype),op);
|
||||||
tm = typemap_search(key,stype->id);
|
tm = typemap_search(key,stype->_id);
|
||||||
if (!tm) return;
|
if (!tm) return;
|
||||||
if (strcmp(DataType_Getname(ttype),"PREVIOUS") == 0) {
|
if (strcmp(DataType_Getname(ttype),"PREVIOUS") == 0) {
|
||||||
/* Pop back up to the previous typemap (if any) */
|
/* Pop back up to the previous typemap (if any) */
|
||||||
|
|
|
||||||
|
|
@ -50,12 +50,12 @@ Swig_clocal(DataType *t, DOHString_or_char *name, DOHString_or_char *value) {
|
||||||
Clear(decl);
|
Clear(decl);
|
||||||
switch(DataType_type(t)) {
|
switch(DataType_type(t)) {
|
||||||
case T_USER:
|
case T_USER:
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
if (value)
|
if (value)
|
||||||
Printf(decl,"%s = &%s", DataType_lstr(t,name), value);
|
Printf(decl,"%s = &%s", DataType_lstr(t,name), value);
|
||||||
else
|
else
|
||||||
Printf(decl,"%s", DataType_lstr(t,name));
|
Printf(decl,"%s", DataType_lstr(t,name));
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
case T_REFERENCE:
|
case T_REFERENCE:
|
||||||
if (value)
|
if (value)
|
||||||
|
|
@ -86,9 +86,9 @@ Swig_clocal_type(DataType *t) {
|
||||||
DataType *ty;
|
DataType *ty;
|
||||||
switch(DataType_type(t)) {
|
switch(DataType_type(t)) {
|
||||||
case T_USER:
|
case T_USER:
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
ty = DataType_ltype(t);
|
ty = DataType_ltype(t);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ty = DataType_ltype(t);
|
ty = DataType_ltype(t);
|
||||||
|
|
@ -196,9 +196,9 @@ void Swig_cresult(Wrapper *w, DataType *t, DOHString_or_char *name, DOHString_or
|
||||||
case T_VOID:
|
case T_VOID:
|
||||||
break;
|
break;
|
||||||
case T_USER:
|
case T_USER:
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
Printv(fcall, name, " = (", DataType_lstr(t,0), ") malloc(sizeof(", 0);
|
Printv(fcall, name, " = (", DataType_lstr(t,0), ") malloc(sizeof(", 0);
|
||||||
t->is_pointer--;
|
DataType_del_pointer(t);
|
||||||
Printv(fcall, DataType_str(t,0), "));\n", 0);
|
Printv(fcall, DataType_str(t,0), "));\n", 0);
|
||||||
Printv(fcall, "*(", name, ") = ", 0);
|
Printv(fcall, "*(", name, ") = ", 0);
|
||||||
break;
|
break;
|
||||||
|
|
@ -572,7 +572,7 @@ Swig_cmethod_wrapper(DOHString_or_char *classname,
|
||||||
l = CopyParmList(parms);
|
l = CopyParmList(parms);
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t, Char(classname));
|
DataType_Setname(t, Char(classname));
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
p = NewParm(t,"self");
|
p = NewParm(t,"self");
|
||||||
Insert(l,0,p);
|
Insert(l,0,p);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
|
|
@ -632,7 +632,7 @@ Swig_cconstructor_wrapper(DOHString_or_char *classname,
|
||||||
l = CopyParmList(parms);
|
l = CopyParmList(parms);
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t,classname);
|
DataType_Setname(t,classname);
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
|
|
||||||
/* Patch up the argument names */
|
/* Patch up the argument names */
|
||||||
fix_parm_names(l);
|
fix_parm_names(l);
|
||||||
|
|
@ -678,7 +678,7 @@ Swig_cppconstructor_wrapper(DOHString_or_char *classname,
|
||||||
l = CopyParmList(parms);
|
l = CopyParmList(parms);
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t,classname);
|
DataType_Setname(t,classname);
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
|
|
||||||
/* Patch up the argument names */
|
/* Patch up the argument names */
|
||||||
fix_parm_names(l);
|
fix_parm_names(l);
|
||||||
|
|
@ -735,7 +735,7 @@ Swig_cdestructor_wrapper(DOHString_or_char *classname,
|
||||||
l = NewParmList();
|
l = NewParmList();
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t,classname);
|
DataType_Setname(t,classname);
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
p = NewParm(t,"self");
|
p = NewParm(t,"self");
|
||||||
Append(l,p);
|
Append(l,p);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
|
|
@ -782,7 +782,7 @@ Swig_cppdestructor_wrapper(DOHString_or_char *classname,
|
||||||
l = NewParmList();
|
l = NewParmList();
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t,classname);
|
DataType_Setname(t,classname);
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
p = NewParm(t,"self");
|
p = NewParm(t,"self");
|
||||||
|
|
||||||
Append(l,p);
|
Append(l,p);
|
||||||
|
|
@ -832,7 +832,7 @@ Swig_cmemberset_wrapper(DOHString_or_char *classname,
|
||||||
l = NewParmList();
|
l = NewParmList();
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t, Char(classname));
|
DataType_Setname(t, Char(classname));
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
p = NewParm(t,"self");
|
p = NewParm(t,"self");
|
||||||
Append(l,p);
|
Append(l,p);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
|
|
@ -885,7 +885,7 @@ Swig_cmemberget_wrapper(DOHString_or_char *classname,
|
||||||
l = NewParmList();
|
l = NewParmList();
|
||||||
t = NewDataType(T_USER);
|
t = NewDataType(T_USER);
|
||||||
DataType_Setname(t, Char(classname));
|
DataType_Setname(t, Char(classname));
|
||||||
t->is_pointer++;
|
DataType_add_pointer(t);
|
||||||
p = NewParm(t,"self");
|
p = NewParm(t,"self");
|
||||||
Append(l,p);
|
Append(l,p);
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
|
|
|
||||||
|
|
@ -69,13 +69,13 @@ DataType *NewDataType(int t) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ty->_type = t;
|
ty->_type = t;
|
||||||
ty->is_pointer = 0;
|
ty->_is_pointer = 0;
|
||||||
ty->implicit_ptr = 0;
|
ty->_implicit_ptr = 0;
|
||||||
ty->_qualifier = 0;
|
ty->_qualifier = 0;
|
||||||
ty->_is_reference = 0;
|
ty->_is_reference = 0;
|
||||||
ty->status = 0;
|
ty->_status = 0;
|
||||||
ty->_arraystr = 0;
|
ty->_arraystr = 0;
|
||||||
ty->id = type_id++;
|
ty->_id = type_id++;
|
||||||
return ty;
|
return ty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -83,13 +83,13 @@ DataType *CopyDataType(DataType *t) {
|
||||||
DataType *ty = (DataType *) malloc(sizeof(DataType));
|
DataType *ty = (DataType *) malloc(sizeof(DataType));
|
||||||
ty->_type = t->_type;
|
ty->_type = t->_type;
|
||||||
strcpy(ty->_name,t->_name);
|
strcpy(ty->_name,t->_name);
|
||||||
ty->is_pointer = t->is_pointer;
|
ty->_is_pointer = t->_is_pointer;
|
||||||
ty->implicit_ptr = t->implicit_ptr;
|
ty->_implicit_ptr = t->_implicit_ptr;
|
||||||
ty->_qualifier = Swig_copy_string(t->_qualifier);
|
ty->_qualifier = Swig_copy_string(t->_qualifier);
|
||||||
ty->_is_reference = t->_is_reference;
|
ty->_is_reference = t->_is_reference;
|
||||||
ty->status = t->status;
|
ty->_status = t->_status;
|
||||||
ty->_arraystr = Swig_copy_string(t->_arraystr);
|
ty->_arraystr = Swig_copy_string(t->_arraystr);
|
||||||
ty->id = t->id;
|
ty->_id = t->_id;
|
||||||
return ty;
|
return ty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -100,10 +100,10 @@ void DelDataType(DataType *t) {
|
||||||
}
|
}
|
||||||
|
|
||||||
int DataType_type(DataType *t) {
|
int DataType_type(DataType *t) {
|
||||||
if ((t->_type == T_CHAR) && (t->is_pointer == 1)) return T_STRING;
|
if ((t->_type == T_CHAR) && (t->_is_pointer == 1)) return T_STRING;
|
||||||
if (t->_arraystr) return T_ARRAY;
|
if (t->_arraystr) return T_ARRAY;
|
||||||
if (t->_is_reference) return T_REFERENCE;
|
if (t->_is_reference) return T_REFERENCE;
|
||||||
if (t->is_pointer) return T_POINTER;
|
if (t->_is_pointer) return T_POINTER;
|
||||||
return t->_type;
|
return t->_type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -141,6 +141,18 @@ int DataType_is_reference(DataType *t) {
|
||||||
return t->_is_reference;
|
return t->_is_reference;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int DataType_is_pointer(DataType *t) {
|
||||||
|
return t->_is_pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataType_add_pointer(DataType *t) {
|
||||||
|
t->_is_pointer++;
|
||||||
|
}
|
||||||
|
|
||||||
|
void DataType_del_pointer(DataType *t) {
|
||||||
|
t->_is_pointer--;
|
||||||
|
}
|
||||||
|
|
||||||
void DataType_Setname(DataType *t, char *n) {
|
void DataType_Setname(DataType *t, char *n) {
|
||||||
strcpy(t->_name, n);
|
strcpy(t->_name, n);
|
||||||
}
|
}
|
||||||
|
|
@ -204,13 +216,13 @@ void DataType_primitive(DataType *t) {
|
||||||
strcpy(t->_name,"UNKNOWN");
|
strcpy(t->_name,"UNKNOWN");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
t->implicit_ptr = 0; /* Gets rid of typedef'd pointers */
|
t->_implicit_ptr = 0; /* Gets rid of typedef'd pointers */
|
||||||
if (t->_qualifier) {
|
if (t->_qualifier) {
|
||||||
free(t->_qualifier);
|
free(t->_qualifier);
|
||||||
t->_qualifier = 0;
|
t->_qualifier = 0;
|
||||||
}
|
}
|
||||||
t->_qualifier = 0;
|
t->_qualifier = 0;
|
||||||
t->status = 0;
|
t->_status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* --------------------------------------------------------------------
|
/* --------------------------------------------------------------------
|
||||||
|
|
@ -242,8 +254,8 @@ char *DataType_mangle_default(DataType *t) {
|
||||||
if ((*c == ' ') || (*c == ':') || (*c == '<') || (*c == '>')) *(d++) = '_';
|
if ((*c == ' ') || (*c == ':') || (*c == '<') || (*c == '>')) *(d++) = '_';
|
||||||
else *(d++) = *c;
|
else *(d++) = *c;
|
||||||
}
|
}
|
||||||
if ((t->is_pointer-t->implicit_ptr)) *(d++) = '_';
|
if ((t->_is_pointer-t->_implicit_ptr)) *(d++) = '_';
|
||||||
for (i = 0; i < (t->is_pointer-t->implicit_ptr); i++)
|
for (i = 0; i < (t->_is_pointer-t->_implicit_ptr); i++)
|
||||||
*(d++) = 'p';
|
*(d++) = 'p';
|
||||||
|
|
||||||
*d = 0;
|
*d = 0;
|
||||||
|
|
@ -277,24 +289,24 @@ char *DataType_str(DataType *t, DOHString_or_char *name) {
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
ri = ri % 8;
|
ri = ri % 8;
|
||||||
if (t->_arraystr) t->is_pointer--;
|
if (t->_arraystr) t->_is_pointer--;
|
||||||
if (t->_is_reference) t->is_pointer--;
|
if (t->_is_reference) t->_is_pointer--;
|
||||||
if (t->_qualifier) {
|
if (t->_qualifier) {
|
||||||
sprintf(result[ri],"%s %s", t->_qualifier, t->_name);
|
sprintf(result[ri],"%s %s", t->_qualifier, t->_name);
|
||||||
} else {
|
} else {
|
||||||
sprintf(result[ri],"%s ", t->_name);
|
sprintf(result[ri],"%s ", t->_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (i = 0; i < (t->is_pointer-t->implicit_ptr); i++) {
|
for (i = 0; i < (t->_is_pointer-t->_implicit_ptr); i++) {
|
||||||
strcat(result[ri],"*");
|
strcat(result[ri],"*");
|
||||||
}
|
}
|
||||||
if (t->_is_reference) strcat(result[ri],"&");
|
if (t->_is_reference) strcat(result[ri],"&");
|
||||||
if (name) strcat(result[ri],Char(name));
|
if (name) strcat(result[ri],Char(name));
|
||||||
if (t->_arraystr) {
|
if (t->_arraystr) {
|
||||||
strcat(result[ri],t->_arraystr);
|
strcat(result[ri],t->_arraystr);
|
||||||
t->is_pointer++;
|
t->_is_pointer++;
|
||||||
}
|
}
|
||||||
if (t->_is_reference) t->is_pointer++;
|
if (t->_is_reference) t->_is_pointer++;
|
||||||
return result[ri++];
|
return result[ri++];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -319,16 +331,16 @@ char *DataType_lstr(DataType *ty, DOHString_or_char *name) {
|
||||||
int i;
|
int i;
|
||||||
DataType *t = ty;
|
DataType *t = ty;
|
||||||
|
|
||||||
if (ty->status & STAT_REPLACETYPE) {
|
if (ty->_status & STAT_REPLACETYPE) {
|
||||||
t = CopyDataType(ty);
|
t = CopyDataType(ty);
|
||||||
DataType_typedef_replace(t); /* Replace the type with its typedef value */
|
DataType_typedef_replace(t); /* Replace the type with its typedef value */
|
||||||
}
|
}
|
||||||
ri = ri % 8;
|
ri = ri % 8;
|
||||||
sprintf(result[ri],"%s ", t->_name);
|
sprintf(result[ri],"%s ", t->_name);
|
||||||
for (i = 0; i < (t->is_pointer-t->implicit_ptr); i++)
|
for (i = 0; i < (t->_is_pointer-t->_implicit_ptr); i++)
|
||||||
strcat(result[ri],"*");
|
strcat(result[ri],"*");
|
||||||
|
|
||||||
if (ty->status & STAT_REPLACETYPE) {
|
if (ty->_status & STAT_REPLACETYPE) {
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
}
|
}
|
||||||
if (name) {
|
if (name) {
|
||||||
|
|
@ -346,7 +358,7 @@ char *DataType_lstr(DataType *ty, DOHString_or_char *name) {
|
||||||
DataType *DataType_ltype(DataType *t) {
|
DataType *DataType_ltype(DataType *t) {
|
||||||
|
|
||||||
DataType *ty = CopyDataType(t);
|
DataType *ty = CopyDataType(t);
|
||||||
if (ty->status & STAT_REPLACETYPE) {
|
if (ty->_status & STAT_REPLACETYPE) {
|
||||||
DataType_typedef_replace(ty); /* Replace the type with its typedef value */
|
DataType_typedef_replace(ty); /* Replace the type with its typedef value */
|
||||||
}
|
}
|
||||||
if (ty->_qualifier) {
|
if (ty->_qualifier) {
|
||||||
|
|
@ -377,7 +389,7 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
|
||||||
strcpy(result[ri],"");
|
strcpy(result[ri],"");
|
||||||
if (ty->_arraystr) {
|
if (ty->_arraystr) {
|
||||||
t = ty;
|
t = ty;
|
||||||
if (ty->status & STAT_REPLACETYPE) {
|
if (ty->_status & STAT_REPLACETYPE) {
|
||||||
t = CopyDataType(ty);
|
t = CopyDataType(ty);
|
||||||
DataType_typedef_replace(t);
|
DataType_typedef_replace(t);
|
||||||
}
|
}
|
||||||
|
|
@ -395,15 +407,15 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
|
||||||
if (ndim > 1) {
|
if (ndim > 1) {
|
||||||
/* a Multidimensional array. Provide a special cast for it */
|
/* a Multidimensional array. Provide a special cast for it */
|
||||||
char *oldarr = 0;
|
char *oldarr = 0;
|
||||||
int oldstatus = ty->status;
|
int oldstatus = ty->_status;
|
||||||
t->status = t->status & (~STAT_REPLACETYPE);
|
t->_status = t->_status & (~STAT_REPLACETYPE);
|
||||||
t->is_pointer--;
|
t->_is_pointer--;
|
||||||
oldarr = t->_arraystr;
|
oldarr = t->_arraystr;
|
||||||
t->_arraystr = 0;
|
t->_arraystr = 0;
|
||||||
sprintf(result[ri],"(%s", DataType_str(t,0));
|
sprintf(result[ri],"(%s", DataType_str(t,0));
|
||||||
t->_arraystr = oldarr;
|
t->_arraystr = oldarr;
|
||||||
t->is_pointer++;
|
t->_is_pointer++;
|
||||||
t->status = oldstatus;
|
t->_status = oldstatus;
|
||||||
strcat(result[ri]," (*)");
|
strcat(result[ri]," (*)");
|
||||||
c = t->_arraystr;
|
c = t->_arraystr;
|
||||||
while (*c) {
|
while (*c) {
|
||||||
|
|
@ -415,7 +427,7 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
|
||||||
strcat(result[ri],")");
|
strcat(result[ri],")");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ty->status & STAT_REPLACETYPE) {
|
if (ty->_status & STAT_REPLACETYPE) {
|
||||||
DelDataType(t);
|
DelDataType(t);
|
||||||
}
|
}
|
||||||
} else if (ty->_qualifier) {
|
} else if (ty->_qualifier) {
|
||||||
|
|
@ -575,8 +587,8 @@ int DataType_typedef_add(DataType *t,char *tname, int mode) {
|
||||||
/* Make a new datatype that we will place in our hash table */
|
/* Make a new datatype that we will place in our hash table */
|
||||||
|
|
||||||
nt = CopyDataType(t);
|
nt = CopyDataType(t);
|
||||||
nt->implicit_ptr = (t->is_pointer-t->implicit_ptr); /* Record if mapped type is a pointer*/
|
nt->_implicit_ptr = (t->_is_pointer-t->_implicit_ptr); /* Record if mapped type is a pointer*/
|
||||||
nt->is_pointer = (t->is_pointer-t->implicit_ptr); /* Adjust pointer value to be correct */
|
nt->_is_pointer = (t->_is_pointer-t->_implicit_ptr); /* Adjust pointer value to be correct */
|
||||||
DataType_typedef_resolve(nt,0); /* Resolve any other mappings of this type */
|
DataType_typedef_resolve(nt,0); /* Resolve any other mappings of this type */
|
||||||
|
|
||||||
/* Add this type to our hash table */
|
/* Add this type to our hash table */
|
||||||
|
|
@ -633,9 +645,9 @@ void DataType_typedef_resolve(DataType *t, int level) {
|
||||||
while (s >= 0) {
|
while (s >= 0) {
|
||||||
if ((td = (DataType *) GetVoid(typedef_hash[s],t->_name))) {
|
if ((td = (DataType *) GetVoid(typedef_hash[s],t->_name))) {
|
||||||
t->_type = td->_type;
|
t->_type = td->_type;
|
||||||
t->is_pointer += td->is_pointer;
|
t->_is_pointer += td->_is_pointer;
|
||||||
t->implicit_ptr += td->implicit_ptr;
|
t->_implicit_ptr += td->_implicit_ptr;
|
||||||
t->status = t->status | td->status;
|
t->_status = t->_status | td->_status;
|
||||||
|
|
||||||
/* Check for constness, and replace type name if necessary*/
|
/* Check for constness, and replace type name if necessary*/
|
||||||
|
|
||||||
|
|
@ -643,7 +655,7 @@ void DataType_typedef_resolve(DataType *t, int level) {
|
||||||
if (strcmp(td->_qualifier,"const") == 0) {
|
if (strcmp(td->_qualifier,"const") == 0) {
|
||||||
strcpy(t->_name,td->_name);
|
strcpy(t->_name,td->_name);
|
||||||
t->_qualifier = Swig_copy_string(td->_qualifier);
|
t->_qualifier = Swig_copy_string(td->_qualifier);
|
||||||
t->implicit_ptr -= td->implicit_ptr;
|
t->_implicit_ptr -= td->_implicit_ptr;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|
@ -669,8 +681,8 @@ void DataType_typedef_replace (DataType *t) {
|
||||||
|
|
||||||
if ((td = (DataType *) GetVoid(typedef_hash[scope],t->_name))) {
|
if ((td = (DataType *) GetVoid(typedef_hash[scope],t->_name))) {
|
||||||
t->_type = td->_type;
|
t->_type = td->_type;
|
||||||
t->is_pointer = td->is_pointer;
|
t->_is_pointer = td->_is_pointer;
|
||||||
t->implicit_ptr -= td->implicit_ptr;
|
t->_implicit_ptr -= td->_implicit_ptr;
|
||||||
strcpy(t->_name, td->_name);
|
strcpy(t->_name, td->_name);
|
||||||
if (td->_arraystr) {
|
if (td->_arraystr) {
|
||||||
if (t->_arraystr) {
|
if (t->_arraystr) {
|
||||||
|
|
@ -713,7 +725,7 @@ void DataType_typedef_updatestatus(DataType *t, int newstatus) {
|
||||||
|
|
||||||
DataType *nt;
|
DataType *nt;
|
||||||
if ((nt = (DataType *) GetVoid(typedef_hash[scope],t->_name))) {
|
if ((nt = (DataType *) GetVoid(typedef_hash[scope],t->_name))) {
|
||||||
nt->status = newstatus;
|
nt->_status = newstatus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1080,14 +1092,14 @@ static char *
|
||||||
check_equivalent(DataType *t) {
|
check_equivalent(DataType *t) {
|
||||||
EqEntry *e1, *e2;
|
EqEntry *e1, *e2;
|
||||||
static DOHString *out = 0;
|
static DOHString *out = 0;
|
||||||
int npointer = t->is_pointer;
|
int npointer = t->_is_pointer;
|
||||||
char *m;
|
char *m;
|
||||||
DOHString *k;
|
DOHString *k;
|
||||||
|
|
||||||
if (!out) out = NewString("");
|
if (!out) out = NewString("");
|
||||||
Clear(out);
|
Clear(out);
|
||||||
|
|
||||||
while (t->is_pointer >= t->implicit_ptr) {
|
while (t->_is_pointer >= t->_implicit_ptr) {
|
||||||
m = Swig_copy_string(DataType_manglestr(t));
|
m = Swig_copy_string(DataType_manglestr(t));
|
||||||
|
|
||||||
if (!te_init) typeeq_init();
|
if (!te_init) typeeq_init();
|
||||||
|
|
@ -1099,9 +1111,9 @@ check_equivalent(DataType *t) {
|
||||||
e2 = e1->next;
|
e2 = e1->next;
|
||||||
while (e2) {
|
while (e2) {
|
||||||
if (e2->type) {
|
if (e2->type) {
|
||||||
e2->type->is_pointer += (npointer - t->is_pointer);
|
e2->type->_is_pointer += (npointer - t->_is_pointer);
|
||||||
Printf(out,"{ \"%s\",", DataType_manglestr(e2->type));
|
Printf(out,"{ \"%s\",", DataType_manglestr(e2->type));
|
||||||
e2->type->is_pointer -= (npointer - t->is_pointer);
|
e2->type->_is_pointer -= (npointer - t->_is_pointer);
|
||||||
if (e2->cast)
|
if (e2->cast)
|
||||||
Printf(out,"%s}, ", e2->cast);
|
Printf(out,"%s}, ", e2->cast);
|
||||||
else
|
else
|
||||||
|
|
@ -1113,9 +1125,9 @@ check_equivalent(DataType *t) {
|
||||||
k = Nextkey(typeeq_hash);
|
k = Nextkey(typeeq_hash);
|
||||||
}
|
}
|
||||||
free(m);
|
free(m);
|
||||||
t->is_pointer--;
|
t->_is_pointer--;
|
||||||
}
|
}
|
||||||
t->is_pointer = npointer;
|
t->_is_pointer = npointer;
|
||||||
Printf(out,"{0}");
|
Printf(out,"{0}");
|
||||||
return Char(out);
|
return Char(out);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -51,13 +51,13 @@
|
||||||
typedef struct DataType {
|
typedef struct DataType {
|
||||||
int _type; /* SWIG Type code */
|
int _type; /* SWIG Type code */
|
||||||
char _name[MAX_NAME]; /* Name of type */
|
char _name[MAX_NAME]; /* Name of type */
|
||||||
int is_pointer; /* Is this a pointer */
|
int _is_pointer; /* Is this a pointer */
|
||||||
int implicit_ptr; /* Implicit ptr */
|
int _implicit_ptr; /* Implicit ptr */
|
||||||
int _is_reference; /* A C++ reference type */
|
int _is_reference; /* A C++ reference type */
|
||||||
int status; /* Is this datatype read-only? */
|
int _status; /* Is this datatype read-only? */
|
||||||
char *_qualifier; /* A qualifier string (ie. const). */
|
char *_qualifier; /* A qualifier string (ie. const). */
|
||||||
char *_arraystr; /* String containing array part */
|
char *_arraystr; /* String containing array part */
|
||||||
int id; /* type identifier (unique for every type). */
|
int _id; /* type identifier (unique for every type). */
|
||||||
} DataType;
|
} DataType;
|
||||||
|
|
||||||
extern DataType *NewDataType(int type);
|
extern DataType *NewDataType(int type);
|
||||||
|
|
@ -81,6 +81,9 @@ extern DataType *DataType_ltype(DataType *); /* C
|
||||||
|
|
||||||
void DataType_add_reference(DataType *t);
|
void DataType_add_reference(DataType *t);
|
||||||
int DataType_is_reference(DataType *t);
|
int DataType_is_reference(DataType *t);
|
||||||
|
int DataType_is_pointer(DataType *t);
|
||||||
|
void DataType_add_pointer(DataType *t);
|
||||||
|
void DataType_del_pointer(DataType *t);
|
||||||
|
|
||||||
/* -- Old type interface. This is going away -- */
|
/* -- Old type interface. This is going away -- */
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue