Finished removal of all public attributes of types.
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@627 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
f244b7cde8
commit
c738c6c639
14 changed files with 339 additions and 318 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 -- */
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue