TypeName datatype fixed

This commit is contained in:
Jindra Pet��k
2011-07-02 21:11:32 +02:00
parent 699c520a2d
commit 9c95eb7270
3 changed files with 27 additions and 9 deletions
@@ -176,6 +176,7 @@ public class ABCInputStream extends InputStream {
int namespace_index = -1;
int name_index = -1;
int namespace_set_index = -1;
int qname_index=-1;
List<Integer> params=new ArrayList<Integer>();
if ((kind == 7) || (kind == 0xd)) { // CONSTANT_QName and CONSTANT_QNameA.
@@ -202,10 +203,10 @@ public class ABCInputStream extends InputStream {
else if(kind==0x1D)
{
//Constant_TypeName
name_index=readU30();
qname_index=readU30(); //Multiname index!!!
int paramsLength=readU30();
for(int i=0;i<paramsLength;i++){
params.add(readU30());
params.add(readU30()); //multiname indices!
}
}
else{
@@ -213,7 +214,7 @@ public class ABCInputStream extends InputStream {
System.exit(1);
}
return new Multiname(kind, name_index, namespace_index, namespace_set_index,params);
return new Multiname(kind, name_index, namespace_index, namespace_set_index,qname_index,params);
}
public MethodInfo readMethodInfo() throws IOException {
@@ -184,7 +184,7 @@ public class ABCOutputStream extends OutputStream {
}
if(m.kind==0x1D)
{
writeU30(m.name_index);
writeU30(m.qname_index);
writeU30(m.params.size());
for(int i=0;i<m.params.size();i++)
{
@@ -43,14 +43,16 @@ public class Multiname {
public int name_index = -1;
public int namespace_index = -1;
public int namespace_set_index = -1;
public List<Integer> params;
public int qname_index = -1; //for TypeName
public List<Integer> params; //for TypeName
public Multiname(int kind, int name_index, int namespace_index, int namespace_set_index,List<Integer> params) {
public Multiname(int kind, int name_index, int namespace_index, int namespace_set_index,int qname_index,List<Integer> params) {
this.kind = kind;
this.name_index = name_index;
this.namespace_index = namespace_index;
this.namespace_set_index = namespace_set_index;
this.qname_index = qname_index;
this.params=params;
}
@@ -101,7 +103,7 @@ public class Multiname {
@Override
public String toString() {
String kindStr = getKindStr();
return "kind=" + kindStr + " name_index=" + name_index + " namespace_index=" + namespace_index + " namespace_set_index=" + namespace_set_index;
return "kind=" + kindStr + " name_index=" + name_index + " namespace_index=" + namespace_index + " namespace_set_index=" + namespace_set_index+" qname_index="+qname_index+" params_size:"+params.size();
}
@@ -133,8 +135,23 @@ public class Multiname {
if (namespace_set_index > 0) {
namespaceSetStr = " <NS:" + constants.constant_namespace_set[namespace_set_index].toString(constants) + ">";
}
//kindStr+" "+
return namespaceStr + nameStr + namespaceSetStr;
String typeNameStr="";
if(kind==TYPENAME){
typeNameStr="Type: "+constants.constant_multiname[qname_index].toString(constants);
if(!params.isEmpty()){
typeNameStr+="<";
for(int i=0;i<params.size();i++)
{
if(i>0){
typeNameStr+=",";
}
typeNameStr+=constants.constant_multiname[params.get(i)].toString(constants);
}
typeNameStr+=">";
}
}
return namespaceStr + nameStr + namespaceSetStr + typeNameStr;
}