Implement Dictionary#get and Array#get

fixes #9796
This commit is contained in:
Gunnar Beutner 2015-07-30 20:58:52 +02:00
parent 5bd46c2b38
commit 1314cba61b
3 changed files with 33 additions and 0 deletions

View File

@ -554,6 +554,14 @@ Signature:
Sets the element at the zero-based index to the specified value. The `index` must refer to an element
which already exists in the array.
### <a id="array-get"></a> Array#get
Signature:
function get(index);
Retrieves the element at the specified zero-based index.
### <a id="array-sort"></a> Array#sort
Signature:
@ -616,6 +624,15 @@ Signature:
Creates or updates an item with the specified `key` and `value`.
### <a id="dictionary-get"></a> Dictionary#get
Signature:
function get(key);
Retrieves the value for the specified `key`. Returns `null` if they `key` does not exist
in the dictionary.
## <a id="scriptfunction-type"></a> Function type
### <a id="scriptfunction-call"></a> Function#call

View File

@ -40,6 +40,13 @@ static void ArraySet(int index, const Value& value)
self->Set(index, value);
}
static Value ArrayGet(int index)
{
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
Array::Ptr self = static_cast<Array::Ptr>(vframe->Self);
return self->Get(index);
}
static void ArrayAdd(const Value& value)
{
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
@ -131,6 +138,7 @@ Object::Ptr Array::GetPrototype(void)
prototype = new Dictionary();
prototype->Set("len", new Function(WrapFunction(ArrayLen), true));
prototype->Set("set", new Function(WrapFunction(ArraySet)));
prototype->Set("get", new Function(WrapFunction(ArrayGet)));
prototype->Set("add", new Function(WrapFunction(ArrayAdd)));
prototype->Set("remove", new Function(WrapFunction(ArrayRemove)));
prototype->Set("contains", new Function(WrapFunction(ArrayContains), true));

View File

@ -38,6 +38,13 @@ static void DictionarySet(const String& key, const Value& value)
self->Set(key, value);
}
static Value DictionaryGet(const String& key)
{
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
Dictionary::Ptr self = static_cast<Dictionary::Ptr>(vframe->Self);
return self->Get(key);
}
static void DictionaryRemove(const String& key)
{
ScriptFrame *vframe = ScriptFrame::GetCurrentFrame();
@ -67,6 +74,7 @@ Object::Ptr Dictionary::GetPrototype(void)
prototype = new Dictionary();
prototype->Set("len", new Function(WrapFunction(DictionaryLen), true));
prototype->Set("set", new Function(WrapFunction(DictionarySet)));
prototype->Set("get", new Function(WrapFunction(DictionaryGet)));
prototype->Set("remove", new Function(WrapFunction(DictionaryRemove)));
prototype->Set("contains", new Function(WrapFunction(DictionaryContains), true));
prototype->Set("clone", new Function(WrapFunction(DictionaryClone), true));