1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-31 09:20:54 -08:00
emacs/test/cedet/tests/testsubclass.hh
Chong Yidong a4100ebe29 Update Semantic test copyrights, delete some test files (Bug#4656).
* cedet/tests/test.cpp:
* cedet/tests/test.py:
* cedet/tests/teststruct.cpp:
* cedet/tests/testtemplates.cpp:
* cedet/tests/testusing.cpp:
* cedet/tests/scopetest.cpp:
* cedet/tests/scopetest.java: Files deleted.

* cedet/tests/test.make:
* cedet/tests/test.c:
* cedet/tests/testjavacomp.java:
* cedet/tests/testspp.c:
* cedet/tests/testsppreplace.c:
* cedet/tests/testsppreplaced.c:
* cedet/tests/testsubclass.cpp:
* cedet/tests/testsubclass.hh:
* cedet/tests/testtypedefs.cpp:
* cedet/tests/testvarnames.c:
* cedet/tests/test.el:
* cedet/tests/testdoublens.cpp:
* cedet/tests/testdoublens.hpp: Add copyright header.

* cedet/semantic-tests.el (semanticdb-test-gnu-global): Remove
reference to deleted files.
2010-03-29 17:26:49 -04:00

192 lines
3.2 KiB
C++

// testsubclass.hh --- unit test for analyzer and complex C++ inheritance
// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Author: Eric M. Ludlam <eric@siege-engine.com>
// 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 <http://www.gnu.org/licenses/>.
//#include <cmath>
// #include <stdio.h>
#ifndef TESTSUBCLASS_HH
#define TESTSUBCLASS_HH
namespace animal {
class moose {
public:
moose() : fFeet(0),
fIsValid(false)
{ }
virtual void setFeet(int);
int getFeet();
void doNothing();
enum moose_enum {
NAME1, NAME2, NAME3 };
protected:
bool fIsValid;
int fIsProtectedInt;
private:
int fFeet; // Usually 2 or 4.
bool fIsPrivateBool;
}; // moose
int two_prototypes();
int two_prototypes();
class quadruped {
public:
quadruped(int a) : fQuadPrivate(a)
{ }
int fQuadPublic;
protected:
int fQuadProtected;
private:
int fQuadPrivate;
};
}
namespace deer {
class moose : public animal::moose {
public:
moose() : fAntlers(false)
{ }
void setAntlers(bool);
bool getAntlers();
void doSomething();
protected:
bool fSomeField;
private:
bool fAntlers;
};
} // deer
// A second namespace of the same name will test the
// namespace merging needed to resolve deer::alces
namespace deer {
class alces : public animal::moose {
public:
alces(int lat) : fLatin(lat)
{ }
void setLatin(bool);
bool getLatin();
void doLatinStuff(moose moosein); // for completion testing
moose createMoose(); // for completion testing.
protected:
bool fAlcesBool;
int fAlcesInt;
private:
bool fLatin;
int fGreek;
};
};
// A third namespace with classes that does protected and private inheritance.
namespace sneaky {
class antelope : public animal::quadruped {
public:
antelope(int a) : animal::quadruped(),
fAntyProtected(a)
{}
int fAntyPublic;
bool testAccess();
protected:
int fAntyProtected;
private :
int fAntyPrivate;
};
class jackalope : protected animal::quadruped {
public:
jackalope(int a) : animal::quadruped(),
fBunny(a)
{}
int fBunnyPublic;
bool testAccess();
protected:
bool fBunnyProtected;
private :
bool fBunnyPrivate;
};
// Nothing specified means private.
class bugalope : /* private*/ animal::quadruped {
public:
bugalope(int a) : animal::quadruped(),
fBug(a)
{}
int fBugPublic;
bool testAccess();
protected:
bool fBugProtected;
private :
bool fBugPrivate;
};
};
#endif
// arch-tag: e292a1d5-5434-4b4d-8e0e-808101ad84b6