summaryrefslogtreecommitdiff
path: root/test/lisp/cedet/semantic-utest-ia-resources/testusing.hh
diff options
context:
space:
mode:
Diffstat (limited to 'test/lisp/cedet/semantic-utest-ia-resources/testusing.hh')
-rw-r--r--test/lisp/cedet/semantic-utest-ia-resources/testusing.hh176
1 files changed, 176 insertions, 0 deletions
diff --git a/test/lisp/cedet/semantic-utest-ia-resources/testusing.hh b/test/lisp/cedet/semantic-utest-ia-resources/testusing.hh
new file mode 100644
index 00000000000..d3b690f8542
--- /dev/null
+++ b/test/lisp/cedet/semantic-utest-ia-resources/testusing.hh
@@ -0,0 +1,176 @@
+// testusing.hh --- semantic-ia-utest completion engine unit tests
+
+// Copyright (C) 2008-2021 Free Software Foundation, Inc.
+
+// Author: Eric M. Ludlam <zappo@gnu.org>
+
+// This file is part of GNU Emacs.
+
+// GNU Emacs is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+
+// GNU Emacs is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+
+// You should have received a copy of the GNU General Public License
+// along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+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 togglemoose {
+
+ class MyOtherClass {
+ public:
+ int testToggle1();
+ int testToggle2();
+ int testToggle3();
+ };
+}
+
+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;
+ };
+ }
+}
+
+// Namespace which pulls in one of its own nested namespaces
+namespace first {
+ class AAA1;
+ namespace second {
+ class AAA2;
+ }
+ // Elevate nested namespace into first one
+ using namespace second;
+}
+
+namespace third {
+ using namespace first;
+ class AAA3;
+}
+
+
+// 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;
+}
+
+// Create namespace alias
+namespace alias_for_somestuff = somestuff;
+// Same for nested namespace
+namespace alias_for_outerinner = outer::inner;