Ejemplo n.º 1
0
    bool Table::SetArrayValue(std::size_t index, const Value &value)
    {
        if (index < 1)
            return false;

        std::size_t array_size = ArraySize();
        if (index > array_size + 1)
            return false;

        if (index == array_size + 1)
        {
            AppendToArray(value);

            // move all continuous key from hash to array
            Value key;
            key.num_ = ++index;
            key.type_ = ValueT_Number;
            while (MoveHashToArray(key))
                key.num_ = ++index;
        }
        else
        {
            (*array_)[index - 1] = value;
        }

        return true;
    }
Ejemplo n.º 2
0
Archivo: Table.cpp Proyecto: Gwill/luna
    void Table::MergeFromHashToArray()
    {
        auto index = ArraySize();
        Value key;
        key.num_ = ++index;
        key.type_ = ValueT_Number;

        while (MoveHashToArray(key))
            key.num_ = ++index;
    }