Kenji Arai / mbed-os_TYBLE16

Dependents:   TYBLE16_simple_data_logger TYBLE16_MP3_Air

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LinkedListBase.h Source File

LinkedListBase.h

00001 /*
00002  * Copyright (c) 2018-2019, Arm Limited and affiliates.
00003  * SPDX-License-Identifier: Apache-2.0
00004  *
00005  * Licensed under the Apache License, Version 2.0 (the "License");
00006  * you may not use this file except in compliance with the License.
00007  * You may obtain a copy of the License at
00008  *
00009  *     http://www.apache.org/licenses/LICENSE-2.0
00010  *
00011  * Unless required by applicable law or agreed to in writing, software
00012  * distributed under the License is distributed on an "AS IS" BASIS,
00013  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00014  * See the License for the specific language governing permissions and
00015  * limitations under the License.
00016  */
00017 
00018 #ifndef MBED_LINKED_LIST_BASE_H
00019 #define MBED_LINKED_LIST_BASE_H
00020 
00021 #include "LinkEntry.h"
00022 
00023 /**
00024  * \defgroup drivers_LinkedListBase LinkedListBase class
00025  * \ingroup drivers-internal-api-usb
00026  * @{
00027  */
00028 class LinkedListBase {
00029 public:
00030     LinkedListBase();
00031     ~LinkedListBase();
00032 
00033     /**
00034      * Return the element at the head of the list
00035      *
00036      * @return The element at the head of the list or NULL if the list is empty
00037      */
00038     LinkEntry *head();
00039 
00040     /**
00041      * Add an element to the tail of the list
00042      *
00043      * @param entry New element to add
00044      */
00045     void enqueue(LinkEntry *entry);
00046 
00047     /**
00048      * Remove the element at the head of the list
00049      *
00050      * @return The element at the head of the list or NULL if the list is empty
00051      */
00052     LinkEntry *dequeue();
00053 
00054     /**
00055      * Remove the specified element if it is in the list
00056      *
00057      * @param entry Element to remove from the list
00058      */
00059     void remove(LinkEntry *entry);
00060 
00061 private:
00062     LinkEntry *_head;
00063     LinkEntry *_tail;
00064 };
00065 
00066 /** @}*/
00067 
00068 #endif