diff options
Diffstat (limited to 'graphics/asymptote/env.h')
-rw-r--r-- | graphics/asymptote/env.h | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/graphics/asymptote/env.h b/graphics/asymptote/env.h index 1cf628f095..3916facd5e 100644 --- a/graphics/asymptote/env.h +++ b/graphics/asymptote/env.h @@ -19,7 +19,7 @@ class record; } namespace absyntax { -class namedTyEntry; +class namedTy; } namespace trans { @@ -140,20 +140,27 @@ public: ve.add(source.ve, qualifier, c); } + struct Added : public gc { + tyEntry *typeAdded; + mem::vector<varEntry*> varsAdded; + bool empty() { return !typeAdded && varsAdded.empty(); } + }; + // Add variables and types of name src from another environment under the // name dest in this environment. - bool add(symbol src, symbol dest, + Added *add(symbol src, symbol dest, protoenv &source, varEntry *qualifier, coder &c) { - bool teAdd=te.add(src, dest, source.te, qualifier, c); - bool veAdd=ve.add(src, dest, source.ve, qualifier, c); - return teAdd || veAdd; + Added *retv = new Added(); + retv->typeAdded=te.add(src, dest, source.te, qualifier, c); + bool varAdded=ve.add(src, dest, source.ve, qualifier, c, &retv->varsAdded); + assert(varAdded == (retv->varsAdded.size() > 0)); + return retv; } // Add the standard functions for a new type. void addArrayOps(types::array *t); void addRecordOps(types::record *r); - void addFunctionOps(types::function *f); void list(record *r=0) { @@ -186,10 +193,8 @@ public: ~env(); record *getModule(symbol id, string filename); - record *getTemplatedModule(symbol index, - string filename, - mem::vector<absyntax::namedTyEntry*> *args, - coenv& e); + record *getTemplatedModule(string filename, + mem::vector<absyntax::namedTy*> *args); record *getLoadedModule(symbol id); }; |