diff options
author | David Robillard <d@drobilla.net> | 2009-03-07 03:56:20 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-03-07 03:56:20 +0000 |
commit | 6d9b8a06e9d9fece731d045db2f815f261db09c3 (patch) | |
tree | fb2bbf652b359670575906ce717b22523c6a2b04 /tuplr.hpp | |
parent | 311e3b43b68209648fe9561d1aaff93d9a4d4f0f (diff) | |
download | resp-6d9b8a06e9d9fece731d045db2f815f261db09c3.tar.gz resp-6d9b8a06e9d9fece731d045db2f815f261db09c3.tar.bz2 resp-6d9b8a06e9d9fece731d045db2f815f261db09c3.zip |
Ensure only CEnv can call compile function directly (fix recursive functions).
git-svn-id: http://svn.drobilla.net/resp/tuplr@74 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'tuplr.hpp')
-rw-r--r-- | tuplr.hpp | 14 |
1 files changed, 8 insertions, 6 deletions
@@ -99,13 +99,15 @@ struct CEnv; ///< Compile-Time Environment struct AST { AST(Cursor c=Cursor()) : loc(c) {} virtual ~AST() {} - virtual string str() const = 0; - virtual bool operator==(const AST& o) const = 0; - virtual bool contains(AST* child) const { return false; } - virtual void constrain(TEnv& tenv) const {} - virtual void lift(CEnv& cenv) {} - virtual CValue compile(CEnv& cenv) = 0; + virtual string str() const = 0; + virtual bool operator==(const AST& o) const = 0; + virtual bool contains(const AST* child) const { return false; } + virtual void constrain(TEnv& tenv) const {} + virtual void lift(CEnv& cenv) {} Cursor loc; +private: + friend class CEnv; + virtual CValue compile(CEnv& cenv) = 0; }; /// Literal value |