chromium/ios/chrome/browser/ui/tab_switcher/item_utils.h

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_CHROME_BROWSER_UI_TAB_SWITCHER_ITEM_UTILS_H_
#define IOS_CHROME_BROWSER_UI_TAB_SWITCHER_ITEM_UTILS_H_

#import <Foundation/Foundation.h>

@class TabGroupItem;
@class TabSwitcherItem;

#ifdef __cplusplus
extern "C" {
#endif

// Returns a hash for a collection view item, using its identifier.
NSUInteger GetHashForTabSwitcherItem(TabSwitcherItem* tab_switcher_item);

// Returns a hash for a `TabGroupItem`.
// Based on NSValue's hashing of the TabGroup pointer.
NSUInteger GetHashForTabGroupItem(TabGroupItem* tab_group_item);

// Returns YES if `lhs` and `rhs` refer to the same tab.
BOOL CompareTabSwitcherItems(TabSwitcherItem* lhs, TabSwitcherItem* rhs);

// Returns YES if `lhs` and `rhs` refer to the same group.
BOOL CompareTabGroupItems(TabGroupItem* lhs, TabGroupItem* rhs);

#ifdef __cplusplus
}  // extern "C"
#endif

#endif  // IOS_CHROME_BROWSER_UI_TAB_SWITCHER_ITEM_UTILS_H_