/***** Autogenerated from runfile.in; changes will be overwritten *****/ #line 1 "runtimebase.in" /***** * runtimebase.in * Andy Hammerlindl 2009/07/28 * * Common declarations needed for all code-generating .in files. * *****/ #line 1 "runfile.in" /***** * runfile.in * * Runtime functions for file operations. * *****/ #line 1 "runtimebase.in" #include "stack.h" #include "types.h" #include "builtin.h" #include "entry.h" #include "errormsg.h" #include "array.h" #include "triple.h" #include "callable.h" using vm::stack; using vm::error; using vm::array; using vm::callable; using types::formal; using types::function; using camp::triple; #define PRIMITIVE(name,Name,asyName) using types::prim##Name; #include #undef PRIMITIVE typedef double real; void unused(void *); namespace run { array *copyArray(array *a); array *copyArray2(array *a); array *copyArray3(array *a); double *copyArrayC(const array *a, size_t dim=0, GCPlacement placement=NoGC); double *copyArray2C(const array *a, bool square=true, size_t dim2=0, GCPlacement placement=NoGC); triple *copyTripleArrayC(const array *a, size_t dim=0); triple *copyTripleArray2C(const array *a, bool square=true, size_t dim2=0); double *copyTripleArray2Components(array *a, bool square=true, size_t dim2=0, GCPlacement placement=NoGC); } function *realRealFunction(); #define CURRENTPEN processData().currentpen #line 10 "runfile.in" #include "fileio.h" #include "callable.h" #include "triple.h" #include "array.h" using namespace camp; using namespace settings; using namespace vm; string commentchar="#"; // Autogenerated routines: namespace run { #line 24 "runfile.in" // bool ==(file *a, file *b); void gen_runfile0(stack *Stack) { file * b=vm::pop(Stack); file * a=vm::pop(Stack); #line 25 "runfile.in" {Stack->push(a == b); return;} } #line 29 "runfile.in" // bool !=(file *a, file *b); void gen_runfile1(stack *Stack) { file * b=vm::pop(Stack); file * a=vm::pop(Stack); #line 30 "runfile.in" {Stack->push(a != b); return;} } #line 34 "runfile.in" void nullFile(stack *Stack) { #line 35 "runfile.in" {Stack->push(&camp::nullfile); return;} } #line 39 "runfile.in" // file* input(string name, bool check=true, string comment=commentchar); void gen_runfile3(stack *Stack) { string comment=vm::pop(Stack,commentchar); bool check=vm::pop(Stack,true); string name=vm::pop(Stack); #line 40 "runfile.in" char c=comment.empty() ? (char) 0 : comment[0]; file *f=new ifile(name,c,check); f->open(); {Stack->push(f); return;} } #line 47 "runfile.in" // file* output(string name, bool update=false, string comment=commentchar); void gen_runfile4(stack *Stack) { string comment=vm::pop(Stack,commentchar); bool update=vm::pop(Stack,false); string name=vm::pop(Stack); #line 48 "runfile.in" file *f; if(update) { char c=comment.empty() ? (char) 0 : comment[0]; f=new iofile(name,c); } else f=new ofile(name); f->open(); if(update) f->seek(0,false); {Stack->push(f); return;} } #line 59 "runfile.in" // file* xinput(string name, bool check=true); void gen_runfile5(stack *Stack) { bool check=vm::pop(Stack,true); string name=vm::pop(Stack); #line 60 "runfile.in" #ifdef HAVE_RPC_RPC_H file *f=new ixfile(name,check); f->open(); {Stack->push(f); return;} #else ostringstream buf; buf << name << ": XDR read support not enabled"; error(buf); unused(&check); // Suppress unused variable warning #endif } #line 73 "runfile.in" // file* xoutput(string name, bool update=false); void gen_runfile6(stack *Stack) { bool update=vm::pop(Stack,false); string name=vm::pop(Stack); #line 74 "runfile.in" #ifdef HAVE_RPC_RPC_H file *f; if(update) f=new ioxfile(name); else f=new oxfile(name); f->open(); if(update) f->seek(0,false); {Stack->push(f); return;} #else ostringstream buf; buf << name << ": XDR write support not enabled"; error(buf); unused(&update); // Suppress unused variable warning #endif } #line 91 "runfile.in" // file* binput(string name, bool check=true); void gen_runfile7(stack *Stack) { bool check=vm::pop(Stack,true); string name=vm::pop(Stack); #line 92 "runfile.in" file *f=new ibfile(name,check); f->open(); {Stack->push(f); return;} } #line 98 "runfile.in" // file* boutput(string name, bool update=false); void gen_runfile8(stack *Stack) { bool update=vm::pop(Stack,false); string name=vm::pop(Stack); #line 99 "runfile.in" file *f; if(update) f=new iobfile(name); else f=new obfile(name); f->open(); if(update) f->seek(0,false); {Stack->push(f); return;} } #line 108 "runfile.in" // bool eof(file *f); void gen_runfile9(stack *Stack) { file * f=vm::pop(Stack); #line 109 "runfile.in" {Stack->push(f->eof()); return;} } #line 113 "runfile.in" // bool eol(file *f); void gen_runfile10(stack *Stack) { file * f=vm::pop(Stack); #line 114 "runfile.in" {Stack->push(f->eol()); return;} } #line 118 "runfile.in" // bool error(file *f); void gen_runfile11(stack *Stack) { file * f=vm::pop(Stack); #line 119 "runfile.in" {Stack->push(f->error()); return;} } #line 123 "runfile.in" // void clear(file *f); void gen_runfile12(stack *Stack) { file * f=vm::pop(Stack); #line 124 "runfile.in" f->clear(); } #line 128 "runfile.in" // void close(file *f); void gen_runfile13(stack *Stack) { file * f=vm::pop(Stack); #line 129 "runfile.in" f->close(); } #line 133 "runfile.in" // Int precision(file *f=NULL, Int digits=0); void gen_runfile14(stack *Stack) { Int digits=vm::pop(Stack,0); file * f=vm::pop(Stack,NULL); #line 134 "runfile.in" if(f == 0) f=&camp::Stdout; {Stack->push(f->precision(digits)); return;} } #line 139 "runfile.in" // void flush(file *f); void gen_runfile15(stack *Stack) { file * f=vm::pop(Stack); #line 140 "runfile.in" f->flush(); } #line 144 "runfile.in" // string getc(file *f); void gen_runfile16(stack *Stack) { file * f=vm::pop(Stack); #line 145 "runfile.in" char c=0; if(f->isOpen()) f->read(c); static char str[1]; str[0]=c; {Stack->push(string(str)); return;} } #line 153 "runfile.in" // Int tell(file *f); void gen_runfile17(stack *Stack) { file * f=vm::pop(Stack); #line 154 "runfile.in" {Stack->push(f->tell()); return;} } #line 158 "runfile.in" // void seek(file *f, Int pos); void gen_runfile18(stack *Stack) { Int pos=vm::pop(Stack); file * f=vm::pop(Stack); #line 159 "runfile.in" f->seek(pos,pos >= 0); } #line 163 "runfile.in" // void seekeof(file *f); void gen_runfile19(stack *Stack) { file * f=vm::pop(Stack); #line 164 "runfile.in" f->seek(0,false); } #line 168 "runfile.in" void namePart(stack *Stack) { file f=vm::pop(Stack); #line 169 "runfile.in" {Stack->push(f.filename()); return;} } #line 173 "runfile.in" void modePart(stack *Stack) { file f=vm::pop(Stack); #line 174 "runfile.in" {Stack->push(f.FileMode()); return;} } // Set file dimensions #line 179 "runfile.in" void dimensionSetHelper(stack *Stack) { file * f=vm::pop(Stack); Int nz=vm::pop(Stack,-1); Int ny=vm::pop(Stack,-1); Int nx=vm::pop(Stack,-1); #line 180 "runfile.in" f->dimension(nx,ny,nz); {Stack->push(f); return;} } #line 185 "runfile.in" void dimensionSet(stack *Stack) { file * f=vm::pop(Stack); #line 186 "runfile.in" {Stack->push(new thunk(new bfunc(dimensionSetHelper),f)); return;} } #line 190 "runfile.in" void dimensionPart(stack *Stack) { file f=vm::pop(Stack); #line 191 "runfile.in" array *a=new array(3); (*a)[0]=f.Nx(); (*a)[1]=f.Ny(); (*a)[2]=f.Nz(); {Stack->push(a); return;} } // Set file f to read arrays in line-at-a-time mode #line 200 "runfile.in" void lineSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 201 "runfile.in" f->LineMode(b); {Stack->push(f); return;} } #line 206 "runfile.in" void lineSet(stack *Stack) { file * f=vm::pop(Stack); #line 207 "runfile.in" {Stack->push(new thunk(new bfunc(lineSetHelper),f)); return;} } #line 211 "runfile.in" void linePart(stack *Stack) { file f=vm::pop(Stack); #line 212 "runfile.in" {Stack->push(f.LineMode()); return;} } // Set file to read comma-separated values #line 217 "runfile.in" void csvSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 218 "runfile.in" f->CSVMode(b); {Stack->push(f); return;} } #line 223 "runfile.in" void csvSet(stack *Stack) { file * f=vm::pop(Stack); #line 224 "runfile.in" {Stack->push(new thunk(new bfunc(csvSetHelper),f)); return;} } #line 228 "runfile.in" void csvPart(stack *Stack) { file f=vm::pop(Stack); #line 229 "runfile.in" {Stack->push(f.CSVMode()); return;} } // Set file to read whitespace-separated values #line 234 "runfile.in" void wordSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 235 "runfile.in" f->WordMode(b); {Stack->push(f); return;} } #line 240 "runfile.in" void wordSet(stack *Stack) { file * f=vm::pop(Stack); #line 241 "runfile.in" {Stack->push(new thunk(new bfunc(wordSetHelper),f)); return;} } #line 245 "runfile.in" void wordPart(stack *Stack) { file f=vm::pop(Stack); #line 246 "runfile.in" {Stack->push(f.WordMode()); return;} } // Set file to read/write single precision real XDR values. #line 251 "runfile.in" void singlerealSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 252 "runfile.in" f->SingleReal(b); {Stack->push(f); return;} } #line 257 "runfile.in" void singlerealSet(stack *Stack) { file * f=vm::pop(Stack); #line 258 "runfile.in" {Stack->push(new thunk(new bfunc(singlerealSetHelper),f)); return;} } #line 262 "runfile.in" void singlerealPart(stack *Stack) { file f=vm::pop(Stack); #line 263 "runfile.in" {Stack->push(f.SingleReal()); return;} } // Set file to read/write single precision int XDR values. #line 268 "runfile.in" void singleintSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 269 "runfile.in" f->SingleInt(b); {Stack->push(f); return;} } #line 274 "runfile.in" void singleintSet(stack *Stack) { file * f=vm::pop(Stack); #line 275 "runfile.in" {Stack->push(new thunk(new bfunc(singleintSetHelper),f)); return;} } #line 279 "runfile.in" void singleintPart(stack *Stack) { file f=vm::pop(Stack); #line 280 "runfile.in" {Stack->push(f.SingleInt()); return;} } // Set file to read/write signed int XDR values. #line 285 "runfile.in" void signedintSetHelper(stack *Stack) { file * f=vm::pop(Stack); bool b=vm::pop(Stack,true); #line 286 "runfile.in" f->SignedInt(b); {Stack->push(f); return;} } #line 291 "runfile.in" void signedintSet(stack *Stack) { file * f=vm::pop(Stack); #line 292 "runfile.in" {Stack->push(new thunk(new bfunc(signedintSetHelper),f)); return;} } #line 296 "runfile.in" void signedintPart(stack *Stack) { file f=vm::pop(Stack); #line 297 "runfile.in" {Stack->push(f.SignedInt()); return;} } // Set file to read an arrayi (i int sizes followed by an i-dimensional array) #line 302 "runfile.in" void readSetHelper(stack *Stack) { file * f=vm::pop(Stack); Int i=vm::pop(Stack); #line 303 "runfile.in" switch(i) { case 1: f->dimension(-2); break; case 2: f->dimension(-2,-2); break; case 3: f->dimension(-2,-2,-2); break; default: f->dimension(); } {Stack->push(f); return;} } #line 324 "runfile.in" void readSet(stack *Stack) { file * f=vm::pop(Stack); #line 325 "runfile.in" {Stack->push(new thunk(new bfunc(readSetHelper),f)); return;} } // Delete file named s. #line 330 "runfile.in" // Int delete(string *s); void gen_runfile45(stack *Stack) { string * s=vm::pop(Stack); #line 331 "runfile.in" checkLocal(*s); Int rc=unlink(s->c_str()); if(rc == 0 && verbose > 0) cout << "Deleted " << *s << endl; {Stack->push(rc); return;} } // Rename file "from" to file "to". #line 340 "runfile.in" // Int rename(string *from, string *to); void gen_runfile46(stack *Stack) { string * to=vm::pop(Stack); string * from=vm::pop(Stack); #line 341 "runfile.in" checkLocal(*from); checkLocal(*to); Int rc=rename(from->c_str(),to->c_str()); if(rc == 0 && verbose > 0) cout << "Renamed " << *from << " to " << *to << endl; {Stack->push(rc); return;} } } // namespace run namespace trans { void gen_runfile_venv(venv &ve) { #line 24 "runfile.in" addFunc(ve, run::gen_runfile0, primBoolean(), "==", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false)); #line 29 "runfile.in" addFunc(ve, run::gen_runfile1, primBoolean(), "!=", formal(primFile(), "a", false, false), formal(primFile(), "b", false, false)); #line 34 "runfile.in" REGISTER_BLTIN(run::nullFile,"nullFile"); #line 39 "runfile.in" addFunc(ve, run::gen_runfile3, primFile(), "input", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false), formal(primString() , "comment", true, false)); #line 47 "runfile.in" addFunc(ve, run::gen_runfile4, primFile(), "output", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false), formal(primString() , "comment", true, false)); #line 59 "runfile.in" addFunc(ve, run::gen_runfile5, primFile(), "xinput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false)); #line 73 "runfile.in" addFunc(ve, run::gen_runfile6, primFile(), "xoutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false)); #line 91 "runfile.in" addFunc(ve, run::gen_runfile7, primFile(), "binput", formal(primString() , "name", false, false), formal(primBoolean(), "check", true, false)); #line 98 "runfile.in" addFunc(ve, run::gen_runfile8, primFile(), "boutput", formal(primString() , "name", false, false), formal(primBoolean(), "update", true, false)); #line 108 "runfile.in" addFunc(ve, run::gen_runfile9, primBoolean(), "eof", formal(primFile(), "f", false, false)); #line 113 "runfile.in" addFunc(ve, run::gen_runfile10, primBoolean(), "eol", formal(primFile(), "f", false, false)); #line 118 "runfile.in" addFunc(ve, run::gen_runfile11, primBoolean(), "error", formal(primFile(), "f", false, false)); #line 123 "runfile.in" addFunc(ve, run::gen_runfile12, primVoid(), "clear", formal(primFile(), "f", false, false)); #line 128 "runfile.in" addFunc(ve, run::gen_runfile13, primVoid(), "close", formal(primFile(), "f", false, false)); #line 133 "runfile.in" addFunc(ve, run::gen_runfile14, primInt(), "precision", formal(primFile(), "f", true, false), formal(primInt(), "digits", true, false)); #line 139 "runfile.in" addFunc(ve, run::gen_runfile15, primVoid(), "flush", formal(primFile(), "f", false, false)); #line 144 "runfile.in" addFunc(ve, run::gen_runfile16, primString() , "getc", formal(primFile(), "f", false, false)); #line 153 "runfile.in" addFunc(ve, run::gen_runfile17, primInt(), "tell", formal(primFile(), "f", false, false)); #line 158 "runfile.in" addFunc(ve, run::gen_runfile18, primVoid(), "seek", formal(primFile(), "f", false, false), formal(primInt(), "pos", false, false)); #line 163 "runfile.in" addFunc(ve, run::gen_runfile19, primVoid(), "seekeof", formal(primFile(), "f", false, false)); #line 168 "runfile.in" REGISTER_BLTIN(run::namePart,"namePart"); #line 173 "runfile.in" REGISTER_BLTIN(run::modePart,"modePart"); #line 178 "runfile.in" REGISTER_BLTIN(run::dimensionSetHelper,"dimensionSetHelper"); #line 185 "runfile.in" REGISTER_BLTIN(run::dimensionSet,"dimensionSet"); #line 190 "runfile.in" REGISTER_BLTIN(run::dimensionPart,"dimensionPart"); #line 199 "runfile.in" REGISTER_BLTIN(run::lineSetHelper,"lineSetHelper"); #line 206 "runfile.in" REGISTER_BLTIN(run::lineSet,"lineSet"); #line 211 "runfile.in" REGISTER_BLTIN(run::linePart,"linePart"); #line 216 "runfile.in" REGISTER_BLTIN(run::csvSetHelper,"csvSetHelper"); #line 223 "runfile.in" REGISTER_BLTIN(run::csvSet,"csvSet"); #line 228 "runfile.in" REGISTER_BLTIN(run::csvPart,"csvPart"); #line 233 "runfile.in" REGISTER_BLTIN(run::wordSetHelper,"wordSetHelper"); #line 240 "runfile.in" REGISTER_BLTIN(run::wordSet,"wordSet"); #line 245 "runfile.in" REGISTER_BLTIN(run::wordPart,"wordPart"); #line 250 "runfile.in" REGISTER_BLTIN(run::singlerealSetHelper,"singlerealSetHelper"); #line 257 "runfile.in" REGISTER_BLTIN(run::singlerealSet,"singlerealSet"); #line 262 "runfile.in" REGISTER_BLTIN(run::singlerealPart,"singlerealPart"); #line 267 "runfile.in" REGISTER_BLTIN(run::singleintSetHelper,"singleintSetHelper"); #line 274 "runfile.in" REGISTER_BLTIN(run::singleintSet,"singleintSet"); #line 279 "runfile.in" REGISTER_BLTIN(run::singleintPart,"singleintPart"); #line 284 "runfile.in" REGISTER_BLTIN(run::signedintSetHelper,"signedintSetHelper"); #line 291 "runfile.in" REGISTER_BLTIN(run::signedintSet,"signedintSet"); #line 296 "runfile.in" REGISTER_BLTIN(run::signedintPart,"signedintPart"); #line 301 "runfile.in" REGISTER_BLTIN(run::readSetHelper,"readSetHelper"); #line 324 "runfile.in" REGISTER_BLTIN(run::readSet,"readSet"); #line 329 "runfile.in" addFunc(ve, run::gen_runfile45, primInt(), "delete", formal(primString(), "s", false, false)); #line 339 "runfile.in" addFunc(ve, run::gen_runfile46, primInt(), "rename", formal(primString(), "from", false, false), formal(primString(), "to", false, false)); } } // namespace trans