From ad547a6b5986815fda458221149728d9d9ab1d87 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 25 Feb 2021 19:22:25 +0000 Subject: restore Build,TODO from r57911 git-svn-id: svn://tug.org/texlive/trunk@57915 c570f23f-e606-0410-a88d-b1316a301751 --- Build/source/utils/asymptote/runfile.cc | 688 ++++++++++++++++++++++++++++++++ 1 file changed, 688 insertions(+) create mode 100644 Build/source/utils/asymptote/runfile.cc (limited to 'Build/source/utils/asymptote/runfile.cc') diff --git a/Build/source/utils/asymptote/runfile.cc b/Build/source/utils/asymptote/runfile.cc new file mode 100644 index 00000000000..72ead073b2c --- /dev/null +++ b/Build/source/utils/asymptote/runfile.cc @@ -0,0 +1,688 @@ +/***** 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" +#include "opsymbols.h" + +using vm::stack; +using vm::error; +using vm::array; +using vm::read; +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 *copyTripleArray2Components(array *a, size_t &N, + GCPlacement placement=NoGC); +triple *copyTripleArray2C(array *a, size_t &N, + 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" + +#ifdef __CYGWIN__ + extern "C" int mkstemp(char *c); +#endif + +using namespace camp; +using namespace settings; +using namespace vm; + +string commentchar="#"; + +// Autogenerated routines: + + + +#ifndef NOSYM +#include "runfile.symbols.h" + +#endif +namespace run { +#line 28 "runfile.in" +// bool ==(file *a, file *b); +void gen_runfile0(stack *Stack) +{ + file * b=vm::pop(Stack); + file * a=vm::pop(Stack); +#line 29 "runfile.in" + {Stack->push(a == b); return;} +} + +#line 33 "runfile.in" +// bool !=(file *a, file *b); +void gen_runfile1(stack *Stack) +{ + file * b=vm::pop(Stack); + file * a=vm::pop(Stack); +#line 34 "runfile.in" + {Stack->push(a != b); return;} +} + +#line 38 "runfile.in" +void nullFile(stack *Stack) +{ +#line 39 "runfile.in" + {Stack->push(&camp::nullfile); return;} +} + +#line 43 "runfile.in" +// file* input(string name=emptystring, bool check=true, string comment=commentchar, string mode=emptystring); +void gen_runfile3(stack *Stack) +{ + string mode=vm::pop(Stack,emptystring); + string comment=vm::pop(Stack,commentchar); + bool check=vm::pop(Stack,true); + string name=vm::pop(Stack,emptystring); +#line 45 "runfile.in" + file *f=NULL; + if(mode == "binary") { + f=new ibfile(name,check); + } else if(mode == "xdr") { +#ifdef HAVE_RPC_RPC_H + f=new ixfile(name,check); +#else + ostringstream buf; + buf << name << ": XDR read support not enabled"; + error(buf); +#endif + } else if(mode == "") { + char c=comment.empty() ? (char) 0 : comment[0]; + f=new ifile(name,c,check); + } else { + f=NULL; + ostringstream buf; + buf << name << ": invalid file mode '" << mode << "'"; + error(buf); + } + + f->open(); + {Stack->push(f); return;} +} + +#line 71 "runfile.in" +// file* output(string name=emptystring, bool update=false, string comment=commentchar, string mode=emptystring); +void gen_runfile4(stack *Stack) +{ + string mode=vm::pop(Stack,emptystring); + string comment=vm::pop(Stack,commentchar); + bool update=vm::pop(Stack,false); + string name=vm::pop(Stack,emptystring); +#line 73 "runfile.in" + file *f=NULL; + if(mode == "pipe") { + f=new opipe(name); + } else if(mode == "binary") { + if(update) f=new iobfile(name); + else f=new obfile(name); + } else if(mode == "xdr") { +#ifdef HAVE_RPC_RPC_H + if(update) + f=new ioxfile(name); + else f=new oxfile(name); +#else + ostringstream buf; + buf << name << ": XDR write support not enabled"; + error(buf); +#endif + } else if(mode == "") { + if(update) { + char c=comment.empty() ? (char) 0 : comment[0]; + f=new iofile(name,c); + } else f=new ofile(name); + } else { + f=NULL; + ostringstream buf; + buf << name << ": invalid file mode '" << mode << "'"; + error(buf); + } + + f->open(); + if(update) f->seek(0,false); + + {Stack->push(f); return;} +} + +#line 108 "runfile.in" +// bool eof(file *f); +void gen_runfile5(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_runfile6(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_runfile7(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_runfile8(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 124 "runfile.in" + f->clear(); +} + +#line 128 "runfile.in" +// void close(file *f); +void gen_runfile9(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_runfile10(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_runfile11(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 140 "runfile.in" + f->flush(); +} + +#line 144 "runfile.in" +// string getc(file *f); +void gen_runfile12(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 145 "runfile.in" + char c=0; + if(f->isOpen()) f->read(c); + {Stack->push(string(1,c)); return;} +} + +#line 151 "runfile.in" +// Int tell(file *f); +void gen_runfile13(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 152 "runfile.in" + {Stack->push(f->tell()); return;} +} + +#line 156 "runfile.in" +// void seek(file *f, Int pos); +void gen_runfile14(stack *Stack) +{ + Int pos=vm::pop(Stack); + file * f=vm::pop(Stack); +#line 157 "runfile.in" + f->seek(pos,pos >= 0); +} + +#line 161 "runfile.in" +// void seekeof(file *f); +void gen_runfile15(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 162 "runfile.in" + f->seek(0,false); +} + +#line 166 "runfile.in" +void namePart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 167 "runfile.in" + {Stack->push(f.filename()); return;} +} + +#line 171 "runfile.in" +void modePart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 172 "runfile.in" + {Stack->push(f.FileMode()); return;} +} + +// Set file dimensions +#line 177 "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 178 "runfile.in" + f->dimension(nx,ny,nz); + {Stack->push(f); return;} +} + +#line 183 "runfile.in" +void dimensionSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 184 "runfile.in" + {Stack->push(new thunk(new bfunc(dimensionSetHelper),f)); return;} +} + +#line 188 "runfile.in" +void dimensionPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 189 "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 198 "runfile.in" +void lineSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 199 "runfile.in" + f->LineMode(b); + {Stack->push(f); return;} +} + +#line 204 "runfile.in" +void lineSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 205 "runfile.in" + {Stack->push(new thunk(new bfunc(lineSetHelper),f)); return;} +} + +#line 209 "runfile.in" +void linePart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 210 "runfile.in" + {Stack->push(f.LineMode()); return;} +} + +// Set file to read comma-separated values +#line 215 "runfile.in" +void csvSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 216 "runfile.in" + f->CSVMode(b); + {Stack->push(f); return;} +} + +#line 221 "runfile.in" +void csvSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 222 "runfile.in" + {Stack->push(new thunk(new bfunc(csvSetHelper),f)); return;} +} + +#line 226 "runfile.in" +void csvPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 227 "runfile.in" + {Stack->push(f.CSVMode()); return;} +} + +// Set file to read whitespace-separated values +#line 232 "runfile.in" +void wordSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 233 "runfile.in" + f->WordMode(b); + {Stack->push(f); return;} +} + +#line 238 "runfile.in" +void wordSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 239 "runfile.in" + {Stack->push(new thunk(new bfunc(wordSetHelper),f)); return;} +} + +#line 243 "runfile.in" +void wordPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 244 "runfile.in" + {Stack->push(f.WordMode()); return;} +} + +// Set file to read/write single precision real XDR values. +#line 249 "runfile.in" +void singlerealSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 250 "runfile.in" + f->SingleReal(b); + {Stack->push(f); return;} +} + +#line 255 "runfile.in" +void singlerealSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 256 "runfile.in" + {Stack->push(new thunk(new bfunc(singlerealSetHelper),f)); return;} +} + +#line 260 "runfile.in" +void singlerealPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 261 "runfile.in" + {Stack->push(f.SingleReal()); return;} +} + +// Set file to read/write single precision int XDR values. +#line 266 "runfile.in" +void singleintSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 267 "runfile.in" + f->SingleInt(b); + {Stack->push(f); return;} +} + +#line 272 "runfile.in" +void singleintSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 273 "runfile.in" + {Stack->push(new thunk(new bfunc(singleintSetHelper),f)); return;} +} + +#line 277 "runfile.in" +void singleintPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 278 "runfile.in" + {Stack->push(f.SingleInt()); return;} +} + +// Set file to read/write signed int XDR values. +#line 283 "runfile.in" +void signedintSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + bool b=vm::pop(Stack,true); +#line 284 "runfile.in" + f->SignedInt(b); + {Stack->push(f); return;} +} + +#line 289 "runfile.in" +void signedintSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 290 "runfile.in" + {Stack->push(new thunk(new bfunc(signedintSetHelper),f)); return;} +} + +#line 294 "runfile.in" +void signedintPart(stack *Stack) +{ + file f=vm::pop(Stack); +#line 295 "runfile.in" + {Stack->push(f.SignedInt()); return;} +} + +// Set file to read an arrayi (i int sizes followed by an i-dimensional array) +#line 300 "runfile.in" +void readSetHelper(stack *Stack) +{ + file * f=vm::pop(Stack); + Int i=vm::pop(Stack); +#line 301 "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 322 "runfile.in" +void readSet(stack *Stack) +{ + file * f=vm::pop(Stack); +#line 323 "runfile.in" + {Stack->push(new thunk(new bfunc(readSetHelper),f)); return;} +} + +// Delete file named s. +#line 328 "runfile.in" +// Int delete(string s); +void gen_runfile41(stack *Stack) +{ + string s=vm::pop(Stack); +#line 329 "runfile.in" + s=outpath(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 338 "runfile.in" +// Int rename(string from, string to); +void gen_runfile42(stack *Stack) +{ + string to=vm::pop(Stack); + string from=vm::pop(Stack); +#line 339 "runfile.in" + from=outpath(from); + to=outpath(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;} +} + +// Create a uniquely named temporary file. +#line 349 "runfile.in" +// string mktemp(string s); +void gen_runfile43(stack *Stack) +{ + string s=vm::pop(Stack); +#line 350 "runfile.in" + char *S=StrdupMalloc(s+"XXXXXX"); + int fd=mkstemp(S); + if(fd < 0) { + ostringstream buf; + buf << "Could not create unique temporary filename based on " << s; + error(buf); + } + string T(S); + free(S); + {Stack->push(T); return;} +} + +} // namespace run + +namespace trans { + +void gen_runfile_venv(venv &ve) +{ +#line 28 "runfile.in" + addFunc(ve, run::gen_runfile0, primBoolean(), SYM_EQ, formal(primFile(), SYM(a), false, false), formal(primFile(), SYM(b), false, false)); +#line 33 "runfile.in" + addFunc(ve, run::gen_runfile1, primBoolean(), SYM_NEQ, formal(primFile(), SYM(a), false, false), formal(primFile(), SYM(b), false, false)); +#line 38 "runfile.in" + REGISTER_BLTIN(run::nullFile,"nullFile"); +#line 43 "runfile.in" + addFunc(ve, run::gen_runfile3, primFile(), SYM(input), formal(primString(), SYM(name), true, false), formal(primBoolean(), SYM(check), true, false), formal(primString(), SYM(comment), true, false), formal(primString(), SYM(mode), true, false)); +#line 71 "runfile.in" + addFunc(ve, run::gen_runfile4, primFile(), SYM(output), formal(primString(), SYM(name), true, false), formal(primBoolean(), SYM(update), true, false), formal(primString(), SYM(comment), true, false), formal(primString(), SYM(mode), true, false)); +#line 108 "runfile.in" + addFunc(ve, run::gen_runfile5, primBoolean(), SYM(eof), formal(primFile(), SYM(f), false, false)); +#line 113 "runfile.in" + addFunc(ve, run::gen_runfile6, primBoolean(), SYM(eol), formal(primFile(), SYM(f), false, false)); +#line 118 "runfile.in" + addFunc(ve, run::gen_runfile7, primBoolean(), SYM(error), formal(primFile(), SYM(f), false, false)); +#line 123 "runfile.in" + addFunc(ve, run::gen_runfile8, primVoid(), SYM(clear), formal(primFile(), SYM(f), false, false)); +#line 128 "runfile.in" + addFunc(ve, run::gen_runfile9, primVoid(), SYM(close), formal(primFile(), SYM(f), false, false)); +#line 133 "runfile.in" + addFunc(ve, run::gen_runfile10, primInt(), SYM(precision), formal(primFile(), SYM(f), true, false), formal(primInt(), SYM(digits), true, false)); +#line 139 "runfile.in" + addFunc(ve, run::gen_runfile11, primVoid(), SYM(flush), formal(primFile(), SYM(f), false, false)); +#line 144 "runfile.in" + addFunc(ve, run::gen_runfile12, primString(), SYM(getc), formal(primFile(), SYM(f), false, false)); +#line 151 "runfile.in" + addFunc(ve, run::gen_runfile13, primInt(), SYM(tell), formal(primFile(), SYM(f), false, false)); +#line 156 "runfile.in" + addFunc(ve, run::gen_runfile14, primVoid(), SYM(seek), formal(primFile(), SYM(f), false, false), formal(primInt(), SYM(pos), false, false)); +#line 161 "runfile.in" + addFunc(ve, run::gen_runfile15, primVoid(), SYM(seekeof), formal(primFile(), SYM(f), false, false)); +#line 166 "runfile.in" + REGISTER_BLTIN(run::namePart,"namePart"); +#line 171 "runfile.in" + REGISTER_BLTIN(run::modePart,"modePart"); +#line 176 "runfile.in" + REGISTER_BLTIN(run::dimensionSetHelper,"dimensionSetHelper"); +#line 183 "runfile.in" + REGISTER_BLTIN(run::dimensionSet,"dimensionSet"); +#line 188 "runfile.in" + REGISTER_BLTIN(run::dimensionPart,"dimensionPart"); +#line 197 "runfile.in" + REGISTER_BLTIN(run::lineSetHelper,"lineSetHelper"); +#line 204 "runfile.in" + REGISTER_BLTIN(run::lineSet,"lineSet"); +#line 209 "runfile.in" + REGISTER_BLTIN(run::linePart,"linePart"); +#line 214 "runfile.in" + REGISTER_BLTIN(run::csvSetHelper,"csvSetHelper"); +#line 221 "runfile.in" + REGISTER_BLTIN(run::csvSet,"csvSet"); +#line 226 "runfile.in" + REGISTER_BLTIN(run::csvPart,"csvPart"); +#line 231 "runfile.in" + REGISTER_BLTIN(run::wordSetHelper,"wordSetHelper"); +#line 238 "runfile.in" + REGISTER_BLTIN(run::wordSet,"wordSet"); +#line 243 "runfile.in" + REGISTER_BLTIN(run::wordPart,"wordPart"); +#line 248 "runfile.in" + REGISTER_BLTIN(run::singlerealSetHelper,"singlerealSetHelper"); +#line 255 "runfile.in" + REGISTER_BLTIN(run::singlerealSet,"singlerealSet"); +#line 260 "runfile.in" + REGISTER_BLTIN(run::singlerealPart,"singlerealPart"); +#line 265 "runfile.in" + REGISTER_BLTIN(run::singleintSetHelper,"singleintSetHelper"); +#line 272 "runfile.in" + REGISTER_BLTIN(run::singleintSet,"singleintSet"); +#line 277 "runfile.in" + REGISTER_BLTIN(run::singleintPart,"singleintPart"); +#line 282 "runfile.in" + REGISTER_BLTIN(run::signedintSetHelper,"signedintSetHelper"); +#line 289 "runfile.in" + REGISTER_BLTIN(run::signedintSet,"signedintSet"); +#line 294 "runfile.in" + REGISTER_BLTIN(run::signedintPart,"signedintPart"); +#line 299 "runfile.in" + REGISTER_BLTIN(run::readSetHelper,"readSetHelper"); +#line 322 "runfile.in" + REGISTER_BLTIN(run::readSet,"readSet"); +#line 327 "runfile.in" + addFunc(ve, run::gen_runfile41, primInt(), SYM(delete), formal(primString(), SYM(s), false, false)); +#line 337 "runfile.in" + addFunc(ve, run::gen_runfile42, primInt(), SYM(rename), formal(primString(), SYM(from), false, false), formal(primString(), SYM(to), false, false)); +#line 348 "runfile.in" + addFunc(ve, run::gen_runfile43, primString(), SYM(mktemp), formal(primString(), SYM(s), false, false)); +} + +} // namespace trans -- cgit v1.2.3