aboutsummaryrefslogtreecommitdiffstats
path: root/src/tuplr.hpp
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2009-07-03 22:57:30 +0000
committerDavid Robillard <d@drobilla.net>2009-07-03 22:57:30 +0000
commit959f8bd0b7016dad794ba0907b544c1cfc49d09f (patch)
tree26467f19dbfaf4c92a3e53c792cf108f330e38c5 /src/tuplr.hpp
parentceed0285eed53ef4da6e585e5c029824484e6931 (diff)
downloadresp-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.hpp14
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;