| | 1 | 2006-07-15 Maciej Stachowiak <mjs@apple.com> |
| | 2 | |
| | 3 | Reviewed by Darin. |
| | 4 | |
| | 5 | - switch property lists to be vector+set of Identifiers instead of list of References |
| | 6 | |
| | 7 | This has the following benefits: |
| | 8 | |
| | 9 | - no duplicates in property lists |
| | 10 | - simplifies API calls |
| | 11 | - probably more efficient, since linked list is gone |
| | 12 | - entirely removed Reference, ReferenceList and ProtectedReference types from the API |
| | 13 | |
| | 14 | * kjs/PropertyNameArray.cpp: Added. |
| | 15 | (KJS::PropertyNameArray::add): Check set, if not already there, add to |
| | 16 | vector. |
| | 17 | * kjs/PropertyNameArray.h: Added. |
| | 18 | (KJS::PropertyNameArray::PropertyNameArray): Newly added type, combines |
| | 19 | a set and a vector to make a unique but ordered list of identifiers. |
| | 20 | (KJS::PropertyNameArray::begin): ditto |
| | 21 | (KJS::PropertyNameArray::end): ditto |
| | 22 | (KJS::PropertyNameArray::size): ditto |
| | 23 | (KJS::PropertyNameArray::operator[]): ditto |
| | 24 | * kjs/array_instance.h: |
| | 25 | * kjs/array_object.cpp: |
| | 26 | (ArrayInstance::getPropertyNames): renamed from getPropertyList, updated |
| | 27 | for PropertyNameArray |
| | 28 | (ArrayInstance::setLength): updated for PropertyNameArray |
| | 29 | (ArrayInstance::pushUndefinedObjectsToEnd): ditto |
| | 30 | * kjs/nodes.cpp: |
| | 31 | (ForInNode::execute): updated for PropertyNameArray |
| | 32 | * kjs/nodes.h: |
| | 33 | * kjs/object.cpp: |
| | 34 | (KJS::JSObject::getPropertyNames): renamed from getPropertyList, updated |
| | 35 | for PropertyNameArray |
| | 36 | * kjs/object.h: |
| | 37 | * kjs/property_map.cpp: |
| | 38 | (KJS::PropertyMap::getEnumerablePropertyNames): updated for PropertyNameArray |
| | 39 | (KJS::PropertyMap::getSparseArrayPropertyNames): ditto |
| | 40 | * kjs/property_map.h: |
| | 41 | * kjs/protected_reference.h: Removed. |
| | 42 | * kjs/reference.cpp: Removed. |
| | 43 | * kjs/reference.h: Removed. |
| | 44 | * kjs/reference_list.cpp: Removed. |
| | 45 | * kjs/reference_list.h: Removed. |
| | 46 | * kjs/scope_chain.cpp: |
| | 47 | (KJS::ScopeChain::print): Use PropertyNamesArray instead of ReferenceList. |
| | 48 | * kjs/string_object.cpp: |
| | 49 | (StringInstance::getPropertyNames): Updated for new approach. |
| | 50 | * kjs/string_object.h: |
| | 51 | * kjs/ustring.h: |
| | 52 | * API/APICast.h: |
| | 53 | (toJS): Added overload for PropertyNameAccumulatorRef / PropertyNameArray* |
| | 54 | (toRef): ditto |
| | 55 | * API/JSBase.h: |
| | 56 | * API/JSCallbackObject.cpp: |
| | 57 | (KJS::JSCallbackObject::getPropertyNames): Fixed for new API. |
| | 58 | * API/JSCallbackObject.h: |
| | 59 | * API/JSObjectRef.cpp: |
| | 60 | (__JSPropertyNameArray::__JSPropertyNameArray): Type used for a publicly vended |
| | 61 | JSPropertyNameArrayRef. |
| | 62 | (JSObjectCopyPropertyNames): New API call - renamed / refactored from |
| | 63 | JSObjectCreatePropertyList |
| | 64 | (JSPropertyNameArrayRetain): new retain call for JSPropertyNameArray. |
| | 65 | (JSPropertyNameArrayRelease): new release call for - " -. |
| | 66 | (JSPropertyNameArrayGetCount): Instead of having to use a stateful enumerator you |
| | 67 | can now get the count and items in any order. |
| | 68 | (JSPropertyNameArrayGetNameAtIndex): See above. |
| | 69 | (JSPropertyNameAccumulatorAddName): What you add properties to is now an opaque |
| | 70 | accumulator object. |
| | 71 | * API/JSObjectRef.h: Prototyped new functions, removed old ones |
| | 72 | * JavaScriptCore.exp: Updated exported symbols. |
| | 73 | * JavaScriptCore.xcodeproj/project.pbxproj: Added new files, removed old. |
| | 74 | * API/testapi.c: |
| | 75 | (MyObject_getPropertyNames): Renamed / fixed callback to fit new paradigm. |
| | 76 | (main): Updated for new API. |
| | 77 | |