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, " type %d\n", DataType_type(d));
|
||||
Printf (stderr, " name %s\n", DataType_Getname(d));
|
||||
Printf (stderr, " is_pointer %d\n", d->is_pointer);
|
||||
Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);
|
||||
Printf (stderr, " is_pointer %d\n", DataType_is_pointer(d));
|
||||
/* Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);*/
|
||||
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, " 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
|
||||
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);
|
||||
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);
|
||||
else {
|
||||
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);
|
||||
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
|
||||
look-up. */
|
||||
Printv(f->code, tab4,
|
||||
|
|
@ -656,7 +656,7 @@ GUILE::link_variable (char *name, char *iname, DataType *t)
|
|||
t, name, (char*)"s_0", name))) {
|
||||
Printf (f_wrappers, "%s\n", tm);
|
||||
}
|
||||
else if (t->is_pointer) {
|
||||
else if (DataType_is_pointer(t)) {
|
||||
if (DataType_type(t) == T_STRING) {
|
||||
Printf (f_wrappers, "\t\t _temp = gh_scm2newstr(s_0, &_len);\n");
|
||||
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"))) {
|
||||
Printf (f_wrappers, "%s\n", tm);
|
||||
}
|
||||
else if (t->is_pointer) {
|
||||
else if (DataType_is_pointer(t)) {
|
||||
if (DataType_type(t) == T_STRING) {
|
||||
Printf (f_wrappers, "\t gswig_result = gh_str02scm(%s);\n", name);
|
||||
} else {
|
||||
|
|
@ -831,8 +831,9 @@ GUILE::usage_func (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
|||
|
||||
// Print the type.
|
||||
Printv(usage, " <", DataType_Getname(pt), 0);
|
||||
if (pt->is_pointer) {
|
||||
for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {
|
||||
if (DataType_is_pointer(pt)) {
|
||||
/* for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {*/
|
||||
for (int j = 0; j < DataType_is_pointer(pt); j++) {
|
||||
Putc('*', usage);
|
||||
}
|
||||
}
|
||||
|
|
@ -881,8 +882,9 @@ GUILE::usage_returns (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
|||
|
||||
// Print the type.
|
||||
Printv(param," $", DataType_Getname(pt), 0);
|
||||
if (pt->is_pointer) {
|
||||
for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {
|
||||
if (DataType_is_pointer(pt)) {
|
||||
/* for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) { */
|
||||
for (j = 0; j < DataType_is_pointer(pt) - 1; j++) {
|
||||
Putc('*', param);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ static int useRegisterNatives = 0; // Set to 1 when doing stuff
|
|||
static DOHString *registerNativesList = 0;
|
||||
|
||||
char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
||||
if(t->is_pointer == 1) {
|
||||
if(DataType_is_pointer(t) == 1) {
|
||||
switch(DataType_Gettypecode(t)) {
|
||||
case T_INT: return (char*)"jintArray";
|
||||
case T_SHORT: return (char*)"jshortArray";
|
||||
|
|
@ -88,7 +88,7 @@ char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
|||
case T_VOID:
|
||||
case T_USER: return (char*)"jlong";
|
||||
}
|
||||
} else if(t->is_pointer > 1) {
|
||||
} else if(DataType_is_pointer(t) > 1) {
|
||||
if(ret)
|
||||
return (char*)"jlong";
|
||||
else return (char*)"jlongArray";
|
||||
|
|
@ -115,7 +115,7 @@ char *JAVA::SwigTcToJniType(DataType *t, int ret) {
|
|||
}
|
||||
|
||||
char *JAVA::SwigTcToJavaType(DataType *t, int ret, int inShadow) {
|
||||
if(t->is_pointer == 1) {
|
||||
if(DataType_is_pointer(t) == 1) {
|
||||
switch(DataType_Gettypecode(t)) {
|
||||
case T_INT: return (char*)"int []";
|
||||
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));
|
||||
else return (char*)"long";
|
||||
}
|
||||
} else if(t->is_pointer > 1) {
|
||||
} else if(DataType_is_pointer(t) > 1) {
|
||||
if(ret)
|
||||
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) {
|
||||
if(t->is_pointer == 1) {
|
||||
if(DataType_is_pointer(t) == 1) {
|
||||
switch(DataType_Gettypecode(t)) {
|
||||
case T_INT: return (char*)"Int";
|
||||
case T_SHORT: return (char*)"Short";
|
||||
|
|
@ -187,7 +187,7 @@ char *JAVA::SwigTcToJniScalarType(DataType *t) {
|
|||
}
|
||||
|
||||
char *JAVA::JavaMethodSignature(DataType *t, int ret, int inShadow) {
|
||||
if(t->is_pointer == 1) {
|
||||
if(DataType_is_pointer(t) == 1) {
|
||||
switch(DataType_Gettypecode(t)) {
|
||||
case T_INT: return (char*)"[I";
|
||||
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));
|
||||
else return (char*)"J";
|
||||
}
|
||||
} else if(t->is_pointer > 1) {
|
||||
} else if(DataType_is_pointer(t) > 1) {
|
||||
if(ret) return (char*)"J";
|
||||
else return (char*)"[J";
|
||||
} else {
|
||||
|
|
@ -638,27 +638,27 @@ void JAVA::create_function(char *name, char *iname, DataType *t, ParmList *l)
|
|||
Printf(f->code,"%s\n", tm);
|
||||
Replace(f->code,"$arg",source, DOH_REPLACE_ANY);
|
||||
} else {
|
||||
if(!pt->is_pointer)
|
||||
if(!DataType_is_pointer(pt))
|
||||
Printv(f->code, tab4, target, " = (", DataType_lstr(pt,0), ") ", source, ";\n", 0);
|
||||
else if((DataType_Gettypecode(pt) == T_VOID && pt->is_pointer == 1) ||
|
||||
(DataType_Gettypecode(pt) == T_USER && pt->is_pointer == 1)) {
|
||||
pt->is_pointer++;
|
||||
else if((DataType_Gettypecode(pt) == T_VOID && (DataType_is_pointer(pt) == 1)) ||
|
||||
(DataType_Gettypecode(pt) == T_USER && (DataType_is_pointer(pt) == 1))) {
|
||||
DataType_add_pointer(pt);
|
||||
Printv(f->code, tab4, target, " = *(", DataType_lstr(pt,0), ")&", source, ";\n", 0);
|
||||
pt->is_pointer--;
|
||||
DataType_del_pointer(pt);
|
||||
} else {
|
||||
if(DataType_type(pt) == T_STRING) {
|
||||
Printv(f->code, tab4, target, " = (", source, ") ? (char *)", JNICALL((char*)"GetStringUTFChars"), source, ", 0) : NULL;\n", 0);
|
||||
} else {
|
||||
char *scalarType = SwigTcToJniScalarType(pt);
|
||||
|
||||
pt->is_pointer--;
|
||||
const char *basic_jnitype = (pt->is_pointer > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||
DataType_del_pointer(pt);
|
||||
const char *basic_jnitype = (DataType_is_pointer(pt) > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||
char *ctype = DataType_lstr(pt,0);
|
||||
if(scalarType == NULL || basic_jnitype == NULL) {
|
||||
Printf(stderr, "\'%s\' does not have a in/jni typemap, and is not a basic type.\n", ctype);
|
||||
SWIG_exit(1);
|
||||
};
|
||||
pt->is_pointer++;
|
||||
DataType_add_pointer(pt);
|
||||
|
||||
DOHString *basic_jniptrtype = NewStringf("%s*",basic_jnitype);
|
||||
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, " = (", DataType_lstr(pt,0), ") malloc(", target_length, " * sizeof(", ctype, "));\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);
|
||||
} else {
|
||||
pt->is_pointer--;
|
||||
DataType_del_pointer(pt);
|
||||
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(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);
|
||||
} else {
|
||||
// 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) {
|
||||
Printv(outarg, tab4, "if(", target,") ", JNICALL((char*)"ReleaseStringUTFChars"), source, ", ", target, ");\n", 0);
|
||||
} else if(((DataType_Gettypecode(pt) == T_VOID) && pt->is_pointer == 1) ||
|
||||
((DataType_Gettypecode(pt) == T_USER) && pt->is_pointer == 1)) {
|
||||
} else if(((DataType_Gettypecode(pt) == T_VOID) && DataType_is_pointer(pt) == 1) ||
|
||||
((DataType_Gettypecode(pt) == T_USER) && DataType_is_pointer(pt) == 1)) {
|
||||
// nothing to do
|
||||
} else {
|
||||
char *scalarType = SwigTcToJniScalarType(pt);
|
||||
|
||||
pt->is_pointer--;
|
||||
const char *basic_jnitype = (pt->is_pointer > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||
DataType_del_pointer(pt);
|
||||
const char *basic_jnitype = (DataType_is_pointer(pt) > 0) ? "jlong" : SwigTcToJniType(pt, 0);
|
||||
char *ctype = DataType_lstr(pt,0);
|
||||
if(scalarType == NULL || basic_jnitype == NULL) {
|
||||
Printf(stderr, "\'%s\' does not have a argout/jni typemap, and is not a basic type.\n", ctype);
|
||||
SWIG_exit(1);
|
||||
};
|
||||
pt->is_pointer++;
|
||||
DataType_add_pointer(pt);
|
||||
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);
|
||||
} else {
|
||||
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);
|
||||
} else {
|
||||
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);
|
||||
t->is_pointer=0;
|
||||
} else if(t->is_pointer == 0 && (DataType_Gettypecode(t) != T_USER)) {
|
||||
DataType_del_pointer(t);
|
||||
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);
|
||||
} else if(((DataType_Gettypecode(t) == T_VOID) && t->is_pointer == 1) ||
|
||||
((DataType_Gettypecode(t) == T_USER) && t->is_pointer == 1)) {
|
||||
t->is_pointer++;
|
||||
} else if(((DataType_Gettypecode(t) == T_VOID) && DataType_is_pointer(t) == 1) ||
|
||||
((DataType_Gettypecode(t) == T_USER) && DataType_is_pointer(t) == 1)) {
|
||||
DataType_add_pointer(t);
|
||||
Printv(f->code, tab4, "*(", DataType_lstr(t,0), ")&_jresult = result;\n", 0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
} else {
|
||||
if(DataType_type(t) == T_STRING) {
|
||||
Printv(f->code, tab4, "if(result != NULL)\n", 0);
|
||||
Printv(f->code, tab8, "_jresult = (jstring)", JNICALL((char*)"NewStringUTF"), "result);\n", 0);
|
||||
} else {
|
||||
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);
|
||||
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);
|
||||
Delete(str);
|
||||
} else {
|
||||
if((type->is_pointer == 0)) {
|
||||
if((DataType_is_pointer(type) == 0)) {
|
||||
char *jtype = typemap_lookup((char*)"jtype", typemap_lang, type, name, name, iname);
|
||||
if(!jtype) jtype = SwigTcToJavaType(type, 0, 0);
|
||||
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
|
||||
|
||||
if (t->is_pointer > 1) return;
|
||||
if (DataType_is_pointer(t) > 1) return;
|
||||
|
||||
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);
|
||||
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
@ -1087,7 +1089,7 @@ void JAVA::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
|||
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);
|
||||
} 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);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
@ -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);
|
||||
if(!javarettype) javarettype = SwigTcToJavaType(t, 1, 0);
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
@ -1162,7 +1164,7 @@ void JAVA::cpp_static_func(char *name, char *iname, DataType *t, ParmList *l) {
|
|||
|
||||
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);
|
||||
} 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);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
@ -1232,14 +1234,14 @@ void JAVA::cpp_constructor(char *name, char *iname, ParmList *l) {
|
|||
if(!jtype) jtype = SwigTcToJavaType(pt, 0, 0);
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
// Add to java function header
|
||||
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);
|
||||
} 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, " type %d\n", DataType_Gettypecode(d));
|
||||
Printf (stderr, " name %s\n", DataType_Getname(d));
|
||||
Printf (stderr, " is_pointer %d\n", d->is_pointer);
|
||||
Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr);
|
||||
Printf (stderr, " is_pointer %d\n", DataType_is_pointer(d));
|
||||
/* Printf (stderr, "implicit_ptr %d\n", d->implicit_ptr); */
|
||||
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, " 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
|
||||
abort(); // for now -ttn
|
||||
|
|
@ -346,7 +346,7 @@ MZSCHEME::create_function (char *name, char *iname, DataType *d, ParmList *l)
|
|||
}
|
||||
// no typemap found
|
||||
// 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);
|
||||
}
|
||||
// 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
|
||||
// the C pointer and return it
|
||||
else if (d->is_pointer) {
|
||||
else if (DataType_is_pointer(d)) {
|
||||
Printv(f->code,
|
||||
tab4,
|
||||
"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);
|
||||
Delete(tm2);
|
||||
}
|
||||
else if (t->is_pointer) {
|
||||
else if (DataType_is_pointer(t)) {
|
||||
if (DataType_type(t) == T_STRING) {
|
||||
Printf (f_wrappers, "\t\t _temp = SCHEME_STR_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"))) {
|
||||
Printf (f_wrappers, "%s\n", tm);
|
||||
}
|
||||
else if (t->is_pointer) {
|
||||
else if (DataType_is_pointer(t)) {
|
||||
if (DataType_type(t) == T_STRING) {
|
||||
Printf (f_wrappers, "\t swig_result = scheme_make_string(%s);\n", name);
|
||||
} else {
|
||||
|
|
@ -702,8 +702,9 @@ MZSCHEME::usage_func (char *iname, DataType *d, ParmList *l, DOHString *usage)
|
|||
|
||||
// Print the type.
|
||||
Printv(usage," <", DataType_Getname(pt), 0);
|
||||
if (pt->is_pointer) {
|
||||
for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) {
|
||||
if (DataType_is_pointer(pt)) {
|
||||
/* for (int j = 0; j < (pt->is_pointer - pt->implicit_ptr); j++) { */
|
||||
for (int j = 0; j < DataType_is_pointer(pt); j++) {
|
||||
Putc('*', usage);
|
||||
}
|
||||
}
|
||||
|
|
@ -753,8 +754,9 @@ MZSCHEME::usage_returns (char *iname, DataType *d, ParmList *l, DOHString *usage
|
|||
|
||||
// Print the type.
|
||||
Printv(param," $",DataType_Getname(pt), 0);
|
||||
if (pt->is_pointer) {
|
||||
for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {
|
||||
if (DataType_is_pointer(pt)) {
|
||||
/* for (j = 0; j < (pt->is_pointer - pt->implicit_ptr - 1); j++) {*/
|
||||
for (j = 0; j < DataType_is_pointer(pt) - 1; j++) {
|
||||
Putc('*',param);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -146,6 +146,7 @@ static DOHString *pragma_include = 0;
|
|||
|
||||
|
||||
// Perl specific type mangler function
|
||||
#ifdef OLD
|
||||
static char *
|
||||
type_mangle(DataType *t) {
|
||||
static char result[128];
|
||||
|
|
@ -176,6 +177,7 @@ type_mangle(DataType *t) {
|
|||
*r = 0;
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
// ---------------------------------------------------------------------
|
||||
// PERL5::parse_args(int argc, char *argv[])
|
||||
|
|
@ -292,7 +294,7 @@ PERL5::parse() {
|
|||
modextern = NewString("");
|
||||
pragma_include = NewString("");
|
||||
|
||||
DataType_set_mangle(type_mangle);
|
||||
/* DataType_set_mangle(type_mangle);*/
|
||||
|
||||
// Print out PERL5 specific headers
|
||||
|
||||
|
|
@ -840,10 +842,10 @@ void PERL5::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
|||
|
||||
case T_USER:
|
||||
|
||||
pt->is_pointer++;
|
||||
DataType_add_pointer(pt);
|
||||
sprintf(temp,"argument %d", i+1);
|
||||
get_pointer(iname, temp, source, target, pt, f->code, (char *)"XSRETURN(1)");
|
||||
pt->is_pointer--;
|
||||
DataType_del_pointer(pt);
|
||||
break;
|
||||
|
||||
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
|
||||
|
||||
case T_USER:
|
||||
d->is_pointer++;
|
||||
DataType_add_pointer(d);
|
||||
Printv(f->code,
|
||||
tab4, "sv_setref_pv(ST(argvi++),\"",(hidden ? realpackage : ""), (hidden ? "::" : ""), DataType_manglestr(d),
|
||||
"\", (void *) result);\n", 0);
|
||||
d->is_pointer--;
|
||||
DataType_del_pointer(d);
|
||||
break;
|
||||
|
||||
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))) {
|
||||
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))
|
||||
Printf(func," if (scalar(@args) >= %d) {\n ", 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",
|
||||
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);
|
||||
|
||||
// If we're returning an object by value, put it's reference
|
||||
// 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));
|
||||
if (hidden)
|
||||
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
|
||||
// Get as a pointer value
|
||||
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
Wrapper_add_local(setf,"_temp", "void *_temp");
|
||||
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);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
break;
|
||||
|
||||
case T_STRING:
|
||||
|
|
@ -1263,7 +1265,7 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
|||
0);
|
||||
break;
|
||||
case T_USER:
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
Printv(getf->code,
|
||||
tab4, "rsv = SvRV(sv);\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");
|
||||
Printv(vinit, tab4, "sv_setref_pv(sv,\"", DataType_manglestr(t), "\",(void *) &", name, ");\n",0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
|
||||
break;
|
||||
|
||||
|
|
@ -1311,7 +1313,7 @@ void PERL5::link_variable(char *name, char *iname, DataType *t)
|
|||
// 2. Otherwise, just hack Perl's symbol table
|
||||
|
||||
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,
|
||||
"\nmy %__", iname, "_hash;\n",
|
||||
"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 ((Getattr(classes,DataType_Getname(type))) && (type->is_pointer <= 1)) {
|
||||
if ((Getattr(classes,DataType_Getname(type))) && (DataType_is_pointer(type) <= 1)) {
|
||||
Printv(var_stubs,
|
||||
"\nmy %__", name, "_hash;\n",
|
||||
"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);
|
||||
}
|
||||
// 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
|
||||
|
||||
if (i >= (pcount - numopt))
|
||||
|
|
@ -1910,14 +1912,14 @@ void PERL5::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l) {
|
|||
"}\n",
|
||||
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);
|
||||
|
||||
// If we're returning an object by value, put it's reference
|
||||
// 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));
|
||||
if (hidden)
|
||||
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
|
||||
|
||||
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
|
||||
// entry to the members list
|
||||
|
|
@ -2074,7 +2076,7 @@ void PERL5::cpp_constructor(char *name, char *iname, ParmList *l) {
|
|||
DataType *pt = Gettype(p);
|
||||
// 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
|
||||
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
|
||||
|
||||
if (t->is_pointer > 1) return;
|
||||
if (DataType_is_pointer(t) > 1) return;
|
||||
|
||||
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);
|
||||
Printf(arglist,"&%s",source);
|
||||
pt->is_pointer++;
|
||||
DataType_add_pointer(pt);
|
||||
get_pointer(iname, temp, source, target, pt, get_pointers, (char*)"NULL");
|
||||
pt->is_pointer--;
|
||||
DataType_del_pointer(pt);
|
||||
noarg = 1;
|
||||
break;
|
||||
|
||||
|
|
@ -900,10 +900,10 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
|||
break;
|
||||
|
||||
case T_USER :
|
||||
d->is_pointer++;
|
||||
DataType_add_pointer(d);
|
||||
DataType_remember(d);
|
||||
Printv(f->code,tab4, "resultobj = SWIG_NewPointerObj((void *)result, SWIGTYPE", DataType_manglestr(d), ");\n",0);
|
||||
d->is_pointer--;
|
||||
DataType_del_pointer(d);
|
||||
break;
|
||||
|
||||
case T_STRING:
|
||||
|
|
@ -982,7 +982,7 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
|||
|
||||
|
||||
// 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;
|
||||
munge_return = 1;
|
||||
}
|
||||
|
|
@ -1008,8 +1008,8 @@ void PYTHON::create_function(char *name, char *iname, DataType *d, ParmList *l)
|
|||
|
||||
if (!have_output) {
|
||||
Printv(func, tab4, "if val: val = ", GetChar(hash,DataType_Getname(d)), "Ptr(val)", 0);
|
||||
if (((Getattr(hash,DataType_Getname(d))) && (d->is_pointer < 1)) ||
|
||||
((Getattr(hash,DataType_Getname(d))) && (d->is_pointer == 1) && NewObject))
|
||||
if (((Getattr(hash,DataType_Getname(d))) && (DataType_is_pointer(d) < 1)) ||
|
||||
((Getattr(hash,DataType_Getname(d))) && (DataType_is_pointer(d) == 1) && NewObject))
|
||||
Printf(func, "; val.thisown = 1\n");
|
||||
else
|
||||
Printf(func,"\n");
|
||||
|
|
@ -1127,11 +1127,11 @@ void PYTHON::link_variable(char *name, char *iname, DataType *t) {
|
|||
0);
|
||||
break;
|
||||
case T_USER:
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
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");
|
||||
Printv(setf->code, tab4, name, " = *temp;\n", 0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
break;
|
||||
|
||||
case T_STRING:
|
||||
|
|
@ -1219,13 +1219,13 @@ void PYTHON::link_variable(char *name, char *iname, DataType *t) {
|
|||
break;
|
||||
case T_USER:
|
||||
// Hack this into a pointer
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
DataType_remember(t);
|
||||
Printv(getf->code,
|
||||
tab4, "pyobj = SWIG_NewPointerObj((void *) &", name ,
|
||||
", SWIGTYPE", DataType_manglestr(t), ");\n",
|
||||
0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
break;
|
||||
case T_STRING:
|
||||
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)
|
||||
// ----------------------------------------------------------
|
||||
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,
|
||||
iname, " = ", GetChar(hash,DataType_Getname(t)), "Ptr(", module, ".", global_name,
|
||||
".", iname, ")\n",
|
||||
|
|
@ -1694,7 +1694,7 @@ void PYTHON::cpp_member_func(char *name, char *iname, DataType *t, ParmList *l)
|
|||
if (strcmp(realname,"__repr__") == 0)
|
||||
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,
|
||||
class_name, ".", realname, " = new.instancemethod(", module, ".", Swig_name_member(class_name,realname), ", None, ", class_name, ")\n",
|
||||
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);
|
||||
|
||||
// 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 (!have_output) {
|
||||
Printv(pyclass, tab8, "if val: val = ", GetChar(hash,DataType_Getname(t)), "Ptr(val) ", 0);
|
||||
if (((Getattr(hash,DataType_Getname(t))) && (t->is_pointer < 1)) ||
|
||||
((Getattr(hash,DataType_Getname(t))) && (t->is_pointer == 1) && NewObject))
|
||||
if (((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) < 1)) ||
|
||||
((Getattr(hash,DataType_Getname(t))) && (DataType_is_pointer(t) == 1) && NewObject))
|
||||
Printf(pyclass, "; val.thisown = 1\n");
|
||||
else
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
if (t->is_pointer > 1) return;
|
||||
if (DataType_is_pointer(t) > 1) return;
|
||||
|
||||
if (Getattr(hash,name)) return; // Already added
|
||||
|
||||
|
|
|
|||
|
|
@ -178,8 +178,7 @@ void RUBY::parse() {
|
|||
// typedef void *VALUE
|
||||
DataType *value = NewDataType(T_VOID);
|
||||
DataType_Setname(value,"void");
|
||||
value->is_pointer = 1;
|
||||
value->implicit_ptr = 0;
|
||||
DataType_add_pointer(value);
|
||||
DataType_typedef_add(value,(char*)"VALUE",0);
|
||||
|
||||
yyparse(); // Run the SWIG parser
|
||||
|
|
@ -683,11 +682,11 @@ void RUBY::link_variable(char *name, char *iname, DataType *t) {
|
|||
Delete(s);
|
||||
} else if (DataType_type(t) == T_USER) {
|
||||
// Hack this into a pointer
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
DataType_remember(t);
|
||||
Printv(getf->code, tab4, "_val = SWIG_NewPointerObj((void *)&", name,
|
||||
", \"", DataType_manglestr(t), "\");\n", 0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
} else {
|
||||
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
||||
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);
|
||||
Delete(s);
|
||||
} 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);
|
||||
Printv(setf->code, tab4, "temp = (", DataType_lstr(t,0), ")",
|
||||
"SWIG_ConvertPtr(_val, \"", DataType_manglestr(t), "\");\n",
|
||||
0);
|
||||
Printv(setf->code, tab4, name, " = *temp;\n",0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
} else {
|
||||
Printf(stderr,"%s: Line %d. Unable to link with variable type %s\n",
|
||||
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) {
|
||||
Printf(s,"$target = $source;");
|
||||
} 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));
|
||||
Printv(s, "$target = Wrap_", cls->cname, "(", vname, ", $source);",0);
|
||||
} 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);
|
||||
} else {
|
||||
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.
|
||||
|
||||
case T_USER:
|
||||
pt->is_pointer++;
|
||||
DataType_add_pointer(pt);
|
||||
DataType_remember(pt);
|
||||
Putc('p',argstr);
|
||||
Printv(args, ",&", target, ", SWIGTYPE", DataType_manglestr(pt), 0);
|
||||
pt->is_pointer--;
|
||||
DataType_del_pointer(pt);
|
||||
break;
|
||||
|
||||
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.
|
||||
// Probably dangerous, but who said safety was a good thing?
|
||||
|
||||
d->is_pointer++;
|
||||
DataType_add_pointer(d);
|
||||
DataType_remember(d);
|
||||
Printv(f->code, tab4, "Tcl_SetObjResult(interp,SWIG_NewPointerObj((void *) result,SWIGTYPE",
|
||||
DataType_manglestr(d), "));\n", 0);
|
||||
|
||||
d->is_pointer--;
|
||||
DataType_del_pointer(d);
|
||||
break;
|
||||
|
||||
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(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(set,"addr",DataType_str(t,0),"addr",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);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
Wrapper_add_local(set, "value", "char *value");
|
||||
Wrapper_add_local(get, "value", "Tcl_Obj *value");
|
||||
|
||||
|
|
@ -822,7 +822,7 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
|||
break;
|
||||
case T_USER:
|
||||
// User defined type. We return it as a pointer
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
DataType_remember(t);
|
||||
Printv(set->code, tab4, "{\n",
|
||||
tab8, "void *ptr;\n",
|
||||
|
|
@ -833,7 +833,7 @@ void TCL8::link_variable(char *name, char *iname, DataType *t)
|
|||
tab4, "}\n",
|
||||
0);
|
||||
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
break;
|
||||
case T_STRING:
|
||||
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:
|
||||
Wrapper_add_local(get,"value", "Tcl_Obj *value");
|
||||
t->is_pointer++;
|
||||
DataType_add_pointer(t);
|
||||
DataType_remember(t);
|
||||
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_DecrRefCount(value);\n",0);
|
||||
t->is_pointer--;
|
||||
DataType_del_pointer(t);
|
||||
break;
|
||||
|
||||
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);
|
||||
sprintf(var_name,"%s_char",var_name);
|
||||
t = NewDataType(T_CHAR);
|
||||
t->is_pointer = 1;
|
||||
DataType_add_pointer(t);
|
||||
link_variable(var_name,name,t);
|
||||
DelDataType(t);
|
||||
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);
|
||||
sprintf(var_name,"%s_char",var_name);
|
||||
t = NewDataType(T_CHAR);
|
||||
t->is_pointer = 1;
|
||||
DataType_add_pointer(t);
|
||||
link_variable(var_name,name,t);
|
||||
DelDataType(t);
|
||||
break;
|
||||
|
|
@ -1031,10 +1031,10 @@ void TCL8::declare_const(char *name, char *, DataType *type, char *value) {
|
|||
break;
|
||||
|
||||
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);
|
||||
link_variable(var_name,name,type);
|
||||
type->is_pointer--;
|
||||
DataType_del_pointer(type);
|
||||
break;
|
||||
|
||||
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);
|
||||
|
||||
t = NewDataType(T_CHAR);
|
||||
t->is_pointer = 1;
|
||||
DataType_add_pointer(t);
|
||||
DataType_remember(type);
|
||||
Printf(f_init,"\t SWIG_MakePtr(%s_char, (void *) %s, SWIGTYPE%s);\n",
|
||||
var_name, var_name, DataType_manglestr(type));
|
||||
|
|
@ -1258,7 +1258,7 @@ void TCL8::cpp_close_class() {
|
|||
t = NewDataType(T_USER);
|
||||
sprintf(temp,"%s%s", class_type, real_classname);
|
||||
DataType_Setname(t,temp);
|
||||
t->is_pointer = 1;
|
||||
DataType_add_pointer(t);
|
||||
|
||||
if (have_destructor) {
|
||||
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
|
||||
|
||||
if (t->is_pointer > 1) return;
|
||||
if (DataType_is_pointer(t) > 1) return;
|
||||
if (Getattr(hash,name)) return; // Already added
|
||||
|
||||
// Now look up the datatype in our shadow class hash table
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue