diff test/cedet/tests/testusing.hh @ 104494:e480034314ce

Add Semantic unit tests.
author Chong Yidong <cyd@stupidchicken.com>
date Sun, 20 Sep 2009 04:00:13 +0000
parents
children 7f4c7f5c0eba
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/cedet/tests/testusing.hh	Sun Sep 20 04:00:13 2009 +0000
@@ -0,0 +1,125 @@
+// test usings header file.
+
+namespace moose {
+
+  class Point;
+
+  class MyClass;
+
+}
+
+
+namespace moose {
+
+  class Point;
+
+  class MyClass {
+  public:
+    MyClass() : fVal(0) {
+    }
+
+    ~MyClass() {};
+
+    /**
+     * fVal Accessors
+     * @{
+     */
+    int getVal() const {
+      return fVal;
+    }
+    void setVal(int Val) const {
+      fVal = Val;
+    }
+    /**
+     * @}
+     */
+  private:
+    int fVal;
+  };
+
+}
+
+namespace deer {
+
+  class Pickle;
+
+};
+
+// Code from Zhiqiu Kong
+
+#ifndef BREAD_H
+#define BREAD_H
+
+namespace bread_name {
+  class bread
+  {
+  public:
+    void geta();
+  private:
+    int m_a;
+    int m_b;
+  };
+}
+
+#endif
+
+// Code from David Engster
+// Creating alias types through 'using' trickery
+
+namespace somestuff {
+  class OneClass {
+  public:
+    void aFunc();
+    int anInt;
+  };
+  struct aStruct {
+    int foo;
+    int bar;
+  };
+}
+
+namespace otherstuff {
+  // make otherstuff::OneClass an alias for somestuff::OneClass
+  using somestuff::OneClass;
+}
+
+namespace morestuff {
+  // make morestuff an alias namespace for somestuff
+  using namespace somestuff;
+  // but hide aStruct with own type
+  struct aStruct {
+    int anotherFoo;
+    int anotherBar;
+  };
+}
+
+// We can also create an alias for an alias
+namespace evenmorestuff {
+  using otherstuff::OneClass;
+}
+
+// Now with nested namespaces
+namespace outer {
+  namespace inner {
+    struct StructNested {
+      int one;
+      int two;
+    };
+    struct AnotherStruct {
+      int three;
+      int four;
+    };
+  }
+}
+
+// Elevate the first struct into 'outer'
+// so that we can access it via 'outer::StructNested'
+namespace outer {
+  using outer::inner::StructNested;
+}
+
+// Create an alias for a nested namespace
+namespace outerinner {
+  // equivalent to 'namespace outerinner = outer::inner;'
+  using namespace outer::inner;
+}