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));