]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/testsuite/g++.old-deja/g++.jason/template26.C
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / testsuite / g++.old-deja / g++.jason / template26.C
diff --git a/gcc/testsuite/g++.old-deja/g++.jason/template26.C b/gcc/testsuite/g++.old-deja/g++.jason/template26.C
deleted file mode 100644 (file)
index fcd598d..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-// PRMS Id: 6275
-// Bug: unification fails for call to find_parameter_in_stack.
-
-#include <stdio.h>
-#include <stdlib.h>
-
-const int max_stack_size = 20;
-
-template <class T>
-class Stack {
-  private:
-    T objects[max_stack_size];
-    int nobjects;
-  public:
-    Stack(): nobjects(0) {}
-    void push(const T&a) {
-        if (nobjects >= max_stack_size) {
-            fprintf(stderr,"Stack: overflow\n");
-            abort();
-          }
-        objects[nobjects++] = a;
-      }
-    T pop() {
-        if (!nobjects) {
-            fprintf(stderr,"Stack: underflow\n");
-            abort();
-          }
-        nobjects -= 1;
-        T result = objects[nobjects];
-        return result;
-      }
-    T top() const {
-        if (!nobjects) {
-            fprintf(stderr,"Stack: underflow\n");
-            abort();
-          }
-        return objects[nobjects - 1];
-      }
-    int n() const { return nobjects; }
-    T operator[](int i) { return objects[i]; }
-};
-
-template <class T>
-class Parameter {
-    T parameter_;
-    int is_set_;
-    int overrides_;
-  public:
-    Parameter(): is_set_(0), overrides_(0) {}
-    void set(const T& a) { parameter_ = a; is_set_ = 1; }
-    void override(int overrides = 1) { overrides_ = overrides; }
-    const T& value() const { return parameter_; }
-    int overrides() const { return overrides_; }
-    int is_set() const { return is_set_; }
-};
-
-template <class T1, class T2>
-T2
-find_parameter_in_stack(Stack<T1>& stack, Parameter<T2>& (T1::*access)())
-{
-  T2 result;
-  int have_result = 0;
-  for (int i=stack.n()-1; i>=0; i--) {
-      if ((stack[i].*access)().is_set()) {
-          if (!have_result || (stack[i].*access)().overrides()) {
-              result = (stack[i].*access)().value();
-              have_result = 1;
-            }
-        }
-    }
-  return result;
-}
-
-class A {
-  private:
-    Parameter<int> a_;
-  public:
-    A() { }
-    Parameter<int>& a() { return a_; }
-};
-
-int
-main(int, char**)
-{
-  Stack<A> A_stack;
-  A a1;
-  A a2;
-  a1.a().set(1);
-  a2.a().set(2);
-  A_stack.push(a1);
-  A_stack.push(a2);
-
-  int val = find_parameter_in_stack(A_stack, &A::a);
-
-  printf("val = %d\n", val);
-  if (val != 2)
-    return 1;
-
-  A_stack.pop();
-  A_stack.pop();
-
-  a1.a().override();
-
-  A_stack.push(a1);
-  A_stack.push(a2);
-
-  val = find_parameter_in_stack(A_stack, &A::a);
-
-  printf("val = %d\n", val);
-  if (val != 1)
-    return 1;
-
-  return 0;
-}