diff options
author | David Robillard <d@drobilla.net> | 2009-07-03 22:57:30 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2009-07-03 22:57:30 +0000 |
commit | 959f8bd0b7016dad794ba0907b544c1cfc49d09f (patch) | |
tree | 26467f19dbfaf4c92a3e53c792cf108f330e38c5 /src/tuplr.hpp | |
parent | ceed0285eed53ef4da6e585e5c029824484e6931 (diff) | |
download | resp-959f8bd0b7016dad794ba0907b544c1cfc49d09f.tar.gz resp-959f8bd0b7016dad794ba0907b544c1cfc49d09f.tar.bz2 resp-959f8bd0b7016dad794ba0907b544c1cfc49d09f.zip |
Hide std::vector roots of Exp.
git-svn-id: http://svn.drobilla.net/resp/tuplr@178 ad02d1e2-f140-0410-9f75-f8b11f17cedd
Diffstat (limited to 'src/tuplr.hpp')
-rw-r--r-- | src/tuplr.hpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/tuplr.hpp b/src/tuplr.hpp index de025b7..5deff71 100644 --- a/src/tuplr.hpp +++ b/src/tuplr.hpp @@ -61,11 +61,21 @@ struct Error { string msg; }; -/// Expression ::= Atom | (SubExp*) +/// Expression ::= Atom | (Expression*) template<typename Atom> -struct Exp : public std::vector< Exp<Atom> > { +struct Exp : private std::vector< Exp<Atom> > { Exp(Cursor c) : type(LIST), loc(c) {} Exp(Cursor c, const Atom& a) : type(ATOM), loc(c), atom(a) {} + + void push_back(const Exp<Atom>& exp) { vector< Exp<Atom> >::push_back(exp); } + + bool empty() const { return vector< Exp<Atom> >::empty(); } + const Exp<Atom>& front() const { return vector< Exp<Atom> >::front(); } + + typedef typename vector< Exp<Atom> >::const_iterator const_iterator; + const_iterator begin() const { return vector< Exp<Atom> >::begin(); } + const_iterator end() const { return vector< Exp<Atom> >::end(); } + enum { ATOM, LIST } type; Cursor loc; Atom atom; |