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:
Dave Beazley 2000-08-06 16:36:43 +00:00
commit 01c0c668a3
14 changed files with 339 additions and 318 deletions

View file

@ -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);
}
}

View file

@ -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);

View file

@ -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);
}
}

View file

@ -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

View file

@ -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

View file

@ -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);

View file

@ -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

View file

@ -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*)""))) {
Printv(f->code,tm,0);
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);
Replace(f->code,"$name",decl,DOH_REPLACE_ANY);
} else {

View file

@ -456,7 +456,7 @@ int SWIG_main(int argc, char *argv[], Language *l) {
// Set up the typemap for handling new return strings
{
DataType *temp_t = NewDataType(T_CHAR);
temp_t->is_pointer++;
DataType_add_pointer(temp_t);
if (CPlusPlus)
typemap_register((char*)"newfree",typemap_lang,temp_t,(char*)"",(char*)"delete [] $source;\n",0);
else

View file

@ -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 (t->status & STAT_READONLY) Status = Status | STAT_READONLY;
if (t->_status & STAT_READONLY) Status = Status | STAT_READONLY;
// Now dump it out
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) {
type->is_pointer++;
type->_is_pointer++;
}
if (!value) value = Swig_copy_string(name);
sprintf(temp_name,"const:%s", name);
@ -648,10 +648,10 @@ statement : INCLUDE STRING LBRACE {
if (Active_type) DelDataType(Active_type);
Active_type = CopyDataType($2);
Active_extern = $1;
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
if ($4 > 0) {
$2->is_pointer++;
$2->status = STAT_READONLY;
$2->_is_pointer++;
$2->_status = STAT_READONLY;
DataType_set_arraystr($2,Char(ArrayString));
}
if ($3.is_reference) {
@ -705,7 +705,7 @@ statement : INCLUDE STRING LBRACE {
if (Active_type) DelDataType(Active_type);
Active_type = CopyDataType($2);
Active_extern = $1;
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
if ($3.is_reference) DataType_add_reference($2);
create_function($1, $3.id, $2, $5);
DelDataType($2);
@ -717,7 +717,7 @@ statement : INCLUDE STRING LBRACE {
| extern type declaration LPAREN parms RPAREN func_end {
init_language();
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);
DelDataType($2);
Delete($5);
@ -728,7 +728,7 @@ statement : INCLUDE STRING LBRACE {
| extern declaration LPAREN parms RPAREN cpp_const {
init_language();
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);
create_function($1,$2.id,t,$4);
DelDataType(t);
@ -740,7 +740,7 @@ statement : INCLUDE STRING LBRACE {
if (Inline) {
if (strlen(Char(CCode))) {
init_language();
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
if ($3.is_reference) DataType_add_reference($2);
create_function(0, $3.id, $2, $5);
}
@ -753,7 +753,7 @@ statement : INCLUDE STRING LBRACE {
| INLINE type declaration LPAREN parms RPAREN func_end {
init_language();
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
if ($3.is_reference) DataType_add_reference($2);
if (Inline) {
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 {
if (!WrapExtern) {
init_language();
$6->is_pointer += $7.is_pointer;
$6->_is_pointer += $7.is_pointer;
if (add_symbol($3)) {
fprintf(stderr,"%s : Line %d. Name of native function %s conflicts with previous declaration (ignored)\n",
input_file, line_number, $3);
@ -1004,8 +1004,8 @@ statement : INCLUDE STRING LBRACE {
init_language();
if ($3) {
DataType_Settypecode(temp_type,T_INT);
temp_type->is_pointer = 0;
temp_type->implicit_ptr = 0;
temp_type->_is_pointer = 0;
temp_type->_implicit_ptr = 0;
DataType_Setname(temp_type,"int");
DataType_typedef_add(temp_type,$3,1);
lang->add_typedef(temp_type,$3);
@ -1017,8 +1017,8 @@ statement : INCLUDE STRING LBRACE {
| TYPEDEF ENUM ename LBRACE { scanner_clear_start(); } enumlist RBRACE ID {
init_language();
DataType_Settypecode(temp_type,T_INT);
temp_type->is_pointer = 0;
temp_type->implicit_ptr = 0;
temp_type->_is_pointer = 0;
temp_type->_implicit_ptr = 0;
DataType_Setname(temp_type,"int");
Active_typedef = CopyDataType(temp_type);
DataType_typedef_add(temp_type,$8,1);
@ -1242,7 +1242,7 @@ typedef_decl : TYPEDEF type declaration {
init_language();
/* Add a new typedef */
Active_typedef = CopyDataType($2);
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
DataType_typedef_add($2, $3.id,0);
lang->add_typedef($2,$3.id);
/* If this is %typedef, add it to the header */
@ -1263,7 +1263,7 @@ typedef_decl : TYPEDEF type declaration {
}
DataType_Setname($2,"<function ptr>");
DataType_Settypecode($2,T_USER);
$2->is_pointer = 1;
$2->_is_pointer = 1;
DataType_typedef_add($2,$5,1);
lang->add_typedef($2,$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 {
init_language();
if ($1) {
$2->is_pointer += $3;
$2->_is_pointer += $3;
sprintf(temp_name,"(*%s)",$6);
fprintf(f_header,"typedef ");
emit_extern_func(temp_name, $2,$9,0,f_header);
@ -1286,7 +1286,7 @@ typedef_decl : TYPEDEF type declaration {
/* Typedef'd pointer */
DataType_Setname($2,"<function ptr>");
DataType_Settypecode($2,T_USER);
$2->is_pointer = 1;
$2->_is_pointer = 1;
DataType_typedef_add($2,$6,1);
lang->add_typedef($2,$6);
cplus_register_type($6);
@ -1302,10 +1302,10 @@ typedef_decl : TYPEDEF type declaration {
Active_typedef = CopyDataType($2);
// This datatype is going to be readonly
$2->status = STAT_READONLY | STAT_REPLACETYPE;
$2->is_pointer += $3.is_pointer;
$2->_status = STAT_READONLY | STAT_REPLACETYPE;
$2->_is_pointer += $3.is_pointer;
// Turn this into a "pointer" corresponding to the array
$2->is_pointer++;
$2->_is_pointer++;
DataType_set_arraystr($2,Char(ArrayString));
DataType_typedef_add($2,$3.id,0);
lang->add_typedef($2,$3.id);
@ -1329,7 +1329,7 @@ typedeflist : COMMA declaration typedeflist {
if (Active_typedef) {
DataType *t;
t = CopyDataType(Active_typedef);
t->is_pointer += $2.is_pointer;
t->_is_pointer += $2.is_pointer;
DataType_typedef_add(t,$2.id,0);
lang->add_typedef(t,$2.id);
cplus_register_type($2.id);
@ -1339,8 +1339,8 @@ typedeflist : COMMA declaration typedeflist {
| COMMA declaration array {
DataType *t;
t = CopyDataType(Active_typedef);
t->status = STAT_READONLY | STAT_REPLACETYPE;
t->is_pointer += $2.is_pointer + 1;
t->_status = STAT_READONLY | STAT_REPLACETYPE;
t->_is_pointer += $2.is_pointer + 1;
DataType_set_arraystr(t,Char(ArrayString));
DataType_typedef_add(t,$2.id,0);
lang->add_typedef(t,$2.id);
@ -1375,10 +1375,10 @@ stail : SEMI { }
| COMMA declaration array2 def_args {
init_language();
temp_typeptr = CopyDataType(Active_type);
temp_typeptr->is_pointer += $2.is_pointer;
temp_typeptr->_is_pointer += $2.is_pointer;
if ($3 > 0) {
temp_typeptr->is_pointer++;
temp_typeptr->status = STAT_READONLY;
temp_typeptr->_is_pointer++;
temp_typeptr->_status = STAT_READONLY;
DataType_set_arraystr(temp_typeptr,Char(ArrayString));
}
if ($2.is_reference) {
@ -1400,7 +1400,7 @@ stail : SEMI { }
| COMMA declaration LPAREN parms RPAREN cpp_const {
init_language();
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);
create_function(Active_extern, $2.id, temp_typeptr, $4);
DelDataType(temp_typeptr);
@ -1455,7 +1455,7 @@ parm : parm_type {
parm_type : type pname {
if (InArray) {
$1->is_pointer++;
$1->_is_pointer++;
// Add array string to the type
DataType_set_arraystr($1, Char(ArrayString));
}
@ -1467,10 +1467,10 @@ parm_type : type pname {
| type stars pname {
$$ = NewParm($1,$3);
Gettype($$)->is_pointer+=$2;
Gettype($$)->_is_pointer+=$2;
Setvalue($$,DefArg);
if (InArray) {
Gettype($$)->is_pointer++;
Gettype($$)->_is_pointer++;
// Add array string to the type
DataType_set_arraystr(Gettype($$), Char(ArrayString));
}
@ -1482,7 +1482,7 @@ parm_type : type pname {
$$ = NewParm($1,$3);
DataType *pt = Gettype($$);
DataType_add_reference(pt);
pt->is_pointer++;
pt->_is_pointer++;
Setvalue($$,DefArg);
if (!CPlusPlus) {
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];
sprintf(temp,"%s %s", $2,$3);
DataType_Setname(Active_typedef,temp);
Active_typedef->is_pointer = 0;
Active_typedef->implicit_ptr = 0;
Active_typedef->_is_pointer = 0;
Active_typedef->_implicit_ptr = 0;
// Clean up the inheritance list
if ($4.names) {
@ -2205,7 +2205,7 @@ cpp_class :
lang->add_typedef(Active_typedef,$9.id);
} else {
DataType *t = CopyDataType(Active_typedef);
t->is_pointer += $9.is_pointer;
t->_is_pointer += $9.is_pointer;
DataType_typedef_add(t,$9.id,0);
lang->add_typedef(t,$9.id);
cplus_register_type($9.id);
@ -2278,7 +2278,7 @@ cpp_other :/* A dummy class name */
if (!CPlusPlus)
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);
// Fix up the function name
sprintf(temp_name,"%s::%s",$3.id,$5);
@ -2297,7 +2297,7 @@ cpp_other :/* A dummy class name */
if (!CPlusPlus)
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
sprintf(temp_name,"%s::%s",$3.id,$5);
if (!Rename_true) {
@ -2366,7 +2366,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
char *iname;
init_language();
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);
iname = make_name($2.id);
if (iname == $2.id) iname = 0;
@ -2383,7 +2383,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
char *iname;
init_language();
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);
iname = make_name($3.id);
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 (Active_type) DelDataType(Active_type);
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 (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.
if ($3.type != T_ERROR) {
iname = make_name($2.id);
@ -2455,7 +2455,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
} else {
int oldstatus = Status;
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*)"")))
Status = Status | STAT_READONLY;
}
@ -2467,7 +2467,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
} else {
char *tm = 0;
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*)"")))
Status = Status | STAT_READONLY;
}
@ -2489,7 +2489,7 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
if (cplus_mode == CPLUS_PUBLIC) {
if (Active_type) DelDataType(Active_type);
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);
DataType_set_arraystr($1,Char(ArrayString));
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;
init_language();
if (cplus_mode == CPLUS_PUBLIC) {
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
iname = make_name($3.id);
if (iname == $3.id) iname = 0;
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 {
char *iname;
$2->is_pointer += $3.is_pointer;
$2->_is_pointer += $3.is_pointer;
if ($3.is_reference) DataType_add_reference($2);
if (cplus_mode == CPLUS_PUBLIC) {
iname = make_name($3.id);
@ -2583,8 +2583,8 @@ cpp_member : type declaration LPAREN parms RPAREN cpp_end {
if ($2) {
cplus_register_type($2);
DataType_Settypecode(temp_type,T_INT);
temp_type->is_pointer = 0;
temp_type->implicit_ptr = 0;
temp_type->_is_pointer = 0;
temp_type->_implicit_ptr = 0;
DataType_Setname(temp_type,"int");
DataType_typedef_add(temp_type,$2,1);
lang->add_typedef(temp_type,$2);
@ -2666,7 +2666,7 @@ cpp_pragma : PRAGMA ID stylearg {
n->name = Swig_copy_string($5.id);
n->line = start_line;
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);
n->next = 0;
add_nested(n);
@ -2691,7 +2691,7 @@ cpp_pragma : PRAGMA ID stylearg {
n->name = Swig_copy_string($4.id);
n->line = start_line;
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);
n->next = 0;
add_nested(n);
@ -2743,8 +2743,8 @@ cpp_tail : SEMI { }
init_language();
if (cplus_mode == CPLUS_PUBLIC) {
temp_typeptr = CopyDataType(Active_type);
temp_typeptr->is_pointer += $2.is_pointer;
if (temp_typeptr->status & STAT_READONLY) {
temp_typeptr->_is_pointer += $2.is_pointer;
if (temp_typeptr->_status & STAT_READONLY) {
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,temp_typeptr,$2.id,(char*)"",(char*)"")))
Status = Status | STAT_READONLY;
}
@ -2761,10 +2761,10 @@ cpp_tail : SEMI { }
init_language();
if (cplus_mode == CPLUS_PUBLIC) {
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*)"")))
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);
Status = oldstatus;
if (!tm)
@ -3050,9 +3050,9 @@ objc_var : type declaration {
char *iname;
if (Active_type) DelDataType(Active_type);
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 ($1->status & STAT_READONLY) {
if ($1->_status & STAT_READONLY) {
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,$1,$2.id,(char*)"",(char*)"")))
Status = Status | STAT_READONLY;
}
@ -3070,10 +3070,10 @@ objc_var : type declaration {
char *tm, *iname;
if (Active_type) DelDataType(Active_type);
Active_type = CopyDataType($1);
$1->is_pointer += $2.is_pointer;
$1->_is_pointer += $2.is_pointer;
if ($2.is_reference) DataType_add_reference($1);
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*)"")))
Status = Status | STAT_READONLY;
}
@ -3095,9 +3095,9 @@ objc_vartail : COMMA declaration objc_vartail {
int oldstatus = Status;
char *tm, *iname;
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 (t->status & STAT_READONLY) {
if (t->_status & STAT_READONLY) {
if (!(tm = typemap_lookup((char*)"memberin",typemap_lang,t,$2.id,(char*)"",(char*)"")))
Status = Status | STAT_READONLY;
}
@ -3115,10 +3115,10 @@ objc_vartail : COMMA declaration objc_vartail {
int oldstatus = Status;
char *tm;
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);
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*)"")))
Status = Status | STAT_READONLY;
}
@ -3206,13 +3206,13 @@ objc_ret_type : LPAREN type RPAREN {
}
| LPAREN type stars RPAREN {
$$ = $2;
$$->is_pointer += $3;
$$->_is_pointer += $3;
}
| empty { /* Empty type means "id" type */
$$ = NewDataType(T_VOID);
DataType_Setname($$,"id");
$$->is_pointer = 1;
$$->implicit_ptr = 1;
$$->_is_pointer = 1;
$$->_implicit_ptr = 1;
}
;
@ -3223,8 +3223,8 @@ objc_arg_type : LPAREN parm RPAREN {
| empty {
$$ = NewDataType(T_VOID);
DataType_Setname($$,"id");
$$->is_pointer = 1;
$$->implicit_ptr = 1;
$$->_is_pointer = 1;
$$->_implicit_ptr = 1;
}
;
@ -3314,7 +3314,7 @@ tm_tail : COMMA typemap_parm tm_tail {
typemap_parm : type typemap_name {
if (InArray) {
$1->is_pointer++;
$1->_is_pointer++;
DataType_set_arraystr($1,Char(ArrayString));
}
$$ = NewTMParm();
@ -3328,9 +3328,9 @@ typemap_parm : type typemap_name {
$$ = NewTMParm();
$$->p = NewParm($1,$3);
DataType *pt = Gettype($$->p);
pt->is_pointer += $2;
pt->_is_pointer += $2;
if (InArray) {
pt->is_pointer++;
pt->_is_pointer++;
DataType_set_arraystr(pt,Char(ArrayString));
}
$$->args = tm_parm;
@ -3343,7 +3343,7 @@ typemap_parm : type typemap_name {
$$->p = NewParm($1,$3);
DataType *pt = Gettype($$->p);
DataType_add_reference(pt);
pt->is_pointer++;
pt->_is_pointer++;
if (!CPlusPlus) {
fprintf(stderr,"%s : Line %d. Warning. Use of C++ Reference detected. Use the -c++ option.\n", input_file, line_number);
}

View file

@ -226,8 +226,8 @@ static char *typemap_string(char *lang, DataType *type, char *pname, char *ary,
int old_status;
if (!str) str = NewString("");
old_status = type->status;
type->status = 0;
old_status = type->_status;
type->_status = 0;
Clear(str);
if (ary)
@ -235,7 +235,7 @@ static char *typemap_string(char *lang, DataType *type, char *pname, char *ary,
else
Printv(str, lang, DataType_str(type,0), pname, suffix,0);
type->status = old_status;
type->_status = old_status;
return Char(str);
}
@ -334,7 +334,6 @@ void typemap_register(char *op, char *lang, char *type, char *pname,
DataType *temp;
temp = NewDataType(0);
DataType_Setname(temp,type);
temp->is_pointer = 0;
DataType_Settypecode(temp,T_USER);
typemap_register(op,lang,temp,pname,getcode,args);
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 */
t->is_pointer = ptr;
t->_is_pointer = ptr;
DataType_set_arraystr(t,arraystr);
/* 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 */
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 */
if (!tm) {
key = typemap_string(lang,type,(char*)"",DataType_arraystr(type),op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
}
if (!tm) {
@ -439,10 +438,10 @@ TypeMap *typemap_search_array(char *op, char *lang, DataType *type, char *pname,
}
DataType_set_arraystr(type, Char(tempastr));
key = typemap_string(lang,type,pname,DataType_arraystr(type),op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
if (!tm) {
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);
if (tm) {
@ -501,7 +500,7 @@ static void typemap_locals(DataType *t, char *pname, DOHString *s, ParmList *l,
/* Have a real parameter here */
if (DataType_arraystr(tt)) {
tt->is_pointer--;
DataType_del_pointer(tt);
Printf(str,"%s%s",pn, DataType_arraystr(tt));
}
else {
@ -512,18 +511,18 @@ static void typemap_locals(DataType *t, char *pname, DOHString *s, ParmList *l,
Replace(str,"$arg",pname, DOH_REPLACE_ANY);
if (strcmp(DataType_Getname(pt),"$basetype")==0) {
/* use $basetype */
char temp_ip = tt->is_pointer;
char temp_ip1 = tt->implicit_ptr;
tt->is_pointer = 0;
tt->implicit_ptr = 0;
char temp_ip = tt->_is_pointer;
char temp_ip1 = tt->_implicit_ptr;
tt->_is_pointer = 0;
tt->_implicit_ptr = 0;
new_name = Wrapper_new_localv(f,str, DataType_str(tt,0), str, 0);
tt->is_pointer = temp_ip;
tt->implicit_ptr = temp_ip1;
tt->_is_pointer = temp_ip;
tt->_implicit_ptr = temp_ip1;
}
else
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 */
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 */
if (!tm) {
key = typemap_string(lang,type,pname,0,op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
if (tm)
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 */
if (!tm) {
key = typemap_string(lang,type,(char*)"",0,op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
if (tm)
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) */
{
char temp_ip = realtype->is_pointer;
char temp_ip1 = realtype->implicit_ptr;
realtype->is_pointer = 0;
realtype->implicit_ptr = 0;
char temp_ip = realtype->_is_pointer;
char temp_ip1 = realtype->_implicit_ptr;
realtype->_is_pointer = 0;
realtype->_implicit_ptr = 0;
char *bt = DataType_str(realtype,0);
if (bt[strlen(bt)-1] == ' ')
bt[strlen(bt)-1] = 0;
Replace(str,"$basetype",bt,DOH_REPLACE_ANY);
Replace(str,"$basemangle",DataType_manglestr(realtype), DOH_REPLACE_ANY);
realtype->is_pointer = temp_ip;
realtype->implicit_ptr = temp_ip1;
realtype->_is_pointer = temp_ip;
realtype->_implicit_ptr = temp_ip1;
}
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
drop pointers off until we get a match. */
while (drop_pointer <= (type->is_pointer - type->implicit_ptr)) {
type->is_pointer -= drop_pointer;
while (drop_pointer <= (type->_is_pointer - type->_implicit_ptr)) {
type->_is_pointer -= drop_pointer;
tstr = DataType_str(type,0);
sprintf(temp,"%s$%s",tstr,ppname);
/* 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 (*(m->name)) ppname = m->name;
else ppname = pname;
m->type->is_pointer += drop_pointer;
m->type->_is_pointer += drop_pointer;
/* 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);
if (oldary)
free(oldary);
m->type->is_pointer -= drop_pointer;
m->type->_is_pointer -= drop_pointer;
if (result) {
type->is_pointer += drop_pointer;
type->_is_pointer += drop_pointer;
return result;
}
m = m->next;
}
}
type->is_pointer += drop_pointer;
type->_is_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)) {
/* Still no result, go even more primitive */
DataType_Settypecode(t, T_USER);
t->is_pointer = 1;
t->_is_pointer = 1;
DataType_set_arraystr(t,0);
DataType_primitive(t);
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) {
* 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 */
if (!tm) {
key = typemap_string(lang,type,pname,0,op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
}
/* Check for unnamed array */
if ((!tm) && (DataType_arraystr(type))) {
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 */
if (!tm) {
key = typemap_string(lang,type,(char*)"",0,op);
tm = typemap_search(key,type->id);
tm = typemap_search(key,type->_id);
}
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
drop pointers off until we get a match. */
while (drop_pointer <= (type->is_pointer - type->implicit_ptr)) {
type->is_pointer -= drop_pointer;
while (drop_pointer <= (type->_is_pointer - type->_implicit_ptr)) {
type->_is_pointer -= drop_pointer;
tstr = DataType_str(type,0);
sprintf(temp,"%s$%s",tstr,ppname);
/* 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 (*(m->name)) ppname = m->name;
else ppname = pname;
m->type->is_pointer += drop_pointer;
m->type->_is_pointer += drop_pointer;
if (DataType_arraystr(m->type))
oldary = Swig_copy_string(DataType_arraystr(m->type));
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);
DataType_set_arraystr(m->type,oldary);
if (oldary) free(oldary);
m->type->is_pointer -= drop_pointer;
m->type->_is_pointer -= drop_pointer;
if (result) {
type->is_pointer += drop_pointer;
type->_is_pointer += drop_pointer;
return result;
}
m = m->next;
}
}
type->is_pointer += drop_pointer;
type->_is_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)) {
/* Still no result, go even more primitive */
DataType_Settypecode(t,T_USER);
t->is_pointer = 1;
t->_is_pointer = 1;
DataType_set_arraystr(t,0);
DataType_primitive(t);
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 */
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 (strcmp(DataType_Getname(ttype),"PREVIOUS") == 0) {
/* Pop back up to the previous typemap (if any) */

View file

@ -50,12 +50,12 @@ Swig_clocal(DataType *t, DOHString_or_char *name, DOHString_or_char *value) {
Clear(decl);
switch(DataType_type(t)) {
case T_USER:
t->is_pointer++;
DataType_add_pointer(t);
if (value)
Printf(decl,"%s = &%s", DataType_lstr(t,name), value);
else
Printf(decl,"%s", DataType_lstr(t,name));
t->is_pointer--;
DataType_del_pointer(t);
break;
case T_REFERENCE:
if (value)
@ -86,9 +86,9 @@ Swig_clocal_type(DataType *t) {
DataType *ty;
switch(DataType_type(t)) {
case T_USER:
t->is_pointer++;
DataType_add_pointer(t);
ty = DataType_ltype(t);
t->is_pointer--;
DataType_del_pointer(t);
break;
default:
ty = DataType_ltype(t);
@ -196,9 +196,9 @@ void Swig_cresult(Wrapper *w, DataType *t, DOHString_or_char *name, DOHString_or
case T_VOID:
break;
case T_USER:
t->is_pointer++;
DataType_add_pointer(t);
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, "*(", name, ") = ", 0);
break;
@ -572,7 +572,7 @@ Swig_cmethod_wrapper(DOHString_or_char *classname,
l = CopyParmList(parms);
t = NewDataType(T_USER);
DataType_Setname(t, Char(classname));
t->is_pointer++;
DataType_add_pointer(t);
p = NewParm(t,"self");
Insert(l,0,p);
DelDataType(t);
@ -632,7 +632,7 @@ Swig_cconstructor_wrapper(DOHString_or_char *classname,
l = CopyParmList(parms);
t = NewDataType(T_USER);
DataType_Setname(t,classname);
t->is_pointer++;
DataType_add_pointer(t);
/* Patch up the argument names */
fix_parm_names(l);
@ -678,7 +678,7 @@ Swig_cppconstructor_wrapper(DOHString_or_char *classname,
l = CopyParmList(parms);
t = NewDataType(T_USER);
DataType_Setname(t,classname);
t->is_pointer++;
DataType_add_pointer(t);
/* Patch up the argument names */
fix_parm_names(l);
@ -735,7 +735,7 @@ Swig_cdestructor_wrapper(DOHString_or_char *classname,
l = NewParmList();
t = NewDataType(T_USER);
DataType_Setname(t,classname);
t->is_pointer++;
DataType_add_pointer(t);
p = NewParm(t,"self");
Append(l,p);
DelDataType(t);
@ -782,7 +782,7 @@ Swig_cppdestructor_wrapper(DOHString_or_char *classname,
l = NewParmList();
t = NewDataType(T_USER);
DataType_Setname(t,classname);
t->is_pointer++;
DataType_add_pointer(t);
p = NewParm(t,"self");
Append(l,p);
@ -832,7 +832,7 @@ Swig_cmemberset_wrapper(DOHString_or_char *classname,
l = NewParmList();
t = NewDataType(T_USER);
DataType_Setname(t, Char(classname));
t->is_pointer++;
DataType_add_pointer(t);
p = NewParm(t,"self");
Append(l,p);
DelDataType(t);
@ -885,7 +885,7 @@ Swig_cmemberget_wrapper(DOHString_or_char *classname,
l = NewParmList();
t = NewDataType(T_USER);
DataType_Setname(t, Char(classname));
t->is_pointer++;
DataType_add_pointer(t);
p = NewParm(t,"self");
Append(l,p);
DelDataType(t);

View file

@ -69,13 +69,13 @@ DataType *NewDataType(int t) {
break;
}
ty->_type = t;
ty->is_pointer = 0;
ty->implicit_ptr = 0;
ty->_is_pointer = 0;
ty->_implicit_ptr = 0;
ty->_qualifier = 0;
ty->_is_reference = 0;
ty->status = 0;
ty->_status = 0;
ty->_arraystr = 0;
ty->id = type_id++;
ty->_id = type_id++;
return ty;
}
@ -83,13 +83,13 @@ DataType *CopyDataType(DataType *t) {
DataType *ty = (DataType *) malloc(sizeof(DataType));
ty->_type = t->_type;
strcpy(ty->_name,t->_name);
ty->is_pointer = t->is_pointer;
ty->implicit_ptr = t->implicit_ptr;
ty->_is_pointer = t->_is_pointer;
ty->_implicit_ptr = t->_implicit_ptr;
ty->_qualifier = Swig_copy_string(t->_qualifier);
ty->_is_reference = t->_is_reference;
ty->status = t->status;
ty->_status = t->_status;
ty->_arraystr = Swig_copy_string(t->_arraystr);
ty->id = t->id;
ty->_id = t->_id;
return ty;
}
@ -100,10 +100,10 @@ void DelDataType(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->_is_reference) return T_REFERENCE;
if (t->is_pointer) return T_POINTER;
if (t->_is_pointer) return T_POINTER;
return t->_type;
}
@ -141,6 +141,18 @@ int DataType_is_reference(DataType *t) {
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) {
strcpy(t->_name, n);
}
@ -204,13 +216,13 @@ void DataType_primitive(DataType *t) {
strcpy(t->_name,"UNKNOWN");
break;
}
t->implicit_ptr = 0; /* Gets rid of typedef'd pointers */
t->_implicit_ptr = 0; /* Gets rid of typedef'd pointers */
if (t->_qualifier) {
free(t->_qualifier);
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++) = '_';
else *(d++) = *c;
}
if ((t->is_pointer-t->implicit_ptr)) *(d++) = '_';
for (i = 0; i < (t->is_pointer-t->implicit_ptr); i++)
if ((t->_is_pointer-t->_implicit_ptr)) *(d++) = '_';
for (i = 0; i < (t->_is_pointer-t->_implicit_ptr); i++)
*(d++) = 'p';
*d = 0;
@ -277,24 +289,24 @@ char *DataType_str(DataType *t, DOHString_or_char *name) {
int i;
ri = ri % 8;
if (t->_arraystr) t->is_pointer--;
if (t->_is_reference) t->is_pointer--;
if (t->_arraystr) t->_is_pointer--;
if (t->_is_reference) t->_is_pointer--;
if (t->_qualifier) {
sprintf(result[ri],"%s %s", t->_qualifier, t->_name);
} else {
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],"*");
}
if (t->_is_reference) strcat(result[ri],"&");
if (name) strcat(result[ri],Char(name));
if (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++];
}
@ -319,16 +331,16 @@ char *DataType_lstr(DataType *ty, DOHString_or_char *name) {
int i;
DataType *t = ty;
if (ty->status & STAT_REPLACETYPE) {
if (ty->_status & STAT_REPLACETYPE) {
t = CopyDataType(ty);
DataType_typedef_replace(t); /* Replace the type with its typedef value */
}
ri = ri % 8;
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],"*");
if (ty->status & STAT_REPLACETYPE) {
if (ty->_status & STAT_REPLACETYPE) {
DelDataType(t);
}
if (name) {
@ -346,7 +358,7 @@ char *DataType_lstr(DataType *ty, DOHString_or_char *name) {
DataType *DataType_ltype(DataType *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 */
}
if (ty->_qualifier) {
@ -377,7 +389,7 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
strcpy(result[ri],"");
if (ty->_arraystr) {
t = ty;
if (ty->status & STAT_REPLACETYPE) {
if (ty->_status & STAT_REPLACETYPE) {
t = CopyDataType(ty);
DataType_typedef_replace(t);
}
@ -395,15 +407,15 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
if (ndim > 1) {
/* a Multidimensional array. Provide a special cast for it */
char *oldarr = 0;
int oldstatus = ty->status;
t->status = t->status & (~STAT_REPLACETYPE);
t->is_pointer--;
int oldstatus = ty->_status;
t->_status = t->_status & (~STAT_REPLACETYPE);
t->_is_pointer--;
oldarr = t->_arraystr;
t->_arraystr = 0;
sprintf(result[ri],"(%s", DataType_str(t,0));
t->_arraystr = oldarr;
t->is_pointer++;
t->status = oldstatus;
t->_is_pointer++;
t->_status = oldstatus;
strcat(result[ri]," (*)");
c = t->_arraystr;
while (*c) {
@ -415,7 +427,7 @@ char *DataType_rcaststr(DataType *ty, DOHString_or_char *name) {
strcat(result[ri],")");
}
}
if (ty->status & STAT_REPLACETYPE) {
if (ty->_status & STAT_REPLACETYPE) {
DelDataType(t);
}
} 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 */
nt = CopyDataType(t);
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->_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 */
DataType_typedef_resolve(nt,0); /* Resolve any other mappings of this type */
/* Add this type to our hash table */
@ -633,9 +645,9 @@ void DataType_typedef_resolve(DataType *t, int level) {
while (s >= 0) {
if ((td = (DataType *) GetVoid(typedef_hash[s],t->_name))) {
t->_type = td->_type;
t->is_pointer += td->is_pointer;
t->implicit_ptr += td->implicit_ptr;
t->status = t->status | td->status;
t->_is_pointer += td->_is_pointer;
t->_implicit_ptr += td->_implicit_ptr;
t->_status = t->_status | td->_status;
/* 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) {
strcpy(t->_name,td->_name);
t->_qualifier = Swig_copy_string(td->_qualifier);
t->implicit_ptr -= td->implicit_ptr;
t->_implicit_ptr -= td->_implicit_ptr;
}
}
return;
@ -669,8 +681,8 @@ void DataType_typedef_replace (DataType *t) {
if ((td = (DataType *) GetVoid(typedef_hash[scope],t->_name))) {
t->_type = td->_type;
t->is_pointer = td->is_pointer;
t->implicit_ptr -= td->implicit_ptr;
t->_is_pointer = td->_is_pointer;
t->_implicit_ptr -= td->_implicit_ptr;
strcpy(t->_name, td->_name);
if (td->_arraystr) {
if (t->_arraystr) {
@ -713,7 +725,7 @@ void DataType_typedef_updatestatus(DataType *t, int newstatus) {
DataType *nt;
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) {
EqEntry *e1, *e2;
static DOHString *out = 0;
int npointer = t->is_pointer;
int npointer = t->_is_pointer;
char *m;
DOHString *k;
if (!out) out = NewString("");
Clear(out);
while (t->is_pointer >= t->implicit_ptr) {
while (t->_is_pointer >= t->_implicit_ptr) {
m = Swig_copy_string(DataType_manglestr(t));
if (!te_init) typeeq_init();
@ -1099,9 +1111,9 @@ check_equivalent(DataType *t) {
e2 = e1->next;
while (e2) {
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));
e2->type->is_pointer -= (npointer - t->is_pointer);
e2->type->_is_pointer -= (npointer - t->_is_pointer);
if (e2->cast)
Printf(out,"%s}, ", e2->cast);
else
@ -1113,9 +1125,9 @@ check_equivalent(DataType *t) {
k = Nextkey(typeeq_hash);
}
free(m);
t->is_pointer--;
t->_is_pointer--;
}
t->is_pointer = npointer;
t->_is_pointer = npointer;
Printf(out,"{0}");
return Char(out);
}

View file

@ -49,15 +49,15 @@
#define MAX_NAME 96
typedef struct DataType {
int _type; /* SWIG Type code */
char _name[MAX_NAME]; /* Name of type */
int is_pointer; /* Is this a pointer */
int implicit_ptr; /* Implicit ptr */
int _is_reference; /* A C++ reference type */
int status; /* Is this datatype read-only? */
char *_qualifier; /* A qualifier string (ie. const). */
char *_arraystr; /* String containing array part */
int id; /* type identifier (unique for every type). */
int _type; /* SWIG Type code */
char _name[MAX_NAME]; /* Name of type */
int _is_pointer; /* Is this a pointer */
int _implicit_ptr; /* Implicit ptr */
int _is_reference; /* A C++ reference type */
int _status; /* Is this datatype read-only? */
char *_qualifier; /* A qualifier string (ie. const). */
char *_arraystr; /* String containing array part */
int _id; /* type identifier (unique for every type). */
} DataType;
extern DataType *NewDataType(int type);
@ -79,8 +79,11 @@ extern char *DataType_lcaststr(DataType *, DOHString_or_char *name); /* C
extern char *DataType_manglestr(DataType *t); /* Mangled type name */
extern DataType *DataType_ltype(DataType *); /* Create local type object */
void DataType_add_reference(DataType *t);
int DataType_is_reference(DataType *t);
void DataType_add_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 -- */