File indexing completed on 2024-05-12 15:43:33

0001 /*
0002  *  Copyright (C) 2006 Apple Computer, Inc
0003  *
0004  *  This library is free software; you can redistribute it and/or
0005  *  modify it under the terms of the GNU Library General Public
0006  *  License as published by the Free Software Foundation; either
0007  *  version 2 of the License, or (at your option) any later version.
0008  *
0009  *  This library is distributed in the hope that it will be useful,
0010  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0011  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0012  *  Library General Public License for more details.
0013  *
0014  *  You should have received a copy of the GNU Library General Public License
0015  *  along with this library; see the file COPYING.LIB.  If not, write to
0016  *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
0017  *  Boston, MA 02110-1301, USA.
0018  *
0019  */
0020 
0021 #ifndef KJS_PROPERTY_NAME_ARRAY_H
0022 #define KJS_PROPERTY_NAME_ARRAY_H
0023 
0024 #include "identifier.h"
0025 
0026 #include <wtf/HashSet.h>
0027 #include <wtf/Vector.h>
0028 
0029 namespace KJS
0030 {
0031 
0032 class PropertyNameArray;
0033 
0034 typedef Vector<Identifier>::const_iterator PropertyNameArrayIterator;
0035 
0036 class KJS_EXPORT PropertyNameArray
0037 {
0038 public:
0039     typedef PropertyNameArrayIterator iterator;
0040 
0041     void add(const Identifier &);
0042     iterator begin() const
0043     {
0044         return m_vector.begin();
0045     }
0046     iterator end() const
0047     {
0048         return m_vector.end();
0049     }
0050     int size() const
0051     {
0052         return m_vector.size();
0053     }
0054 
0055     Identifier &operator[](unsigned i)
0056     {
0057         return m_vector[i];
0058     }
0059     const Identifier &operator[](unsigned i) const
0060     {
0061         return m_vector[i];
0062     }
0063 
0064 private:
0065     typedef HashSet<UString::Rep *, PtrHash<UString::Rep *> > IdentifierSet;
0066     IdentifierSet m_set;
0067     Vector<Identifier> m_vector;
0068 };
0069 
0070 } // namespace KJS
0071 
0072 #endif // KJS_PROPERTY_NAME_ARRAY_H