-/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2015 Jay Freeman (saurik)
+/* Cycript - The Truly Universal Scripting Language
+ * Copyright (C) 2009-2016 Jay Freeman (saurik)
*/
/* GNU Affero General Public License, Version 3 {{{ */
namespace cy {
+#if 0
+template <class Type_>
+class stack {
+ public:
+ typedef std::vector<Type_> Data_;
+ typedef typename Data_::const_reverse_iterator const_iterator;
+
+ private:
+ Data_ data_;
+
+ public:
+ stack() {
+ data_.reserve(200);
+ }
+
+ _finline Type_ &operator [](size_t i) {
+ return data_[data_.size() - 1 - i];
+ }
+
+ _finline const Type_ &operator [](size_t i) const {
+ return data_[data_.size() - 1 - i];
+ }
+
+ _finline void push(Type_ &t) {
+ data_.push_back(t);
+ }
+
+ _finline void pop() {
+ data_.pop_back();
+ }
+
+ _finline void pop(unsigned int size) {
+ for (; size != 0; --size)
+ pop();
+ }
+
+ void clear() {
+ data_.clear();
+ }
+
+ _finline size_t size() const {
+ return data_.size();
+ }
+
+ _finline const_iterator begin() const {
+ return data_.rbegin();
+ }
+
+ _finline const_iterator end() const {
+ return data_.rend();
+ }
+
+ private:
+ stack(const stack &);
+ stack &operator =(const stack &);
+};
+#else
template <class Type_>
class stack {
public:
stack(const stack &);
stack &operator =(const stack &);
};
+#endif
template <class Type_, class Stack_ = stack<Type_> >
class slice {