]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/testsuite/g++.old-deja/g++.mike/p1989.C
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / testsuite / g++.old-deja / g++.mike / p1989.C
diff --git a/gcc/testsuite/g++.old-deja/g++.mike/p1989.C b/gcc/testsuite/g++.old-deja/g++.mike/p1989.C
deleted file mode 100644 (file)
index 7e18869..0000000
+++ /dev/null
@@ -1,494 +0,0 @@
-// Build don't link:
-// prms-id: 1989
-
-#define TRUE true
-#define FALSE false
-typedef void *Pix;
-
-template<class T>
-struct link {
-    T item;
-    link *next;
-    link *prev;
-
-    link(const T& t): item(t), prev(0), next(0)
-       { };
-    link(const T& t, link<T> *p, link<T> *n): item(t), prev(p), next(n)
-       { };
-};
-
-template<class T>
-class List_DL {
-public:
-    List_DL();
-    List_DL(const List_DL&);
-    ~List_DL();
-
-    void append(const T& item);
-    void prepend(const T& item);
-    void insert(const T& item, Pix x, bool before);
-
-    void remove(Pix& x)
-       { T tmp; remove(x, tmp); }
-    void remove(Pix& x, T& item);
-
-    void clear();
-
-    unsigned length() const
-       { return count; }
-
-private:
-
-    unsigned count;
-    link<T> *head;
-    link<T> *tail;
-
-public:
-    Pix first() const
-       { return Pix(head); }
-    Pix last() const
-       { return Pix(tail); }
-    void next(Pix& x) const
-       { if (0 != x) x = ((link<T> *) x)->next; }
-    void prev(Pix& x) const
-       { if (0 != x) x = ((link<T> *) x)->prev; }
-    T& operator()(Pix x) const
-       { return ((link<T> *) x)->item; }
-};
-
-template<class T>
-List_DL<T>::List_DL():
-count(0),
-head(0)
-{ }
-
-template<class T>
-List_DL<T>::List_DL(const List_DL& other):
-count(0),
-head(0)
-{
-    for (Pix x=other.first(); 0 != x; other.next(x))
-       append(other(x));
-}
-
-template<class T>
-List_DL<T>::~List_DL()
-{
-    clear();
-}
-
-template<class T>
-void
-List_DL<T>::append(const T& item)
-{
-    count++;
-    if (0 == head) {
-       head = new link<T>(item);
-       tail = head;
-    } else {
-       tail->next = new link<T>(item, tail, 0);
-       tail = tail->next;
-    }
-}
-
-template<class T>
-void
-List_DL<T>::prepend(const T& item)
-{
-    count++;
-    if (0 == head) {
-       head = new link<T>(item);
-       tail = head;
-    } else {
-       head = new link<T>(item, 0, head);
-       if (tail == head)
-           tail = tail->next;
-    }
-}
-
-template<class T>
-void
-List_DL<T>::insert(const T& item, Pix x, bool before = TRUE)
-{
-    link<T> *l = (link<T> *) x;
-
-    if (before) {
-       if (0 == l || l == head) {
-           prepend(item);
-       } else {
-           link<T> *n = new link<T>(item, l->prev, l);
-           l->prev->next = n;
-           l->prev = n;
-       }
-    } else {
-       if (0 == l || l == tail) {
-           append(item);
-       } else {
-           link<T> *n = new link<T>(item, l, l->next);
-           l->next->prev = n;
-           l->prev = n;
-       }
-    }
-}
-
-template<class T>
-void
-List_DL<T>::remove(Pix& x, T& item)
-{
-    link<T> *l = (link<T> *) x;
-
-    if (0 == l)
-       return;
-
-    item = l->item;
-    if (1 == count) {
-       delete head;
-       head = 0;
-       tail = 0;
-    } else {
-       // more than one item in the list
-       if (l == head) {
-           link<T> *old = head;
-           head = head->next;
-           head->prev = 0;
-           delete old;
-       } else if (l == tail) {
-           link<T> *old = tail;
-           tail = tail->prev;
-           tail->next = 0;
-           delete old;
-       } else {
-           l->next->prev = l->prev;
-           l->prev->next = l->next;
-           delete l;
-       }
-    }
-}
-
-template<class T>
-void
-List_DL<T>::clear()
-{
-    link<T> *l, *succ;
-    for (l=head; 0 != l; l=succ) {
-       succ = l->next;
-       delete l;
-    }
-    head = 0;
-    tail = 0;
-}
-
-template<class T>
-class List_DLS: public List_DL<T> {
-public:
-    List_DLS(): List_DL<T>()
-       { };
-    List_DLS(const List_DLS& other): List_DL<T>(other)
-       { };
-
-    bool contains(const T& item) const
-       { return search(item) != 0 ? TRUE: FALSE; }
-    Pix search(const T&) const;
-};
-
-template<class T>
-Pix
-List_DLS<T>::search(const T& item) const
-{
-    for (Pix x=first(); 0 != x; next(x)) {
-       if (item == operator()(x)) // ERROR - const subversion
-           return x;
-    }
-    return 0;
-}
-
-template<class T>
-class List_DLSp: public List_DL<T> {
-public:
-    List_DLSp(): List_DL<T>()
-       { };
-    List_DLSp(const List_DLSp& other): List_DL<T>(other)
-       { };
-
-    bool contains(const T& item) const
-#ifndef INTERNAL_ERROR
-       ;
-#else
-       { return search(item) != 0 ? TRUE: FALSE; }
-#endif
-    Pix search(const T&) const;
-};
-
-template<class T>
-bool
-List_DLSp<T>::contains(const T& item) const
-{
-    for (Pix x=first(); 0 != x; next(x)) {
-       if (*item == *operator()(x))
-           return TRUE;
-    }
-    return FALSE;
-}
-
-template<class T>
-class Set {
-public:
-    Set();
-    Set(const Set& other);
-
-    virtual void add(const T& item);
-
-    void remove(const T& item)
-       { Pix x = search(item); remove(x); }
-    void remove(Pix& x)
-       { T tmp; remove(x, tmp); }
-    virtual void remove(Pix& x, T& item);
-
-    virtual void clear();
-
-    virtual bool contains(const T&) const;
-    virtual Pix search(const T&) const;
-
-    virtual unsigned length() const;
-
-    virtual Pix first() const;
-    virtual void next(Pix& x) const;
-    virtual T& operator()(Pix x) const;
-};
-
-template<class T>
-Set<T>::Set()
-{ }
-
-template<class T>
-Set<T>::Set(const Set& other)
-{ }
-
-
-template<class T>
-class Set_DL: public List_DLS<T> {
-public:
-    Set_DL();
-    Set_DL(const Set_DL& other);
-
-    void add(const T& item)
-       { list.append(item); }
-    void remove(Pix& x, T& item)
-       { list.remove(x, item); }
-
-    void clear()
-       { list.clear(); }
-
-    bool contains(const T& item) const
-       { return list.contains(item); }
-    Pix search(const T& item) const
-       { return list.search(item); }
-
-    unsigned length() const
-       { return list.length(); }
-
-    Pix first() const
-       { return list.first(); }
-    void next(Pix& x) const
-       { list.next(x); }
-    T& operator()(Pix x) const
-       { return list(x); }
-private:
-    List_DLS<T> list;
-};
-
-template<class T>
-class Set_DLp: public List_DLSp<T> {
-public:
-    Set_DLp();
-    Set_DLp(const Set_DLp& other);
-
-    void add(const T& item)
-       { list.append(item); }
-    void remove(Pix& x, T& item)
-       { list.remove(x, item); }
-
-    void clear()
-       { list.clear(); }
-
-    bool contains(const T& item) const
-       { return list.contains(item); }
-    Pix search(const T& item) const
-       { return list.search(item); }
-
-    unsigned length() const
-       { return list.length(); }
-
-    Pix first() const
-       { return list.first(); }
-    void next(Pix& x) const
-       { list.next(x); }
-    T& operator()(Pix x) const
-       { return list(x); }
-private:
-    List_DLSp<T> list;
-};
-
-template<class T>
-struct vertex {
-    T item;
-    List_DL<vertex<T> *> fanout;
-
-    vertex(): item(), fanout() // gets bogus error
-      { };
-    vertex(const T& i): item(), fanout() // gets bogus error
-      { };
-};
-
-template<class T>
-class Graph {
-public:
-    Graph();
-    Graph(const Graph&);
-    ~Graph();
-
-    void add(const T& from, const T& to);
-    bool contains(const T& from, const T& to) const;
-
-    void clear()
-       { vertices.clear(); }
-
-    unsigned lengthV() const
-       { return vertices.length(); }
-
-    Pix firstV() const
-       { return vertices.first(); }
-    void nextV(Pix& x) const
-       { vertices.next(x); }
-    T& V(Pix x) const
-       { return vertices(x).item; }
-
-    Pix firstV1(Pix vx) const;
-    void nextV1(Pix vx, Pix& x) const;
-    T& V1(Pix vx, Pix x) const;
-private:
-    vertex<T> *lookup(const T& from) const;
-    vertex<T> *lookup_new(const T& from);
-
-    List_DLS<vertex<T> > vertices;
-};
-
-template<class T>
-Graph<T>::Graph():
-vertices()
-{ }
-
-template<class T>
-Graph<T>::Graph(const Graph& other):
-vertices()
-{
-    for (Pix vx=firstV(); 0 != vx; nextV(vx)) {
-       for (Pix vx1=firstV1(vx); 0 != vx1; nextV1(vx, vx1)) {
-           add(V(vx), V1(vx, vx1));
-       }
-    }
-}
-
-template<class T>
-Graph<T>::~Graph()
-{
-    clear();
-}
-
-template<class T>
-void
-Graph<T>::add(const T& from, const T& to)
-{
-    vertex<T> *fromv = lookup_new(from);
-    if (from == to)
-       return;
-    vertex<T> *tov = lookup_new(to);
-    fromv->fanout.append(tov);
-}
-
-template<class T>
-bool
-Graph<T>::contains(const T& from, const T& to) const
-{
-    vertex<T> *fromv = lookup(from);
-    if (0 == fromv)
-       return FALSE;
-
-    for (Pix x=fromv->fanout.first(); 0 != x; fromv->fanout.next(x)) {
-       if (fromv->fanout(x)->item == to)
-           return TRUE;
-    }
-
-    return FALSE;
-}
-
-template<class T>
-vertex<T> *
-Graph<T>::lookup(const T& from) const
-{
-    for (Pix x=vertices.first(); 0 != x; vertices.next(x)) {
-       if (vertices(x).item == from)
-           return &vertices(x);
-    }
-    return 0;
-}
-
-template<class T>
-vertex<T> *
-Graph<T>::lookup_new(const T& from)
-{
-    vertex<T> *v = lookup(from);
-    if (0 == v) {
-       vertices.append(from);
-       return &vertices(vertices.last());
-    }
-    return v;
-}
-
-template<class T>
-Pix
-Graph<T>::firstV1(Pix vx) const
-{
-    vertex<T> *v = (vertex<T> *) vx;
-    return v->fanout.first();
-}
-
-template<class T>
-void
-Graph<T>::nextV1(Pix vx, Pix& x) const
-{
-    vertex<T> *v = (vertex<T> *) vx;
-    return v->fanout.next(x);
-}
-
-template<class T>
-T&
-Graph<T>::V1(Pix vx, Pix x) const
-{
-    vertex<T> *v = (vertex<T> *) vx;
-    static T x1;
-    return x1;
-}
-
-class STRLIdentifier;
-
-extern int x(List_DL<STRLIdentifier *>);
-extern int x(List_DLS<STRLIdentifier *>);
-
-extern int x(Set<STRLIdentifier *>);
-extern int x(Set_DL<STRLIdentifier *>);
-extern int x(Set_DLp<STRLIdentifier *>);
-
-extern int x(Graph<STRLIdentifier *>);
-
-class STRLIdentifier {
-    char buf[10];
-};
-
-extern int operator==(vertex<STRLIdentifier*>&, vertex<STRLIdentifier*>&); // ERROR - const subversion
-extern int operator==(STRLIdentifier&, STRLIdentifier&); // ERROR - fn ref in err msg
-
-extern int x(List_DLSp<STRLIdentifier *>);
-
-template class Graph<STRLIdentifier *>;
-template class List_DLS<vertex<STRLIdentifier *> >;