Java源码示例:com.apple.internal.jobjc.generator.model.Struct

示例1
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例2
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例3
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例4
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例5
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例6
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例7
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例8
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例9
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例10
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例11
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例12
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例13
private void writeField(final Struct.Field field, final PrintStream out){
    if(field.type.type32 instanceof NBitfield){
        out.format("\t// Skipping bitfield '%1$s'\n", field.name);
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JType jtype = field.type.getJType();
    String retType = jtype.getJavaReturnTypeName();
    CoderDescriptor cdesc = jtype.getCoderDescriptor();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName()
            + ".IS64 ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\t//" + cdesc.getClass().toString());
    out.println("\tpublic " + retType + " " + getterName(field) + "(){");
    out.println(jtype.createPopAddr("getRuntime()", "this.raw.bufferPtr + " + offsetName));
    out.println(jtype.createReturn());
    out.println("\t}");
    out.println();
    out.println("\tpublic void " + setterName(field.name) + "(final " + retType + " " + privName + "){");
    out.println("\t\t" + cdesc.getPushAddrStatementFor("getRuntime()", "this.raw.bufferPtr + " + offsetName, privName));
    out.println("\t}");
}
 
示例14
private void writeStructField(final Struct.Field field, final PrintStream out){
    if(field.type.getJType() == null || !(field.type.getJType() instanceof JStruct)){
        out.println("\t// Found bad JavaType (" + field.type.getJType() + ") for field (" + field.name + ") of type (" + field.type + ")");
        return;
    }
    String privName = field.name + "__";
    String offsetName = field.name.toUpperCase() + "_OFFSET";
    JStruct jstype = (JStruct) field.type.getJType();
    String retTypeName = jstype.getJavaReturnTypeName();
    out.println();
    out.println("\tprivate static final int " + offsetName + " = " + JObjCRuntime.class.getName() + ".IS64"
            + " ? " + field.field64.offset64() + " : " + field.field32.offset32() + ";");

    out.println("\tprivate " + retTypeName + " " + privName + " = null;");
    out.println("\tpublic " + retTypeName + " " + getterName(field) + "(){");
    out.println("\t\tif(null==" + privName + "){");
    out.println("\t\t\tthis.raw.position(" + offsetName + ");");
    out.println("\t\t\t" + privName + " = " + RootJObjCClass.runtimeFrameworkInstR(struct.parent.name) + ".make" + jstype.struct.name + "(this.raw.slice());");
    out.println("\t\t}");
    out.println("\t\treturn " + privName + ";");
    out.println("\t}");
}
 
示例15
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例16
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例17
@Override public void writeBody(final PrintStream out) {
    for(Struct.Field field : struct.fields){
        if(field.type.type64 instanceof NStruct && field.type.type32 instanceof NStruct)
            writeStructField(field, out);
        else
            writeField(field, out);
    }
}
 
示例18
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例19
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例20
@Override public void writeBody(final PrintStream out) {
    for(Struct.Field field : struct.fields){
        if(field.type.type64 instanceof NStruct && field.type.type32 instanceof NStruct)
            writeStructField(field, out);
        else
            writeField(field, out);
    }
}
 
示例21
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例22
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例23
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例24
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例25
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例26
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例27
@Override public void writeBody(final PrintStream out) {
    for(Struct.Field field : struct.fields){
        if(field.type.type64 instanceof NStruct && field.type.type32 instanceof NStruct)
            writeStructField(field, out);
        else
            writeField(field, out);
    }
}
 
示例28
protected void processLine(String ln, Collection<Framework> fws, Width arch) throws Exception{
        System.out.println("\tSOR '" + ln + "'");
        if(ln.trim().length() == 0) return;
        Pattern stinfo = Pattern.compile("^(.*) (.*):(\\d+).*$");
        Matcher m = stinfo.matcher(ln);
        if(!m.matches()) throw new RuntimeException("Failed to parse line from exec: " + ln);
        String fwname = m.group(1);
        String stname = m.group(2);
        int stsize = Integer.parseInt(m.group(3));

        Framework fw = findFrameworkByName(fws, fwname);

        Struct st = fw.getStructByName(stname);
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        nst.sizeof.put(arch, stsize);

//        System.out.println(st.name + " : " + stsize);

        Pattern finfo = Pattern.compile(" (-?\\d+)");
        Matcher fm = finfo.matcher(ln);
        int fi = 0;
        while(fm.find()){
            NField sf = nst.fields.get(fi++);
            sf.offset.put(arch, Integer.parseInt(fm.group(1)));
//            System.out.println("\t" + sf.name + " : " + off);
        }

        TypeCache.inst().pingType(st.type);
    }
 
示例29
static void printStructInfos(Framework fw, Width arch, PrintWriter out){
    for(Struct st : fw.structs){
        NStruct nst = wget(arch, st.type.type32, st.type.type64);
        out.println("std::cout << \"" + fw.name + " " + st.name + "\" << ':' << sizeof("+st.name+")");
        for(NField sf : nst.fields){
            out.print("\t<< ' ' << ");
            out.println(sf.type instanceof NType.NBitfield
                      ? "-1"
                      : "offsetof("+st.name+","+sf.name+")");
        }
        out.println("\t<< std::endl;");
    }
}
 
示例30
@Override public void writeBody(final PrintStream out) {
    for(Struct.Field field : struct.fields){
        if(field.type.type64 instanceof NStruct && field.type.type32 instanceof NStruct)
            writeStructField(field, out);
        else
            writeField(field, out);
    }
}