1*c42dbd0eSchristos /* Copyright (C) 2021 Free Software Foundation, Inc. 2*c42dbd0eSchristos Contributed by Oracle. 3*c42dbd0eSchristos 4*c42dbd0eSchristos This file is part of GNU Binutils. 5*c42dbd0eSchristos 6*c42dbd0eSchristos This program is free software; you can redistribute it and/or modify 7*c42dbd0eSchristos it under the terms of the GNU General Public License as published by 8*c42dbd0eSchristos the Free Software Foundation; either version 3, or (at your option) 9*c42dbd0eSchristos any later version. 10*c42dbd0eSchristos 11*c42dbd0eSchristos This program is distributed in the hope that it will be useful, 12*c42dbd0eSchristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13*c42dbd0eSchristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*c42dbd0eSchristos GNU General Public License for more details. 15*c42dbd0eSchristos 16*c42dbd0eSchristos You should have received a copy of the GNU General Public License 17*c42dbd0eSchristos along with this program; if not, write to the Free Software 18*c42dbd0eSchristos Foundation, 51 Franklin Street - Fifth Floor, Boston, 19*c42dbd0eSchristos MA 02110-1301, USA. */ 20*c42dbd0eSchristos 21*c42dbd0eSchristos #ifndef _DbeLinkList_h 22*c42dbd0eSchristos #define _DbeLinkList_h 23*c42dbd0eSchristos 24*c42dbd0eSchristos template <typename ITEM> class DbeLinkList 25*c42dbd0eSchristos { 26*c42dbd0eSchristos public: 27*c42dbd0eSchristos DbeLinkList(ITEM _item)28*c42dbd0eSchristos DbeLinkList (ITEM _item) 29*c42dbd0eSchristos { 30*c42dbd0eSchristos item = _item; 31*c42dbd0eSchristos next = NULL; 32*c42dbd0eSchristos }; 33*c42dbd0eSchristos ~DbeLinkList()34*c42dbd0eSchristos ~DbeLinkList () { }; 35*c42dbd0eSchristos 36*c42dbd0eSchristos ITEM get_item()37*c42dbd0eSchristos get_item () 38*c42dbd0eSchristos { 39*c42dbd0eSchristos return item; 40*c42dbd0eSchristos } 41*c42dbd0eSchristos 42*c42dbd0eSchristos DbeLinkList<ITEM> * get_next()43*c42dbd0eSchristos get_next () 44*c42dbd0eSchristos { 45*c42dbd0eSchristos return next; 46*c42dbd0eSchristos } 47*c42dbd0eSchristos 48*c42dbd0eSchristos void set_next(DbeLinkList<ITEM> * p)49*c42dbd0eSchristos set_next (DbeLinkList<ITEM> *p) 50*c42dbd0eSchristos { 51*c42dbd0eSchristos next = p; 52*c42dbd0eSchristos } 53*c42dbd0eSchristos 54*c42dbd0eSchristos void 55*c42dbd0eSchristos destroy (bool deleteItem = false) 56*c42dbd0eSchristos { 57*c42dbd0eSchristos for (DbeLinkList<ITEM> *p = next; p;) 58*c42dbd0eSchristos { 59*c42dbd0eSchristos DbeLinkList<ITEM> *p1 = p->get_next (); 60*c42dbd0eSchristos if (deleteItem) 61*c42dbd0eSchristos delete p->get_item (); 62*c42dbd0eSchristos delete p; 63*c42dbd0eSchristos p = p1; 64*c42dbd0eSchristos } 65*c42dbd0eSchristos next = NULL; 66*c42dbd0eSchristos } 67*c42dbd0eSchristos 68*c42dbd0eSchristos private: 69*c42dbd0eSchristos ITEM item; 70*c42dbd0eSchristos DbeLinkList<ITEM> *next; 71*c42dbd0eSchristos }; 72*c42dbd0eSchristos 73*c42dbd0eSchristos #endif /* _DbeLinkList_h */ 74