1/*****************************************************************************
2
3Copyright (c) 2006, 2013, Oracle and/or its affiliates. All Rights Reserved.
4
5This program is free software; you can redistribute it and/or modify it under
6the terms of the GNU General Public License as published by the Free Software
7Foundation; version 2 of the License.
8
9This program is distributed in the hope that it will be useful, but WITHOUT
10ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
12
13You should have received a copy of the GNU General Public License along with
14this program; if not, write to the Free Software Foundation, Inc.,
1551 Franklin Street, Fifth Floor, Boston, MA 02110-1335 USA
16
17*****************************************************************************/
18
19/*******************************************************************//**
20@file include/ut0list.ic
21A double-linked list
22
23Created 4/26/2006 Osku Salerma
24************************************************************************/
25
26/****************************************************************//**
27Get the first node in the list.
28@return first node, or NULL */
29UNIV_INLINE
30ib_list_node_t*
31ib_list_get_first(
32/*==============*/
33	ib_list_t*	list)	/*!< in: list */
34{
35	return(list->first);
36}
37
38/****************************************************************//**
39Get the last node in the list.
40@return last node, or NULL */
41UNIV_INLINE
42ib_list_node_t*
43ib_list_get_last(
44/*=============*/
45	ib_list_t*	list)	/*!< in: list */
46{
47	return(list->last);
48}
49
50/********************************************************************
51Check if list is empty. */
52UNIV_INLINE
53ibool
54ib_list_is_empty(
55/*=============*/
56					/* out: TRUE if empty else FALSE */
57	const ib_list_t*	list)	/* in: list */
58{
59	return(!(list->first || list->last));
60}
61
62/********************************************************************
63Get number of items on list.
64@return number of items on list */
65UNIV_INLINE
66ulint
67ib_list_len(
68/*========*/
69	const ib_list_t*	list)		/*<! in: list */
70{
71	ulint len = 0;
72	ib_list_node_t* node = list->first;
73
74	while(node) {
75		len++;
76		node = node->next;
77	}
78
79	return (len);
80}
81