/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
 * You can use this software according to the terms and conditions of the Mulan PSL v2.
 * You may obtain a copy of Mulan PSL v2 at:
 *          http://license.coscl.org.cn/MulanPSL2
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
 * See the Mulan PSL v2 for more details.
 */

#include "WindowKey.h"

WindowKey WindowKey::replace(long window_, std::shared_ptr<RowData> key_)
{
    this->window = window_;
    this->key = std::move(key_);
    return *this;
}

long WindowKey::getWindow() const
{
    return this->window;
}

std::shared_ptr<RowData> WindowKey::getKey() const
{
    return this->key;
}

long WindowKey::hash() const
{
    size_t h1 = std::hash<long>{}(window);
    size_t h2 = key->hashCode();

    long hashResult = h1 ^ (h2 + 0x9e3779b9 + (h1 << 6) + (h1 >> 2));
    return hashResult;
}