slist.h revision 3da1eb108d36da35333b2d655202791af854996b
1// slist.h
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//      http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15// Author: riley@google.com (Michael Riley)
16//
17// \file
18// Includes slist definition or defines in terms of STL list as a fallback.
19
20#ifndef FST_LIB_SLIST_H__
21#define FST_LIB_SLIST_H__
22
23#include <fst/config.h>
24
25#ifdef HAVE___GNU_CXX__SLIST_INT_
26
27#include <ext/slist>
28
29namespace fst {
30
31using __gnu_cxx::slist;
32
33}
34
35#else
36
37#include <list>
38
39namespace fst {
40
41using std::list;
42
43template <typename T> class slist : public list<T> {
44 public:
45  typedef typename list<T>::iterator iterator;
46  typedef typename list<T>::const_iterator const_iterator;
47
48  using list<T>::erase;
49
50  iterator erase_after(iterator pos) {
51    iterator npos = pos;
52    erase(++npos);
53    return pos;
54  }
55};
56
57}  // namespace fst
58
59#endif  // HAVE___GNU_CXX__SLIST_INT_
60
61#endif  // FST_LIB_SLIST_H__
62