1e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent/* 2e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 3e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * 4e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * Use of this source code is governed by a BSD-style license 5e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * that can be found in the LICENSE file in the root of the source 6e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * tree. An additional intellectual property rights grant can be found 7e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * in the file PATENTS. All contributing project authors may 8e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent * be found in the AUTHORS file in the root of the source tree. 9e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent */ 10e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 11e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_LIST_NO_STL_H_ 12e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#define WEBRTC_SYSTEM_WRAPPERS_SOURCE_LIST_NO_STL_H_ 13e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 14e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#include "constructor_magic.h" 15e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 16e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentnamespace webrtc { 17e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentclass CriticalSectionWrapper; 18e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 19e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentclass ListNoStlItem 20e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent{ 21e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentpublic: 22e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem(const void* ptr); 23e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem(const unsigned int item); 24e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent virtual ~ListNoStlItem(); 25e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent void* GetItem() const; 26e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent unsigned int GetUnsignedItem() const; 27e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 28e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentprotected: 29e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* next_; 30e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* prev_; 31e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 32e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentprivate: 33e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent friend class ListNoStl; 34e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 35e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent const void* item_ptr_; 36e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent const unsigned int item_; 37e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent DISALLOW_COPY_AND_ASSIGN(ListNoStlItem); 38e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent}; 39e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 40e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 41e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentclass ListNoStl 42e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent{ 43e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentpublic: 44e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStl(); 45e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent virtual ~ListNoStl(); 46e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 47e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent // ListWrapper functions 48e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent unsigned int GetSize() const; 49e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PushBack(const void* ptr); 50e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PushBack(const unsigned int item_id); 51e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PushFront(const void* ptr); 52e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PushFront(const unsigned int item_id); 53e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PopFront(); 54e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int PopBack(); 55e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent bool Empty() const; 56e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* First() const; 57e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* Last() const; 58e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* Next(ListNoStlItem* item) const; 59e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* Previous(ListNoStlItem* item) const; 60e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int Erase(ListNoStlItem* item); 61e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int Insert(ListNoStlItem* existing_previous_item, 62e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* new_item); 63e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 64e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent int InsertBefore(ListNoStlItem* existing_next_item, 65e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* new_item); 66e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 67e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurentprivate: 68e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent void PushBack(ListNoStlItem* item); 69e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent void PushFront(ListNoStlItem* item); 70e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 71e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent CriticalSectionWrapper* critical_section_; 72e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* first_; 73e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent ListNoStlItem* last_; 74e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent unsigned int size_; 75e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent DISALLOW_COPY_AND_ASSIGN(ListNoStl); 76e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent}; 77e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent} // namespace webrtc 78e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent 79e48d5845c8b35de2ab73ea055c18a61fa3a9f0beEric Laurent#endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_LIST_NO_STL_H_ 80