51    List(
bool needsMarking);
 
   54        List(
const List &b) : _impBase(b._impBase), _needsMarking(
false) {
 
   56        if (!_impBase->valueRefCount) refValues(); 
 
   57        ++_impBase->valueRefCount; 
 
   81        List copyTail() 
const;
 
   86        bool isEmpty()
 const { 
return _impBase->size == 0; }
 
   90        int size()
 const { 
return _impBase->size; }
 
  120        static const List &empty();
 
  122    void mark() { 
if (_impBase->valueRefCount == 0) markValues(); }
 
  124        ListImpBase *_impBase;
 
  127        void deref() { 
if (!_needsMarking && --_impBase->valueRefCount == 0) derefValues(); 
if (--_impBase->refCount == 0) release(); }
 
  151        Value operator*()
 const { 
return Value(_list->impAt(_i)); }
 
  189    inline List &List::operator=(
const List &b)
 
  191        ListImpBase *bImpBase = b._impBase;
 
  192        ++bImpBase->refCount;
 
  195    if (!_needsMarking) {
 
  196        if (!_impBase->valueRefCount) {
 
  199        _impBase->valueRefCount++;
 
Iterator for KJS::List objects.
 
ListIterator(const List &l)
Construct an iterator that points to the first element of the list.
 
Value operator--(int)
Postfix decrement operator.
 
bool operator==(const ListIterator &it) const
Compare the iterator with another one.
 
Value operator--()
Prefix decrement operator.
 
Value operator++()
Prefix increment operator.
 
Value operator++(int)
Postfix increment operator.
 
bool operator!=(const ListIterator &it) const
Check for inequality with another iterator.
 
ValueImp * operator->() const
Dereference the iterator.
 
void append(const Value &val)
Append an object to the end of the list.
 
Value operator[](int i) const
Equivalent to at.
 
ListIterator begin() const
 
Value at(int i) const
Retrieve an element at an indexed position.
 
ValueImp is the base type for all primitives (Undefined, Null, Boolean, String, Number) and objects i...
 
Value objects are act as wrappers ("smart pointers") around ValueImp objects and their descendents.