#ifdef MEMPERFCOUNT
#include "memprof.h"
#endif
+#ifdef INPUTFILE
+#include "InputFileArrays.h"
+#endif
+
extern int classsize[];
extern int typearray[];
}
#endif
+#ifdef INPUTFILE
#ifdef D___Scanner______nextInt____
int CALL01(___Scanner______nextInt____, struct ___Scanner___ * ___this___) {
int pos = VAR(___this___)->___currentpos___;
- int i = 0;
- unsigned char * filearray = (unsigned char *)(VAR(___this___)->___filearray___);
- while((filearray[pos]==' ')||(filearray[pos]=='\n')){
- pos++;
- }
- int value = 0;
- bool isNeg=false;
- int radix = 10;
-
- if (filearray[pos]=='-') {
- isNeg=true;
- pos++;
- }
- bool cont=true;
- do {
- unsigned char b=filearray[pos];
- int val;
- if (b>='0'&&b<='9')
- val=b-'0';
- else if (b>='a'&&b<='z')
- val=10+b-'a';
- else if (b>='A'&&b<='Z')
- val=10+b-'A';
- else {
- cont=false;
- }
- if (cont) {
- if (val>=radix)
- printf("Error in Scanner.nextInt(): val >= radix");
- value=value*radix+val;
- pos++;
- }
- }while(cont);
- if (isNeg)
- value=-value;
-
+ int value = nextInt(VAR(___this___)->___fd___, &pos);
VAR(___this___)->___currentpos___ = pos;
return value;
}
#ifdef D___Scanner______nextDouble____
double CALL01(___Scanner______nextDouble____, struct ___Scanner___ * ___this___) {
int pos = VAR(___this___)->___currentpos___;
- int i = 0;
- unsigned char * filearray = (unsigned char *)(VAR(___this___)->___filearray___);
- while((filearray[pos]==' ')||(filearray[pos]=='\n')){
- pos++;
- }
- double value = 0.0;
- bool isNeg=false;
- int radix = 10;
-
- if (filearray[pos]=='-') {
- isNeg=true;
- pos++;
- } else if(filearray[pos]=='+') {
- pos++;
- }
- bool cont=true;
- // TODO
- /*do {
- unsigned char b=filearray[pos];
- int val;
- if (b>='0'&&b<='9')
- val=b-'0';
- else if (b>='a'&&b<='z')
- val=10+b-'a';
- else if (b>='A'&&b<='Z')
- val=10+b-'A';
- else {
- cont=false;
- }
- if (cont) {
- if (val>=radix)
- System.error();
- value=value*radix+val;
- pos++;
- }
- }while(cont)*/
- if (isNeg)
- value=-value;
-
+ double value = nextDouble(VAR(___this___)->___fd___, &pos);
VAR(___this___)->___currentpos___ = pos;
return value;
}
#endif
+#endif
/* Object allocation function */
#include "mem.h"
#include "runtime.h"
#include "methodheaders.h"
+#ifdef INPUTFILE
+#include "InputFileArrays.h"
+#endif
#ifdef D___FileOutputStream______nativeWrite____I__AR_B_I_I
void CALL34(___FileOutputStream______nativeWrite____I__AR_B_I_I, int fd, int off, int len, int fd, struct ArrayObject * ___array___, int off, int len) {
#ifdef D___FileOutputStream______nativeOpen_____AR_B
int CALL01(___FileOutputStream______nativeOpen_____AR_B, struct ArrayObject * ___filename___) {
+ int length=VAR(___filename___)->___length___;
+ char* filename= (((char *)&VAR(___filename___)->___length___)+sizeof(int));
#ifdef MULTICORE
+#ifdef INPUTFILE
+ int fd=filename2fd(filename, length);
+ return fd;
+#else
return 0;
+#endif
#else
- int length=VAR(___filename___)->___length___;
- char* filename= (((char *)&VAR(___filename___)->___length___)+sizeof(int));
int fd=open(filename, O_WRONLY|O_CREAT|O_TRUNC, S_IRWXU);
return fd;
#endif
#ifdef D___FileInputStream______nativeOpen_____AR_B
int CALL01(___FileInputStream______nativeOpen_____AR_B, struct ArrayObject * ___filename___) {
+ int length=VAR(___filename___)->___length___;
+ char* filename= (((char *)&VAR(___filename___)->___length___)+sizeof(int));
#ifdef MULTICORE
+#ifdef INPUTFILE
+ int fd=filename2fd(filename, length);
+ return fd;
+#else
return 0;
+#endif
#else
int length=VAR(___filename___)->___length___;
char* filename= (((char *)&VAR(___filename___)->___length___)+sizeof(int));
--- /dev/null
+package Util;\r
+\r
+import java.util.Vector;\r
+import java.util.zip.GZIPInputStream;\r
+import java.io.File;\r
+import java.io.FileWriter;\r
+import java.io.OutputStream;\r
+import java.io.FileOutputStream;\r
+import java.io.FileInputStream;\r
+import java.io.FileNotFoundException;\r
+import java.io.IOException;\r
+import java.io.PrintWriter;\r
+\r
+public class InputFileTranslator{\r
+ public static String PREFIX="";\r
+ \r
+ public static void main(String args[]){\r
+ try{\r
+ //To Uncompress GZip File Contents we need to open the gzip file.....\r
+ if(args.length<=0){\r
+ System.out.println("Please enter the valid file name");\r
+ }else{\r
+ int offset = 0;\r
+ if (args[offset].equals("-dir")) {\r
+ PREFIX=args[++offset]+"/";\r
+ offset++;\r
+ }\r
+\r
+ System.out.println("Opening the output file............. : opened");\r
+ \r
+ //Create the .h file \r
+ String outFilename = PREFIX+"InputFileArrays.h";\r
+ PrintWriter out = new PrintWriter(new FileWriter(new File(outFilename)));\r
+ out.println("#ifndef INPUT_FILE_ARRAYS_H");\r
+ out.println("#define INPUT_FILE_ARRAYS_H");\r
+ out.println();\r
+ out.println("#ifndef bool");\r
+ out.println("typedef int bool;");\r
+ out.println("#define true 1");\r
+ out.println("#define false 0");\r
+ out.println("#endif");\r
+ out.println();\r
+ out.println("int filename2fd(char * filename, int length);");\r
+ out.println("int nextInt(int fd, int * pos);");\r
+ out.println("double nextDouble(int fd, int * pos);");\r
+ out.println("#endif");\r
+ out.close();\r
+ \r
+ //Create the .c file that contains the big two-dimension array and \r
+ //read functions\r
+ outFilename = PREFIX+"InputFileArrays.c";\r
+ out = new PrintWriter(new FileWriter(new File(outFilename)));\r
+ out.println("#include \"InputFileArrays.h\"");\r
+ out.println();\r
+ Vector<String> sourcefiles=new Vector<String>();\r
+ for(int i=0; i<args.length-offset; i++) {\r
+ String inFilename = args[i+offset];\r
+ String arrayname = inFilename.replaceAll("\\.", "_");\r
+ sourcefiles.add(arrayname);\r
+ out.println("#define " + arrayname.toUpperCase() + " " + i);\r
+ System.out.println("Opening the gzip file.......................... : opened");\r
+ GZIPInputStream gzipInputStream = null;\r
+ FileInputStream fileInputStream = null;\r
+ gzipInputStream = new GZIPInputStream(new FileInputStream(inFilename));\r
+ //OutputStream out = new FileOutputStream(outFilename);\r
+ System.out.println("Trsansferring bytes from the compressed file to the output file........: Transfer successful");\r
+ \r
+ out.println("unsigned char " + arrayname + "[] = {");\r
+\r
+ boolean printComma = false;\r
+ boolean printReturn = false;\r
+ byte[] buf = new byte[1024]; //size can be changed according to programmer's need.\r
+ int len;\r
+ while ((len = gzipInputStream.read(buf)) > 0) {\r
+ //out.write(buf, 0, len);\r
+ for(int j = 0; j < len; j++) {\r
+ if('#' == buf[j]) {\r
+ // skip the comments\r
+ while(j<len && buf[j++] != '\n') {\r
+ }\r
+ } else {\r
+ if(!printComma) {\r
+ printComma = true;\r
+ } else {\r
+ out.print(',');\r
+ }\r
+ if(printReturn) {\r
+ out.println();\r
+ printReturn = false;\r
+ }\r
+ if('\n' == buf[j]) {\r
+ out.print("\'\\n\'");\r
+ printReturn = true;\r
+ } else {\r
+ out.print(buf[j]);\r
+ }\r
+ }\r
+ }\r
+ }\r
+ out.println("};");\r
+ out.println();\r
+ gzipInputStream.close();\r
+ }\r
+ \r
+ out.println();\r
+ out.println("unsigned char * inputFileArrays[]= {");\r
+ for(int i = 0; i < sourcefiles.size(); i++) {\r
+ String arrayname = sourcefiles.elementAt(i);\r
+ \r
+ if(i > 0) {\r
+ out.println(',');\r
+ }\r
+ out.print("&"+arrayname+"[0]");\r
+ }\r
+ out.println();\r
+ out.println("};");\r
+ out.println();\r
+ \r
+ //Create the read functions\r
+ out.println("int filename2fd(char * filename, int length) {");\r
+ for(int i=0; i<sourcefiles.size(); i++) {\r
+ String inFilename = sourcefiles.elementAt(i);\r
+ String arrayname = inFilename.replaceAll("\\.", "_");\r
+ out.print(" char " + arrayname + "[] = {");\r
+ for(int j = 0; j < inFilename.length(); j++) {\r
+ if(j>0) {\r
+ out.print(",");\r
+ }\r
+ out.print("'"+inFilename.charAt(j)+"'");\r
+ }\r
+ out.println("};");\r
+ out.println(" if(length==" + inFilename.length() + ") {");\r
+ out.println(" int i;");\r
+ out.println(" for(i = 0; i < length; i++) {");\r
+ out.println(" if(filename[i]!="+arrayname+"[i]) {");\r
+ out.println(" break;");\r
+ out.println(" }");\r
+ out.println(" }");\r
+ out.println(" if(i==length) {");\r
+ out.println(" return "+arrayname.toUpperCase() + ";");\r
+ out.println(" }");\r
+ out.println(" }");\r
+ out.println();\r
+ }\r
+ out.println("}");\r
+ \r
+ out.println();\r
+ out.println("int nextInt(int fd, int * pos) {");\r
+ out.println(" int i = 0;");\r
+ out.println(" unsigned char * filearray = inputFileArrays[fd];");\r
+ out.println(" while((filearray[*pos]==\' \')||(filearray[*pos]==\'\\n\')){");\r
+ out.println(" *pos++;");\r
+ out.println(" }");\r
+ out.println(" int value = 0;");\r
+ out.println(" bool isNeg=false;");\r
+ out.println(" int radix = 10;");\r
+ out.println();\r
+ out.println(" if (filearray[*pos]==\'-\') {");\r
+ out.println(" isNeg=true;");\r
+ out.println(" *pos++;");\r
+ out.println(" }");\r
+ out.println(" bool cont=true;");\r
+ out.println(" do {");\r
+ out.println(" unsigned char b=filearray[*pos];");\r
+ out.println(" int val;");\r
+ out.println(" if (b>=\'0\'&&b<=\'9\')");\r
+ out.println(" val=b-\'0\';");\r
+ out.println(" else if (b>=\'a\'&&b<=\'z\')");\r
+ out.println(" val=10+b-\'a\';");\r
+ out.println(" else if (b>=\'A\'&&b<=\'Z\')");\r
+ out.println(" val=10+b-\'A\';");\r
+ out.println(" else {");\r
+ out.println(" cont=false;");\r
+ out.println(" }");\r
+ out.println(" if (cont) {");\r
+ out.println(" if (val>=radix)");\r
+ out.println(" printf(\"Error in nextInt(): val >= radix\");");\r
+ out.println(" value=value*radix+val;");\r
+ out.println(" *pos++;");\r
+ out.println(" }");\r
+ out.println(" }while(cont);");\r
+ out.println(" if (isNeg)");\r
+ out.println(" value=-value;");\r
+ out.println();\r
+ out.println(" return value;");\r
+ out.println(" }");\r
+ out.println();\r
+ \r
+ out.println("double nextDouble(int fd, int * pos) {");\r
+ out.println(" int i = 0;");\r
+ out.println(" unsigned char * filearray = inputFileArrays[fd];");\r
+ out.println(" while((filearray[*pos]==\' \')||(filearray[*pos]==\'\\n\')){");\r
+ out.println(" *pos++;");\r
+ out.println(" }");\r
+ out.println(" double value = 0.0;");\r
+ out.println("//TODO");\r
+ out.println(" return value;");\r
+ out.println(" }");\r
+ out.println();\r
+\r
+ System.out.println("The file and stream is ......closing.......... : closed");\r
+ out.close();\r
+ }\r
+ }\r
+ catch(IOException e){\r
+ System.out.println("Exception has been thrown" + e);\r
+ }\r
+ }\r
+}\r