19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// This file is part of the ustl library, an STL implementation. 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// Copyright (C) 2005 by Mike Sharov <msharov@users.sourceforge.net> 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// This file is free software, distributed under the MIT License. 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// ustack.h 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project// 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef USTACK_H_5242F5635322B2EC44A9AEE73022C6E9 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define USTACK_H_5242F5635322B2EC44A9AEE73022C6E9 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectnamespace ustl { 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/// \class stack ustack.h ustl.h 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/// \ingroup Sequences 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/// 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/// \brief Stack adapter to uSTL containers. 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/// 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttemplate <typename Sequence> 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectclass stack { 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::value_type value_type; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::size_type size_type; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::difference_type difference_type; 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::reference reference; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::const_reference const_reference; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project typedef typename Sequence::pointer pointer; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic: 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline stack (void) : m_Storage () { } 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project explicit inline stack (const Sequence& s) : m_Storage (s) { } 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool empty (void) const { return (m_Storage.empty()); } 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline size_type size (void) const { return (m_Storage.size()); } 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline reference top (void) { return (m_Storage.back()); } 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline const_reference top (void) const { return (m_Storage.back()); } 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline void push (const value_type& v) { m_Storage.push_back (v); } 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline void pop (void) { m_Storage.pop_back(); } 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator== (const stack& s) { return (m_Storage == s.m_Storage); } 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project inline bool operator< (const stack& s) { return (m_Storage.size() < s.m_Storage.size()); } 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectprivate: 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Sequence m_Storage; ///< Where the data actually is. 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} // namespace ustl 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 47