1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-26 07:11:34 -08:00
emacs/test/cedet/tests/testusing.hh
2009-10-02 10:53:34 +00:00

127 lines
1.8 KiB
C++

// 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;
}
// arch-tag: f7e59fad-100b-47d3-ae8b-a8390a026ade