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/callable.cc | 75 ++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 Build/source/utils/asymptote/callable.cc (limited to 'Build/source/utils/asymptote/callable.cc') diff --git a/Build/source/utils/asymptote/callable.cc b/Build/source/utils/asymptote/callable.cc new file mode 100644 index 00000000000..581c3af2c1c --- /dev/null +++ b/Build/source/utils/asymptote/callable.cc @@ -0,0 +1,75 @@ +/***** + * callable.cc + * Tom Prince 2005/06/19 + * + * Runtime representation of functions. + *****/ + +#include "stack.h" +#include "callable.h" + +namespace vm { + +callable::~callable() +{} + +void func::call(stack *s) +{ + s->run(this); +} + +void nullfunc::print(ostream& out) { + out << "nullfunc"; +} + +bool func::compare(callable* F) +{ + if (func* f=dynamic_cast(F)) + return (body == f->body) && (closure == f->closure); + else return false; +} + +void func::print(ostream& out) { + out << "func with lambda"; +#ifdef DEBUG_FRAME + out << " " << body->name; +#endif +} + +bool bfunc::compare(callable* F) +{ + if (bfunc* f=dynamic_cast(F)) + return (func == f->func); + else return false; +} + +void bfunc::print(ostream& out) { + out << "bltin"; +#ifdef DEBUG_BLTIN + out << " " << lookupBltin(func); +#endif +} + +void thunk::call(stack *s) +{ + s->push(arg); + func->call(s); +} + +void thunk::print(ostream& out) { + out << "thunk on " << arg << " with "; + func->print(out); +} + +nullfunc nullfunc::func; +void nullfunc::call(stack *) +{ + error("dereference of null function"); +} + +bool nullfunc::compare(callable* f) +{ + return f == &func; +} + +} // namespace vm -- cgit v1.2.3