OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [g++.old-deja/] [g++.mike/] [p2746.C] - Diff between revs 154 and 816

Go to most recent revision | Only display areas with differences | Details | Blame | View Log

Rev 154 Rev 816
// { dg-do assemble  }
// { dg-do assemble  }
// GROUPS passed scope pt
// GROUPS passed scope pt
class Link {
class Link {
public:
public:
  Link();
  Link();
  Link(Link *);
  Link(Link *);
private:
private:
  Link *next_;
  Link *next_;
friend class IListBase;
friend class IListBase;
friend class IListIterBase;
friend class IListIterBase;
};
};
inline
inline
Link::Link() : next_(0)
Link::Link() : next_(0)
{
{
}
}
inline
inline
Link::Link(Link *next) : next_(next)
Link::Link(Link *next) : next_(next)
{
{
}
}
class IListBase {
class IListBase {
public:
public:
  IListBase();
  IListBase();
  IListBase(Link *);
  IListBase(Link *);
  void  append(Link *);
  void  append(Link *);
  void insert(Link *);
  void insert(Link *);
  Link *head();
  Link *head();
  int empty();
  int empty();
  Link *get();
  Link *get();
  void remove(Link *);
  void remove(Link *);
private:
private:
  Link *head_;
  Link *head_;
friend class IListIterBase;
friend class IListIterBase;
};
};
inline
inline
IListBase::IListBase() : head_(0)
IListBase::IListBase() : head_(0)
{
{
}
}
inline
inline
IListBase::IListBase(Link *head) : head_(head)
IListBase::IListBase(Link *head) : head_(head)
{
{
}
}
inline
inline
void IListBase::insert(Link *p)
void IListBase::insert(Link *p)
{
{
  p->next_ = head_;
  p->next_ = head_;
  head_ = p;
  head_ = p;
}
}
inline
inline
Link *IListBase::head()
Link *IListBase::head()
{
{
  return head_;
  return head_;
}
}
inline
inline
int IListBase::empty()
int IListBase::empty()
{
{
  return head_ == 0;
  return head_ == 0;
}
}
inline
inline
Link *IListBase::get()
Link *IListBase::get()
{
{
  Link *tem = head_;
  Link *tem = head_;
  head_ = head_->next_;
  head_ = head_->next_;
  return tem;
  return tem;
}
}
template class IListIter;
template class IListIter;
template
template
class IList : private IListBase {
class IList : private IListBase {
public:
public:
  IList() { }
  IList() { }
  IList(T *p) : IListBase(p) { }
  IList(T *p) : IListBase(p) { }
  ~IList();
  ~IList();
  void append(T *p) { IListBase::append(p); }
  void append(T *p) { IListBase::append(p); }
  void insert(T *p) { IListBase::insert(p); }
  void insert(T *p) { IListBase::insert(p); }
  void remove(T *p) { IListBase::remove(p); }
  void remove(T *p) { IListBase::remove(p); }
  T *head() { return (T *)IListBase::head(); }
  T *head() { return (T *)IListBase::head(); }
  T *get() { return (T *)IListBase::get(); }
  T *get() { return (T *)IListBase::get(); }
  IListBase::empty;
  IListBase::empty;
friend class IListIter;
friend class IListIter;
};
};
template
template
IList::~IList()
IList::~IList()
{
{
  while (!empty())
  while (!empty())
    delete get();
    delete get();
}
}
class IListIterBase {
class IListIterBase {
public:
public:
  IListIterBase(const IListBase &);
  IListIterBase(const IListBase &);
  int done();
  int done();
  Link *cur();
  Link *cur();
  void next();
  void next();
private:
private:
  Link *p_;
  Link *p_;
};
};
inline
inline
IListIterBase::IListIterBase(const IListBase &list) : p_(list.head_)
IListIterBase::IListIterBase(const IListBase &list) : p_(list.head_)
{
{
}
}
inline
inline
int IListIterBase::done()
int IListIterBase::done()
{
{
  return p_ == 0;
  return p_ == 0;
}
}
inline
inline
Link *IListIterBase::cur()
Link *IListIterBase::cur()
{
{
  return p_;
  return p_;
}
}
inline
inline
void IListIterBase::next()
void IListIterBase::next()
{
{
  p_ = p_->next_;
  p_ = p_->next_;
}
}
template
template
class IListIter : private IListIterBase {
class IListIter : private IListIterBase {
public:
public:
  IListIter(const IList &list) : IListIterBase(list) { }
  IListIter(const IList &list) : IListIterBase(list) { }
  T *cur() { return (T *)IListIterBase::cur(); }
  T *cur() { return (T *)IListIterBase::cur(); }
  IListIterBase::next;
  IListIterBase::next;
  IListIterBase::done;
  IListIterBase::done;
};
};
struct A {
struct A {
  IList list;
  IList list;
  int x;
  int x;
  void foo();
  void foo();
};
};
void A::foo()
void A::foo()
{
{
  for (IListIter iter(list); !iter.done(); iter.next())
  for (IListIter iter(list); !iter.done(); iter.next())
    ;
    ;
  x = 0;
  x = 0;
}
}
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.