summaryrefslogtreecommitdiffstats
path: root/scripts/t/Dpkg_Shlibs/patterns.cpp
blob: eb4166438e8be9f4522fd52d97e61985c3b83c3b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#define EXPORT(x) x {}

namespace NSA {
	class ClassA {
	private:
		class Private {
		public:
			Private();
			virtual ~Private();
			void privmethod1(int);
			void privmethod2(int);
		};
		Private *p;
		class Internal {
		public:
			Internal();
			virtual ~Internal();
			void internal_method1(char);
			void internal_method2(char);
		};
		Internal *i;
	public:
		ClassA();
		virtual ~ClassA();
		virtual void generate_vt(const char *) const;
	};

	EXPORT(ClassA::Private::Private());
	EXPORT(ClassA::Private::~Private());
	EXPORT(void ClassA::Private::privmethod1(int));
	EXPORT(void ClassA::Private::privmethod2(int));

	EXPORT(ClassA::Internal::Internal());
	EXPORT(ClassA::Internal::~Internal());
	EXPORT(void ClassA::Internal::internal_method1(char));
	EXPORT(void ClassA::Internal::internal_method2(char));

	EXPORT(ClassA::ClassA());
	EXPORT(ClassA::~ClassA());
	EXPORT(void ClassA::generate_vt(const char *) const);
};

class ClassB {
public:
	ClassB();
	virtual ~ClassB();
	virtual void generate_vt(const char *) const;
};

EXPORT(ClassB::ClassB());
EXPORT(ClassB::~ClassB());
EXPORT(void ClassB::generate_vt(const char *) const);

class ClassC {
public:
	ClassC();
	virtual ~ClassC();
	virtual void generate_vt(const char *) const;
};

EXPORT(ClassC::ClassC());
EXPORT(ClassC::~ClassC());
EXPORT(void ClassC::generate_vt(const char *) const);

namespace NSB {
	class ClassD : public NSA::ClassA, public ClassB, public ClassC {
	public:
		ClassD();
		virtual ~ClassD();
		virtual void generate_vt(const char *) const override;
	};

	EXPORT(ClassD::ClassD());
	EXPORT(ClassD::~ClassD());
	EXPORT(void ClassD::generate_vt(const char *) const);

	class Symver {
	public:
		Symver();
		~Symver();

		void symver_method1();
		void symver_method2();
	};

	EXPORT(Symver::Symver());
	EXPORT(Symver::~Symver());
	EXPORT(void Symver::symver_method1());
	EXPORT(void Symver::symver_method2());

	class SymverOptional {
	public:
		SymverOptional();
		~SymverOptional();
	};

	EXPORT(SymverOptional::SymverOptional());
	EXPORT(SymverOptional::~SymverOptional());
};