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