Home | History | Annotate | Download | only in source
      1 /*
      2  *  Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
      3  *
      4  *  Use of this source code is governed by a BSD-style license
      5  *  that can be found in the LICENSE file in the root of the source
      6  *  tree. An additional intellectual property rights grant can be found
      7  *  in the file PATENTS.  All contributing project authors may
      8  *  be found in the AUTHORS file in the root of the source tree.
      9  */
     10 
     11 #ifndef WEBRTC_SYSTEM_WRAPPERS_SOURCE_MAP_NO_STL_H_
     12 #define WEBRTC_SYSTEM_WRAPPERS_SOURCE_MAP_NO_STL_H_
     13 
     14 #include "constructor_magic.h"
     15 
     16 namespace webrtc {
     17 class CriticalSectionWrapper;
     18 
     19 class MapNoStlItem
     20 {
     21 friend class Map;
     22 
     23 public:
     24     MapNoStlItem(int id, void* ptr);
     25     virtual ~MapNoStlItem();
     26     void* GetItem();
     27     int GetId();
     28     unsigned int GetUnsignedId();
     29     void SetItem(void* ptr);
     30 
     31 protected:
     32     MapNoStlItem* next_;
     33     MapNoStlItem* prev_;
     34 
     35 private:
     36     int item_id_;
     37     void* item_ptr_;
     38     DISALLOW_COPY_AND_ASSIGN(MapNoStlItem);
     39 };
     40 
     41 class MapNoStl
     42 {
     43 public:
     44     MapNoStl();
     45     virtual ~MapNoStl();
     46 
     47     // MapWrapper functions.
     48     int Insert(int id, void* ptr);
     49     int Erase(MapNoStlItem* item);
     50     int Erase(int id);
     51     int Size() const;
     52     MapNoStlItem* First() const;
     53     MapNoStlItem* Last() const;
     54     MapNoStlItem* Next(MapNoStlItem* item) const;
     55     MapNoStlItem* Previous(MapNoStlItem* item) const;
     56     MapNoStlItem* Find(int id) const;
     57 
     58 private:
     59     MapNoStlItem* Locate(int id) const;
     60     int Remove(MapNoStlItem* item);
     61 
     62     CriticalSection* critical_section_;
     63     MapNoStlItem* first_;
     64     MapNoStlItem* last_;
     65     int size_;
     66     DISALLOW_COPY_AND_ASSIGN(MapNoStl);
     67 };
     68 } // namespace webrtc
     69 
     70 #endif // WEBRTC_SYSTEM_WRAPPERS_SOURCE_MAP_NO_STL_H_
     71