From cc858b73db8041ab002a84ac5edae1bd2c9d7769 Mon Sep 17 00:00:00 2001 From: andrewparoski Date: Mon, 4 Mar 2013 13:34:50 -0800 Subject: [PATCH] Collections updates Replace "collection" with "collections" in various file names since we typically use the plural form in conversation and documentation. Add set() and removeAt() methods needed for collection interfaces. Also add the KeyedIterable and KeyedIterator interfaces. Add __construct() methods for collections --- bin/systemlib.php | 7 + ...collection.idl.php => collections.idl.php} | 156 ++- hphp/runtime/base/array/array_iterator.cpp | 20 +- hphp/runtime/base/array/array_iterator.h | 2 - hphp/runtime/base/builtin_functions.cpp | 2 +- hphp/runtime/base/object_data.cpp | 2 +- hphp/runtime/base/type_object.cpp | 2 +- hphp/runtime/base/type_variant.cpp | 2 +- hphp/runtime/base/variable_serializer.cpp | 2 +- hphp/runtime/ext/ext.h | 2 +- hphp/runtime/ext/ext_array.cpp | 2 +- ...ext_collection.cpp => ext_collections.cpp} | 149 +- ..._hhvm.cpp => ext_collections.ext_hhvm.cpp} | 291 +++- ....ext_hhvm.h => ext_collections.ext_hhvm.h} | 0 .../{ext_collection.h => ext_collections.h} | 22 +- hphp/runtime/ext_hhvm/ext_hhvm_infotabs.cpp | 18 +- hphp/runtime/ext_hhvm/ext_hhvm_infotabs.h | 2 +- hphp/runtime/vm/bytecode.cpp | 2 +- hphp/runtime/vm/instance.cpp | 2 +- hphp/runtime/vm/member_operations.cpp | 2 +- hphp/runtime/vm/member_operations.h | 2 +- hphp/runtime/vm/runtime.cpp | 2 +- hphp/system/class_map.cpp | 1212 +++++++++-------- hphp/system/classes/iterator.php | 7 + hphp/system/collection.inc | 15 - hphp/system/collections.inc | 15 + hphp/system/ext.inc | 2 +- hphp/test/test_code_run.cpp | 127 +- hphp/test/test_ext.h | 2 +- hphp/test/test_ext.inc | 2 +- ...ollection.cpp => test_ext_collections.cpp} | 6 +- ...xt_collection.h => test_ext_collections.h} | 2 +- hphp/test/vm/collection-initializer.php | 10 +- 33 files changed, 1373 insertions(+), 718 deletions(-) rename hphp/idl/{collection.idl.php => collections.idl.php} (89%) rename hphp/runtime/ext/{ext_collection.cpp => ext_collections.cpp} (95%) rename hphp/runtime/ext/{ext_collection.ext_hhvm.cpp => ext_collections.ext_hhvm.cpp} (92%) rename hphp/runtime/ext/{ext_collection.ext_hhvm.h => ext_collections.ext_hhvm.h} (100%) rename hphp/runtime/ext/{ext_collection.h => ext_collections.h} (98%) delete mode 100644 hphp/system/collection.inc create mode 100644 hphp/system/collections.inc rename hphp/test/{test_ext_collection.cpp => test_ext_collections.cpp} (89%) rename hphp/test/{test_ext_collection.h => test_ext_collections.h} (96%) diff --git a/bin/systemlib.php b/bin/systemlib.php index 5d0ba729e..76658a543 100644 --- a/bin/systemlib.php +++ b/bin/systemlib.php @@ -593,6 +593,9 @@ interface Iterator extends Traversable { public function valid(); } +interface KeyedIterator extends Iterator { +} + // Do NOT modifiy this doc comment block generated by idl/sysdoc.php /** * ( excerpt from http://php.net/manual/en/class.seekableiterator.php ) @@ -1215,6 +1218,9 @@ interface IteratorAggregate extends Traversable { interface Iterable extends IteratorAggregate { } +interface KeyedIterable extends Iterable { +} + /////////////////////////////////////////////////////////////////////////////// // http://www.php.net/~helly/php/ext/spl/appenditerator_8inc-source.html @@ -1356,6 +1362,7 @@ class AppendIterator implements OuterIterator { } } + // Do NOT modifiy this doc comment block generated by idl/sysdoc.php /** * ( excerpt from http://php.net/manual/en/class.splfileinfo.php ) diff --git a/hphp/idl/collection.idl.php b/hphp/idl/collections.idl.php similarity index 89% rename from hphp/idl/collection.idl.php rename to hphp/idl/collections.idl.php index d810dccd0..18a0d0933 100644 --- a/hphp/idl/collection.idl.php +++ b/hphp/idl/collections.idl.php @@ -88,8 +88,9 @@ CPP BeginClass( array( 'name' => "Vector", - 'ifaces' => array('Iterable', 'Countable'), - 'desc' => "A stack-style container.", + 'ifaces' => array('KeyedIterable', 'Countable'), + 'desc' => "An ordered collection where values are keyed using integers ". + "0 thru n-1 in order.", 'flags' => IsFinal | HasDocComment, 'footer' => << array( 'type' => null, ), + 'args' => array( + array( + 'name' => "iterable", + 'type' => Variant, + 'value' => "null", + ), + ), )); DefineFunction( @@ -163,6 +171,29 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "set", + 'flags' => HasDocComment, + 'desc' => "Stores a value into the Vector with the specified key, ". + "overwriting any previous value that was associated with ". + "the key. If the key is outside the bounds of the Vector, ". + "an exception is thrown.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + array( + 'name' => "value", + 'type' => Variant, + ), + ), + )); + DefineFunction( array( 'name' => "put", @@ -214,6 +245,23 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "removeAt", + 'flags' => HasDocComment, + 'desc' => "Removes the element with the specified key from this ". + "Vector and renumbers the keys of all subsequent elements.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + ), + )); + DefineFunction( array( 'name' => "append", @@ -513,7 +561,7 @@ EndClass( BeginClass( array( 'name' => "VectorIterator", - 'ifaces' => array('Iterator'), + 'ifaces' => array('KeyedIterator'), 'desc' => "An iterator implementation for iterating over a Vector.", 'flags' => IsFinal | HasDocComment, )); @@ -585,8 +633,8 @@ EndClass( BeginClass( array( 'name' => "Map", - 'ifaces' => array('Iterable', 'Countable'), - 'desc' => "An unordered dictionary-style container.", + 'ifaces' => array('KeyedIterable', 'Countable'), + 'desc' => "An unordered dictionary-style collection.", 'flags' => IsFinal | HasDocComment, )); @@ -596,6 +644,13 @@ DefineFunction( 'return' => array( 'type' => null, ), + 'args' => array( + array( + 'name' => "iterable", + 'type' => Variant, + 'value' => "null", + ), + ), )); DefineFunction( @@ -652,6 +707,28 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "set", + 'flags' => HasDocComment, + 'desc' => "Stores a value into the Map with the specified key, ". + "overwriting any previous value that was associated with ". + "the key.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + array( + 'name' => "value", + 'type' => Variant, + ), + ), + )); + DefineFunction( array( 'name' => "put", @@ -717,6 +794,22 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "removeAt", + 'flags' => HasDocComment, + 'desc' => "Removes the specified key from this Map.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + ), + )); + // This method is deprecated and will be removed soon DefineFunction( array( @@ -961,7 +1054,7 @@ EndClass( BeginClass( array( 'name' => "MapIterator", - 'ifaces' => array('Iterator'), + 'ifaces' => array('KeyedIterator'), 'desc' => "An iterator implementation for iterating over a Map.", 'flags' => IsFinal | HasDocComment, )); @@ -1033,8 +1126,8 @@ EndClass( BeginClass( array( 'name' => "StableMap", - 'ifaces' => array('Iterable', 'Countable'), - 'desc' => "An ordered dictionary-style container.", + 'ifaces' => array('KeyedIterable', 'Countable'), + 'desc' => "An ordered dictionary-style collection.", 'flags' => IsFinal | HasDocComment, )); @@ -1044,6 +1137,13 @@ DefineFunction( 'return' => array( 'type' => null, ), + 'args' => array( + array( + 'name' => "iterable", + 'type' => Variant, + 'value' => "null", + ), + ), )); DefineFunction( @@ -1100,6 +1200,28 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "set", + 'flags' => HasDocComment, + 'desc' => "Stores a value into the StableMap with the specified key, ". + "overwriting any previous value that was associated with ". + "the key.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + array( + 'name' => "value", + 'type' => Variant, + ), + ), + )); + DefineFunction( array( 'name' => "put", @@ -1165,6 +1287,22 @@ DefineFunction( ), )); +DefineFunction( + array( + 'name' => "removeAt", + 'flags' => HasDocComment, + 'desc' => "Removes the specified key from this StableMap.", + 'return' => array( + 'type' => Object, + ), + 'args' => array( + array( + 'name' => "key", + 'type' => Variant, + ), + ), + )); + // This method is deprecated and will be removed soon DefineFunction( array( @@ -1410,7 +1548,7 @@ EndClass( BeginClass( array( 'name' => "StableMapIterator", - 'ifaces' => array('Iterator'), + 'ifaces' => array('KeyedIterator'), 'desc' => "An iterator implementation for iterating over a StableMap.", 'flags' => IsFinal | HasDocComment, )); diff --git a/hphp/runtime/base/array/array_iterator.cpp b/hphp/runtime/base/array/array_iterator.cpp index 97e12fcd2..1dd3c428d 100644 --- a/hphp/runtime/base/array/array_iterator.cpp +++ b/hphp/runtime/base/array/array_iterator.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include namespace HPHP { /////////////////////////////////////////////////////////////////////////////// @@ -76,24 +76,6 @@ void ArrayIter::reset() { decRefObj(obj); } -void ArrayIter::begin(CVarRef map, CStrRef context) { - try { - new (this) ArrayIter(map.begin(context)); - } catch (...) { - m_data = nullptr; - throw; - } -} - -void ArrayIter::begin(CArrRef map, CStrRef context) { - try { - new (this) ArrayIter(map.get()); - } catch (...) { - m_data = nullptr; - throw; - } -} - template void ArrayIter::objInit(ObjectData *obj) { assert(obj); diff --git a/hphp/runtime/base/array/array_iterator.h b/hphp/runtime/base/array/array_iterator.h index a32cee94c..61645a7cd 100644 --- a/hphp/runtime/base/array/array_iterator.h +++ b/hphp/runtime/base/array/array_iterator.h @@ -81,8 +81,6 @@ class ArrayIter { m_pos = data->getIterBegin(); } ArrayIter(CArrRef array); - void begin(CVarRef map, CStrRef); - void begin(CArrRef map, CStrRef); void reset(); private: diff --git a/hphp/runtime/base/builtin_functions.cpp b/hphp/runtime/base/builtin_functions.cpp index 04a000dfb..35b9a4e15 100644 --- a/hphp/runtime/base/builtin_functions.cpp +++ b/hphp/runtime/base/builtin_functions.cpp @@ -29,7 +29,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/hphp/runtime/base/object_data.cpp b/hphp/runtime/base/object_data.cpp index a8c4712ed..156492b74 100644 --- a/hphp/runtime/base/object_data.cpp +++ b/hphp/runtime/base/object_data.cpp @@ -24,7 +24,7 @@ #include #include #include -#include +#include #include #include diff --git a/hphp/runtime/base/type_object.cpp b/hphp/runtime/base/type_object.cpp index 3bc80bbc0..78a185ed1 100644 --- a/hphp/runtime/base/type_object.cpp +++ b/hphp/runtime/base/type_object.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include diff --git a/hphp/runtime/base/type_variant.cpp b/hphp/runtime/base/type_variant.cpp index 7a8bcda05..50ac7ecb7 100644 --- a/hphp/runtime/base/type_variant.cpp +++ b/hphp/runtime/base/type_variant.cpp @@ -28,7 +28,7 @@ #include #include #include -#include +#include #include diff --git a/hphp/runtime/base/variable_serializer.cpp b/hphp/runtime/base/variable_serializer.cpp index c920407a4..4004edbd0 100644 --- a/hphp/runtime/base/variable_serializer.cpp +++ b/hphp/runtime/base/variable_serializer.cpp @@ -27,7 +27,7 @@ #include #include #include -#include +#include namespace HPHP { /////////////////////////////////////////////////////////////////////////////// diff --git a/hphp/runtime/ext/ext.h b/hphp/runtime/ext/ext.h index bfbad28be..91353400d 100644 --- a/hphp/runtime/ext/ext.h +++ b/hphp/runtime/ext/ext.h @@ -26,7 +26,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/hphp/runtime/ext/ext_array.cpp b/hphp/runtime/ext/ext_array.cpp index 834f674ee..bb38126bb 100644 --- a/hphp/runtime/ext/ext_array.cpp +++ b/hphp/runtime/ext/ext_array.cpp @@ -19,7 +19,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/hphp/runtime/ext/ext_collection.cpp b/hphp/runtime/ext/ext_collections.cpp similarity index 95% rename from hphp/runtime/ext/ext_collection.cpp rename to hphp/runtime/ext/ext_collections.cpp index c6f2917ac..50e357628 100644 --- a/hphp/runtime/ext/ext_collection.cpp +++ b/hphp/runtime/ext/ext_collections.cpp @@ -17,7 +17,7 @@ #include #include -#include +#include #include #include #include @@ -60,6 +60,30 @@ static void throwStrOOB(StringData* key) { throw e; } +static inline ArrayIter getArrayIterHelper(CVarRef v, size_t& sz) { + if (v.isArray()) { + ArrayData* ad = v.getArrayData(); + sz = ad->size(); + return ArrayIter(ad); + } + if (v.isObject()) { + ObjectData* obj = v.getObjectData(); + if (obj->isCollection()) { + sz = collectionSize(obj); + return ArrayIter(obj); + } + bool isIterable; + Object iterable = obj->iterableObject(isIterable); + if (isIterable) { + sz = 0; + return ArrayIter(iterable, ArrayIter::transferOwner); + } + } + Object e(SystemLib::AllocInvalidArgumentExceptionObject( + "Parameter must be an array or an instance of Traversable")); + throw e; +} + /////////////////////////////////////////////////////////////////////////////// c_Vector::c_Vector(VM::Class* cb) : @@ -85,8 +109,24 @@ void c_Vector::freeData() { m_data = NULL; } } - -void c_Vector::t___construct() { + +void c_Vector::t___construct(CVarRef iterable /* = null_variant */) { + if (!iterable.isInitialized()) { + return; + } + size_t sz; + ArrayIter iter = getArrayIterHelper(iterable, sz); + if (sz) { + reserve(sz); + } + for (; iter; ++iter) { + Variant v = iter.second(); + TypedValue* tv = (TypedValue*)(&v); + if (UNLIKELY(tv->m_type == KindOfRef)) { + tv = tv->m_data.pref->tv(); + } + add(tv); + } } Variant c_Vector::t___destruct() { @@ -150,11 +190,11 @@ Array c_Vector::o_toArray() const { ObjectData* c_Vector::clone() { ObjectData* obj = ObjectData::clone(); - auto vec = static_cast(obj); + auto target = static_cast(obj); uint sz = m_size; TypedValue* data; - vec->m_capacity = vec->m_size = sz; - vec->m_data = data = (TypedValue*)smart_malloc(sz * sizeof(TypedValue)); + target->m_capacity = target->m_size = sz; + target->m_data = data = (TypedValue*)smart_malloc(sz * sizeof(TypedValue)); for (int i = 0; i < sz; ++i) { tvDup(&m_data[i], &data[i]); } @@ -262,6 +302,25 @@ bool c_Vector::t_contains(CVarRef key) { return false; } +Object c_Vector::t_removeat(CVarRef key) { + if (!key.isInteger()) { + throwBadKeyType(); + } + int64_t k = key.toInt64(); + if (!contains(k)) { + return this; + } + uint64_t datum = m_data[k].m_data.num; + DataType t = m_data[k].m_type; + if (k+1 < m_size) { + memmove(&m_data[k], &m_data[k+1], + (m_size-(k+1)) * sizeof(TypedValue)); + } + --m_size; + tvRefcountedDecRefHelper(t, datum); + return this; +} + Array c_Vector::t_toarray() { return toArrayImpl(); } @@ -401,7 +460,7 @@ Object c_Vector::t_getiterator() { return it; } -Object c_Vector::t_put(CVarRef key, CVarRef value) { +Object c_Vector::t_set(CVarRef key, CVarRef value) { if (key.isInteger()) { TypedValue* tv = (TypedValue*)(&value); if (UNLIKELY(tv->m_type == KindOfRef)) { @@ -414,6 +473,10 @@ Object c_Vector::t_put(CVarRef key, CVarRef value) { return this; } +Object c_Vector::t_put(CVarRef key, CVarRef value) { + return t_set(key, value); +} + Object c_Vector::ti_fromarray(const char* cls, CVarRef arr) { if (!arr.isArray()) { Object e(SystemLib::AllocInvalidArgumentExceptionObject( @@ -793,7 +856,30 @@ void c_Map::deleteBuckets() { } } -void c_Map::t___construct() { +void c_Map::t___construct(CVarRef iterable /* = null_variant */) { + if (!iterable.isInitialized()) { + return; + } + size_t sz; + ArrayIter iter = getArrayIterHelper(iterable, sz); + if (sz) { + reserve(sz); + } + for (; iter; ++iter) { + Variant k = iter.first(); + Variant v = iter.second(); + TypedValue* tv = (TypedValue*)(&v); + if (UNLIKELY(tv->m_type == KindOfRef)) { + tv = tv->m_data.pref->tv(); + } + if (k.isInteger()) { + update(k.toInt64(), tv); + } else if (k.isString()) { + update(k.getStringData(), tv); + } else { + throwBadKeyType(); + } + } } Variant c_Map::t___destruct() { @@ -894,7 +980,7 @@ Variant c_Map::t_get(CVarRef key) { return null; } -Object c_Map::t_put(CVarRef key, CVarRef value) { +Object c_Map::t_set(CVarRef key, CVarRef value) { TypedValue* val = (TypedValue*)(&value); if (UNLIKELY(val->m_type == KindOfRef)) { val = val->m_data.pref->tv(); @@ -909,6 +995,10 @@ Object c_Map::t_put(CVarRef key, CVarRef value) { return this; } +Object c_Map::t_put(CVarRef key, CVarRef value) { + return t_set(key, value); +} + bool c_Map::t_contains(CVarRef key) { DataType t = key.getType(); if (t == KindOfInt64) { @@ -933,6 +1023,10 @@ Object c_Map::t_remove(CVarRef key) { return this; } +Object c_Map::t_removeat(CVarRef key) { + return t_remove(key); +} + Object c_Map::t_discard(CVarRef key) { return t_remove(key); } @@ -1364,7 +1458,7 @@ void c_Map::reserve(int64_t sz) { m_data = (Bucket*)smart_calloc(numSlots(), sizeof(Bucket)); return; } - uint oldNumSlots = numSlots(); + size_t oldNumSlots = numSlots(); m_nLastSlot = Util::roundUpToPowerOfTwo(sz << 1) - 1; m_load = m_size; Bucket* oldBuckets = m_data; @@ -1672,7 +1766,30 @@ void c_StableMap::deleteBuckets() { } } -void c_StableMap::t___construct() { +void c_StableMap::t___construct(CVarRef iterable /* = null_variant */) { + if (!iterable.isInitialized()) { + return; + } + size_t sz; + ArrayIter iter = getArrayIterHelper(iterable, sz); + if (sz) { + reserve(sz); + } + for (; iter; ++iter) { + Variant k = iter.first(); + Variant v = iter.second(); + TypedValue* tv = (TypedValue*)(&v); + if (UNLIKELY(tv->m_type == KindOfRef)) { + tv = tv->m_data.pref->tv(); + } + if (k.isInteger()) { + update(k.toInt64(), tv); + } else if (k.isString()) { + update(k.getStringData(), tv); + } else { + throwBadKeyType(); + } + } } Variant c_StableMap::t___destruct() { @@ -1790,7 +1907,7 @@ Variant c_StableMap::t_get(CVarRef key) { return null; } -Object c_StableMap::t_put(CVarRef key, CVarRef value) { +Object c_StableMap::t_set(CVarRef key, CVarRef value) { TypedValue* val = (TypedValue*)(&value); if (UNLIKELY(val->m_type == KindOfRef)) { val = val->m_data.pref->tv(); @@ -1805,6 +1922,10 @@ Object c_StableMap::t_put(CVarRef key, CVarRef value) { return this; } +Object c_StableMap::t_put(CVarRef key, CVarRef value) { + return t_set(key, value); +} + bool c_StableMap::t_contains(CVarRef key) { DataType t = key.getType(); if (t == KindOfInt64) { @@ -1829,6 +1950,10 @@ Object c_StableMap::t_remove(CVarRef key) { return this; } +Object c_StableMap::t_removeat(CVarRef key) { + return t_remove(key); +} + Object c_StableMap::t_discard(CVarRef key) { return t_remove(key); } diff --git a/hphp/runtime/ext/ext_collection.ext_hhvm.cpp b/hphp/runtime/ext/ext_collections.ext_hhvm.cpp similarity index 92% rename from hphp/runtime/ext/ext_collection.ext_hhvm.cpp rename to hphp/runtime/ext/ext_collections.ext_hhvm.cpp index e04476264..3ec9a2e82 100644 --- a/hphp/runtime/ext/ext_collection.ext_hhvm.cpp +++ b/hphp/runtime/ext/ext_collections.ext_hhvm.cpp @@ -35,13 +35,14 @@ HPHP::VM::Instance* new_Vector_Instance(HPHP::VM::Class* cls) { IMPLEMENT_CLASS(Vector); /* -void HPHP::c_Vector::t___construct() -_ZN4HPHP8c_Vector13t___constructEv +void HPHP::c_Vector::t___construct(HPHP::Variant const&) +_ZN4HPHP8c_Vector13t___constructERKNS_7VariantE this_ => rdi +iterable => rsi */ -void th_6Vector___construct(ObjectData* this_) asm("_ZN4HPHP8c_Vector13t___constructEv"); +void th_6Vector___construct(ObjectData* this_, TypedValue* iterable) asm("_ZN4HPHP8c_Vector13t___constructERKNS_7VariantE"); TypedValue* tg_6Vector___construct(HPHP::VM::ActRec *ar) { TypedValue rv; @@ -49,22 +50,23 @@ TypedValue* tg_6Vector___construct(HPHP::VM::ActRec *ar) { TypedValue* args UNUSED = ((TypedValue*)ar) - 1; ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); if (this_) { - if (count == 0LL) { + if (count <= 1LL) { rv.m_data.num = 0LL; rv.m_type = KindOfNull; - th_6Vector___construct((this_)); - frame_free_locals_inl(ar, 0); + Variant defVal0; + th_6Vector___construct((this_), (count > 0) ? (args-0) : (TypedValue*)(&defVal0)); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; } else { - throw_toomany_arguments_nr("Vector::__construct", 0, 1); + throw_toomany_arguments_nr("Vector::__construct", 1, 1); } } else { throw_instance_method_fatal("Vector::__construct"); } rv.m_data.num = 0LL; rv.m_type = KindOfNull; - frame_free_locals_inl(ar, 0); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; return &ar->m_r; @@ -218,6 +220,46 @@ TypedValue* tg_6Vector_get(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_Vector::t_set(HPHP::Variant const&, HPHP::Variant const&) +_ZN4HPHP8c_Vector5t_setERKNS_7VariantES3_ + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +value => rcx +*/ + +Value* th_6Vector_set(Value* _rv, ObjectData* this_, TypedValue* key, TypedValue* value) asm("_ZN4HPHP8c_Vector5t_setERKNS_7VariantES3_"); + +TypedValue* tg_6Vector_set(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 2LL) { + rv.m_type = KindOfObject; + th_6Vector_set((Value*)(&(rv)), (this_), (args-0), (args-1)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("Vector::set", count, 2, 2, 1); + } + } else { + throw_instance_method_fatal("Vector::set"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_Vector::t_put(HPHP::Variant const&, HPHP::Variant const&) _ZN4HPHP8c_Vector5t_putERKNS_7VariantES3_ @@ -333,6 +375,45 @@ TypedValue* tg_6Vector_contains(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_Vector::t_removeat(HPHP::Variant const&) +_ZN4HPHP8c_Vector10t_removeatERKNS_7VariantE + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +*/ + +Value* th_6Vector_removeAt(Value* _rv, ObjectData* this_, TypedValue* key) asm("_ZN4HPHP8c_Vector10t_removeatERKNS_7VariantE"); + +TypedValue* tg_6Vector_removeAt(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 1LL) { + rv.m_type = KindOfObject; + th_6Vector_removeAt((Value*)(&(rv)), (this_), (args-0)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("Vector::removeAt", count, 1, 1, 1); + } + } else { + throw_instance_method_fatal("Vector::removeAt"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_Vector::t_append(HPHP::Variant const&) _ZN4HPHP8c_Vector8t_appendERKNS_7VariantE @@ -1284,13 +1365,14 @@ HPHP::VM::Instance* new_Map_Instance(HPHP::VM::Class* cls) { IMPLEMENT_CLASS(Map); /* -void HPHP::c_Map::t___construct() -_ZN4HPHP5c_Map13t___constructEv +void HPHP::c_Map::t___construct(HPHP::Variant const&) +_ZN4HPHP5c_Map13t___constructERKNS_7VariantE this_ => rdi +iterable => rsi */ -void th_3Map___construct(ObjectData* this_) asm("_ZN4HPHP5c_Map13t___constructEv"); +void th_3Map___construct(ObjectData* this_, TypedValue* iterable) asm("_ZN4HPHP5c_Map13t___constructERKNS_7VariantE"); TypedValue* tg_3Map___construct(HPHP::VM::ActRec *ar) { TypedValue rv; @@ -1298,22 +1380,23 @@ TypedValue* tg_3Map___construct(HPHP::VM::ActRec *ar) { TypedValue* args UNUSED = ((TypedValue*)ar) - 1; ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); if (this_) { - if (count == 0LL) { + if (count <= 1LL) { rv.m_data.num = 0LL; rv.m_type = KindOfNull; - th_3Map___construct((this_)); - frame_free_locals_inl(ar, 0); + Variant defVal0; + th_3Map___construct((this_), (count > 0) ? (args-0) : (TypedValue*)(&defVal0)); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; } else { - throw_toomany_arguments_nr("Map::__construct", 0, 1); + throw_toomany_arguments_nr("Map::__construct", 1, 1); } } else { throw_instance_method_fatal("Map::__construct"); } rv.m_data.num = 0LL; rv.m_type = KindOfNull; - frame_free_locals_inl(ar, 0); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; return &ar->m_r; @@ -1467,6 +1550,46 @@ TypedValue* tg_3Map_get(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_Map::t_set(HPHP::Variant const&, HPHP::Variant const&) +_ZN4HPHP5c_Map5t_setERKNS_7VariantES3_ + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +value => rcx +*/ + +Value* th_3Map_set(Value* _rv, ObjectData* this_, TypedValue* key, TypedValue* value) asm("_ZN4HPHP5c_Map5t_setERKNS_7VariantES3_"); + +TypedValue* tg_3Map_set(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 2LL) { + rv.m_type = KindOfObject; + th_3Map_set((Value*)(&(rv)), (this_), (args-0), (args-1)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("Map::set", count, 2, 2, 1); + } + } else { + throw_instance_method_fatal("Map::set"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_Map::t_put(HPHP::Variant const&, HPHP::Variant const&) _ZN4HPHP5c_Map5t_putERKNS_7VariantES3_ @@ -1621,6 +1744,45 @@ TypedValue* tg_3Map_remove(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_Map::t_removeat(HPHP::Variant const&) +_ZN4HPHP5c_Map10t_removeatERKNS_7VariantE + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +*/ + +Value* th_3Map_removeAt(Value* _rv, ObjectData* this_, TypedValue* key) asm("_ZN4HPHP5c_Map10t_removeatERKNS_7VariantE"); + +TypedValue* tg_3Map_removeAt(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 1LL) { + rv.m_type = KindOfObject; + th_3Map_removeAt((Value*)(&(rv)), (this_), (args-0)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("Map::removeAt", count, 1, 1, 1); + } + } else { + throw_instance_method_fatal("Map::removeAt"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_Map::t_discard(HPHP::Variant const&) _ZN4HPHP5c_Map9t_discardERKNS_7VariantE @@ -2502,13 +2664,14 @@ HPHP::VM::Instance* new_StableMap_Instance(HPHP::VM::Class* cls) { IMPLEMENT_CLASS(StableMap); /* -void HPHP::c_StableMap::t___construct() -_ZN4HPHP11c_StableMap13t___constructEv +void HPHP::c_StableMap::t___construct(HPHP::Variant const&) +_ZN4HPHP11c_StableMap13t___constructERKNS_7VariantE this_ => rdi +iterable => rsi */ -void th_9StableMap___construct(ObjectData* this_) asm("_ZN4HPHP11c_StableMap13t___constructEv"); +void th_9StableMap___construct(ObjectData* this_, TypedValue* iterable) asm("_ZN4HPHP11c_StableMap13t___constructERKNS_7VariantE"); TypedValue* tg_9StableMap___construct(HPHP::VM::ActRec *ar) { TypedValue rv; @@ -2516,22 +2679,23 @@ TypedValue* tg_9StableMap___construct(HPHP::VM::ActRec *ar) { TypedValue* args UNUSED = ((TypedValue*)ar) - 1; ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); if (this_) { - if (count == 0LL) { + if (count <= 1LL) { rv.m_data.num = 0LL; rv.m_type = KindOfNull; - th_9StableMap___construct((this_)); - frame_free_locals_inl(ar, 0); + Variant defVal0; + th_9StableMap___construct((this_), (count > 0) ? (args-0) : (TypedValue*)(&defVal0)); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; } else { - throw_toomany_arguments_nr("StableMap::__construct", 0, 1); + throw_toomany_arguments_nr("StableMap::__construct", 1, 1); } } else { throw_instance_method_fatal("StableMap::__construct"); } rv.m_data.num = 0LL; rv.m_type = KindOfNull; - frame_free_locals_inl(ar, 0); + frame_free_locals_inl(ar, 1); memcpy(&ar->m_r, &rv, sizeof(TypedValue)); return &ar->m_r; return &ar->m_r; @@ -2685,6 +2849,46 @@ TypedValue* tg_9StableMap_get(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_StableMap::t_set(HPHP::Variant const&, HPHP::Variant const&) +_ZN4HPHP11c_StableMap5t_setERKNS_7VariantES3_ + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +value => rcx +*/ + +Value* th_9StableMap_set(Value* _rv, ObjectData* this_, TypedValue* key, TypedValue* value) asm("_ZN4HPHP11c_StableMap5t_setERKNS_7VariantES3_"); + +TypedValue* tg_9StableMap_set(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 2LL) { + rv.m_type = KindOfObject; + th_9StableMap_set((Value*)(&(rv)), (this_), (args-0), (args-1)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("StableMap::set", count, 2, 2, 1); + } + } else { + throw_instance_method_fatal("StableMap::set"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 2); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_StableMap::t_put(HPHP::Variant const&, HPHP::Variant const&) _ZN4HPHP11c_StableMap5t_putERKNS_7VariantES3_ @@ -2839,6 +3043,45 @@ TypedValue* tg_9StableMap_remove(HPHP::VM::ActRec *ar) { return &ar->m_r; } +/* +HPHP::Object HPHP::c_StableMap::t_removeat(HPHP::Variant const&) +_ZN4HPHP11c_StableMap10t_removeatERKNS_7VariantE + +(return value) => rax +_rv => rdi +this_ => rsi +key => rdx +*/ + +Value* th_9StableMap_removeAt(Value* _rv, ObjectData* this_, TypedValue* key) asm("_ZN4HPHP11c_StableMap10t_removeatERKNS_7VariantE"); + +TypedValue* tg_9StableMap_removeAt(HPHP::VM::ActRec *ar) { + TypedValue rv; + int64_t count = ar->numArgs(); + TypedValue* args UNUSED = ((TypedValue*)ar) - 1; + ObjectData* this_ = (ar->hasThis() ? ar->getThis() : NULL); + if (this_) { + if (count == 1LL) { + rv.m_type = KindOfObject; + th_9StableMap_removeAt((Value*)(&(rv)), (this_), (args-0)); + if (rv.m_data.num == 0LL) rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + } else { + throw_wrong_arguments_nr("StableMap::removeAt", count, 1, 1, 1); + } + } else { + throw_instance_method_fatal("StableMap::removeAt"); + } + rv.m_data.num = 0LL; + rv.m_type = KindOfNull; + frame_free_locals_inl(ar, 1); + memcpy(&ar->m_r, &rv, sizeof(TypedValue)); + return &ar->m_r; + return &ar->m_r; +} + /* HPHP::Object HPHP::c_StableMap::t_discard(HPHP::Variant const&) _ZN4HPHP11c_StableMap9t_discardERKNS_7VariantE diff --git a/hphp/runtime/ext/ext_collection.ext_hhvm.h b/hphp/runtime/ext/ext_collections.ext_hhvm.h similarity index 100% rename from hphp/runtime/ext/ext_collection.ext_hhvm.h rename to hphp/runtime/ext/ext_collections.ext_hhvm.h diff --git a/hphp/runtime/ext/ext_collection.h b/hphp/runtime/ext/ext_collections.h similarity index 98% rename from hphp/runtime/ext/ext_collection.h rename to hphp/runtime/ext/ext_collections.h index f0a9e479f..70d6d2162 100644 --- a/hphp/runtime/ext/ext_collection.h +++ b/hphp/runtime/ext/ext_collections.h @@ -45,7 +45,7 @@ class c_Vector : public ExtObjectDataFlags> 2)); } // When the map is not empty, the minimum allowed ratio // of # elements / # slots is 18.75%. - uintptr_t computeMinElements() { - uintptr_t n = numSlots(); + size_t computeMinElements() const { + size_t n = numSlots(); return ((n >> 3) + ((n+8) >> 4)); } @@ -502,16 +506,18 @@ class c_StableMap : public ExtObjectDataFlags #include -#include +#include #include "runtime/vm/name_value_table_wrapper.h" #include "runtime/vm/request_arena.h" diff --git a/hphp/runtime/vm/instance.cpp b/hphp/runtime/vm/instance.cpp index 7fdfaf505..f2062ce2e 100644 --- a/hphp/runtime/vm/instance.cpp +++ b/hphp/runtime/vm/instance.cpp @@ -23,7 +23,7 @@ #include "runtime/vm/instance.h" #include "runtime/vm/object_allocator_sizes.h" #include "runtime/vm/translator/translator-inline.h" -#include "runtime/ext/ext_collection.h" +#include "runtime/ext/ext_collections.h" #include "system/lib/systemlib.h" namespace HPHP { diff --git a/hphp/runtime/vm/member_operations.cpp b/hphp/runtime/vm/member_operations.cpp index 3f2742d0f..c113f54a6 100644 --- a/hphp/runtime/vm/member_operations.cpp +++ b/hphp/runtime/vm/member_operations.cpp @@ -15,7 +15,7 @@ */ #include "runtime/vm/member_operations.h" -#include "runtime/ext/ext_collection.h" +#include "runtime/ext/ext_collections.h" namespace HPHP { namespace VM { diff --git a/hphp/runtime/vm/member_operations.h b/hphp/runtime/vm/member_operations.h index 02dfdda7d..0089a289d 100644 --- a/hphp/runtime/vm/member_operations.h +++ b/hphp/runtime/vm/member_operations.h @@ -23,7 +23,7 @@ #include "runtime/base/builtin_functions.h" #include "runtime/vm/core_types.h" #include "runtime/vm/runtime.h" -#include "runtime/ext/ext_collection.h" +#include "runtime/ext/ext_collections.h" namespace HPHP { namespace VM { diff --git a/hphp/runtime/vm/runtime.cpp b/hphp/runtime/vm/runtime.cpp index cb51a067f..e609384e3 100644 --- a/hphp/runtime/vm/runtime.cpp +++ b/hphp/runtime/vm/runtime.cpp @@ -19,7 +19,7 @@ #include "runtime/base/array/hphp_array.h" #include "runtime/base/builtin_functions.h" #include "runtime/ext/ext_continuation.h" -#include "runtime/ext/ext_collection.h" +#include "runtime/ext/ext_collections.h" #include "runtime/vm/core_types.h" #include "runtime/vm/bytecode.h" #include "runtime/vm/repo.h" diff --git a/hphp/system/class_map.cpp b/hphp/system/class_map.cpp index 597284b39..744580730 100644 --- a/hphp/system/class_map.cpp +++ b/hphp/system/class_map.cpp @@ -22382,6 +22382,633 @@ const char *g_class_map[] = { NULL, NULL, NULL, + (const char *)0x10006020, "Vector", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.vector.php )\n *\n * An ordered collection where values are keyed using integers 0 thru n-1\n * in order.\n *\n */", + "keyediterable", "countable", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.construct.php )\n *\n *\n * @iterable mixed\n */", + (const char *)-1, (const char *)0x2000, "iterable", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.isempty.php )\n *\n * Returns true if the Vector is empty, false otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.count.php )\n *\n * Returns the number of values in the Vector.\n *\n * @return int\n */", + (const char *)0xa, NULL, + NULL, + NULL, + (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.put.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.clear.php )\n *\n * Removes all values from the Vector.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.contains.php )\n *\n * Returns true if the specified key is present in the Vector, returns\n * false otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "removeAt", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.removeat.php )\n *\n * Removes the element with the specified key from this Vector and\n * renumbers the keys of all subsequent elements.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "append", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.append.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "val", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "add", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.add.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "val", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "pop", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.pop.php )\n *\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "resize", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.resize.php )\n *\n *\n * @sz mixed\n * @value mixed\n */", + (const char *)-1, (const char *)0x2000, "sz", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.toarray.php )\n *\n * Returns an array containing the values from this Vector.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Vector.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "sort", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.sort.php )\n *\n * Uses the specified Collator to sort the Vector in place.\n *\n * @col mixed\n */", + (const char *)-1, (const char *)0x2000, "col", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "reverse", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.reverse.php )\n *\n * Reverses the values of the Vector in place.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "splice", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.splice.php )\n *\n * Splices the values of the Vector in place (see the documentation for\n * array_splice() on php.net for more details.\n *\n * @offset mixed\n * @len mixed\n * @replacement\n * mixed\n */", + (const char *)-1, (const char *)0x2000, "offset", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "len", "", (const char *)0xffffffff, "N;", "null", NULL, + (const char *)0x2000, "replacement", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "linearSearch", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.linearsearch.php )\n *\n * Returns index of the specified value if it is present, -1 otherwise.\n *\n * @search_value\n * mixed\n *\n * @return int\n */", + (const char *)0xa, (const char *)0x2000, "search_value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "shuffle", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.shuffle.php )\n *\n * Shuffles the values of the Vector randomly in place.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.tostring.php )\n *\n *\n * @return string\n */", + (const char *)0x14, NULL, + NULL, + NULL, + (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.fromarray.php )\n *\n * Returns a Vector containing the values from the specified array.\n *\n * @arr mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "fromVector", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.fromvector.php )\n *\n * Returns a copy of the specified Vector.\n *\n * @vec mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "vec", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "slice", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vector.slice.php )\n *\n * Returns a Vector containing the specified slice of values from the\n * specified Vector.\n *\n * @vec mixed\n * @offset mixed\n * @len mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "vec", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "offset", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "len", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + (const char *)0x10006020, "VectorIterator", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.vectoriterator.php )\n *\n * An iterator implementation for iterating over a Vector.\n *\n */", + "keyediterator", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.construct.php )\n *\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + (const char *)0x10006020, "Map", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.map.php )\n *\n * An unordered dictionary-style collection.\n *\n */", + "keyediterable", "countable", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.construct.php )\n *\n *\n * @iterable mixed\n */", + (const char *)-1, (const char *)0x2000, "iterable", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.isempty.php )\n *\n * Returns true if the Map is empty, false otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.count.php )\n *\n * Returns the number of key/value pairs in the Map.\n *\n * @return int\n */", + (const char *)0xa, NULL, + NULL, + NULL, + (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.put.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.clear.php )\n *\n * Removes all key/value pairs from the Map.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.contains.php )\n *\n * Returns true if the specified key is present in the Map, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "remove", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.remove.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "removeAt", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.removeat.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "discard", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.discard.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.toarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "copyAsArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "toKeysArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.tokeysarray.php )\n *\n * Returns an array containing the keys from this Map.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "values", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.values.php )\n *\n * Returns a Vector containing the values from this Map.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "toValuesArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.tovaluesarray.php )\n *\n * Returns an array containing the values from this Map.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "updateFromArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this Map.\n *\n * @arr mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "updateFromIterable", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromiterable.php )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "differenceByKey", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Map.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.tostring.php )\n *\n *\n * @return string\n */", + (const char *)0x14, NULL, + NULL, + NULL, + (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.fromarray.php )\n *\n * Returns a Map containing the key/value pairs from the specified array.\n *\n * @mp mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "fromIterable", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/map.fromiterable.php )\n *\n * Returns a Map containing the key/value pairs produced by the specified\n * Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + (const char *)0x10006020, "MapIterator", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.mapiterator.php )\n *\n * An iterator implementation for iterating over a Map.\n *\n */", + "keyediterator", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.construct.php )\n *\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + (const char *)0x10006020, "StableMap", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.stablemap.php )\n *\n * An ordered dictionary-style collection.\n *\n */", + "keyediterable", "countable", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.construct.php )\n *\n *\n * @iterable mixed\n */", + (const char *)-1, (const char *)0x2000, "iterable", "", (const char *)0xffffffff, "N;", "null", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isempty.php )\n *\n * Returns true if the StableMap is empty, false otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.count.php )\n *\n * Returns the number of key/value pairs in the StableMap.\n *\n * @return int\n */", + (const char *)0xa, NULL, + NULL, + NULL, + (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.put.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.clear.php )\n *\n * Removes all key/value pairs from the StableMap.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.contains.php )\n *\n * Returns true if the specified key is present in the StableMap, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "remove", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.remove.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "removeAt", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.removeat.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "discard", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.discard.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.toarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "copyAsArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "toKeysArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tokeysarray.php )\n *\n * Returns an array containing the keys from this StableMap.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "values", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.values.php )\n *\n * Returns a Vector containing the values from this StableMap.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "toValuesArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tovaluesarray.php )\n *\n * Returns an array containing the values from this StableMap.\n *\n * @return map\n */", + (const char *)0x20, NULL, + NULL, + NULL, + (const char *)0x10006040, "updateFromArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this\n * StableMap.\n *\n * @arr mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "updateFromIterable", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromiterable.php\n * )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "differenceByKey", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.getiterator.php )\n *\n * Returns an iterator that points to beginning of this StableMap.\n *\n * @return object\n */", + (const char *)0x40, NULL, + NULL, + NULL, + (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", + (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", + (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tostring.php )\n *\n *\n * @return string\n */", + (const char *)0x14, NULL, + NULL, + NULL, + (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromarray.php )\n *\n * Returns a StableMap containing the key/value pairs from the specified\n * array.\n *\n * @mp mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + (const char *)0x10006240, "fromIterable", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromiterable.php )\n *\n * Returns a StableMap containing the key/value pairs produced by the\n * specified Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", + (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + (const char *)0x10006020, "StableMapIterator", "", "", (const char *)0, (const char *)0, + "/**\n * ( excerpt from http://php.net/manual/en/class.stablemapiterator.php )\n *\n * An iterator implementation for iterating over a StableMap.\n *\n */", + "keyediterator", NULL, + (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.construct.php\n * )\n *\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", + (const char *)0xffffffff, NULL, + NULL, + NULL, + (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", + (const char *)0x9, NULL, + NULL, + NULL, + (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, + "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", + (const char *)-1, NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, (const char *)0x10006000, "PDO", "", "", (const char *)0, (const char *)0, "/**\n * ( excerpt from http://php.net/manual/en/class.pdo.php )\n *\n * Represents a connection between PHP and a database server.\n *\n */", NULL, @@ -24070,591 +24697,6 @@ const char *g_class_map[] = { NULL, NULL, NULL, - (const char *)0x10006020, "Vector", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.vector.php )\n *\n * A stack-style container.\n *\n */", - "iterable", "countable", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.construct.php )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.isempty.php )\n *\n * Returns true if the Vector is empty, false otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.count.php )\n *\n * Returns the number of values in the Vector.\n *\n * @return int\n */", - (const char *)0xa, NULL, - NULL, - NULL, - (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.put.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.clear.php )\n *\n * Removes all values from the Vector.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.contains.php )\n *\n * Returns true if the specified key is present in the Vector, returns\n * false otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "append", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.append.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "val", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "add", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.add.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "val", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "pop", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.pop.php )\n *\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "resize", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.resize.php )\n *\n *\n * @sz mixed\n * @value mixed\n */", - (const char *)-1, (const char *)0x2000, "sz", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.toarray.php )\n *\n * Returns an array containing the values from this Vector.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Vector.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "sort", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.sort.php )\n *\n * Uses the specified Collator to sort the Vector in place.\n *\n * @col mixed\n */", - (const char *)-1, (const char *)0x2000, "col", "", (const char *)0xffffffff, "N;", "null", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "reverse", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.reverse.php )\n *\n * Reverses the values of the Vector in place.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "splice", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.splice.php )\n *\n * Splices the values of the Vector in place (see the documentation for\n * array_splice() on php.net for more details.\n *\n * @offset mixed\n * @len mixed\n * @replacement\n * mixed\n */", - (const char *)-1, (const char *)0x2000, "offset", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "len", "", (const char *)0xffffffff, "N;", "null", NULL, - (const char *)0x2000, "replacement", "", (const char *)0xffffffff, "N;", "null", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "linearSearch", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.linearsearch.php )\n *\n * Returns index of the specified value if it is present, -1 otherwise.\n *\n * @search_value\n * mixed\n *\n * @return int\n */", - (const char *)0xa, (const char *)0x2000, "search_value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "shuffle", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.shuffle.php )\n *\n * Shuffles the values of the Vector randomly in place.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.tostring.php )\n *\n *\n * @return string\n */", - (const char *)0x14, NULL, - NULL, - NULL, - (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.fromarray.php )\n *\n * Returns a Vector containing the values from the specified array.\n *\n * @arr mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "fromVector", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.fromvector.php )\n *\n * Returns a copy of the specified Vector.\n *\n * @vec mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "vec", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "slice", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vector.slice.php )\n *\n * Returns a Vector containing the specified slice of values from the\n * specified Vector.\n *\n * @vec mixed\n * @offset mixed\n * @len mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "vec", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "offset", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "len", "", (const char *)0xffffffff, "N;", "null", NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - (const char *)0x10006020, "VectorIterator", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.vectoriterator.php )\n *\n * An iterator implementation for iterating over a Vector.\n *\n */", - "iterator", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.construct.php )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - (const char *)0x10006020, "Map", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.map.php )\n *\n * An unordered dictionary-style container.\n *\n */", - "iterable", "countable", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.construct.php )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.isempty.php )\n *\n * Returns true if the Map is empty, false otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.count.php )\n *\n * Returns the number of key/value pairs in the Map.\n *\n * @return int\n */", - (const char *)0xa, NULL, - NULL, - NULL, - (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.put.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.clear.php )\n *\n * Removes all key/value pairs from the Map.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.contains.php )\n *\n * Returns true if the specified key is present in the Map, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "remove", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.remove.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "discard", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.discard.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.toarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "copyAsArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "toKeysArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.tokeysarray.php )\n *\n * Returns an array containing the keys from this Map.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "values", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.values.php )\n *\n * Returns a Vector containing the values from this Map.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "toValuesArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.tovaluesarray.php )\n *\n * Returns an array containing the values from this Map.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "updateFromArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this Map.\n *\n * @arr mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "updateFromIterable", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromiterable.php )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "differenceByKey", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Map.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.tostring.php )\n *\n *\n * @return string\n */", - (const char *)0x14, NULL, - NULL, - NULL, - (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.fromarray.php )\n *\n * Returns a Map containing the key/value pairs from the specified array.\n *\n * @mp mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "fromIterable", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/map.fromiterable.php )\n *\n * Returns a Map containing the key/value pairs produced by the specified\n * Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - (const char *)0x10006020, "MapIterator", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.mapiterator.php )\n *\n * An iterator implementation for iterating over a Map.\n *\n */", - "iterator", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.construct.php )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - (const char *)0x10006020, "StableMap", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.stablemap.php )\n *\n * An ordered dictionary-style container.\n *\n */", - "iterable", "countable", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.construct.php )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "isEmpty", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isempty.php )\n *\n * Returns true if the StableMap is empty, false otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "count", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.count.php )\n *\n * Returns the number of key/value pairs in the StableMap.\n *\n * @return int\n */", - (const char *)0xa, NULL, - NULL, - NULL, - (const char *)0x10006040, "at", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "put", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.put.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "clear", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.clear.php )\n *\n * Removes all key/value pairs from the StableMap.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "contains", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.contains.php )\n *\n * Returns true if the specified key is present in the StableMap, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "remove", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.remove.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "discard", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.discard.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "key", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "toArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.toarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "copyAsArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "toKeysArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tokeysarray.php )\n *\n * Returns an array containing the keys from this StableMap.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "values", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.values.php )\n *\n * Returns a Vector containing the values from this StableMap.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "toValuesArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tovaluesarray.php )\n *\n * Returns an array containing the values from this StableMap.\n *\n * @return map\n */", - (const char *)0x20, NULL, - NULL, - NULL, - (const char *)0x10006040, "updateFromArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this\n * StableMap.\n *\n * @arr mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "arr", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "updateFromIterable", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromiterable.php\n * )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "differenceByKey", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "it", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "getIterator", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.getiterator.php )\n *\n * Returns an iterator that points to beginning of this StableMap.\n *\n * @return object\n */", - (const char *)0x40, NULL, - NULL, - NULL, - (const char *)0x10006040, "__get", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__set", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - (const char *)0x2000, "value", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__isset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", - (const char *)0x9, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__unset", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", - (const char *)0xffffffff, (const char *)0x2000, "name", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006040, "__toString", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tostring.php )\n *\n *\n * @return string\n */", - (const char *)0x14, NULL, - NULL, - NULL, - (const char *)0x10006240, "fromArray", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromarray.php )\n *\n * Returns a StableMap containing the key/value pairs from the specified\n * array.\n *\n * @mp mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - (const char *)0x10006240, "fromIterable", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromiterable.php )\n *\n * Returns a StableMap containing the key/value pairs produced by the\n * specified Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", - (const char *)0x40, (const char *)0x2000, "mp", "", (const char *)0xffffffff, "", "", NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - (const char *)0x10006020, "StableMapIterator", "", "", (const char *)0, (const char *)0, - "/**\n * ( excerpt from http://php.net/manual/en/class.stablemapiterator.php )\n *\n * An iterator implementation for iterating over a StableMap.\n *\n */", - "iterator", NULL, - (const char *)0x10006040, "__construct", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.construct.php\n * )\n *\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "current", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "key", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", - (const char *)0xffffffff, NULL, - NULL, - NULL, - (const char *)0x10006040, "valid", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", - (const char *)0x9, NULL, - NULL, - NULL, - (const char *)0x10006040, "next", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - (const char *)0x10006040, "rewind", "", (const char*)0, (const char*)0, - "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", - (const char *)-1, NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, NULL, NULL }; diff --git a/hphp/system/classes/iterator.php b/hphp/system/classes/iterator.php index 86bb98964..8cf6f48fb 100644 --- a/hphp/system/classes/iterator.php +++ b/hphp/system/classes/iterator.php @@ -167,6 +167,9 @@ interface Iterator extends Traversable { public function valid(); } +interface KeyedIterator extends Iterator { +} + // Do NOT modifiy this doc comment block generated by idl/sysdoc.php /** * ( excerpt from http://php.net/manual/en/class.seekableiterator.php ) @@ -789,6 +792,9 @@ interface IteratorAggregate extends Traversable { interface Iterable extends IteratorAggregate { } +interface KeyedIterable extends Iterable { +} + /////////////////////////////////////////////////////////////////////////////// // http://www.php.net/~helly/php/ext/spl/appenditerator_8inc-source.html @@ -929,3 +935,4 @@ class AppendIterator implements OuterIterator { $params); } } + diff --git a/hphp/system/collection.inc b/hphp/system/collection.inc deleted file mode 100644 index 68d67ddd2..000000000 --- a/hphp/system/collection.inc +++ /dev/null @@ -1,15 +0,0 @@ -// @generated by "php idl.php inc {input.idl.php} {output.inc}" - -#if EXT_TYPE == 0 - -#elif EXT_TYPE == 1 - -#elif EXT_TYPE == 2 -"Vector", "", "iterable","countable",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.construct.php )\n *\n *\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.isempty.php )\n *\n * Returns true if the Vector is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.count.php )\n *\n * Returns the number of values in the Vector.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.put.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.clear.php )\n *\n * Removes all values from the Vector.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.contains.php )\n *\n * Returns true if the specified key is present in the Vector, returns\n * false otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"append", T(Object), S(0), "val", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.append.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", S(16384),"add", T(Object), S(0), "val", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.add.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", S(16384),"pop", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.pop.php )\n *\n *\n * @return mixed\n */", S(16384),"resize", T(Void), S(0), "sz", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.resize.php )\n *\n *\n * @sz mixed\n * @value mixed\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.toarray.php )\n *\n * Returns an array containing the values from this Vector.\n *\n * @return map\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Vector.\n *\n * @return object\n */", S(16384),"sort", T(Void), S(0), "col", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.sort.php )\n *\n * Uses the specified Collator to sort the Vector in place.\n *\n * @col mixed\n */", S(16384),"reverse", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.reverse.php )\n *\n * Reverses the values of the Vector in place.\n *\n */", S(16384),"splice", T(Void), S(0), "offset", T(Variant), NULL, S(0), NULL, S(0), "len", T(Variant), "N;", S(2), "null", S(0), "replacement", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.splice.php )\n *\n * Splices the values of the Vector in place (see the documentation for\n * array_splice() on php.net for more details.\n *\n * @offset mixed\n * @len mixed\n * @replacement\n * mixed\n */", S(16384),"linearSearch", T(Int64), S(0), "search_value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.linearsearch.php )\n *\n * Returns index of the specified value if it is present, -1 otherwise.\n *\n * @search_value\n * mixed\n *\n * @return int\n */", S(16384),"shuffle", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.shuffle.php )\n *\n * Shuffles the values of the Vector randomly in place.\n *\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.tostring.php )\n *\n *\n * @return string\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"fromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.fromarray.php )\n *\n * Returns a Vector containing the values from the specified array.\n *\n * @arr mixed\n *\n * @return object\n */", S(16896),"fromVector", T(Object), S(0), "vec", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.fromvector.php )\n *\n * Returns a copy of the specified Vector.\n *\n * @vec mixed\n *\n * @return object\n */", S(16896),"slice", T(Object), S(0), "vec", T(Variant), NULL, S(0), NULL, S(0), "offset", T(Variant), NULL, S(0), NULL, S(0), "len", T(Variant), "N;", S(2), "null", S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.slice.php )\n *\n * Returns a Vector containing the specified slice of values from the\n * specified Vector.\n *\n * @vec mixed\n * @offset mixed\n * @len mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.vector.php )\n *\n * A stack-style container.\n *\n */", "VectorIterator", "", "iterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.construct.php )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.vectoriterator.php )\n *\n * An iterator implementation for iterating over a Vector.\n *\n */", "Map", "", "iterable","countable",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.construct.php )\n *\n *\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.isempty.php )\n *\n * Returns true if the Map is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.count.php )\n *\n * Returns the number of key/value pairs in the Map.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.put.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.clear.php )\n *\n * Removes all key/value pairs from the Map.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.contains.php )\n *\n * Returns true if the specified key is present in the Map, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"remove", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.remove.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"discard", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.discard.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.toarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", S(16384),"copyAsArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", S(16384),"toKeysArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tokeysarray.php )\n *\n * Returns an array containing the keys from this Map.\n *\n * @return map\n */", S(16384),"values", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.values.php )\n *\n * Returns a Vector containing the values from this Map.\n *\n * @return object\n */", S(16384),"toValuesArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tovaluesarray.php )\n *\n * Returns an array containing the values from this Map.\n *\n * @return map\n */", S(16384),"updateFromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this Map.\n *\n * @arr mixed\n *\n * @return object\n */", S(16384),"updateFromIterable", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromiterable.php )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"differenceByKey", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Map.\n *\n * @return object\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tostring.php )\n *\n *\n * @return string\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"fromArray", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/map.fromarray.php )\n *\n * Returns a Map containing the key/value pairs from the specified array.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),"fromIterable", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/map.fromiterable.php )\n *\n * Returns a Map containing the key/value pairs produced by the specified\n * Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.map.php )\n *\n * An unordered dictionary-style container.\n *\n */", "MapIterator", "", "iterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.construct.php )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.mapiterator.php )\n *\n * An iterator implementation for iterating over a Map.\n *\n */", "StableMap", "", "iterable","countable",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.construct.php )\n *\n *\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isempty.php )\n *\n * Returns true if the StableMap is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.count.php )\n *\n * Returns the number of key/value pairs in the StableMap.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.put.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.clear.php )\n *\n * Removes all key/value pairs from the StableMap.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.contains.php )\n *\n * Returns true if the specified key is present in the StableMap, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"remove", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.remove.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"discard", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.discard.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.toarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", S(16384),"copyAsArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", S(16384),"toKeysArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tokeysarray.php )\n *\n * Returns an array containing the keys from this StableMap.\n *\n * @return map\n */", S(16384),"values", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.values.php )\n *\n * Returns a Vector containing the values from this StableMap.\n *\n * @return object\n */", S(16384),"toValuesArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tovaluesarray.php )\n *\n * Returns an array containing the values from this StableMap.\n *\n * @return map\n */", S(16384),"updateFromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this\n * StableMap.\n *\n * @arr mixed\n *\n * @return object\n */", S(16384),"updateFromIterable", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromiterable.php\n * )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"differenceByKey", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.getiterator.php )\n *\n * Returns an iterator that points to beginning of this StableMap.\n *\n * @return object\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tostring.php )\n *\n *\n * @return string\n */", S(16384),"fromArray", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromarray.php )\n *\n * Returns a StableMap containing the key/value pairs from the specified\n * array.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),"fromIterable", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromiterable.php )\n *\n * Returns a StableMap containing the key/value pairs produced by the\n * specified Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.stablemap.php )\n *\n * An ordered dictionary-style container.\n *\n */", "StableMapIterator", "", "iterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.construct.php\n * )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, -S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.stablemapiterator.php )\n *\n * An iterator implementation for iterating over a StableMap.\n *\n */", -#endif diff --git a/hphp/system/collections.inc b/hphp/system/collections.inc new file mode 100644 index 000000000..3f0b04d80 --- /dev/null +++ b/hphp/system/collections.inc @@ -0,0 +1,15 @@ +// @generated by "php idl.php inc {input.idl.php} {output.inc}" + +#if EXT_TYPE == 0 + +#elif EXT_TYPE == 1 + +#elif EXT_TYPE == 2 +"Vector", "", "keyediterable","countable",NULL, "__construct", T(Void), S(0), "iterable", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.construct.php )\n *\n *\n * @iterable mixed\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.isempty.php )\n *\n * Returns true if the Vector is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.count.php )\n *\n * Returns the number of values in the Vector.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"set", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.put.php )\n *\n * Stores a value into the Vector with the specified key, overwriting any\n * previous value that was associated with the key. If the key is outside\n * the bounds of the Vector, an exception is thrown.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.clear.php )\n *\n * Removes all values from the Vector.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.contains.php )\n *\n * Returns true if the specified key is present in the Vector, returns\n * false otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"removeAt", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.removeat.php )\n *\n * Removes the element with the specified key from this Vector and\n * renumbers the keys of all subsequent elements.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"append", T(Object), S(0), "val", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.append.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", S(16384),"add", T(Object), S(0), "val", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.add.php )\n *\n *\n * @val mixed\n *\n * @return object\n */", S(16384),"pop", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.pop.php )\n *\n *\n * @return mixed\n */", S(16384),"resize", T(Void), S(0), "sz", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.resize.php )\n *\n *\n * @sz mixed\n * @value mixed\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.toarray.php )\n *\n * Returns an array containing the values from this Vector.\n *\n * @return map\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Vector.\n *\n * @return object\n */", S(16384),"sort", T(Void), S(0), "col", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.sort.php )\n *\n * Uses the specified Collator to sort the Vector in place.\n *\n * @col mixed\n */", S(16384),"reverse", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.reverse.php )\n *\n * Reverses the values of the Vector in place.\n *\n */", S(16384),"splice", T(Void), S(0), "offset", T(Variant), NULL, S(0), NULL, S(0), "len", T(Variant), "N;", S(2), "null", S(0), "replacement", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.splice.php )\n *\n * Splices the values of the Vector in place (see the documentation for\n * array_splice() on php.net for more details.\n *\n * @offset mixed\n * @len mixed\n * @replacement\n * mixed\n */", S(16384),"linearSearch", T(Int64), S(0), "search_value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.linearsearch.php )\n *\n * Returns index of the specified value if it is present, -1 otherwise.\n *\n * @search_value\n * mixed\n *\n * @return int\n */", S(16384),"shuffle", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.shuffle.php )\n *\n * Shuffles the values of the Vector randomly in place.\n *\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.tostring.php )\n *\n *\n * @return string\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vector.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"fromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.fromarray.php )\n *\n * Returns a Vector containing the values from the specified array.\n *\n * @arr mixed\n *\n * @return object\n */", S(16896),"fromVector", T(Object), S(0), "vec", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.fromvector.php )\n *\n * Returns a copy of the specified Vector.\n *\n * @vec mixed\n *\n * @return object\n */", S(16896),"slice", T(Object), S(0), "vec", T(Variant), NULL, S(0), NULL, S(0), "offset", T(Variant), NULL, S(0), NULL, S(0), "len", T(Variant), "N;", S(2), "null", S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/vector.slice.php )\n *\n * Returns a Vector containing the specified slice of values from the\n * specified Vector.\n *\n * @vec mixed\n * @offset mixed\n * @len mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.vector.php )\n *\n * An ordered collection where values are keyed using integers 0 thru n-1\n * in order.\n *\n */", "VectorIterator", "", "keyediterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.construct.php )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/vectoriterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.vectoriterator.php )\n *\n * An iterator implementation for iterating over a Vector.\n *\n */", "Map", "", "keyediterable","countable",NULL, "__construct", T(Void), S(0), "iterable", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.construct.php )\n *\n *\n * @iterable mixed\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.isempty.php )\n *\n * Returns true if the Map is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.count.php )\n *\n * Returns the number of key/value pairs in the Map.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"set", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.put.php )\n *\n * Stores a value into the Map with the specified key, overwriting any\n * previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.clear.php )\n *\n * Removes all key/value pairs from the Map.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.contains.php )\n *\n * Returns true if the specified key is present in the Map, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"remove", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.remove.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"removeAt", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.removeat.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"discard", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.discard.php )\n *\n * Removes the specified key from this Map.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.toarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", S(16384),"copyAsArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this Map.\n *\n * @return map\n */", S(16384),"toKeysArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tokeysarray.php )\n *\n * Returns an array containing the keys from this Map.\n *\n * @return map\n */", S(16384),"values", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.values.php )\n *\n * Returns a Vector containing the values from this Map.\n *\n * @return object\n */", S(16384),"toValuesArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tovaluesarray.php )\n *\n * Returns an array containing the values from this Map.\n *\n * @return map\n */", S(16384),"updateFromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this Map.\n *\n * @arr mixed\n *\n * @return object\n */", S(16384),"updateFromIterable", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.updatefromiterable.php )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"differenceByKey", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.getiterator.php )\n *\n * Returns an iterator that points to beginning of this Map.\n *\n * @return object\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.tostring.php )\n *\n *\n * @return string\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/map.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"fromArray", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/map.fromarray.php )\n *\n * Returns a Map containing the key/value pairs from the specified array.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),"fromIterable", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/map.fromiterable.php )\n *\n * Returns a Map containing the key/value pairs produced by the specified\n * Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.map.php )\n *\n * An unordered dictionary-style collection.\n *\n */", "MapIterator", "", "keyediterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.construct.php )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/mapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.mapiterator.php )\n *\n * An iterator implementation for iterating over a Map.\n *\n */", "StableMap", "", "keyediterable","countable",NULL, "__construct", T(Void), S(0), "iterable", T(Variant), "N;", S(2), "null", S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.construct.php )\n *\n *\n * @iterable mixed\n */", S(16384),"isEmpty", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isempty.php )\n *\n * Returns true if the StableMap is empty, false otherwise.\n *\n * @return bool\n */", S(16384),"count", T(Int64), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.count.php )\n *\n * Returns the number of key/value pairs in the StableMap.\n *\n * @return int\n */", S(16384),"at", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.at.php )\n *\n * Returns the value at the specified key. If the key is not present, an\n * exception is thrown.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"get", T(Variant), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n * Returns the value at the specified key. If the key is not present, null\n * is returned.\n *\n * @key mixed\n *\n * @return mixed\n */", S(16384),"set", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"put", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.put.php )\n *\n * Stores a value into the StableMap with the specified key, overwriting\n * any previous value that was associated with the key.\n *\n * @key mixed\n * @value mixed\n *\n * @return object\n */", S(16384),"clear", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.clear.php )\n *\n * Removes all key/value pairs from the StableMap.\n *\n * @return object\n */", S(16384),"contains", T(Boolean), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.contains.php )\n *\n * Returns true if the specified key is present in the StableMap, false\n * otherwise.\n *\n * @key mixed\n *\n * @return bool\n */", S(16384),"remove", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.remove.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"removeAt", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.removeat.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"discard", T(Object), S(0), "key", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.discard.php )\n *\n * Removes the specified key from this StableMap.\n *\n * @key mixed\n *\n * @return object\n */", S(16384),"toArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.toarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", S(16384),"copyAsArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.copyasarray.php )\n *\n * Returns an array containing the key/value pairs from this StableMap.\n *\n * @return map\n */", S(16384),"toKeysArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tokeysarray.php )\n *\n * Returns an array containing the keys from this StableMap.\n *\n * @return map\n */", S(16384),"values", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.values.php )\n *\n * Returns a Vector containing the values from this StableMap.\n *\n * @return object\n */", S(16384),"toValuesArray", T(Array), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tovaluesarray.php )\n *\n * Returns an array containing the values from this StableMap.\n *\n * @return map\n */", S(16384),"updateFromArray", T(Object), S(0), "arr", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromarray.php )\n *\n * Inserts the key/value pairs from the specified array into this\n * StableMap.\n *\n * @arr mixed\n *\n * @return object\n */", S(16384),"updateFromIterable", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.updatefromiterable.php\n * )\n *\n * Inserts the key/value pairs produced by the specified Iterable.\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"differenceByKey", T(Object), S(0), "it", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.differencebykey.php )\n *\n *\n * @it mixed\n *\n * @return object\n */", S(16384),"getIterator", T(Object), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.getiterator.php )\n *\n * Returns an iterator that points to beginning of this StableMap.\n *\n * @return object\n */", S(16384),"__get", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.get.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__set", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), "value", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.set.php )\n *\n *\n * @name mixed\n * @value mixed\n *\n * @return mixed\n */", S(16384),"__isset", T(Boolean), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.isset.php )\n *\n *\n * @name mixed\n *\n * @return bool\n */", S(16384),"__unset", T(Variant), S(0), "name", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.unset.php )\n *\n *\n * @name mixed\n *\n * @return mixed\n */", S(16384),"__toString", T(String), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.tostring.php )\n *\n *\n * @return string\n */", S(16384),"fromArray", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromarray.php )\n *\n * Returns a StableMap containing the key/value pairs from the specified\n * array.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),"fromIterable", T(Object), S(0), "mp", T(Variant), NULL, S(0), NULL, S(0), NULL, S(16896), "/**\n * ( excerpt from http://php.net/manual/en/stablemap.fromiterable.php )\n *\n * Returns a StableMap containing the key/value pairs produced by the\n * specified Iterable.\n *\n * @mp mixed\n *\n * @return object\n */", S(16896),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.stablemap.php )\n *\n * An ordered dictionary-style collection.\n *\n */", "StableMapIterator", "", "keyediterator",NULL, "__construct", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.construct.php\n * )\n *\n *\n */", S(16384),"current", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.current.php )\n *\n * Returns the current value that the iterator points to.\n *\n * @return mixed\n */", S(16384),"key", T(Variant), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.key.php )\n *\n * Returns the current key that the iterator points to.\n *\n * @return mixed\n */", S(16384),"valid", T(Boolean), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.valid.php )\n *\n * Returns true if the iterator points to a valid value, returns false\n * otherwise.\n *\n * @return bool\n */", S(16384),"next", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.next.php )\n *\n * Advance this iterator forward one position.\n *\n */", S(16384),"rewind", T(Void), S(0), NULL, S(16384), "/**\n * ( excerpt from http://php.net/manual/en/stablemapiterator.rewind.php )\n *\n * Move this iterator back to the first position.\n *\n */", S(16384),NULL,NULL,NULL, +S(16416), "/**\n * ( excerpt from http://php.net/manual/en/class.stablemapiterator.php )\n *\n * An iterator implementation for iterating over a StableMap.\n *\n */", +#endif diff --git a/hphp/system/ext.inc b/hphp/system/ext.inc index d616cd3c5..f5b6e7aee 100644 --- a/hphp/system/ext.inc +++ b/hphp/system/ext.inc @@ -10,7 +10,7 @@ #include "bzip2.inc" #include "class.inc" #include "closure.inc" -#include "collection.inc" +#include "collections.inc" #include "continuation.inc" #include "ctype.inc" #include "curl.inc" diff --git a/hphp/test/test_code_run.cpp b/hphp/test/test_code_run.cpp index 7f235a06a..f61e7d75e 100644 --- a/hphp/test/test_code_run.cpp +++ b/hphp/test/test_code_run.cpp @@ -9320,13 +9320,13 @@ bool TestCodeRun::TestCollectionClasses() { "function f() {\n" " var_dump(Vector {});\n" " var_dump(Map {});\n" - " var_dump(Vector { 1, 2 });\n" - " var_dump(StableMap { 'a' => 1, 'b' => 2 });\n" + " var_dump(Vector {1, 2});\n" + " var_dump(StableMap {'a' => 1, 'b' => 2});\n" "\n" " var_dump(Vector {});\n" " var_dump(Map {});\n" - " var_dump(Vector { 1, 2 });\n" - " var_dump(StableMap { 'a' => 1, 'b' => 2 });\n" + " var_dump(Vector {1, 2});\n" + " var_dump(StableMap {'a' => 1, 'b' => 2});\n" "}\n" "f();\n" , @@ -9366,10 +9366,10 @@ bool TestCodeRun::TestCollectionClasses() { MVCRO(" $v1, $k2 => $v2 };\n" + " $m = Map {$k1 => $v1, $k2 => $v2};\n" " return $m;\n" "}\n" "var_dump(f(42, 123.456, 'blah', array(3, 5, 7)));\n" @@ -9493,7 +9493,7 @@ bool TestCodeRun::TestCollectionClasses() { MVCRO(" 1, 'b' => 2, 'c' => 3, 'd' => 4 };\n" + " $x = StableMap {'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4};\n" " unset($x['a']);\n" " unset($x['c']);\n" " foreach ($x as $k => $v) {\n" @@ -9507,8 +9507,8 @@ bool TestCodeRun::TestCollectionClasses() { ); MVCRO(" 1, 'b' => 2, 'c' => 3, 'd' => 4 };\n" + "$m1 = Map {'a' => 1, 'b' => 2, 'c' => 3, 'd' => 4};\n" "$m1->remove('a');\n" "$m1->remove('c');\n" - "$m2 = Map { 'b' => 2, 'd' => 4 };\n" + "$m2 = Map {'b' => 2, 'd' => 4};\n" "var_dump($m1 == $m2);\n" "$m1->remove('d');\n" "var_dump($m1 == $m2);\n" @@ -9585,7 +9585,7 @@ bool TestCodeRun::TestCollectionClasses() { "var_dump($m == 1);\n" "var_dump($m == \"Map\");\n" "echo \"============\\n\";\n" - "$m = Map { 'x' => 7 };\n" + "$m = Map {'x' => 7};\n" "var_dump($m == null);\n" "var_dump($m == false);\n" "var_dump($m == true);\n" @@ -9616,8 +9616,8 @@ bool TestCodeRun::TestCollectionClasses() { ); MVCRO(" 1, 'b' => 2 };\n" - "$s2 = StableMap { 'b' => 2, 'a' => 1 };\n" + "$s1 = StableMap {'a' => 1, 'b' => 2};\n" + "$s2 = StableMap {'b' => 2, 'a' => 1};\n" "var_dump($s1 == $s2);\n" "$s2->remove('b');\n" "$s2['b'] = 2;\n" @@ -9634,7 +9634,7 @@ bool TestCodeRun::TestCollectionClasses() { "var_dump($m == 1);\n" "var_dump($m == \"StableMap\");\n" "echo \"============\\n\";\n" - "$m = StableMap { 'x' => 7 };\n" + "$m = StableMap {'x' => 7};\n" "var_dump($m == null);\n" "var_dump($m == false);\n" "var_dump($m == true);\n" @@ -9658,6 +9658,101 @@ bool TestCodeRun::TestCollectionClasses() { "bool(false)\n" "bool(false)\n" ); + + { + HipHopSyntax w1(this); + MVCRO(" 1, 2 => 'b'};\n" + " $v = new Vector($m);\n" + " var_dump($v);\n" + "}\n" + "function h() {\n" + " $arr1 = array(11, 22, 33);\n" + " var_dump(new Vector($arr1));\n" + " var_dump(new Map($arr1));\n" + " $arr2 = array('a' => 1, 2 => 'b');\n" + " var_dump(new Vector($arr2));\n" + " var_dump(new StableMap($arr2));\n" + "}\n" + "function gen() {\n" + " yield 42;\n" + " yield 72;\n" + "}\n" + "function j() {\n" + " $v = new Vector(gen());\n" + " var_dump($v);\n" + "}\n" + "f();\n" + "g();\n" + "h();\n" + "j();\n" + , + "object(Map)#2 (3) {\n" + " [0]=>\n" + " string(1) \"a\"\n" + " [1]=>\n" + " string(1) \"b\"\n" + " [2]=>\n" + " string(1) \"c\"\n" + "}\n" + "object(StableMap)#3 (3) {\n" + " [0]=>\n" + " string(1) \"a\"\n" + " [1]=>\n" + " string(1) \"b\"\n" + " [2]=>\n" + " string(1) \"c\"\n" + "}\n" + "object(Vector)#2 (2) {\n" + " [0]=>\n" + " int(1)\n" + " [1]=>\n" + " string(1) \"b\"\n" + "}\n" + "object(Vector)#1 (3) {\n" + " [0]=>\n" + " int(11)\n" + " [1]=>\n" + " int(22)\n" + " [2]=>\n" + " int(33)\n" + "}\n" + "object(Map)#1 (3) {\n" + " [0]=>\n" + " int(11)\n" + " [1]=>\n" + " int(22)\n" + " [2]=>\n" + " int(33)\n" + "}\n" + "object(Vector)#1 (2) {\n" + " [0]=>\n" + " int(1)\n" + " [1]=>\n" + " string(1) \"b\"\n" + "}\n" + "object(StableMap)#1 (2) {\n" + " [\"a\"]=>\n" + " int(1)\n" + " [2]=>\n" + " string(1) \"b\"\n" + "}\n" + "object(Vector)#1 (2) {\n" + " [0]=>\n" + " int(42)\n" + " [1]=>\n" + " int(72)\n" + "}\n" + ); + } return true; } diff --git a/hphp/test/test_ext.h b/hphp/test/test_ext.h index adc8405a3..1f6464407 100644 --- a/hphp/test/test_ext.h +++ b/hphp/test/test_ext.h @@ -25,7 +25,7 @@ #include #include #include -#include +#include #include #include #include diff --git a/hphp/test/test_ext.inc b/hphp/test/test_ext.inc index 4dd6916fb..195b66aaf 100644 --- a/hphp/test/test_ext.inc +++ b/hphp/test/test_ext.inc @@ -10,7 +10,7 @@ RUN_TESTSUITE(TestExtBcmath); RUN_TESTSUITE(TestExtBzip2); RUN_TESTSUITE(TestExtClass); RUN_TESTSUITE(TestExtClosure); -RUN_TESTSUITE(TestExtCollection); +RUN_TESTSUITE(TestExtCollections); RUN_TESTSUITE(TestExtContinuation); RUN_TESTSUITE(TestExtCtype); RUN_TESTSUITE(TestExtCurl); diff --git a/hphp/test/test_ext_collection.cpp b/hphp/test/test_ext_collections.cpp similarity index 89% rename from hphp/test/test_ext_collection.cpp rename to hphp/test/test_ext_collections.cpp index 4be606e51..ad1b001f6 100644 --- a/hphp/test/test_ext_collection.cpp +++ b/hphp/test/test_ext_collections.cpp @@ -14,13 +14,13 @@ +----------------------------------------------------------------------+ */ -#include -#include +#include +#include IMPLEMENT_SEP_EXTENSION_TEST(Collection); /////////////////////////////////////////////////////////////////////////////// -bool TestExtCollection::RunTests(const std::string &which) { +bool TestExtCollections::RunTests(const std::string &which) { bool ret = true; return ret; diff --git a/hphp/test/test_ext_collection.h b/hphp/test/test_ext_collections.h similarity index 96% rename from hphp/test/test_ext_collection.h rename to hphp/test/test_ext_collections.h index 3bc57987d..747f2036d 100644 --- a/hphp/test/test_ext_collection.h +++ b/hphp/test/test_ext_collections.h @@ -23,7 +23,7 @@ /////////////////////////////////////////////////////////////////////////////// -class TestExtCollection : public TestCppExt { +class TestExtCollections : public TestCppExt { public: virtual bool RunTests(const std::string &which); }; diff --git a/hphp/test/vm/collection-initializer.php b/hphp/test/vm/collection-initializer.php index 1fdb99eb2..b733f5aec 100644 --- a/hphp/test/vm/collection-initializer.php +++ b/hphp/test/vm/collection-initializer.php @@ -43,10 +43,10 @@ function main() { class V { public $x = array('a' => 1); - public $y = Map { 'a' => 1 }; + public $y = Map {'a' => 1}; } class W extends V { - public $x = Map { 'a' => 1 }; + public $x = Map {'a' => 1}; public $y = array('a' => 1); } $obj1 = new W; @@ -68,7 +68,7 @@ function main() { echo "=========\n"; class X { - public $prop = array ( Map { 'a' => 1 } ); + public $prop = array(Map {'a' => 1}); } $obj1 = new X; $obj2 = new X; @@ -76,7 +76,7 @@ function main() { var_dump($obj1->prop[0]['a']); var_dump($obj2->prop[0]['a']); class Y { - public $prop = Vector { array ( Map { 'a' => 1 } ) }; + public $prop = Vector {array(Map {'a' => 1})}; } $obj1 = new Y; $obj2 = new Y; @@ -91,7 +91,7 @@ function main() { class Z { const FOO = 456; const BAR = "yo"; - public $prop = StableMap { FOO => BAR, Z::FOO => Z::BAR }; + public $prop = StableMap {FOO => BAR, Z::FOO => Z::BAR}; } $obj1 = new Z; var_dump($obj1->prop[FOO], $obj1->prop[Z::FOO], count($obj1->prop));